ChrisOS Research ProjectOperating systems · language systems · graphics · machine emulation
DOCUMENTATION ARCHIVEMAIN BRANCH
ChrisOS/Construção de compiladores: do texto à semântica executável

Construção de compiladores: do texto à semântica executável

Estágios

Compilador transforma uma linguagem formal em outra preservando o significado definido.

Estágios de compilação
Decomposição comum; compiladores concretos podem combinar estágios.

Lexer

Converte caracteres em tokens: identificadores, keywords, literais, operadores e pontuação. Posição de fonte permite diagnostics.

Lexer responde "qual token é este texto?", não se a expressão é semanticamente válida.

Parser

Verifica gramática e produz árvore ou representação equivalente. Precedência precisa distinguir a + b * c de (a + b) * c.

Semântica

Programa sintaticamente válido ainda pode ter símbolo indefinido, tipos incompatíveis, argumentos errados, lvalue inválido ou definições duplicadas.

Semantic analysis utiliza symbol tables, scopes e sistema de tipos.

IR

Intermediate representation separa sintaxe fonte de machine code. Facilita verificação, otimização e múltiplos backends.

Codegen

Geração precisa obedecer ISA e ABI: encoding, registradores, stack frame, calling convention, data layout e relocations. Bytes decodificáveis não bastam; devem preservar semântica.

Objetos e linker

Objetos relocáveis permitem separate compilation. Linker resolve símbolos e endereços finais.

Diagnostics

Compilador que ignora sintaxe desconhecida silenciosamente é perigoso. Sucesso precisa significar que o subset aceito foi realmente traduzido. Localização, severidade e mensagem fazem parte do contrato.

Bootstrap

Self-hosting cria linhagem entre compiladores. Prova exige validar artifacts e comportamento entre estágios; não basta o compilador ser escrito na própria linguagem.

Dois caminhos no ChrisOS

ChrisOS possui ChrisC → CLVM para aplicações e KCC/ChrisAsm/ChrisO/ChrisLd para código nativo/kernel. São pipelines diferentes e os capítulos seguintes os tratam separadamente.

Registro do documento ID: compiler-pipeline Reviewed source: da3df29cb397 Class: technical-chapter