Pular para o conteúdo

Dentro do compilador

Do texto ao que roda: as oito fases, o que cada uma entrega, e como ver cada uma de dentro da linguagem.

Um arquivo .df atravessa oito fases antes de rodar, e todas podem ser vistas de dentro da linguagem, pelo Arcane.Compilador, ou da linha de comando, por dataforge ir. Nenhuma é caixa-preta: o que o analisador conclui, o grafo em que ele concluiu e o que o backend compilou são dados que um programa lê.

dataforge
adopt Arcane.Compilador as Comp

assert Comp.fases() is ["lexer", "parser", "hir", "mir", "analises", "ssa", "otimizado", "lir"]
out Comp.tokens("x := 1 + 2")[0]
FaseRecebeEntregaPágina
lexero textotokens com linha e colunaLexer
parsertokensa árvore sintáticaParser
analisadora árvoreerros e avisos, antes de rodarO analisador
HIRa árvorea árvore sem açúcarHIR
MIRo HIRblocos básicos e arestasMIR
análiseso MIRvivas, constantes, alcanceO que o fluxo prova
SSAo MIRuma definição por nome, com φSSA
LIRa árvoreo que o compilador de fechamentos cobriuBackend

Por onde seguir#