Removi um monte de código inútil, principalmente do gerador de código final e terminei a implementação de geração de código atrasada para os fatores de uma expressão. Por fim, comecei a modificar as demais funções para expressões e comandos (“statements”).
Adicionei o mecanismo para geração de código de atribuições. Modifiquei o formato das funções para carga e armazenamento no “backend” e criei o código dos operadores unários (“-” e “~”).
Terminei a geração de código atrasada para expressões com variáveis atômicas e consertei alguns erros de lógica. De modo geral, a estrutura de análise léxica deve ser respeitada mesmo que haja erros semânticos ou de geração de código.
O tratamento de registros está completo. Oba-tchananan! Oba-tchananan!
Adicionei o tratamento de registros com acesso indireto à memória. A geração de código para seletores (índices ou campos) está pronta.
O código de geração para condicionais está quase pronto, faltando apenas acertar a questão dos rótulos.
O código para as estruturas condicionais e de repetição está pronto. Próximo passo: condições compostas!