removendo partialinstantiatorvisitor

Post on 03-Jan-2016

20 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Removendo PartialInstantiatorVisitor. Equipe: Fernando Calheiros ( fhcl@cin.ufpe.br ) Flavia Leite ( fls@cin.ufpe.br ) Eduardo Wagner ( ewma@cin.ufpe.br ) Renata Bezerra ( rbsa@cin.ufpe.br ). Interpreter. - PowerPoint PPT Presentation

TRANSCRIPT

Equipe:Fernando Calheiros (fhcl@cin.ufpe.br)

Flavia Leite (fls@cin.ufpe.br)Eduardo Wagner (ewma@cin.ufpe.br)

Renata Bezerra (rbsa@cin.ufpe.br)

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

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

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

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

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

estrutura sobre a qual ele operaCódigo fica centralizado

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

ValorFuncaoavaliar() 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 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

top related