Projeto da disciplina de Compiladores 1. Implementa um compilador para um subconjunto da linguagem C, escrito em Rust.
src/
├── lexer/ Análise léxica — transforma código-fonte em tokens
├── parser/ Análise sintática — constrói a AST via Pratt parsing
├── analyser/ Análise semântica — verificação de tipos e escopo (em desenvolvimento)
├── codegen/ Geração de código — LLVM IR / Assembly (em desenvolvimento)
├── common/ Estruturas compartilhadas: AST, erros, spans, utilitários
└── tests/ Testes unitários por módulo
- Rust 1.70+
rustup update stablecargo buildRodar o compilador sobre um arquivo de entrada:
cargo run -- <arquivo>Exemplo:
cargo run -- input.cO compilador imprime os tokens reconhecidos e eventuais diagnósticos de erro.
O modo REPL interativo (sem argumentos) ainda não está implementado.
cargo testcargo test lexical # testes do scanner/lexer (21 casos)
cargo test parser # testes do parser / AST (8 casos)
cargo test literals # testes de literais numéricos (4 casos)
cargo test token # testes de tokens individuais (2 casos)
cargo test source # testes de SourceFile e spans (12 casos)
cargo test lexer_file # testes do scanner lendo arquivos (7 casos)
cargo test ast_errors # testes de erros de AST (4 casos)cargo test -- --nocapture| Arquivo | Cobertura | Testes |
|---|---|---|
src/tests/lexical_test.rs |
Scanner: operadores, palavras-chave, literais | 21 |
src/tests/source_test.rs |
SourceFile, ByteSpan, posicionamento |
12 |
src/tests/lexer_file_test.rs |
Scanner sobre arquivos reais | 7 |
src/tests/parser_test.rs |
Parser / construção de AST | 8 |
src/tests/literals_test.rs |
Literais inteiros, floats, strings | 4 |
src/tests/ast_errors.rs |
Diagnósticos e erros de AST | 4 |
src/tests/token_test.rs |
Token e TokenKind |
2 |
| Nome | GitHub / contato |
|---|---|
| Lucas Andrade Zanetti | @Bappoz |
| Gustavo | @guxvr |
| Hugo Freitas Silva | @HugoFreitass |
| Matheus Lemes | @matheuslemesam |
| Philipe Caetano | philipe2015amancio@hotmail.com |