removendo partialinstantiatorvisitor n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Removendo PartialInstantiatorVisitor PowerPoint Presentation
Download Presentation
Removendo PartialInstantiatorVisitor

Loading in 2 Seconds...

  share
play fullscreen
1 / 10
arthur-dickson

Removendo PartialInstantiatorVisitor - PowerPoint PPT Presentation

118 Views
Download Presentation
Removendo PartialInstantiatorVisitor
An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. 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)

  2. 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

  3. 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

  4. 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

  5. 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

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

  7. 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

  8. ValorFuncao • avaliar() usa o visitor

  9. 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?

  10. 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