Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouZilda Dias Silva Alterado mais de 8 anos atrás
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
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.