.+37 testes (740 linhas) pro TACodeGenerator (14 testes revelam limitações)
→ Testes simples para statements e expressões não testadas
ex: (New Stmt, Exit Stmt, Write Stmt etc)
→ Testes abrangentes para statements e expressions complexas
ex: (Loops com operações de array, operações de array com variáveis etc)
→ Testes que revelam limitações do TACodeGenerator (lançam a exceção java.lang.RuntimeException):
.Para Double:
→ Pointer Assignment com double
→ Array Assignment com double
→ AddExpression com double
→ SubExpression com double
→ MultExpression com double
→ DivExpression com double
→ ModExpression com double
.MOTIVO: método “computeBinExpressionType” do TypeChecker só lida com inteiros para expressões aritméticas binárias.
.Para Array Assignment:
→ Índice da array como expressão
→ Índice da array como elemento de outra lista
→ Índice da array como variável
→ Índice da array como double
.MOTIVO: método “getArrayOffset” só consegue lidar com valores inteiros passados diretamente.
.+14 testes para o PrettyPrinter (4 revelam limitações)
→ Testes simples para operações TAC que não estavam sendo testadas
ex: (NotOp, Jump, JumpTrue, OrOp etc)
→ Testes que revelaram limitações no PrettyPrinter:
.Para IfStatements: não era gerado espaçamento entre “if” e primeiro operando.
→ Solução: constante singleTab = “ “ acrescentada para formatação adequada
.Para ArrayAssignments: não havia implementado a operação TAC “ArraySet” para atribuição de arrays.
→ Solução: método “handleArrayOffset” que calcula índice a partir do offset em “ArraySet” + implementação de “ArraySet” em “generateCode”.
.Para ArraySubscript: não havia implementado a operação TAC “ArrayGet”.
→ Solução: implementação de “ArrayGet” em “generateCode”, inserindo formatação correta.
.Para Loops: não havia implementado a operação TAC NOp para sinalizar label.
→ Solução: implementação de “NOp” em “generateCode”.
.Demais contribuições:
→ Tratamento de erros nos métodos generateExpression() e generateStatement(), lançando exceções mais precisas para expressões ou declarações que não tenham sido implementadas.
→ Melhorias nas descrições para clareza e expressividade nas suites de teste.
.+37 testes (740 linhas) pro TACodeGenerator (14 testes revelam limitações) → Testes simples para statements e expressões não testadas ex: (New Stmt, Exit Stmt, Write Stmt etc)
→ Testes abrangentes para statements e expressions complexas ex: (Loops com operações de array, operações de array com variáveis etc)
→ Testes que revelam limitações do TACodeGenerator (lançam a exceção java.lang.RuntimeException): .Para Double: → Pointer Assignment com double → Array Assignment com double → AddExpression com double → SubExpression com double → MultExpression com double → DivExpression com double → ModExpression com double .MOTIVO: método “computeBinExpressionType” do TypeChecker só lida com inteiros para expressões aritméticas binárias.
.Para Array Assignment: → Índice da array como expressão → Índice da array como elemento de outra lista → Índice da array como variável → Índice da array como double .MOTIVO: método “getArrayOffset” só consegue lidar com valores inteiros passados diretamente.
.+14 testes para o PrettyPrinter (4 revelam limitações) → Testes simples para operações TAC que não estavam sendo testadas ex: (NotOp, Jump, JumpTrue, OrOp etc)
→ Testes que revelaram limitações no PrettyPrinter: .Para IfStatements: não era gerado espaçamento entre “if” e primeiro operando. → Solução: constante singleTab = “ “ acrescentada para formatação adequada
.Para ArrayAssignments: não havia implementado a operação TAC “ArraySet” para atribuição de arrays. → Solução: método “handleArrayOffset” que calcula índice a partir do offset em “ArraySet” + implementação de “ArraySet” em “generateCode”.
.Para ArraySubscript: não havia implementado a operação TAC “ArrayGet”. → Solução: implementação de “ArrayGet” em “generateCode”, inserindo formatação correta.
.Para Loops: não havia implementado a operação TAC NOp para sinalizar label. → Solução: implementação de “NOp” em “generateCode”.
.Demais contribuições: → Tratamento de erros nos métodos generateExpression() e generateStatement(), lançando exceções mais precisas para expressões ou declarações que não tenham sido implementadas.
→ Melhorias nas descrições para clareza e expressividade nas suites de teste.
→ Opção de TACode no backend.