https://github.com/beyondmagic/g7comp2025
https://github.com/beyondmagic/g7comp2025
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/beyondmagic/g7comp2025
- Owner: BeyondMagic
- Created: 2025-08-27T18:13:55.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-09-07T22:18:15.000Z (5 months ago)
- Last Synced: 2025-09-07T22:23:50.816Z (5 months ago)
- Size: 24.4 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Projeto: Transpilador de C para Lua (Flex + Bison + C)
Objetivo: construir um compilador que lê um subconjunto de C e transpila para Lua, usando Flex (léxico) e Bison (sintático) em C.
Resumo do MVP de linguagem suportada:
- Tipos: int, float, bool (true/false), char (como número), string opcional.
- Estruturas: declaração de variáveis, atribuição, expressões aritméticas/lógicas, if/else, while, for, função (definição/chamada) e return.
- I/O: mapeamento simples printf/puts -> print; scanf opcional.
- Saída Lua: usar local para variáveis, funções Lua equivalentes, operadores com mesma semântica; arrays opcionais como tabelas.
```
.
├── lexer/ # regras léxicas (lexer.l)
├── parser/ # gramática e ações (parser.y)
├── src/ # main.c, AST, tabela de símbolos, gerador Lua
├── tests/ # entradas C e saídas Lua esperadas
└── Makefile
```
Ambiente rápido (Linux):
```nu
sudo apt update
sudo apt install -y flex bison build-essential git
```
Build local (exemplo mínimo):
```nu
flex lexer/lexer.l
bison -d parser/parser.y
gcc -o c2lua lex.yy.c parser.tab.c src/*.c -lfl
./c2lua < tests/exemplo.c > out.lua
```
# Documentação de cada sprint
- [1ª sprint](./docs/sprints/1.md);
- 2ª sprint;
- 3ª sprint;
- 4ª sprint;
- 5ª sprint;
- 6ª sprint;
- 7ª sprint;
# Testes
A pasta `tests/` contém arquivos `.c` de entrada e os correspondentes `.lua` esperados. Use `diff` para comparar a saída gerada com a esperada.
Padrão de nomenclatura: `descricao_curta_teste.c` para entrada, e `descricao_curta_teste.lua` para saída esperada.