Sem - PowerPoint PPT Presentation

About This Presentation
Title:

Sem

Description:

Title: Semantica de Linguagens de Programacao Author: Hermano Perrelli de Moura Last modified by: lcsm Created Date: 5/25/1995 11:08:46 AM Document presentation format – PowerPoint PPT presentation

Number of Views:51
Avg rating:3.0/5.0
Slides: 70
Provided by: HermanoPe1
Category:
Tags: sem | semantica

less

Transcript and Presenter's Notes

Title: Sem


1
Semântica de Linguagens de Programação
  • Centro de Informática, UFPE
  • Luis Carlos (lcsm_at_cin.ufpe.br)
  • Hermano Moura (hermano_at_cin.ufpe.br)

2
Objetivo
  • Introduzir conceitos de semântica formal de
    linguagens de programação

3
Motivação Qual o significado do seguinte
programa?
program simples var x int 3 in x x
5 end.
?
4
Motivação
  • estudo de linguagens de programação requer que
    possamos descrever linguagens de programação de
    forma precisa e de fácil compreensão
  • Utilização de descrições informais
  • Frases de significado duvidoso
  • Geração de manuais imprecisos
  • Não existe técnicas que auxiliem a implementação
    (erros de codificação)
  • Solução Utilização de métodos formais

5
Métodos Formais
  • Técnica utilizada para desenvolvimento de sistema
  • Utiliza notações bem-definidas
  • Significado descrito matematicamente
  • Evita a existência de ambigüidades
  • Permite a utilização de técnicas de verificação
    de erros e implementação automática

6
Aplicações em Linguagens de Programação
  • Interface entre projetistas, implementadores e
    usuários
  • Projetista
  • Define precisamente a linguagem desejada
  • Permite a identificação precoce de erros
  • Implementador
  • Possibilita a utilização de geradores
    (semi-)automáticos
  • Dificulta o aparecimento de erros
  • Usuários Produção de bons manuais da linguagem

7
Ciclo de vida de LP baseado em especificações form
ais
projeto
especificação formal
protótipos
compiladores
manuais, livros
8
Introdução
  • características principais de uma lp
  • sintaxe
  • semântica
  • pragmática

9
Sintaxe
  • Define a forma e estrutura de uma linguagem
  • Símbolos, palavras, frases e sentenças
    (estruturas)
  • Principal formalismo
  • Gramáticas Livres de Contexto e Expressões
    Regulares
  • Notação mais utilizada BNF (Backus-Naur Form)

10
Gramáticas Livres de Contexto
  • Estrutura principal
  • Comando lt--
  • if Expressão then Comando else
    Comando
  • Significado
  • Um Comando da linguagem definida pode ser formado
    pela palavra chave if seguida de uma Expressão
    da linguagem, da palavra chave then, de um
    Comando da linguagem, da palavra chave else, e
    de um outro Comando da linguagem.

11
Sintaxe Concreta x Sintaxe Abstrata
  • Sintaxe concreta Descreve a estrutura da
    linguagem com todos os detalhes.
  • Considera elementos estéticos como comentários,
    palavras reservadas, precedência de operadores, e
    outros açucares sintáticos.
  • Utilizado para construir reconhecedores para
    programas.
  • Sintaxe abstrata Descreve apenas os elementos
    relevantes da linguagem de programação.
  • Ignora comentários e outros elementos que não
    contribuem para a semântica do programa
  • Utilizada para representar programas internamente
    no compilador

12
Ferramentas de Implementação
  • Disponíveis ferramentas que geram implementações
    eficientes
  • lexyacc, javacc, etc.
  • O desenvolvedor não utiliza linguagens de uso
    geral para implementação da linguagem.
  • Mais detalhes Disciplina de compiladores

13
Introdução
  • características principais de uma lp
  • sintaxe
  • semântica
  • pragmática

14
Semântica
  • Objetivo
  • Descrever o significados das estruturas do
    programa expressos na sua sintaxe
  • Tipos de semântica
  • Semântica estática Descreve as características
    de uma programa válido
  • Semântica dinâmica Descreve os resultados da
    execução do programa

