AS

AST en Elixir

2 exercices

À propos de AST

L'arbre de syntaxe abstraite (AST), aussi appelé quoted expression, est une façon de représenter du code sous forme de données.

Chaque nœud de l'AST est un tuple à trois éléments.

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

Le premier élément, un atome, est l'opération. Le deuxième élément, une liste de mots-clés, correspond aux métadonnées. Le troisième élément est une liste d'arguments, qui contient d'autres nœuds. Les valeurs littérales telles que les nombres entiers, les atomes et les strings sont représentées dans l'AST par elles-mêmes plutôt que par des tuples à trois éléments.

Transforme du code en AST

Transformer du code Elixir en AST, et inversement, fait partie de la bibliothèque standard. Tu trouveras des fonctions pour manipuler les AST dans les modules Code (par exemple pour transformer une string contenant du code en AST) et Macro (par exemple pour parcourir l'AST ou le convertir en string).

Note que toutes les fonctions de la bibliothèque standard utilisent le nom « quoted » pour désigner l'AST (l'abréviation de quoted expression).

La forme spéciale qui transforme du code en AST s'appelle quote. Elle prend un bloc de code et renvoie son AST.

quote do
  2 + 3 - 1
end

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

Cas d'usage

La capacité de représenter du code sous forme d'AST est au cœur de la métaprogrammation en Elixir. Les macros, qui sont une façon d'écrire du code Elixir produisant du code Elixir, fonctionnent en renvoyant des AST en sortie.

Un autre cas d'usage des AST est l'analyse statique de code, comme l'outil d'Exercism lui-même, l'analyseur, que tu connais peut-être déjà comme le petit bot qui laisse des commentaires sur tes solutions.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends AST

L'entraînement est verrouillé

Déverrouille 1 exercice de plus pour t'entraîner sur AST