AS

AST em Elixir

2 exercícios

Sobre AST

A Árvore de Sintaxe Abstrata (AST), também chamada de expressão citada, é uma forma de representar código como dados.

Cada nó na AST é uma tupla de três elementos.

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

O primeiro elemento, um átomo, é a operação. O segundo elemento é uma lista de palavras-chave: os metadados. O terceiro elemento é uma lista de argumentos, que contém outros nós. Valores literais, como inteiros, átomos e strings, aparecem na AST como eles mesmos, em vez de tuplas de três elementos.

Transformando código em ASTs

Transformar código Elixir em ASTs e ASTs de volta em código faz parte da biblioteca padrão. Você encontra funções para trabalhar com ASTs nos módulos Code (por exemplo, para transformar uma string com código em uma AST) e Macro (por exemplo, para percorrer a AST ou transformá-la em uma string).

Repare que todas as funções da biblioteca padrão usam o nome "quoted" para se referir à AST (abreviação de expressão citada).

A forma especial para transformar código em uma AST é chamada de quote. Ela aceita um bloco de código e retorna sua AST.

quote do
  2 + 3 - 1
end

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

Casos de uso

A capacidade de representar código como uma AST está no cerne da metaprogramação em Elixir. As Macros, que são uma forma de escrever código Elixir que produz código Elixir, funcionam retornando ASTs como resultado.

Outro caso de uso das ASTs é a análise estática de código, como a ferramenta do próprio Exercism, o Analyzer, que você talvez já conheça como o botzinho que deixa comentários nas suas soluções.

Editar via GitHub O link abre em uma nova janela ou aba

Aprenda AST

A prática está bloqueada

Desbloqueie mais 1 exercício para praticar AST