Post on 07-Apr-2016
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
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, ...
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
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.
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
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)
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
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
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
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)
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
program simples =var x : int := 3
inx := x + 5
end.
Qual a semântica do programa?
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 .
(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.
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 .
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) .
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 .
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”
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>
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
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
23
Usando o gerador de acionadores...
Acionadorde
Pantanal
Geradorde
Acionadores
Semânticade Ações de
Pantanal
Ação-programade P
ASTde P
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
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
WebAni
interface na Web para Ani http://www.cin.ufpe.br/~rat/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
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