AS

AST में Elixir

2 अभ्यास

AST के बारे में

एब्स्ट्रैक्ट सिंटैक्स ट्री (AST), जिसे quoted expression भी कहते हैं, कोड को डेटा के रूप में दर्शाने का एक तरीका है।

AST का हर नोड तीन एलिमेंट वाला टपल होता है।

# AST representation of:
# 2 + 3
{:+, [], [2, 3]}

पहला एलिमेंट एक एटम है, जो ऑपरेशन बताता है। दूसरा एलिमेंट कीवर्ड ऐरे है, जो मेटाडेटा रखता है। तीसरा एलिमेंट आर्गुमेंट का ऐरे है, जिसमें दूसरे नोड होते हैं। पूर्णांक, एटम और स्ट्रिंग जैसी लिटरल वैल्यूओं को AST में तीन एलिमेंट वाले टपल के बजाय उनके अपने रूप में दर्शाया जाता है।

कोड को AST में बदलना

एलिक्सर कोड को AST में बदलना और AST को वापस कोड में बदलना, यह सब स्टैंडर्ड लाइब्रेरी का हिस्सा है। AST के साथ काम करने वाले फंक्शन आपको Code मॉड्यूल (जैसे कोड वाली स्ट्रिंग को AST में बदलने के लिए) और Macro मॉड्यूल (जैसे AST में एक-एक नोड पर जाने या उसे स्ट्रिंग में बदलने के लिए) में मिलेंगे।

ध्यान दीजिए कि स्टैंडर्ड लाइब्रेरी के सारे फंक्शन AST के लिए "quoted" नाम इस्तेमाल करते हैं, जो quoted expression का छोटा रूप है।

कोड को AST में बदलने वाले इस विशेष रूप को quote कहते हैं। यह एक कोड ब्लॉक लेता है और उसका AST लौटाता है।

quote do
  2 + 3 - 1
end

# => {:-, [], [
#      {:+, [], [2, 3]},
#      1
#    ]}

उपयोग के मामले

कोड को AST के रूप में दर्शाने की क्षमता एलिक्सर में मेटाप्रोग्रामिंग के केंद्र में है। मैक्रो, यानी ऐसा एलिक्सर कोड लिखने का तरीका जो खुद एलिक्सर कोड बनाता है, आउटपुट के रूप में AST लौटाकर काम करते हैं।

AST का एक और उपयोग स्टैटिक कोड एनालिसिस है, जैसे Exercism का अपना टूल, Analyzer, जिसे आप शायद उस छोटे बॉट के रूप में जानते होंगे जो आपके हल पर टिप्पणियाँ छोड़ता है।

GitHub के ज़रिए संपादित करें यह लिंक नई विंडो या टैब में खुलता है।

AST सीखिए

अभ्यास लॉक है

AST पर अभ्यास करने के लिए 1 और अभ्यास अनलॉक कीजिए