Skip to content

Compilador AQL

Fábio Nogueira de Lucena edited this page Jan 6, 2017 · 30 revisions

Contexto

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.

hdb-compiler

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.

hdb-compiler-components

Objetivo

O presente projeto visa construir o compilador para AQL a ser utilizado pelo HealthDB.

Passos

  • 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).

Links relevantes

Clone this wiki locally