AS

AST en Elixir

2 ejercicios

Acerca de AST

El árbol de sintaxis abstracta (AST) es una forma de representar código como datos. También se le llama expresión citada.

Cada nodo del AST es una tupla de tres elementos.

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

El primer elemento, un átomo, es la operación. El segundo elemento es una lista de palabras clave que contiene los metadatos. El tercer elemento es una lista de argumentos, que a su vez contiene otros nodos. Los valores literales, como los enteros, los átomos y los strings, se representan en el AST como ellos mismos en lugar de como tuplas de tres elementos.

Cómo convertir código en AST

Convertir código de Elixir en AST y los AST de vuelta en código es parte de la biblioteca estándar. Puedes encontrar funciones para trabajar con AST en los módulos Code (por ejemplo, para convertir en un AST un string que contiene código) y Macro (por ejemplo, para recorrer el AST o convertirlo en un string).

Ten en cuenta que todas las funciones de la biblioteca estándar usan el nombre «quoted» para referirse al AST (abreviatura de expresión citada).

La forma especial para convertir código en un AST se llama quote. Acepta un bloque de código y devuelve su AST.

quote do
  2 + 3 - 1
end

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

Casos de uso

La capacidad de representar código como un AST es el corazón de la metaprogramación en Elixir. Las macros, que son una forma de escribir código de Elixir que produce código de Elixir, funcionan devolviendo AST como resultado.

Otro caso de uso de los AST es el análisis estático de código, como la herramienta de Exercism, el Analyzer, que quizá ya conozcas como el pequeño bot que deja comentarios en tus soluciones.

Editar en GitHub El enlace se abre en una ventana o pestaña nueva

Aprende AST

La práctica está bloqueada

Desbloquea 1 ejercicio más para practicar AST