semântica de ações conceitos básicos de semântica de ações, especificações em semântica de...

28
Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

Upload: denilson-barateiro-caetano

Post on 07-Apr-2016

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

Semântica de Ações

Conceitos Básicos de Semântica de Ações, Especificações em Semântica

de Ações, Primeiros Exemplos de Ações, WebAni

Page 2: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

Semântica de Ações

formalismo para especificação de linguagens de programação

composicional denotacional: o significado de programas (frases

da linguagem) são ações a semântica de uma linguagem de programação é

dada em termos de ações primitivas e combinadores de ações padrões

Page 3: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

Semântica de Ações (cont.)

melhor reutilização descrições mais claras de linguagens de

programação (melhor legibilidade) Pascal, Standard ML, Joyce, Beta, CCS,

CSP, ...

Page 4: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

A Notação de Ações

ação uma entidade que pode ser executada, recebendo e

produzindo dados ações podem ser combinadas usando-se

combinadores de ações

Page 5: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

A Notação de Ações (cont.)

a execução de uma ação: completa, corresponde ao término normal da

execução; ou falha, corresponde ao abandono da execução da

ação; ou diverge, a execução da ação nunca termina; ou escapa, corresponde à terminação excepcional da

execução.

Page 6: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

A Notação de Ações (cont.)

a execução depende da informação corrente, que é a informação processada pela execução de uma ação.

a informação corrente pode ser classificada de acordo com a sua propagação: transitória com escopo estável permanente

Page 7: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

A Notação de Ações (cont.)

facetas (processa no máximo uma espécie de informação por vez): de controle (básica), fluxo de controle e

independência da espécie de informação funcional, processa informação transitória, dados

são dados às ações e ações dão dados declarativa, processa informação com escopo,

ações recebem e produzem bindings (ligações)

Page 8: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

A Notação de Ações (cont.)

imperativa, processa informação estável, ações reservam e liberam células de memória, e mudam o dado armazenado em células

comunicativa, processa informação permanente, ações enviam mensagens, recebem mensagens, e oferecem contratos a agentes

ações diretivas ações híbridas

Page 9: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

A Notação de Ações (cont.)

sorte (sort) é uma escolha de indivíduos um indivíduo é um elemento do sorte um indivíduo é visto como um sorte que classifica uma

única entidade:1 : integer1 : 11 < integerinteger < integer

Page 10: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

A Notação de Ações (cont.)

produtores (yielders) entidades que podem ser avaliadas durante a execução de

uma ação avaliação depende da informação corrente avaliação não afeta a informação corrente

dados (data) notação de dados:

inteiros, strings, listas, etcabstrações: dados que incorporam ações

Page 11: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

Algumas Ações

give 4 bind “x” to 456 store 29 in the given cell give 4 or give 8 give 4 and bind “x” to 456 bind “x” to 456 hence give the integer bound to “x” give 5 then give sum(4,the given integer)

Page 12: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

Descrições em Semântica de Ações

estrutura modularAbstract Syntax.Semantic Functionsneeds: Abstract Syntax, Semantic Entities.Semantic Entities.

sub-módulos (M/Mi) módulos podem ser mutuamente dependentes ordem de apresentação não importa

Page 13: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

program simples =var x : int := 3

inx := x + 5

end.

Qual a semântica do programa?

Page 14: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

Semântica de Ações de NanoSpecimen (parte)

Abstract Syntax

grammar:(1) Programa = program Identificador = Declaração in Comando end . .

(2) Declaração = const Identificador : Tipo = Expressão | var Id : Tipo := Expressão | fun Identificador Identificador : Tipo -> Tipo = Expressão | Declaração ; Declaração .

(3) Comando = Identificador := Expressão| while Expressão do Comando end| local Declaração in Comando end| Comando ; Comando .

Page 15: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

(4) Expressão = Número| Identificador| if Expressão then Expressão else Expressão| Identificador ( Expressão )| Expressão Operador Expressão| Operador Expressão| ( Expressão ) .

(5) Operador = + | - | * | / | = | < .

(6) Tipo = int .

(7) Identificador = ...

(8) Número = ...closed.

Page 16: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

Semantic Functions/Programas

• rode _ :: Programa -> action .

