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

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

Semântica Denotacional Semântica para Funções Centro de Informática, UFPE Recife, Brasil.

Apresentações semelhantes


Apresentação em tema: "Semântica Denotacional Semântica para Funções Centro de Informática, UFPE Recife, Brasil."— Transcrição da apresentação:

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


Carregar ppt "Semântica Denotacional Semântica para Funções Centro de Informática, UFPE Recife, Brasil."

Apresentações semelhantes


Anúncios Google