Múltiplas modificações foram feitas, primariamente foi criado um Core reduzido baseado em Expressões ao invés de Statements, foi criado um arquivo Oberon Types e Common em um pacote único que armazena funções e tipos utilizados pelo nosso Oberon Core e o AST padrão. No novo core, SequenceExp é baseado em uma tupla de expressões ao invés de uma lista de Statements como é SequenceStmt e o tipo Procedure foi modificado para depender de um Parâmetro +A que determina se é de Statement, Expression ou outro tipo. Por esses motivos, foi necessário modificar a maioria dos arquivos src do projeto para consertar imports e modificar o uso de Procedure para Procedure[Statement].
Além disso, foi criado um Core2Transformer, que transforma estruturas do core AST em suas correspondentes de nosso core, fazendo as modificações necessárias para converter o que depende de Statement em Expression.
Recomendaria uma análise mais cautelosa das mudanças, uma vez que devido à necessidade de interferir em diversos aspectos, é possível que algum equivoco ou bug tenha passado despercebido apesar dos testes. O único fator que conscientemente removemos da versão original é a função accept de Procedure, que resultava em um conflito que não sabíamos resolver e não consideramos prioridade.
Mateus e Nicolas
Múltiplas modificações foram feitas, primariamente foi criado um Core reduzido baseado em Expressões ao invés de Statements, foi criado um arquivo Oberon Types e Common em um pacote único que armazena funções e tipos utilizados pelo nosso Oberon Core e o AST padrão. No novo core, SequenceExp é baseado em uma tupla de expressões ao invés de uma lista de Statements como é SequenceStmt e o tipo Procedure foi modificado para depender de um Parâmetro +A que determina se é de Statement, Expression ou outro tipo. Por esses motivos, foi necessário modificar a maioria dos arquivos src do projeto para consertar imports e modificar o uso de Procedure para Procedure[Statement].
Além disso, foi criado um Core2Transformer, que transforma estruturas do core AST em suas correspondentes de nosso core, fazendo as modificações necessárias para converter o que depende de Statement em Expression.
Recomendaria uma análise mais cautelosa das mudanças, uma vez que devido à necessidade de interferir em diversos aspectos, é possível que algum equivoco ou bug tenha passado despercebido apesar dos testes. O único fator que conscientemente removemos da versão original é a função accept de Procedure, que resultava em um conflito que não sabíamos resolver e não consideramos prioridade.