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.

Slides:



Advertisements
Apresentações semelhantes
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Advertisements

Programas e Microprogramas
(Unified Modeling Language)
Projeto conceitual Mostra ao cliente exatamente o que o sistema fará
O Essencial sobre Linguagens de Programação Luís Caires Maio 2005.
Software Básico Silvio Fernandes
Padrão de Projeto Interpreter
Introdução à Compilação Prof. Leandro Magno Slides adaptados a partir do material cedido pelos professores Heloise Manica Paris Teixeira, Yandre M. G.
Prof. Heloise Manica Paris Teixeira
Sistemas Operacionais
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Lex e Yacc.
Análise Léxica Supondo o trecho de programa abaixo:
9 Controle de fluxo Seqüenciadores. Jumps. Escapes. Exceções.
Robson Godoi / Sandra Siebra
Modularização: funções e procedimentos
Paradigmas de programação
João Lucas de Oliveira Torres
Análise Semântica e Representação Intermédia
Análise léxica e sintática
Aula prática – geração de código (.NET)
Python: Exceções, Iteradores e Geradores
Teoria e Implementação de Linguagens Computacionais – IF688
Sintaxe e Semântica Prof.: Gláucya Carreiro Boechat
Estudo dos Conceitos e Paradigmas de Programação
Nomes, Variáveis e Vinculações
Detalhes sobre o curso
Paradigmas de Linguagens de Programação Linguagem Imperativa 2
Semântica de Linguagens de Programação
Análises léxica e sintática
Paradigmas de Linguagens de Programação Linguagem Imperativa 1
Linguagem Funcional 2 Linguagem Funcional 2 - LF2 Estende LF1 com funções de alta ordem Uma função passa a ser um valor O contexto inclui um único componente:
Paradigma Funcional Apresentação de LF1.
Linguagem de Expressões 2
Geração de Código Intermediário
Análise Léxica Primeira fase de um compilador
1 Semântica de Ações Ações Básicas, Ações Funcionais e Notação de Dados.
Modelos de Paradigmas de programação
Capítulo II Gramáticas e Linguagens
Semântica de Ações Especificação Completa de Specimen, Actress, Projeto RAT, Considerações Finais.
Analise Semântica aula-10-analise-semântica.pdf.
VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS (VETORES)
Compiladores.
Equipe: Osias Carneiro, Anderson Soares, André Araújo
Geração de Código Equipe de Monitores Teoria e Implementação de Linguagens Computacionais – IF688.
Tradução Dirigida por Sintaxe
Métodos Formais.
Aula 1 – Profª Danielle Costa
Programação Lógica com Prolog
Nº Pedro José de Oliveira Sessão Controlo Tese 2º Semestre 2007/2008 Orientador – João Rocha.
Faculdade Pernambucana - FAPE Setembro/2007
A Linguagem Formal de Especificação VDM-SL
Aula de SableCC Teoria e Implementação de Linguagens Computacionais (Compiladores) - IF688 – Artur Ribeiro de Aquino – ara Allan Jefferson – ajss.
Semântica Denotacional Semântica para Funções Centro de Informática, UFPE Recife, Brasil.
Semântica de Linguagens de Programação
FuzBlock Paradigmas de Linguagens Computacionais Bruno Edson Flavio Gondim Marcelo Rodrigues Pablo de Santana.
Concorrência em LF1 Paradigmas de Linguagens de Programação 20 de junho de 2006 Aline Timóteo Carlos Rodrigues Flávia Falcão Tiago Rolim.
Paradigmas de Linguagens de Programação Conceitos da Linguagem Imperativa 1 Augusto Sampaio e Paulo Borba Centro de Informática Universidade Federal de.
Sintaxe de uma Linguagem
Semântica em Linguagens de Programação Semântica Denotacional
Paulo Borba e Augusto Sampaio Departamento de Informática Universidade Federal de Pernambuco Especificação de Sistemas Distribuídos Parte 2.
Compilador Software que traduz o texto (linguagem fonte) que representa um programa para código máquina(linguagem alvo) capaz de ser executado pelo.
Influencias sobre o Projeto da Linguagem
Faculdade Pernambuca - FAPE Compiladores Abril/2007 Compiladores Abril/2007.
Computadores vs. Programas / Algoritmos Computadores vs. Programas -> Algoritmos O tratamento de problemas através do computador geralmente envolve uma.
Análise Contextual Mauro Araújo Teoria e Implementação de Linguagens Computacionais - IF688 Centro de Informática – CIn Universidade Federal de Pernambuco.
1 Programação Multi-Paradigma Cristiano Bertolini – Ellison Siqueira – Guilherme Avelino –
IF E ITERAÇÃO WHILE Dilvan Moreira (baseado no livro Big Java e T. Munzner)
SEMÂNTICA DENOTACIONAL Alexandre Mota
Transcrição da apresentação:

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 .

| if Expressão then Expressão else Expressão (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 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) | | 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 <outcome status> Transients <transients given by the action> Bindings <bindings produced by the action> Storage <storage after action performance>

Precisamos de um parser... Especificação Léxica de Pantanal Especificação Sintática de Pantanal ML Yacc ML Lex Parser para Pantanal Programa Fonte em Pantanal AST para o Programa Fonte

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

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

Um Interpretador para Pantanal Semântica de Ações de Pantanal Gerador de Acionadores Acionador de Pantanal resultado da interpretação Parser de Pantanal programa fonte Ani AST árvore da ação-programa

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