Summary: | === This dissertation presents a new methodology for the scalability problem in Denotational Semantics, named Component Based Denotational Semantics. This work uses a library of denotational semantics components, which encapsulate fundamental and recurring concepts of imperative programming languages. One of the main objectives of the library is to remove the apparent dependency on the context of constructs in the composition of their denotations. Thus, semantic definitions map the constructs of the abstract syntax of a language directly to the combination of components which model its semantics. The components encapsulate the flow of context information.
The main contributions of this work are: the definition of a new methodology based on components for the writing of scalable definitions of denotational semantics that promote reuse; the implementation of a development environment for applying the methodology, which generates interpreter prototypes for a language; organization of the fundamental and recurring concepts of imperative programming languages in a library of semantic definition components; abstraction of context in denotational semantics equations. === Este trabalho de dissertação aborda uma nova solução para o problema de escalabilidade da Semântica Denotacional, intitulada Semântica Denotacional Baseada em Componentes. Essa técnica utiliza uma biblioteca de componentes de semântica denotacional
que encapsulam conceitos fundamentais e recorrentes de linguagens de programação imperativas. Uma das principais funções da biblioteca é remover das equações semânticas a dependência aparente de contexto das construções. Dessa forma, as definições semânticas
são definidas pelo mapeamento direto entre as construções da sintaxe abstrata de uma linguagem e as combinações de componentes que modelam sua semântica. O fluxo de informações de contexto é encapsulado pelos componentes. Como principais contribuições do trabalho, podem-se citar: definição de uma nova metodologia baseada em componentes para obtenção de escalabilidade e reúso em definições de semântica denotacional; a implementação de um ambiente de desenvolvimento para a metodologia, o qual permite a escrita de protótipos de interpretadores para linguagens definidas; identificação e organização dos conceitos fundamentais e recorrentes
das linguagens de programação imperativas em uma biblioteca de componentes de definição semântica; abstração do contexto em equações semânticas denotacionais.
|