|
Acadêmico(a): Dennis Hiebert |
Título: Protótipo de um Compilador para a Linguagem PL/SQL |
|
Introdução: |
O uso de Sistemas Gerenciadores de Banco de Dados (SGBD) tem crescido e, cada vez mais, as empresas reconhecem as vantagens de sua utilização. Pode-se citar vários argumentos favoráveis à utilização de um SGBD, como por exemplo, o suporte à integração de dados, suporte à consistência de dados, suporte para múltiplos usuários, segurança e independência de dados.
Entre os gerenciadores de banco de dados relacionais, a linguagem lógica de consulta Structured Query Language (SQL) tornou-se um padrão. Segundo Date (1989), a linguagem SQL é composta por um grupo de facilidades para definição, manipulação e controle de dados de um banco de dados relacional. No entanto, cada implementação de SGBD relacional estende o SQL padrão (chamado SQL ANSI) em alguns pontos, dando origem a diversos dialetos SQL que são super conjuntos da definição padrão. Assim, praticamente todos são considerados compatíveis com a SQL padrão, mas não guardam compatibilidade entre eles.
Alguns SGBDs incorporam recursos chamados procedimentos armazenados, que são procedimentos gravados no banco de dados e que podem ser chamados a qualquer momento para executar comandos na base de dados. Para escrever esses procedimentos existe uma linguagem, que é caracterizada como uma linguagem procedural de quarta geração e funciona como extensão procedural do SQL. A Oracle denominou essa linguagem de PL/SQL, e segundo Oliveira (2000), a linguagem PL/SQL combina o poder de manipulação de dados do SQL com os recursos de uma linguagem de programação de alto nível. No entanto, assim como a linguagem SQL, não há uma padronização entre os SGBDs existentes quanto a sintaxe dessa linguagem, o que torna a utilização da mesma sensitiva ao contexto da implementação do banco de dados envolvido no desenvolvimento do sistema de informação.
O propósito do trabalho é, a partir de um determinado conjunto de comandos dessa linguagem de bancos de dados, definir um padrão para aquelas consideradas procedurais e que não são padronizadas, segundo as normas definidas pela International Standard Organization (ISO). Após esta etapa, especificar a gramática dessa linguagem padronizada e implementar um compilador capaz de realizar validações (checagem de erros) e gerar código específico para diversos SGBDs a partir do código fonte escrito.
Para a especificação da gramática utilizou-se a notação Backus-Naur Form (BNF), que é uma notação muito usada para a especificação de linguagens livres de contexto e, segundo José Neto (1987), pode ser considerada uma metalinguagem, já que ela própria é uma linguagem, através da qual as linguagens são especificadas. Para a implementação do compilador utilizou-se a ferramenta Delphi.
Como um propósito inicial, foram implementados mecanismos para geração de código para Oracle e MS SQL Server.
|
|
|