15
Formalismos Utilizados
  • Ao contrário da sintaxe, não existe ainda um
    formalismo aceito globalmente para descrever a
    semântica da linguagem
  • Exemplos de formalismos
  • Semântica Operacional Estrutural, Máquinas de
    Estado Abstratas, Semântica Denotacional,
    Semântica de Ações, Montages, etc.

16
Abordagens para Descrição Semântica
  • A especificação semântica de uma linguagem pode
  • 1 - Definir um mapeamento entre a sintaxe do
    programa e seu significado. Ex. Semântica
    Denotacional, Semântica de Ações, Semântica
    Algébrica, etc.
  • 2 - Definir uma máquina que executa programas da
    linguagem. Ex. Semântica Natural, Máquinas de
    Estado Abstratas.

17
Exemplo da 1a. Abordagem
  • Semântica de Exp1 Exp2
  • Semântica de Exp1
  • Semântica de Exp2
  • Sum
  • A semântica traduz o programa em operadores de
    uma linguagem com significado conhecido

18
Exemplo 2a. Abordagem
  • if (execute(x)c1 and execute(y) c2) then
  • execute (x y) (c1c2)
  • A semântica define como executar um programa
    diretamente, sem traduzi-lo para uma outra
    notação intermediária.

19
Semântica De Ações
20
Semântica De Ações
  • Formalismo para definição de linguagens de
    programação.
  • Define um mapeamento da sintaxe do programa para
    o seu significado.
  • Significado de programa é dado através da notação
    de ações.

21
Notação de Ações
  • Biblioteca que descreve os principais conceitos
    encontrados em linguagens de programação que
    foram estudados nesse curso (valores, bindings,
    memória, etc.)
  • Durante essa aula e a próxima estudaremos os
    operadores que implementam cada conceito
    estudado.
  • Operadores que manipulam os mesmos conceitos são
    agrupados em facetas.

22
Definição de Ações
  • Uma ação é uma entidade que pode ser executada.
  • Quando uma ação é executada ela pode
  • Terminar com sucesso
  • Terminar com um erro
  • Gerar uma exceção (escape)
  • Não-terminar (executar para sempre)
  • Durante a execução de uma ação ela produz e
    consome vários tipos de informação (transientes,
    bindings, memória, etc.)

23
Semântica de Ações - Faceta Básica
24
Definição
  • A faceta básica define operadores que não
    manipulam nenhum tipo de informação apenas
    controlam o fluxo do programa

25
Principais Operadores
  • complete -- Executa com sucesso sem produzir
    nenhuma informação.
  • fail -- Produz uma falha na execução da ação
  • a and then b -- Executa as ações a e b
    sequêncialmente
  • a or b -- Executa uma das ações e se esta falhar
    a outra ação será executada.

26
Principais Operadores (cont.)
  • unfolding a -- executa a ação a.
  • unfold -- Desvia o fluxo da execução para a
    última ação unfolding executada.

27
Exemplos de Ações
  • complete complete
  • and then or
  • complete fail
  • complete unfolding
  • and then complete
  • fail and then
  • unfold

28
Exemplo de Descrições
  • Comandos vazio
  • Sintaxe
  • Comando --gt
  • Semântica
  • execute _ Comando --gt action.
  • execute complete.

29
Exemplo de Descrições
  • Sequência de Comandos
  • Sintaxe
  • Comando --gt Comando Comando
  • Semântica
  • execute _ Comando --gt action.
  • execute c1 c2
  • execute c1
  • and then
  • execute c2.

30
Semântica de Ações - Faceta Funcional
31
Definição
  • A faceta funcional define ações que manipulam
    valores temporários (transitórios) produzidos
    pela execução de um programa.
  • Utilização principal Modelagem da avaliação de
    expressões em um programa.

32
Principais Operadores Funcionais
  • give e -- produz o valor resultante da avaliação
    da expressão e.
  • x then y -- Executa as ações x e y
    seqüencialmente, os valores transitórios
    produzidos por x serão repassados para a ação y.
  • the given t n -- Expressão (produtor) que
    recupera o n-ésimo valor passado para essa ação e
    verifica se este é do tipo t.

