AS

AST ebben a kurzusban: Elixir

2 feladat

A(z) AST fogalomról

Az absztrakt szintaxisfa (AST), más néven quoted kifejezés, a kód adatként való ábrázolásának egy módja.

Az AST minden csomópontja egy háromelemű tuple.

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

Az első elem egy atom, ez jelöli a műveletet. A második elem egy kulcsszólista, ez a metaadat. A harmadik elem az argumentumok listája, amely további csomópontokat tartalmaz. A literál értékek, például az egészek, az atomok és a stringek, önmagukként jelennek meg az AST-ban, nem háromelemű tuple-ként.

Kód átalakítása AST-vé

Az Elixir-kód AST-vé alakítása, illetve az AST visszaalakítása kóddá a standard könyvtár része. Az AST-kkel való munkához szükséges függvényeket a Code (például hogy egy kódot tartalmazó stringet AST-vé alakíts) és a Macro (például hogy bejárd az AST-t, vagy stringgé alakítsd) modulokban találod.

Vedd figyelembe, hogy a standard könyvtár összes függvénye a „quoted” nevet használja az AST jelentésében (a quoted kifejezés rövidítéseként).

A kód AST-vé alakítására szolgáló speciális forma neve quote. Egy kódblokkot fogad, és visszaadja annak AST-jét.

quote do
  2 + 3 - 1
end

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

Felhasználási esetek

Az Elixir metaprogramozásának a középpontjában az áll, hogy a kódot AST-ként lehet ábrázolni. A makrók (olyan Elixir-kód írásának a módja, amely Elixir-kódot állít elő) úgy működnek, hogy AST-t adnak vissza eredményként.

Az AST-k másik felhasználási esete a statikus kódelemzés, mint például az Exercism saját eszköze, az elemző, amelyet talán már ismersz arról a kis botról, amely megjegyzéseket fűz a megoldásaidhoz.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) AST fogalmat

A gyakorlás zárolva

Oldj fel még 1 feladatot, hogy gyakorolhasd a(z) AST fogalmat