Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouDiogo Gil Alterado mais de 9 anos atrás
1
Semântica Denotacional Semântica para Funções Centro de Informática, UFPE Recife, Brasil
2
Notação para Funções Notação ‘let... in...’ –let s = 0,5 (a + b + c) in sqrt s –let succ n = n + 1 in succ m Notação lambda – n.n+1 –let succ = n.n+1 in succ m
3
Domínios Um domínio é um conjunto de valores. Tais valores são os elementos do domínio. Domínios primitivos: –Character –Integer –Natural –Truth-Value –Unit
4
Domínios (cont.) Produtos cartesianos (produto) –elementos são pares ordenados –escreve-se D D’ –D D’ são os pares ordenados (x, x’) tal que x in D e x’ in D’ –pode ser generalizado para o domínio D 1 ... D n –Dinheiro = Natural Moeda, onde Moeda = {real, dolar, libra}
5
Domínios (cont.) União Disjunta (soma) –um domínio união disjunta tem seus elementos escolhidos de um dos domínios componentes –escreve-se D + D’ –cada elemento do domínio é marcado (recebe um tag) que identifica o seu domínio componente –Nat + Bool: 1, true, 567, false
6
Domínios (cont.) Seqüência –um domínio seqüência tem elementos que são sequências homogêneas –escreve-se D* –cada elemento de D* é uma sequência finita de zero ou mais elementos escolhidos de D –nil representa a sequência vazia
7
Domínios (cont.) Domínio Função –cada elemento do domínio função D D’ é uma função que mapeia elementos de D em elementos de D’ –escreve-se D D’ –Int Bool: par, impar, positivo, primo
8
Função Parcial Uma função parcial do domínio D D’ é aquela que só pode ser aplicada com sucesso a alguns argumentos em D Muito usado em semântica Divisão é um exemplo: –div _ _ :: Nat, Nat Nat elemento fail ( ) em cada domínio
9
Um Modelo de Memória Location, Storable, Store location may be: unused, undefined, contain a value empty-store : Store allocate : Store Store Location deallocate : Store Location Store update : Store Location Storable Store fetch : Store Location Storable Store = Location (stored Storable + undefined + unused)
10
Exemplos de uso das funções auxiliares Seja a s a store formada por quatro endereços, com a seguinte configuração: {@1 3, @2 undefined, @3 unused, @4 unused}, então: –fetch (s, @1) = 3 –fetch (s, @2) = fail –fetch (s, @3) = fail –update (s, @2, 7) = {@1 3, @2 7, @3 unused, @4 unused}
11
Exemplos de uso das funções auxiliares (cont.) –deallocate (s, @2) = {@1 3, @2 unused, @3 unused, @4 unused} –allocate (s) = ({@1 3, @2 undefined, @3 undefined, @4 unused}, @3)
12
Um Modelo de Ambiente Identifier, Bindable, Env empty-env : Env bind : Identifier Bindable Env overlay : Env Env Env find : Env Identifier Bindable Env = Identifier (bound Bindable + unbound)
13
Exemplos de uso das funções auxiliares Seja env = {i 1, j 2}. Então: –bind (k, 3) = {k 3} –overlay ({j 3, k 4}, env) = {i 1, j 3, k 4} –find (env, j) = 2 –find (env, k) = fail
14
Abstrações Abstrações de Funções Considere a seguinte sintaxe abstrata: Exp ... Id “(” ParReal “)” Decl ... “fun” Id “(” ParFormal “)” “=” Exp ParFormal Id “:” IdTipo ParReal Exp
15
Exemplo de uma função let val s = 4 in let fun soma (n:int) = s + n in soma 10
16
Semântica para Funções –Argumento = Int –Funcao = Argumento Int –Bindable = Integer + Funcao –avalie : Exp (Env Int) –elabore : Decl (Env Env) –bind-parametro : ParFormal (Argumento Env) –give-argumento : ParReal (Env Argumento)
17
Funções Semânticas bind-parametro I : T arg = bind (I, arg) give-argumento E env = avalie E env avalie I ( PR ) env = let function func = find (env, I) in let arg = give-argumento PR env in func arg
18
Funções Semânticas elabore fun I ( PF ) = E env = let func arg = let parenv = bind-parametro PF arg in avalie E (overlay (parenv, env)) in bind (I, function func)
19
Referências Programming Language Syntax and Semantics. David A Watt. Prentice Hall, 1991. Capítulo 3.
20
Semântica Denotacional Semântica para Funções Centro de Informática, UFPE Recife, Brasil
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.