Animador e Editor para a
Linguagem Funcional 2
Carlos Eduardo Lima
Lucas Roberto Bechert Schmitz
Leonardo Reis Lucena
Centro de Informática – UFPE, 2005
Roteiro










Motivação
Proposta
O que visualizar?
Estratégia
Metas(Requisitos) de Implementação
Como Implementar?
Estrutura do Animador
Adaptando a LF2 para o Animador
Executando um programa
Trabalhos Futuros
Motivação

Melhorar a apresentação da execução dos
programas da disciplina de PLP

(Poupar o professor de ter que desenhar os
ambientes de execução)

Ter um editor que reconheça a sintaxe das
linguagens e faça o parsing automático

Auxiliar a implementação dos projetos da
disciplina
Proposta

Desenvolver um Animador Web que
execute “passo-a-passo” programas da
Linguagem Funcional 2, mostrando o que
ocorre com o ambiente durante a
execução. (melhorado!)

Desenvolver um Editor Web para as
Linguagens de PLP (novo!)
O Editor
Editor
Permite a edição
dos programas
Palavras-Chave
Destaca as
palavras-chave à
medida que o
programa é
digitado
Sintaxe
Verifica a sintaxe
à medida que o
programa é
digitado
Animar
Chama o
Animador PLP
O Animador
Código Fonte
Exibe código fonte
do programa com
destaque para a
expressão que está
sendo avaliada
Passos
Permite percorrer
a execução do
programa
passo-a-passo
Ambiente de
Execução
Mostra a pilha
de bindings do
ambiente
Avaliação de
Expressões
Exibe o resultado
da avaliação da
expressão atual
Animação / Visualização de Programas

Exemplos de Softwares que animam /
visualizam programas:

Eliot - Anima algoritmos


http://www.cs.helsinki.fi/research/aaps/Eliot/
Jeliot – Anima Programas Java

http://cs.joensuu.fi/jeliot/
O que visualizar
A avaliação do programa
 A avaliação das expressões que compõem
o programa
 O ambiente de Execução
 Os bindings

Metas(Requisitos) de Implementação

Quanto menos alterar a implementação da
linguagem melhor

Facilidade de adaptar o animador a novas
extensões da Linguagem Funcional 2

Terminar o projeto em 2 semanas
Como Implementar?

Opções






Usando o padrão de projeto Visitor
Usando Reflection
Usando Java Debug Interface (JDI)
Usando Aspectos (novo!)
Inserindo o código do animador dentro da
linguagem
A linguagem informa ao animador o que está
fazendo. (antes era assim!)
Estratégia
Dividir a execução em passos
 Um passo é gerado sempre que ocorrer






A avaliação de uma expressão
O incremento do ambiente
A restauração do ambiente
A introdução de um binding
Usar Aspectos para perceber estes
eventos
Estrutura do Animador
Animador

Animador

void terminarAvaliacao(Expressao, Valor)

void inserirBinding(Id, Valor)

void incrementarContexto()

void restaurarContexto()

List<Passo> getPassos()
*
Passo
Ambiente
*
Contexto
*
Binding
Estrutura do Animador
Animador

Passo

Ambiente ambiente;

String avaliacao;

String codigo;

String valor;
*
Passo
Ambiente
*
Contexto
*
Binding
Como era ...
O Animador estava incorporado à classe
AmbienteExecucao
 Os métodos avaliar(...) de cada expressão
chamavam o método
terminarAvaliacao(...) do animador para
informar que uma expressão foi avaliada
 O ambiente de execução informava ao
animador quando o novo contexto era
criado ou removido e quando um binding
inserido inserido

Trabalhos Futuros
Melhorar a visualização
 Incluir as extensões das outras equipes
 Transformar o animador em um plugin do
eclipse (Sugestão de Eduardo Tavares)
 Estender o animador para as linguagens
Imperativa e Orientada a Objetos

Animador e Editor para a
Linguagem Funcional 2
Carlos Eduardo Lima
Lucas Roberto Bechert Schmitz
Leonardo Reis Lucena
Centro de Informática – UFPE, 2005
Download

Apresentação 2 - Centro de Informática da UFPE