tokens, ast, ir e percurso
O que o lexer, o parser e o compilador viram — quando o código é lido de outro jeito.
Quatro comandos que mostram o programa como a linguagem o vê. São os primeiros a usar quando o código não faz o que parece — e a suspeita é de que ele está sendo lido de outro jeito.
bash
dataforge tokens app.df # o que o lexer viu
dataforge ast app.df # a arvore que o parser montou
dataforge ir app.df # HIR, MIR, analises, SSA, LIR
dataforge ir app.df --fase=mir --acao=total # o grafo de fluxo de uma acao
dataforge percurso app.df # todas as fases, em ordem, medidas
dataforge percurso app.df --desenho # o caminho desenhado, com as ausenciasO caso clássico: `//`#
// é comentário por padrão, e só vira divisão inteira seguido de dígito, (, ou chamada/índice/membro. x // 2 é divisão; x // nota é comentário. dataforge tokens mostra na hora qual das duas o lexer escolheu — e ~/ é a divisão inteira sem ambiguidade.
| Fase | O que ela mostra |
|---|---|
hir | a árvore depois do açúcar — e quanto dele o arquivo usa |
mir | o grafo de fluxo: bloco básico, aresta, laço, tratador |
analises | alcance, constantes, escapatória, nome talvez não definido |
ssa | uma definição por nome, com os nós φ das junções |
lir | o que o compilador de fechamentos compilou — e o que recuou |
Continue em Arquitetura e Gramática.