An algebraic approach to the design of compilers for object-oriented languages
AUTOR(ES)
Adolfo Almeida Duran
DATA DE PUBLICAÇÃO
2005
RESUMO
Neste trabalho discutimos o projeto de compiladores corretos por construÃÃo para linguagens orientadas a objeto. Um compilador correto à aquele que garante que a semÃntica à preservada quando o programa fonte à traduzido para a linguagem destino. O projeto de compiladores corretos para linguagens imperativas se encontra bem fundamentado; atualmente, o maior desafio à o desenvolvimento de uma abordagem para lidar com as caracterÃsticas de orientaÃÃo a objetos. Nesta tese, descrevemos uma abordagem algÃbrica para construÃÃo de compiladores corretos para uma linguagem orientada a objetos chamada ROOL (acrÃnimo para Renement Object-oriented Language), que à similar a Java e C++. Esta linguagem inclui classes, heranÃa, ligaÃÃo dinÃmica, recursÃo, cast e teste de tipos, e visibilidade baseada em classes. Na nossa abordagem, lidamos com o problema de corretude do compilador transformando a tarefa de compilaÃÃo em uma tarefa de refinamento de programa. O processo de compilaÃÃo passa ser identificado como sendo a reduÃÃo de um programa fonte, escrito em um subconjunto executÃvel da linguagem, para uma forma normal. A forma normal à gerada por uma sÃrie de transformaÃÃes que preservam a corretude, e sÃo provadas corretas a partir das leis bÃsicas da linguagem; portanto o processo à correto por construÃÃo. A maior vantagem da nossa abordagem reside na caracterizaÃÃo do processo de compilaÃÃo dentro de um sistema uniforme onde as comparaÃÃes e traduÃÃes entre semÃnticas sÃo evitadas. A reduÃÃo a forma normal e formalizada como uma Ãlgebra onde a noÃÃo central à a de refinamento de programas. Portanto, o produto da compilaÃÃo e um programa na prÃpria linguagem fonte. Nossa forma normal à um programa na forma de um interpretador, escrito na mesma linguagem fonte, emulando o comportamento da mÃquina destino. A partir desse interpretador à que capturamos a seqÃÃncia das instruÃÃes geradas. Definimos a Maquina Virtual de ROOL (RVM) como sendo nossa mÃquina destino; ela à baseada na MÃquina Virtual de Java (JVM). Tal uniformidade implica que todo o cÃlculo necessÃrio para assegurar a corretude do processo de compilaÃÃo e realizado em um Ãnico sistema de uma linguagem orientada a objetos cuja semÃntica à dada por leis algÃbricas. Nenhuma teoria relativa à linguagem fonte ou destino à desenvolvida ou usada no processo. O processo de compilaÃÃo à justificado por teoremas de reduÃÃo a forma normal. Existem cinco fases: pre-compilaÃÃo de classes, redirecionamento de chamada de mÃtodos, simplificaÃÃo,eliminaÃÃo de controle e refinamento de dados. Para cada fase, um teorema assegura o resultado esperado. O teorema principal conecta os passos intermediÃrios e estabelece o resultado para todo o processo. Uma vez que os teoremas de reduÃÃo para cada fase sÃo provados corretos a partir das leis bÃsicas de ROOL, eles corroboram para a corretude de todo o processo
ASSUNTO(S)
cÃlculo de refinamento linguagem da programaÃÃo ciencia da computacao rool
Documentos Relacionados
- OOTFD (Object-Oriented Transcription Factors Database): an object-oriented successor to TFD.
- An object-oriented class design for the generalized finite element method programming
- Object-oriented graph grammars
- An Object-oriented Taxonomy of Medical Data Presentations
- Benefits of an Object-oriented Database Representation for Controlled Medical Terminologies