📦 Sprint 2 — Controle de Fluxo (Condicionais) (06/04 - 12/04)
Matrícula | Nome | Nick no GitHub | 📸 |
---|---|---|---|
x | x | x |
Objetivo:
- Adicionar suporte a estruturas condicionais
se
,senao
,fimse
e operadores relacionais, gerando código C válido com blocosif
eelse
.
🧪 Funcionalidades Concluídas
🧩 Palavras-chave adicionadas
se
entao
senao
fimse
🔢 Operadores relacionais reconhecidos
==
(igual)!=
(diferente)<
,>
,<=
,>=
🚀 Como testar as novas funcionalidades ?
1. Compile o compilador com o Makefile
make
Isso irá rodar
flex
,bison
egcc
automaticamente para gerar o bináriocompilador
.
2. Execute com um arquivo de exemplo
./compilador < exemplos/exemplo2.pg
O compilador irá gerar um arquivo chamado saida.c
com o código equivalente em C.
3. Compile o código C gerado
gcc saida.c -o programa
./programa
🧹 Limpando arquivos gerados
Caso necessário, você pode executar o comando abaixo para remover todos os arquivos gerados automaticamente (como lex.yy.c
, y.tab.c
, y.tab.h
, saida.c
, etc.):
make clean
make clean
✅ Critérios de aceitação
Critério | Descrição | Status |
---|---|---|
🔤 Léxico | Tokens para se , entao , senao , fimse e operadores relacionais |
✅ |
🧠 Sintático | Regras no yacc.y para condicionais |
✅ |
🔁 Blocos de decisão | Suporte a if simples e if/else com múltiplos comandos |
✅ |
💬 Expressões relacionais | Suporte completo a comparações entre expressões | ✅ |
🧪 Exemplo testado | Arquivo exemplo2.pg executado e traduzido corretamente |
✅ |
🧾 saida.c funcional | Arquivo C gerado compila e executa corretamente | ✅ |
📁 Arquivos modificados
lex.l
: Adição de tokens relacionais e palavras-chave de decisãoyacc.y
: Regras novas para blocos condicionais e operadores lógicosexemplos/exemplo2.pg
: Script Portugol usado como teste da sprint
🔚 Conclusão
A Sprint 2 foi concluída com sucesso, consolidando a base do compilador com controle de fluxo condicional. O sistema agora suporta decisões simples e compostas, sendo possível testar condições usando operadores relacionais com tradução correta para C.