33
Exemplos de Ações
  • give 10
  • give 20
  • then
  • give sum(2,the given integer1)

34
Exemplos de Ações(cont.)
  • give 1
  • and then
  • give 2
  • then
  • give product(the given integer1,
  • the given integer 2)

35
Exemplo de Descrição
  • Linguagens de Expressões
  • 1 2
  • 4
  • 5 2

36
Exemplo de descrição
  • Constantes Numéricas.
  • Sintaxe
  • Expressão lt-- Integer .
  • Semântica
  • avalie _ Expressão --gt action.
  • avalie x Integer give valuation of x.

37
Exemplo de descrição
  • Soma de Expressões.
  • Sintaxe
  • Expressão lt-- Expressão Expressão .
  • Semântica
  • avalie _ Expressão --gt action.
  • avalie x y
  • avalie x and then avalie y
  • then
  • give sum(the given integer1, the given
    integer2).

38
Utilização
  • Qual a semântica de 1 2

39
Utilização
  • Qual a semântica de 1 2 ?
  • 1o Passo Analise Sintática
  • 1 2 gt 1 2

40
Utilização
  • Qual a semântica de 1 2 ?
  • 2o Passo Executar Função Semântica
  • avalie 1 2

41
Utilização
  • Qual a semântica de 1 2 ?
  • 2o Passo Executar Função Semântica
  • avalie 1
  • and then
  • avalie 2
  • then
  • give sum
  • (the given integer1, the given integer 2)

42
Utilização
  • Qual a semântica de 1 2 ?
  • 2o Passo Executar Função Semântica
  • give valuation of 1
  • and then
  • give valuation of 2
  • then
  • give sum
  • (the given integer1, the given integer 2)

43
Utilização
  • Qual a semântica de 1 2 ?
  • 2o Passo Executar Função Semântica
  • give 1
  • and then
  • give 2
  • then
  • give sum
  • (the given integer1, the given integer 2)

44
Semântica de Ações Faceta Declarativa
45
Definição
  • A faceta declarativa define ações que controlam
    os bindings de um programa (mapeamento de
    identificadores e seus significados)
  • Utilização em LP Modelagem de Declarações em um
    programa.

46
Principais Operadores Declarativos
  • bind n to b -- Associa o identificador n ao
    significado b.
  • a hence b -- Executa as ações a e b
    seqüencialmente, os bindings produzidos pela ação
    a serão repassados para a ação b
  • the t bound to n -- Produtor que recupera o
    valor associado ao identificador n e testa se
    ele é do tipo t

47
Exemplos de Ações
  • bind x to 10
  • bind x to 20
  • and then
  • bind y to 1
  • hence
  • give sum(the value bound to x,
  • the value bound to y)

48
Outros Operadores Declarativos
  • furthermore a -- Executa a ação a e produz a
    união entre os bindings recebidos pela ação os
    produzidos por a.
  • x moreover y -- Executa as ações x e y sendo
    que os bindings produzidos por y tem prioridade
    aos bindings produzidos por x.
  • x before y -- Executa a ação x, os bindings
    produzidos pela ação x são adicionados aos
    recebidos pela ação combinada e fornecidos para a
    ação y.

49
Exemplos
  • bind x to 1 bind x to 2
  • moreover before
  • bind x to 2 bind y to the
  • integer bound to x
  • bind x to 1
  • hence
  • furthermore bind y to 2

50
Exemplo de Descrição
  • Linguagens com declarações
  • let x 1 in x 2
  • let x 1 in let y 3 in x y 1

51
Exemplo de descrição
  • Declaração de Constantes.
  • Sintaxe
  • Expressão lt-- let Identifier Expressão
    in Expressão .
  • Semântica
  • avalie _ Expressão --gt action.
  • elabore let i x in y
  • furthermore
  • avalie x then bind token of i to the given
    value
  • hence
  • avalie y.

52
Exemplo de descrição
  • Expressões de Constantes.
  • Sintaxe
  • Expressãolt-- Identifier .
  • Semântica
  • avalie _ Expressão --gt action.
  • avalie i Identifier
  • give the value bound i.

