|
Acadêmico(a): Stephan Dieter Bieging |
Título: Implementação de Mapeamento Finito (Arrays) Dinâmico no Ambiente Furbol |
|
Conclusão: |
Os objetivos deste trabalho foram atingidos. A revisão da definição de escopo da linguagem, o qual torna possível o acesso a variáveis não-locais, e a implementação de arrays dinâmicos, que oferecem uma grande flexibilidade na construção de programas, foram implementadas. A implementação do acesso a variáveis não-locais foi baseada em Aho (1995) e em programas compilados e depurados no ambiente Borland Delphi 5, verificando-se o código objeto gerado pelo mesmo. A base teórica para a implementação de arrays dinâmicos foi baseada em Aho (1995). Estas construções foram especificadas utilizando a notação BNF e gramática de atributos, as quais mostraram-se muito eficientes para a definição de uma linguagem de programação como o FURBOL. A maior dificuldade foi a adaptação da especificação existente ao novo controle de escopo implementado. Uma estrutura a parte foi implementada com a finalidade de facilitar este controle e todas as produções foram alteradas para utilizar esta estrutura. O controle de dimensões de arrays semi-estáticos, implementado por Adriano (2001), também foi adaptado a esta nova estrutura. Os arrays dinâmicos podem ser utilizados em expressões numéricas e atribuições. As funções construídas para a obtenção de informações acerca dos arrays podem ser utilizadas em expressões, atribuições, comandos de repetição e comandos condicionais. Na alocação de arrays dinâmicos, onde são determinados os limites das dimensões, podem ser usadas variáveis e expressões que são avaliadas antes da execução do comando de alocação, permitindo assim maior flexibilidade na construção de programas. A limitação sobre os arrays dinâmicos está no fato de que não é possível atribuir um array dinâmico a outro diretamente. Esta cópia somente pode ser realizada copiando-se o valor de cada elemento de um array para outro. Também não é possível a atribuição de um array dinâmico para um array semi-estático e vice-versa. No acesso aos elementos de arrays dinâmicos, os subscritos não são verificados em tempo de execução quanto ao acesso indevido fora dos limites especificados, ou seja, pode-se acessar elementos que não foram alocados para o array dinâmico. Esta verificação poderia ser realizada comparando-se os valores dos subscritos com os valores dos limites inferior e superior da dimensão, contidos no descritor do array dinâmico. |
|
|