Este é um projeto educacional do Newby, um compilador minimalista escrito em C puro, que converte código-fonte .nby para executáveis binários nativos x86-64 Linux.
O foco deste projeto é didático, demonstrando as etapas fundamentais da construção de um compilador real, desde a análise léxica até a geração de código binário.
- Declaração de variáveis do tipo
int(64 bits). - Expressões matemáticas básicas (Adição
+). - Comando
print()para exibir valores inteiros no console. - Gerenciamento de variáveis na Stack (pilha).
- Geração de executáveis Linux ELF64 de passo único.
O compilador nbc segue o pipeline clássico:
- Lexer (
src/lexer.c): Transforma o código fonte em tokens. - Parser (
src/parser.c): Valida a sintaxe e constrói a árvore sintática (AST). - Codegen (
src/codegen.c): Gera instruções Assembly x86-64 temporárias e invoca o assembler/linker para criar o executável final.
- GCC (Para compilar o
nbc) - NASM (Assembler usado internamente pelo
nbc) - LD (Linker usado internamente pelo
nbc) - Make
Execute:
makeO compilador gera automaticamente um executável com o mesmo nome do arquivo de entrada (sem a extensão .nby):
./nbc hello.nby./helloPara compilar o nbc, compilar hello.nby e executar o resultado em um único passo:
make runint x = 3;
int y = x + 5;
print(y);
print(x);Criado para fins educacionais. Sinta-se à vontade para explorar e modificar o Newby!