Construção da Árvore Sintática e Geração de Código MVS
- Universidade: UNIFAL - Universidade Federal de Alfenas
- Curso: Bacharelado em Ciência da Computação
- Disciplina: Teoria de Linguagens e Compiladores
- Professor: Luiz Eduardo da Silva
Este projeto implementa um compilador completo para a linguagem Simples, com duas funcionalidades principais:
- Análise Sintática e Construção da AST: Gera a árvore sintática abstrata em formato DOT (GraphViz)
- Geração de Código MVS: Produz código intermediário para a Máquina Virtual Simples
compilador_simpless/
├── src/ # Código-fonte
│ ├── tree.c / tree.h # Estrutura de árvore sintática
│ ├── utils.c / utils.h # Tabela de símbolos e utilitários
│ ├── sintatico.y # Parser (Bison)
│ ├── lexico_ast.l # Analisador léxico (Flex)
│ └── mvs.c # Máquina Virtual Simples
│
├── build/ # Arquivos compilados
│ ├── compilador # Executável do compilador
│ ├── mvs # Executável da MVS
│ └── *.o # Arquivos objeto
│
├── tests/ # Programas de teste
│ ├── dobro.simples # Calcula o dobro de um número
│ ├── fatorial.simples # Calcula o fatorial
│ └── maior.simples # Encontra o maior entre dois números
│
├── docs/ # Documentação
│ ├── README.md # Este arquivo
│ └── ESTRUTURA.md
│
└── Makefile # Sistema de build
# Compilar o projeto completo
make all
# Limpar arquivos de build
make clean
# Executar todos os testes
make test
# Mostrar ajuda
make helpO projeto inclui um script wrapper simples que automatiza todo o processo:
# Compilar e executar automaticamente
echo "5" | ./simples tests/dobro
# Gerar apenas a árvore sintática
./simples -ast tests/fatorial
# Gerar apenas o código MVS
./simples -mvs tests/maior
# Ver ajuda
./simples --helpVantagens do script simples:
- ✅ Compila automaticamente se necessário
- ✅ Busca arquivos em
tests/automaticamente - ✅ Gera PNG da árvore automaticamente (se GraphViz estiver instalado)
- ✅ Output colorido e organizado
- ✅ Tratamento de erros inteligente
./build/compilador -ast tests/dobro
# Gera: tests/dobro.dotVisualizar árvore:
dot -Tpng tests/dobro.dot -o tests/dobro.png./build/compilador tests/dobro
# Gera: tests/dobro.mvsecho "5" | ./build/mvs tests/dobro
# Saída: 10Calcula o dobro de um número.
Entrada: 5
Saída: 10
Status: ✅ PASSOU
Calcula o fatorial de um número.
Entrada: 5
Saída: 120
Status: ✅ PASSOU
Encontra o maior entre dois números.
Entrada: 10, 20
Saída: 20
Status: ✅ PASSOU
- GCC - Compilador C
- Flex - Gerador de analisadores léxicos
- Bison - Gerador de parsers
- GraphViz (opcional) - Para visualizar árvores sintáticas
- Make - Sistema de build
sudo apt-get install gcc make flex bison graphviz- ESTRUTURA.md - Descrição detalhada da estrutura do projeto
Este projeto foi desenvolvido para fins educacionais como parte do curso de Teoria de Linguagens e Compiladores da UNIFAL-MG.
Data de Entrega: Novembro/2025
Status: ✅ Completo e Funcional