A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Equipe: Fernando Calheiros Flavia Leite Eduardo Wagner

Apresentações semelhantes


Apresentação em tema: "Equipe: Fernando Calheiros Flavia Leite Eduardo Wagner"— Transcrição da apresentação:

1 Equipe: Fernando Calheiros (fhcl@cin.ufpe.br)fhcl@cin.ufpe.br Flavia Leite (fls@cin.ufpe.br)fls@cin.ufpe.br Eduardo Wagner (ewma@cin.ufpe.br)ewma@cin.ufpe.br Renata Bezerra (rbsa@cin.ufpe.br)rbsa@cin.ufpe.br Avaliação Parcial de Funções

2 Relembrando PartialInstatiatorVisitor Faz a avaliação parcial de funções 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

3 Novo Visitor Não copiar código Utilizar o padrão visitor Reutilizar as classes existentes

4 Problema

5

6 Funções parciais let fun add x = fn y. x + y in let var id = add(0) in id(1) Avaliação parcial de add(0): fn y. 0 + y fn y. y

7 Avaliação parcial Praticamente todas as classes foram copiadas para LF2 avaliar() não deve retornar Valor Nova assinatura: Expressao avaliar(AmbienteExecucao amb) throws VariavelNaoDeclaradaException, VariavelJaDeclaradaException; Todas as classes que estendem Expressao foram modificadas

8 Avaliação parcial de expressões Soma Avalia-se o lado esquerdo e o lado direito da soma Caso feliz: Ambos são inteiros, retornar um ValorInteiro com a soma dos dois O que acontece quando não consigo avaliar x + 0 no exemplo mostrado anteriormente? Retorna-se uma nova ExpSoma com os lados esquerdo e direito avaliados parcialmente (sendo possível que um esteja avaliado completamente) Pelo menos um dos lados foi avaliado parcialmente

9 Mudança no Ambiente ContextoExecucao agora é parametrizado com Expressao, ao invés de Valor Ids podem ser associados a expressões parcialmente avaliadas Não apenas ValorFuncao parcialmente avaliado! Tudo pode ser parcialmente avaliado agora

10 Avaliação de Id Procura no contexto Id não encontrado Avaliação falha Id encontrado Com Expressao Retorna a expressao Sem expressao Retorna o próprio Id

11 Avaliação de ValorFuncao Coloca no ambiente os ids dos parâmetros Caso o resultado da avaliação seja um valor concreto Retorna o valor obtido Se não... Retorna um novo ValorFuncao com a expressão parcialmente avaliada

12 Melhores resultados Retorna funções mais bem avaliadas Especialmente com composição de funções Nem sempre! Não reduz as operações binárias ao menor valor possível


Carregar ppt "Equipe: Fernando Calheiros Flavia Leite Eduardo Wagner"

Apresentações semelhantes


Anúncios Google