160 likes | 241 Views
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?
E N D
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 programapasso-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
Animador Passo Ambiente Contexto 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
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