• Nenhum resultado encontrado

Animac¸˜ao em Geradores de Compiladores

No documento Sistematização da animação de programas (páginas 60-63)

Estes sistemas caracterizam-se por serem destinados essencialmente `a construc¸ ˜ao de compiladores in- tegrados em ambientes de programac¸ ˜ao mas, por recorrerem `a descric¸˜ao formal de linguagens e `a representac¸ ˜ao interna de programas, geram algumas visualizac¸ ˜oes sobre o processo de gerac¸˜ao do com- pilador ou permitem a definic¸˜ao de processos de animac¸˜ao.

2.6.1 O sistemaLRC

LRC([Sar99],[KS98]) ´e um sistema de construc¸ ˜ao de ambientes de programac¸ ˜ao, sendo essa construc¸ ˜ao baseada na especificac¸ ˜ao formal da linguagem na qual se pretende programar. A especificac¸ ˜ao l´exica, sint´actica e semˆantica da linguagem ´e feita atrav´es de gram´aticas de atributos de ordem superior.

Este sistema aceita como entrada uma gram´atica de atributos e gera calculadores de atributos puramente funcionais em C e em Haskell.

A arquitectura do sistemaLRC´e constitu´ıda por trˆes partes: processador de gram´aticas de atributos de ordem superior; um gerador de func¸ ˜oes de visita; e um sistema de runtime que contem um calculador incremental e um visualizador. O processador gera, a partir de uma gram´atica de atributos de ordem superior, especificac¸ ˜oes para os geradores l´exico e sint´actico, um conjunto de func¸ ˜oes para o calculador de atributos de an´alise semˆantica e uma descric¸ ˜ao abstracta da gram´atica de atributos. Esta descric¸ ˜ao abstracta ´e feita numa linguagem interm´edia, independente da linguagem de entrada.

O gerador de func¸ ˜oes de visita ´e o back-end do sistema que processa a gram´atica de atributos abstracta e gera calculadores de atributos puramente funcionais.

O sistema de runtime efectua c´alculo incremental e constr´oi as visualizac¸ ˜oes. As ferramentas geradas pelo sistema contˆem interfaces gr´aficas avanc¸adas. Estas interfaces s˜ao descritas dentro do formalis- mo das gram´aticas de atributos. Durante o c´alculo de atributos, um dos atributos a ser sintetizado ´e a descric¸˜ao abstracta da interface. O visualizador tamb´em ´e incremental: quando a ´arvore de sintaxe sofre uma alterac¸˜ao, a interface ´e novamente calculada e o visualizador actualiza as partes alteradas.

Na medida em que o sistema LRCpermite especificar ambientes de programac¸ ˜ao para uma dada lin- guagem, tem acesso `a parte semˆantica e ao c´alculo de atributos efectuado durante a execuc¸˜ao de um programa. Permite tamb´em especificar o layout, ou seja, o formato em que s˜ao apresentados os resulta- dos.

Este sistema permite, ent˜ao, com relativa facilidade, aceder a valores interm´edios das vari´aveis de um programa e apresent´a-los de forma elucidativa (por exemplo, sob a forma de animac¸˜ao do programa). A animac¸˜ao pode ser constru´ıda anotando a gram´atica abstracta com func¸ ˜oes de desenho. Nessas situac¸ ˜oes, o sistema LRC pode ser visto como um sistema de animac¸˜ao do tipo IV (multi-algoritmo e multi- linguagem), no entanto, o sistema n˜ao est´a vocacionado para a construc¸ ˜ao de animac¸ ˜oes de programas e poder´a n˜ao ser f´acil gerar animac¸ ˜oes de programas mais complexos.

2.6.2 O sistemaCENTAUR

O sistemaCENTAUR[Ber91] foi criado para desenvolvimento de ambientes de programac¸˜ao. A cons- truc¸˜ao desses ambientes baseia-se na descric¸ ˜ao formal axiom´atica (l´ogica natural) das linguagens de programac¸ ˜ao para as quais os ambientes v˜ao ser gerados. As descric¸ ˜oes formais focam aspectos sint´ac-

ticos, como gram´aticas independentes de contexto e descric¸ ˜oes de layout’s, e aspectos semˆanticos como disciplina de tipos e semˆantica operacional ou traduc¸˜ao para outras linguagens.

Os autores apresentam ainda o conceito de subject tracking que permite associar a execuc¸˜ao a posic¸ ˜oes do programa. Cada instruc¸ ˜ao aparece associada a uma posic¸˜ao e define uma ocorrˆencia.

As manipulac¸ ˜oes formais que integram computac¸ ˜oes de ocorrˆencias s˜ao sistem´aticas e automatizadas. Os autores acreditam que esta t´ecnica poder´a ser usada para animar programas ou para colocar break- points no interpretador gerado a partir destas especificac¸ ˜oes formais.

2.6.3 O ambienteSmartTools

