Skip to content

BeyondMagic/c2lua

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

98 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 (apenas uma declaração), 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.

O que não será suportado:

  • Ponteiros, structs, alocação dinâmica, manipulação de memória.
  • Recursos avançados: pré-processador, macros, diretivas de compilação.
.
├── 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/
│   ├── pass/    # casos que devem passar
│   └── fail/    # casos que precisam falhar
└── Makefile

Ambiente de Desenvolvimento

Ubuntu Linux:

sudo apt update
sudo apt install -y flex bison build-essential git

Arch Linux:

sudo pacman -Syu flex bison base-devel git

Build local (exemplo mínimo):

make 
./c2lua tests/pass/expressions.c

Documentação de cada sprint

Testes

A pasta tests/ está organizada em:

  • tests/semantic/pass: casos que devem gerar Lua válido e executar com sucesso;
  • tests/semantic/fail: casos que precisam falhar na análise semântica (arquivos .err com a mensagem esperada);

Execute as suítes pelo Makefile:

make test            # verifica os smoke tests (tradução direta C -> Lua)

Os golden files utilizam o mesmo nome-base do arquivo .c, com extensão .lua (para PASS) ou .golden/.err (para FAIL).

Membros

  • Andre Lopes de Sousa - 211031593
  • João Victor da Silva Batista de Farias - 221022604
  • Livia Rodrigues Reis - 180105051
  • Marco Marques de Castro - 211062197
  • Sophia Souza da Silva - 231026886

About

Transpilador de C para Lua (Flex + Bison + C)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors 7