AS

AST in Elixir

2 esercizi

Informazioni su AST

L'Abstract Syntax Tree (AST), chiamato anche quoted expression, è un modo per rappresentare il codice come dati.

Ogni nodo dell'AST è una tupla di tre elementi.

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

Il primo elemento, un atomo, è l'operazione. Il secondo elemento, una keyword list, rappresenta i metadati. Il terzo elemento è una lista di argomenti, che contiene altri nodi. I valori letterali come numeri interi, atomi e stringhe sono rappresentati nell'AST come se stessi, anziché come tuple di tre elementi.

Trasformare il codice in AST

Trasformare codice Elixir in AST e gli AST di nuovo in codice fa parte della libreria standard. Puoi trovare le funzioni per lavorare con gli AST nei moduli Code (ad esempio per trasformare una stringa con del codice in un AST) e Macro (ad esempio per attraversare l'AST o trasformarlo in una stringa).

Nota che tutte le funzioni della libreria standard usano il nome «quoted» per indicare l'AST (abbreviazione di quoted expression).

La forma speciale per trasformare il codice in un AST si chiama quote. Accetta un blocco di codice e ne restituisce l'AST.

quote do
  2 + 3 - 1
end

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

Casi d'uso

La capacità di rappresentare il codice come AST è al cuore della metaprogrammazione in Elixir. Le macro, un modo per scrivere codice Elixir che produce codice Elixir, funzionano restituendo AST come output.

Un altro caso d'uso degli AST è l'analisi statica del codice, come lo strumento di Exercism stesso, l'Analyzer, che potresti già conoscere come il piccolo bot che lascia commenti sulle tue soluzioni.

Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara AST

La pratica è bloccata

Sblocca un altro esercizio per esercitarti su AST