Upload
hedwig-buckley
View
20
Download
0
Embed Size (px)
DESCRIPTION
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? - PowerPoint PPT Presentation
Citation preview
Animador e Editor para a Linguagem
Funcional 2Carlos 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
EditorPermite a edição dos programas
Palavras-ChaveDestaca as palavras-chave à medida que o programa é digitado
SintaxeVerifica a sintaxe à medida que o programa é digitado
AnimarChama o
Animador PLP
O Animador
Ambiente de ExecuçãoMostra a pilha de bindings do ambiente
Avaliação de Expressões
Exibe o resultado da avaliação da expressão atual
PassosPermite percorrer
a execução do programa
passo-a-passo
Código FonteExibe código fonte do programa com
destaque para a expressão que está
sendo avaliada
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
void terminarAvaliacao(Expressao, Valor)
void inserirBinding(Id, Valor)
void incrementarContexto()
void restaurarContexto()
List<Passo> getPassos()
Binding
Animador
Passo
Ambiente
Contexto
*
*
*
Estrutura do Animador Passo
Ambiente ambiente;
String avaliacao;
String codigo;
String valor;
Binding
Animador
Passo
Ambiente
Contexto
*
*
*
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 2Carlos Eduardo Lima
Lucas Roberto Bechert Schmitz Leonardo Reis Lucena
Centro de Informática – UFPE, 2005