53
Semântica de AçõesFaceta Imperativa
54
Definição
  • A faceta imperativa define ações que manipulam a
    memória do programa
  • Utilizada principalmente na declaração de
    variáveis

55
Principais Ações
  • allocate a cell -- reserva uma posição de memória
    livre e retorna o valor alocado como valor
    transitório
  • deallocate c -- libera a posição de memória c
  • store x in c -- armazena o valor x na célula de
    memória c.
  • the t stored in c -- Expressão que recupera o
    valor armazenado na posição de memória c.

56
Exemplos de Ações
  • allocate a cell
  • then
  • store 10 in the given cell
  • and then
  • store 20 in the given cell
  • and then
  • give the integer stored in the given cell.

57
Exemplo de Descrição
  • Linguagem com declarações e variáveis e comandos
    imperativos
  • int x
  • int y
  • x 1
  • y x 1

58
Exemplo de Descrição
  • Declaração de Variáveis
  • Sintaxe
  • Declaração lt-- int Identifier .
  • Semântica
  • elabore _ Declaração --gt action.
  • elabore int i
  • allocate a cell
  • then
  • bind token of i to the given cell.

59
Exemplo de Descrição
  • Comando de Atribuição
  • Sintaxe
  • Comando lt-- Identifier Expressão .
  • Semântica
  • execute _ comando --gt action.
  • execute c e
  • avalie e
  • then
  • store the given value in the cell bound to
    token to c.

60
Exemplo de Descrição
  • Comandos com declarações locais de variáveis
  • Sintaxe
  • Comando lt-- Declaração Comando .
  • Semântica
  • execute _ Comando --gt action.
  • execute dDeclaração cComando
  • furthermore elaborate d
  • hence
  • execute c.

61
Exemplo de Descrição
  • Comando While
  • Sintaxe
  • Comando lt-- while Expressão do Commando
    endwhile
  • Semântica
  • execute while e do c endwhile
  • unfolding
  • avalie e
  • then
  • check the given value is true and then
  • execute c and then unfold
  • or
  • check the given value is false.

62
Notação de AçõesFaceta Reflexiva
63
Descrição
  • A Faceta Reflexiva define operadores capazes de
    encapsular ações na forma de abstrações.
  • Utilizada principalmente na modelagem de
    procedimentos e funções.

64
Principais Operadores
  • abstraction of a -- Expressão que retorna uma
    abstração que incorpora a computação definida por
    a
  • enact e -- Avalia a expressão e e se ela
    retornar uma abstração executa-a. Caso contrário
    gera uma mensagem de erro.
  • closure a -- modifica a abstração a de forma a
    incorporar os bindings correntes durante a
    avaliação de a.
  • application of a to v -- define uma abstração
    semelhante a abstração a mas que quando for
    executada receberá v como valores transitórios.

65
Exemplos
  • give abstraction of bind a to 5
  • give 10 hence
  • then give closure abstraction of
  • enact the given abstraction. give the
    integer bound to a
  • then
  • give abstraction of enact the given
    abstraction
  • give the given integer
  • then
  • enact application the given
  • abstraction to 5

66
Exemplos de Descrição
  • Declaração de Procedimentos
  • Sintaxe
  • Declaração lt-- proc Identifier is Commando
    end .
  • Semântica
  • elabore proc i is c end
  • bind token of i to closure abstraction of
  • execute c.

67
Exemplos de Descrição
  • Chamada a procedimento
  • Sintaxe
  • Comando lt-- Identifier () .
  • Semântica
  • execute i ()
  • enact the abstraction bound to i.

68
Pratica
69
  • Baixe os Seguintes Arquivos
  • http//www.cin.ufpe.br/rat/download/abaco-beta230
    .zip
  • http//www.cin.ufpe.br/if686/laboratorio.prj
  • Descompacte o arquivo Zip em um diretório de
    trabalho.
  • Execute o arquivo abaco2.30.jar.
Write a Comment
User Comments (0)
About PowerShow.com