UnBCIC-TP2 / Oberon-Scala

An implementation of the Oberon language using Scala
55 stars 118 forks source link

Grupo 3 - Core Reduzido #177

Open Mattelis opened 3 weeks ago

Mattelis commented 3 weeks ago

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.