-
Notifications
You must be signed in to change notification settings - Fork 3
Compilador AQL
AQL (Archetype Query Language) é a linguagem de consulta baseada em arquétipos empregada pelos clientes para requisitar informações de saúde, independente do esquema empregado para armazenamento, ao HealthDB. Antes que uma sentença em AQL possa ser executada é necessário analisá-la sintática e semanticamente, dentre várias outras operações, conforme ilustrado no diagrama de fluxo de dados abaixo.
As funções (processos) acima são implementados pelos componentes abaixo. Observe que várias funções foram agrupadas no componente Compilador AQL, assim como no componente Compilador RI. Esses componentes, por sua vez, são utilizados pelo Processador AQL, mas não diretamente, mas pelas interfaces correspondentes, o que assegura independência do HealthDB de versões desses compiladores. A intenção é a mesma com a interface IAdaptador, contudo, nessa figura, nem a interface nem o componente que a implementa estão conectados a outros elementos do HealthDB. Isso porque o fluxo de controle do Compilador RI para o Adaptador é distinto do fluxo de dados e executado por elemento além do escopo "compilação". Dito isso, o Adaptador foi mantido para identificar a implementação de todos os processos no diagrama de fluxo de dados acima.
O presente projeto visa construir o compilador para AQL a ser utilizado pelo HealthDB.
- P1. Erros léxicos e sintáticos. Parser recebe a consulta AQL, conforme fornecida, e monta a Árvore Sintática (AS).
- P2. Validação semântica. AS é validada (semantic checking) pelo preprocessador:
- Arquétipos referenciados devem estar "cadastrados".
- Paths referenciados validados.
- Usos dos atributos.
- Verificação de tipos.
- P3. Gerador do plano lógico (representação interna).
- P4. Otimizador do plano lógico (reescrita da representação interna).