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 : integer
1:1
1 < integer
integer < 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, etc
 abstraçõ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 modular
Abstract Syntax.
Semantic Functions
needs: Abstract Syntax, Semantic Entities.
Semantic Entities.
 sub-módulos (M/Mi)
 módulos podem ser mutuamente dependentes
 ordem de apresentação não importa
Qual a semântica do programa?
program simples =
var x : int := 3
in
x := x + 5
end.
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 = ...
Número = ...
closed.
(8)
Semantic Functions/Programas
• rode _ :: Programa -> action .
(1)
rode [[ program I:Identificador = D:Declaração in C:Comando end . ]] =
| elabore D
hence
| 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 cell
then
| | 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 I
or
| give the integer stored in the cell bound to token-de I .
(3)
avalie [[ I:Identificador ( E:Expressão ) ]] =
| avalie E
then
| 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 E
then
| 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 D
hence
| execute C .
rode
program simples =
var x : int := 3
in
x := x + 5
end.
=
| | give 3 and allocate a cell
| then
| | bind “x” to the given cell#2 and store the given integer#1 in the given cell#2
hence
| | | | | 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”
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
Transients
Bindings
Storage
<outcome status>
<transients given by the action>
<bindings produced by the action>
<storage after action performance>
20
Precisamos de um parser...
Especificação
Léxica de
Pantanal
Especificação
Sintática de
Pantanal
ML Lex
ML Yacc
Programa
Fonte em Pantanal
Parser
para
Pantanal
AST para o
Programa Fonte
21
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
22
Usando o gerador de acionadores...
AST
de P
Semântica
de Ações de
Pantanal
Gerador
de
Acionadores
Acionador
de
Pantanal
Ação-programa
de P
23
Um Interpretador para Pantanal
Semântica de Ações de Pantanal
Gerador
de
Acionadores
programa
fonte
Acionador
de
Pantanal
Parser
de
Pantanal
AST
árvore
da
ação-programa
Ani
resultado
da
interpretaçã
o
24
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
25
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
Download

Transparências