Download ICE - Intelligence Control Engine

Transcript
79
código intermediário da definição do agente. O construtor foi
inspirado no padrão Builder em [GAM94]. Este padrão foi
levemente modificado devido ao modo de funcionamento das
classes geradas pelas ferramentas utilizadas;
Gerador de código: após a árvore sintática ter sido criada, esta é
transformada em uma representação em termos de uma estrutura
de classes de objetos em conformidade com a especificação da
arquitetura
ICE.
Ao
final
do
processo
de
compilação
a
representação Orientada a Objetos é convertida em arquivos fonte
na linguagem alvo, que no caso deste trabalho é C++.
7.1.4 Analisador léxico e sintático
O processo de compilação no ICEC é encabeçado pelos
analisadores léxico e sintático. Estes analisadores são criados utilizando-se as
ferramentas já descritas, tendo como fonte a gramática da IADL. Devido à
forma com que as ferramentas utilizadas operam, foi necessária a criação de
um módulo que isolasse a geração de código intermediário do módulo de
análise sintática. As regras especificadas na definição da gramática da
linguagem para o analisador sintático são acompanhadas de regras da
gramática de atributos utilizada para a geração do código intermediário. Nas
regras da gramática de atributos são feitas chamadas para o módulo construtor
de nodos da árvore sintática, de modo a gerar o código intermediário.
7.1.5 Construtor de nodos da árvore sintática
Este módulo é responsável pela criação dos nodos da árvore
sintática, que corresponde à representação em código intermediário do agente
sendo compilado. Ele é composto basicamente por métodos para a criação de
tipos específicos de nodos, cada um representando um componente lógico da
definição de um agente. Estes nodos podem ser vistos na Figura 17 e são
todos derivados de uma classe comum, chamada de Node, que contém as
funcionalidades referentes a estrutura básica da árvore sintática. Ao final do