SmartTools[AP02] permite o desenvolvimento r´apido de ambientes de programac¸ ˜ao: produz um editor estruturado e ferramentas de visualizac¸ ˜ao. Este sistema ´e um sucessor doCentaur, usa os mesmos con- ceitos b´asicos como a especificac¸ ˜ao baseada na ´arvore de sintaxe abstracta.

De um formalismo AST (Abstract Syntax Tree) que descreve uma dada linguagem, SmartToolsgera automaticamente um editor estruturado para essa linguagem. Assim, o utilizador pode editar qual- quer ficheiro nessa linguagem usando esse editor e disp˜oe tamb´em de algumas ferramentas gen´ericas de visualizac¸ ˜ao.

A especificac¸ ˜ao do utilizador n˜ao tem que seguir a sintaxe AST do SmartTools. Em alternativa, a especificac¸ ˜ao pode ser feita atrav´es de DTD’s, seguindo a norma XML, porque oSmartToolsinclui um conversor DTD/AST. Para al´em do editor, poder˜ao ser gerados um parser e um pretty-printer. Para tal, o utilizador deve indicar mais informac¸˜ao sobre atributos extra que s˜ao necess´arios.

Para oSmartTools, cada ´arvore de sintaxe abstracta representa um documento a partir do qual se pode construir e mapear uma ou mais vistas. Por exemplo, para um texto pode ser produzido um texto for- matado (pelo pretty-printer) ou uma representac¸ ˜ao gr´afica da ´arvore ou informac¸ ˜ao sobre algum nodo seleccionado. Para tal, s˜ao usadas regras de transformac¸ ˜ao (da ´arvore) definidas na linguagem Xpp. Cada regra ´e um par que faz corresponder a cada padr˜ao (nodo com restric¸ ˜oes aos seus filhos ou seus atributos) o c´odigo da formatac¸˜ao desejada. O utilizador deve ent˜ao definir na notac¸˜aoXppas func¸ ˜oes correspondentes aos operadores da sua linguagem. Neste sentido, se o utilizador associar func¸ ˜oes de desenho, poder´a criar visualizac¸ ˜oes de programas escritos nessa linguagem.

OSmartToolspode tamb´em gerar ferramentas semˆanticas (para transformac¸ ˜ao dos textos fonte), mas `a custa de visitor patterns que dever˜ao ser instanciados pelo utilizador.

Na implementac¸˜ao do SmartTools foi usado o Java Swing API, o que permitiu obter uma interface gr´afica de boa qualidade e de f´acil de configurac¸ ˜ao.

2.6.4 O sistemaLISA

O sistemaLISA´e uma ferramenta de implementac¸˜ao autom´atica de linguagens. Esta ferramenta [MLAZ00] produz compiladores e interpretadores em Java, a partir de uma especificac¸ ˜ao formal da linguagem. O ambiente gerado inclui um editor, um compilador/interpretador e outras ferramentas gr´aficas. Este am- biente integrado permite especificar e gerar analisadores, compilar e executar os programas fonte. Na an´alise l´exica e sint´actica s˜ao usadas express˜oes regulares e a notac¸˜ao BNF, respectivamente. A semˆantica da linguagem ´e definida atrav´es de gram´atica de atributos com possibilidade de recorrer a heranc¸a m´ultipla, o que permite definir uma linguagem de forma incremental ou reutilizar especificac¸ ˜oes de outras linguagens. Os analisadores sint´actico e semˆantico podem ser de v´arios tipos: LL, SLR, LALR e LR (os sint´acticos) e tree-walk, parallel, L-attribute e Katayama (os semˆanticos).

A construc¸ ˜ao deste novo sistema de gerac¸˜ao de compiladores justifica-se pela tentativa de melhorar a implementac¸˜ao desses compiladores usando t´ecnicas de desenvolvimento incremental, visualizac¸ ˜ao de an´alises (l´exica, sint´actica e semˆantica) e aumento da portabilidade. O sistemaLISAfoi desenvolvido usando tecnologia orientada aos objectos(Java) e corre em MS Windows. Os utilizadores do compi- lador gerado tˆem a possibilidade de visualizar o trabalho dos analisadores l´exico, sint´actico e semˆantico, atrav´es dos aut´omatos de estados finitos, diagramas de sintaxe e diagramas semˆanticos.

O sistema constr´oi automaticamente visualizac¸ ˜oes de estruturas de dados (estruturas internas do com- pilador gerado) e uma animac¸˜ao do processo de c´alculo dos atributos. No entanto, a animac¸˜ao e as visualizac¸ ˜oes baseiam-se na meta-linguagem usada para especificar as gram´aticas sendo, portanto, de- pendentes dessa linguagem. Assim, relativamente `a construc¸ ˜ao destas animac¸ ˜oes o sistema pode apenas ser comparado com os sistemas de animac¸˜ao do tipo III (multi-programa mas mono-linguagem).

No documento Sistematização da animação de programas (páginas 60-63)