PyLua é um Compilador que converte código Python em código Lua equivalente, desenvolvido como projeto da disciplina de Compiladores 1. O projeto implementa todas as fases clássicas de um compilador: análise léxica, análise sintática, construção de AST, análise semântica básica e geração de código.
- Análise Léxica Completa: Reconhecimento de todos os tokens Python essenciais
- Parser Robusto: Análise sintática com recuperação de erros
- AST Hierárquica: Representação estruturada do código fonte
- Geração de Código Lua: Transpilação direta Python → Lua
- Tabela de Símbolos: Gerenciamento de variáveis e escopo
- Testes Automatizados: Suite completa de testes de validação
- Instalação e Uso
- Exemplos Práticos
- Arquitetura
- Funcionalidades
- Documentação Técnica
- Desenvolvimento
- Equipe
- GCC (versão 7.0+)
- Flex (versão 2.6.4+)
- Bison (versão 3.0+)
- Make (versão 4.2+)
chmod +x verificar_deps.sh
./verificar_deps.sh# Compilação completa
make clean && make./pylua_debug arquivo.py --gerar-lua saida.lua./pylua_debug./pylua_debug arquivo.py --gerar-luaEntrada Python (exemplo.py):
x = 10
y = 20
resultado = (x + y) * 2
print(resultado)Comando:
./pylua_debug exemplo.py --gerar-lua saida.luaSaída Lua (saida.lua):
local x = 10
local y = 20
local resultado = ((x + y) * 2)
print(resultado)Entrada Python:
idade = 18
if idade >= 18:
status = "adulto"
else:
status = "menor"Saída Lua:
local idade = 18
if (idade >= 18) then
local status = "adulto"
else
local status = "menor"
endO PyLua segue a arquitetura clássica de compiladores:
Código Python → Lexer → Parser → AST → Gerador → Código Lua
| Componente | Arquivo | Responsabilidade |
|---|---|---|
| Lexer | lexer/scanner.l |
Análise léxica e tokenização |
| Parser | parser/parser.y |
Análise sintática e construção da AST |
| AST | ast/ast.{h,c} |
Representação da estrutura do programa |
| Tabela de Símbolos | tabela/tabela.{h,c} |
Gerenciamento de variáveis |
| Código intermediário | tabela/tabela.{h,c} |
Ajuda na compilação de futuras otimizações |
| Gerador | gerador_codigo_final/ |
Geração de código Lua |
- Tipos de Dados:
int,float,str,bool - Operadores: Aritméticos, comparação, atribuição
- Estruturas de Controle:
if-else,while - Funções: Definição e chamada
- Expressões: Complexas com precedência correta
- Recuperação de Erros: Parser com recuperação de erros sintáticos e declarações indevidas
- Estruturas de dados (listas, dicionários)
- Classes e herança
- Módulos e imports
- Atas: Atas de reuniões onlines (whatsapp)
- Compilador: Documentação sobre esturturas(léxico, parser...), arquitetura, e testes
- Diagrama: Documentação do contendo a idealização da ast (diagrama)
- Metodologia: Divisão da equipe, como metodologia e decisões
- Planejamento: Planejamento inicial do projeto
PyLua/
├── lexer/ # Analisador léxico
│ └── scanner.l # Definições Flex
├── parser/ # Analisador sintático
│ └── parser.y # Gramática Bison
├── ast/ # Árvore sintática abstrata
│ ├── ast.h # Definições de tipos
│ └── ast.c # Implementação
|── codigo_intermediario/ # Código intermediário
│ ├── codigo_intermediario.c # Implementação do coódigo intermediário
│ └── codigo_intermediario.h # Definição
├── tabela/ # Tabela de símbolos
│ ├── tabela.h # Interface
│ └── tabela.c # Implementação
├── gerador_codigo_final/ # Gerador de código
│ ├── gerador_codigo_final.h
│ └── gerador_codigo_final.c
├── src/ # Arquivos gerados (temporários)
├── build/ # Executáveis de teste
├── exemplos_gabaritos/ # Comparação para testes automatizadas
├── exemplos/ # Exemplos de código Python
└── docs/ # Documentação
./pylua.sh test-generator --completo --validarEste projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
Grupo 8 - PyLua | Compiladores 1 - 2025.1
![]() Artur Mendonça Scrum Master @ArtyMend07 |
![]() Gabriel Lopes Product Owner @BrzGab |
![]() Guilherme Meister Developer @gmeister18 |
![]() Lucas Mendonça Developer @lucasarruda9 |
![]() Matheus Ferreira Developer @matferreira1 |
![]() Samuel Alves Developer @samuelalvess |
- Linguagem Principal: C (Flex/Bison)
- Linhas de Código: ~3000+
- Testes: 50+ casos de teste
- Cobertura: Lexer, Parser, AST, Gerador
- Documentação: 8 documentos técnicos
| Versão | Data | Descrição | Autor | Revisor |
|---|---|---|---|---|
| 1.0 | 25/04/2025 | Estrutura inicial do README | Gabriel Lopes | Lucas Mendonça |
| 2.0 | 17/06/2025 | Atualização da estrutura do repositório | Artur Mendonça | Lucas Mendonça |





