removendo partialinstantiatorvisitor

10
Equipe: Fernando Calheiros ([email protected] ) Flavia Leite ([email protected] ) Eduardo Wagner ([email protected] ) Renata Bezerra ([email protected] ) Removendo PartialInstantiatorVisitor

Upload: arthur-dickson

Post on 03-Jan-2016

20 views

Category:

Documents


0 download

DESCRIPTION

Removendo PartialInstantiatorVisitor. Equipe: Fernando Calheiros ( [email protected] ) Flavia Leite ( [email protected] ) Eduardo Wagner ( [email protected] ) Renata Bezerra ( [email protected] ). Interpreter. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Removendo PartialInstantiatorVisitor

Equipe:Fernando Calheiros ([email protected])

Flavia Leite ([email protected])Eduardo Wagner ([email protected])

Renata Bezerra ([email protected])

Removendo PartialInstantiatorVisitor

Page 2: Removendo PartialInstantiatorVisitor

InterpreterO padrão Interpreter é usado quando se quer

construir um interpretador para uma linguagemÉ recomendado para implementar linguagens

simplesVantagens

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

Page 3: Removendo PartialInstantiatorVisitor

InterpreterUso 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 é grandeNesses casos um gerador de parser/compilador

pode ser mais apropriado

Page 4: Removendo PartialInstantiatorVisitor

VisitorO padrão Visitor é usado quando se quer

adicionar funcionalidades a uma composição de objetos e encapsulamento não é importante

VantagensPermite adicionar operações a uma estrutura

composta sem mudar a estrutura em siAdicionar novas operações é relativamente

fácilO código das operações realizadas pelo

Visitor é centralizado

Page 5: Removendo PartialInstantiatorVisitor

VisitorDesvantagens

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

Page 6: Removendo PartialInstantiatorVisitor

Por que usar Visitor?Visitor permite a separação do algoritmo da

estrutura sobre a qual ele operaCódigo fica centralizado

Page 7: Removendo PartialInstantiatorVisitor

PartialInstatiatorVisitorNã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

Page 8: Removendo PartialInstantiatorVisitor

ValorFuncaoavaliar() usa o visitor

Page 9: Removendo PartialInstantiatorVisitor

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?

Page 10: Removendo PartialInstantiatorVisitor

Avaliação parcialAtualmente métodos avaliar() não foram

feitos pensando em avaliação parcialÉ um concern crosscuting!Retornam Valor, não Expressao

PartialInstatiatorVisitorImplementa avaliação parcial através de

reescritas das expressõesEvita mudanças em praticamente todas as

classes que herdam de Expressao