Equipe: Fernando Calheiros Flavia Leite Eduardo Wagner

Slides:



Advertisements
Apresentações semelhantes
TIPOS ABSTRATOS DE DADOS
Advertisements

Avaliador de Expressões
Paradigmas de Programação
Seminários de Compiladores
Padrão de Projeto Interpreter
Projeto de Sistemas de Software Fernando de Freitas Silva
Carlos R. M. Junior Eduardo Motta
Design Patterns Interpreter
Template Method Intenção: definir o esqueleto de um algoritmo em uma operação, postergando (delegando) a definição de alguns passos desse algoritmo para.
Introdução ao paradigma de programação: Orientado a Objetos
Relações em uma Gramática
Tecnologia para Web JavaScript
Classes e objetos P. O. O. Prof. Grace.
Uma visão geral Grupo: Alexandre Henrique Vieira Soares
Implementar Listas em Linguagem Funcional II
Aula prática 13 Orientação a Objetos – C++ Parte 1
Análise léxica e sintática
Aula prática - análise contextual
DEFINIÇÃO DE TIPOS – LF3 PLP – Apresentação 2. Equipe Felype Santiago Maria Carolina Paola Rodrigues Rodrigo Cardoso.
Padrão de Projeto Visitor
Conceitos.
FTIN Formação Técnica em Informática
Rodrigo Cristiano Silva
Programação de SCRIPTS
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Estudo dos Conceitos e Paradigmas de Programação
Paradigmas de Linguagens de Programação Linguagem Imperativa 2
Semântica de Linguagens de Programação
Análises léxica e sintática
Linguagem Funcional 2 Linguagem Funcional 2 - LF2 Estende LF1 com funções de alta ordem Uma função passa a ser um valor O contexto inclui um único componente:
Paradigma Funcional Apresentação de LF1.
Um Framework Para Testes
Análise léxica e sintática
Projeto de PLP Resultado Final Guilherme Oliveira Everton Marques
Concorrência e Java RMI
1 PLP – Varargs Adauto Trigueiro de A. Filho Emanoel Barreiros Helaine Lins.
Orientação a Objetos Parte I
Programação Orientada à Objetos
Paradigma funcional.
Paradigmas de Linguagens de Programação Aula 2
SISTEMAS DISTRIBUIDOS Aula 4
Ruby (2/2) André Braga Patrícia Lustosa. Intro Peguem a aula de ontem em /~plvr para ter como referência para os exercícios de hoje.
CSP-Z Disciplina: Especificação de Sistemas Distribuídos Mestrado em Ciências da Computação Aleciano Jr. Leonilson Barbosa
Analise Semântica aula-10-analise-semântica.pdf.
Equipe: Osias Carneiro, Anderson Soares, André Araújo
Interfaces POO Avançado.
Lambda Cálculo & Programação Funcional
AST no ANTLR Teoria e Implementação de Linguagens Computacionais - IF688 Allan J. Souza
Linguagens de Programação Introdução Prof. Renato Melo.
Teste de Software 14: Geração de teste baseado em modelos: MBT
Gerador de Tabela-Verdade
COMPILADORES 04 Prof. Marcos.
Fundamentos de linguagens de programação
Semântica de Linguagens de Programação
Aula Prática 13 Orientação a Objeto Monitoria
1 IO em LF1 Paradigmas de Linguagens de Programação 2007 Diego Martins, Laís Xavier, Paulo Martinelli e Turah Xavier.
Animador e Editor para a Linguagem Funcional 2 Carlos Eduardo Lima Lucas Roberto Bechert Schmitz Leonardo Reis Lucena Centro de Informática – UFPE, 2005.
1 Padrões: Composite (p. 163) Objetivo: compor objetos em estruturas de árvores para representar relações de parte/todo. “Composite” permite tratar objetos.
Jobson Ronan Padrões GoF Jobson Ronan
Sintaxe de uma Linguagem
Paradigmas de Programação
Módulo II Capítulo 1: Orientação a Objetos
Padrão Visitor Paulo Mauricio Gonçalves Jr Rodrigo Teixeira Ramos Paradigmas de Linguagens de Programação Prof. Augusto Sampaio Julho de 2003.
Padrões de Projetos Orientados a Objetos I Wolley W. Silva.
Array e ArrayList LPOO – 01/09/14.
Implementar Listas em Linguagem Funcional II Projeto I - PLP Prof. Augusto Sampaio Equipe :Ana Paula Cavalcanti (apcc2) Clélio Feitosa (cfs) Zildomar C.
Equipe: Fernando Calheiros Flavia Leite Eduardo Wagner
Análise Contextual Mauro Araújo Teoria e Implementação de Linguagens Computacionais - IF688 Centro de Informática – CIn Universidade Federal de Pernambuco.
1 Programação Multi-Paradigma Cristiano Bertolini – Ellison Siqueira – Guilherme Avelino –
Transcrição da apresentação:

Equipe: Fernando Calheiros Flavia Leite Eduardo Wagner Renata Bezerra Removendo PartialInstantiatorVisitor

Interpreter O padrão Interpreter é usado quando se quer construir um interpretador para uma linguagem É recomendado para implementar linguagens simples Vantagens Representar cada regra da gramática em uma classe torna a linguagem mais fácil de implementar Como a gramática é representada por classes, é possível mudar ou estender facilmente a linguagem Ao adicionar novos métodos na estrutura de classes, pode-se ter novos comportamentos além da interpretação, como uma validação mais sofisticada do programa

Interpreter Uso e Desvantagens É apropriado quando você tem uma gramática simples e simplicidade é mais importante do que eficiência Usado para linguagens de script e de programação Esse padrão pode se tornar difícil quando o número de regras da gramática é grande Nesses casos um gerador de parser/compilador pode ser mais apropriado

Visitor O padrão Visitor é usado quando se quer adicionar funcionalidades a uma composição de objetos e encapsulamento não é importante Vantagens Permite adicionar operações a uma estrutura composta sem mudar a estrutura em si Adicionar novas operações é relativamente fácil O código das operações realizadas pelo Visitor é centralizado

Visitor Desvantagens O encapsulamento das classes compostas é quebrado quando o Visitor é usado Como uma função de travessia está envolvida, mudanças à estrutura se tornam mais difíceis

Por que usar Visitor? Visitor permite a separação do algoritmo da estrutura sobre a qual ele opera Código fica centralizado

PartialInstatiatorVisitor Não é propriamente um Visitor No padrão visitor cada classe sabe se visitar, recebendo o visitor em um método visit PartialInstatiatorVisitor utiliza reflexão para determinar qual método visit dele mesmo deve ser chamado, deixando a estrutura original intocada

ValorFuncao avaliar() usa o visitor

Funções parciais (o problema) let fun add x = fn y. x + y in let var id = add(0), var x = 4 in id(1) Por que esse código não é avaliado corretamente sem mudar a forma como as expressões são avaliadas?

Avaliação parcial Atualmente métodos avaliar() não foram feitos pensando em avaliação parcial É um concern crosscuting! Retornam Valor, não Expressao PartialInstatiatorVisitor Implementa avaliação parcial através de reescritas das expressões Evita mudanças em praticamente todas as classes que herdam de Expressao