Proposta de mudança na arquitetura de statements
Closed this issue · 2 comments
Eu percebi que todas as statements, ou stmts, estão definidas em um único arquivo (Interpreter). No entanto, qualquer alteração na interpretação desses stmts ou na inclusão de algum recurso do interpretador vai acabar fazendo com que aquele arquivo fique muito grande.
Proponho a separação desse conjunto de stmts, um para cada arquivo onde cada stmt é uma classe. Essa proposta contém benefícios a longo prazo e é simular a alguns compiladores como o brain.
@rafaelcn , os statements estão definidos como uma hierarquia de classes na AST.
Estamos explorando recursos de linguagens imperativas (OO) e recursos de linguagens funcionais. Na minha experiência, nos beneficiamos muito de casamento de padrões nas implementações de linguagens de programação. Em particular, poderíamos estar usando apenas casamento de padrões para implementar o Interpretador (por exemplo). A opção por uma abordagem híbrida (visitor + pattern matching) tem por finalidade discutir padrões de projeto com os alunos. Na prática, faria uma implementação mais alinhada com o paradigma funcional---i.e., sem os visitors.
Como discutido em aula, concordo com seus pontos.