Primeiro ciclo: compilar e executar
Antes de modificar, é preciso obter uma execução limpa.
Prática com bitcode textual
Abra o repositório da disciplina e localize o material da Semana 10.
A organização separa especificações de linguagem, implementação da AST, casos de teste e automação de compilação.
A prática transforma uma declaração simples em uma sequência de instruções de máquina abstrata.
Antes de modificar, é preciso obter uma execução limpa.
A declaração é reconhecida e convertida em instruções de uma máquina abstrata baseada em pilha.
Coloca uma constante na pilha da máquina abstrata.
Carrega o valor de uma variável, quando houver suporte no protótipo.
Consomem operandos e produzem o resultado da operação.
Armazena o resultado final no identificador da atribuição.
A regra do Bison identifica tipo, variável, atribuição e expressão.
A expressão aritmética é decomposta em operandos e operadores.
A ação associada à produção chama a rotina de geração.
As instruções são impressas em ordem compatível com a avaliação.
Os testes automatizados reduzem regressões quando novas instruções são adicionadas.
O lexer não reconhece algum símbolo usado no teste.
A gramática não cobre a forma da declaração ou expressão.
A emissão do bitcode não respeita a avaliação da expressão.
A entrada não cobre a funcionalidade recém-adicionada.
O protótipo é ponto de partida, não produto final.
Rodar make, make test e registrar a saída inicial.
Relacionar cada instrução gerada à produção gramatical correspondente.
Adicionar novos testes e uma pequena melhoria no gerador.
Atualizar README, comentar código, fazer commit e push.
Próximo passo: consolidar a geração de código final no compilador ou interpretador da equipe.