1 / 10

Removendo PartialInstantiatorVisitor

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.

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

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

More Related