(1) rode [[ program I:Identificador = D:Declaração in C:Comando end . ]] =| elabore Dhence| execute C .

Semantic Functions/Declarações

• elabore _ :: Declaração -> action .

(1) elabore [[ var I:Identificador : T:Tipo := E:Expressão ]] =| avalie E and allocate a cellthen| | bind token of I to the given cell#2| and| | store the given integer#1 in the given cell#2 .

Page 17: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

Semantic Functions/Expressões

• avalie _ :: Expressão -> action .

(1) avalie N:Número = give valor-de N .

(2) avalie I:Identificador =| give the integer bound to token de Ior| give the integer stored in the cell bound to token-de I .

(3) avalie [[ I:Identificador ( E:Expressão ) ]] =| avalie Ethen| enact (application of the abstraction bound to token-de I

to the given integer) .

Page 18: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

Semantic Functions/Comandos

• execute _ :: Comando -> action .

(1) execute [[ I:Identificador := E:Expressão ]] =| avalie Ethen| store the given integer in the cell bound to token-de I . .

(2) execute [[ while E:Expressão do C:Comando ]] =unfolding

| | evaluate E| then| | | check (it is 1) and then execute C and then unfold| | or| | | check not (it is 1) .

(3) execute [[ local D:Declaração in C:Comando end ]] =| rebind moreover elabore Dhence| execute C .

Page 19: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

program simples =var x : int := 3

inx := x + 5

end.

rode =

| | give 3 and allocate a cell| then| | bind “x” to the given cell#2 and store the given integer#1 in the given cell#2hence| | | | | give the integer bound to “x”| | | | or| | | | | give the integer stored in the cell bound to “x”| | | and| | | | give 5| | then| | | give sum(the given integer#1, the given integer#2)| then| | store the given integer in the cell bound to “x”

Page 20: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

20

Um Interpretador de Ações (Ani) um interpretador para a notação de ações implementa boa parte da notacao de dados implementado em Standard ML pode ser usado para construção de um interpretador para uma

linguagem o resultado da interpretação de uma ação tem o seguinte

formato:Outcome <outcome status>Transients <transients given by the action>Bindings <bindings produced by the action>Storage <storage after action performance>

Page 21: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

21

Precisamos de um parser...Especificação

Léxica dePantanal

AST para oPrograma Fonte

ProgramaFonte em Pantanal

EspecificaçãoSintática de

Pantanal

Parserpara

Pantanal

ML YaccML Lex

Page 22: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

22

O Gerador de Acionadores

dada a semântica de ações de uma linguagem L, o gerador de acionador gera um programa, o acionador de L, a partir da mesma

o acionador de L incorpora a semântica de ações de L

quando aplicado à arvore sintática abstrata (AST) de um programa P de L, o acionador de L produz a ação-programa de P

Page 23: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

23

Usando o gerador de acionadores...

Acionadorde

Pantanal

Geradorde

Acionadores

Semânticade Ações de

Pantanal

Ação-programade P

ASTde P

Page 24: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

24

Um Interpretador para Pantanal

Geradorde

Acionadores

Parserde

Pantanal

Acionadorde

PantanalAni

Semântica de Ações de Pantanal

programafonte

resultadoda

interpretação

AST árvoreda

ação-programa

Page 25: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

25

Algumas Considerações sobre Ani

um melhor entendimento da notação de ações especificações executáveis em semântica de ações baseado na semântica operacional da notação de

ações notação de dados implementada mostramos como construir um interpretador para

uma linguagem usando Ani

Page 27: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

Referências

Action Semantics. Peter D. Mosses. Cambridge University Press, 1992.

Programming Language Syntax and Semantics. David A Watt. Prentice Hall, 1991.

A Tutorial on Action Semantics. Peter D. Mosses, 1996. Action Semantics Home Page.

An Overview of Action Semantics. Hermano Moura. 1996. http://www/hermano/publicacoes

Page 28: Semântica de Ações Conceitos Básicos de Semântica de Ações, Especificações em Semântica de Ações, Primeiros Exemplos de Ações, WebAni

Semântica de Ações

Conceitos Básicos de Semântica de Ações, Especificações em Semântica

de Ações, Primeiros Exemplos de Ações, WebAni