1 / 22

Semântica em Linguagens de Programação Semântica Denotacional

Semântica em Linguagens de Programação Semântica Denotacional. Paradigmas de Linguagens de Programação Cin/UFPE Fred Durão (fad2@cin.ufpe.br) Kellyton Brito (kbs@cin.ufpe.br) Leonardo Martins (lms6@cin.ufpe.br). Semântica Denotacional. Motivação

carlo
Télécharger la présentation

Semântica em Linguagens de Programação Semântica Denotacional

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Semântica em Linguagens de ProgramaçãoSemântica Denotacional Paradigmas de Linguagens de Programação Cin/UFPE Fred Durão (fad2@cin.ufpe.br) Kellyton Brito (kbs@cin.ufpe.br) Leonardo Martins (lms6@cin.ufpe.br)

  2. Semântica Denotacional • Motivação • Analisar um programa a partir somente da sintaxe da linguagem, sem necessariamente ter que executá-la; • Aplicações • Provar a exatidão de programas; • Verificar a equivalência semântica; • Auxiliar a criação do projeto da linguagem; • Criar compiladores;

  3. Semântica Denotacional • História • Dana Scott em 1970 • Lambda cálculo; • Funções Computacionais • Teoria do Domínio; • teoria matemática de linguagens de programação; • aproximação e convergência de conjuntos (ponto fixo); • o significado das estruturas de uma linguagem de programação;

  4. Tipos de Semântica Formal • Semântica Operacional • Como o programa é executado? Que operações são realizadas? • Semântica Denotacional • O que o programa significa? Que objetos matemáticos ele denota? • Semântica Axiomática • Quais proposições lógicas são válidas para um programa? ex.:{x = 4} x + 1 {x = 5}

  5. Tipos de Semântica Formal • Semântica Operacional • Semântica Denotacional • Semântica Axiomática

  6. Semântica Denotacional • Conceito • Estuda o significado dos programas; • Mapeia construções sintáticas para objetos matemáticos, através de uma funções semântica Ex: C[[x := a]] = {(σ, σ [n/X]) | σЄΣ & n = A[[a]]σ} Para C[[x := 3]] = {(σ, σ [n/X]) | σЄΣ & n = A[[3]]σ} • Outras estruturas sintáticas que podem ser mapeadas: • Comandos: • Skip; While; Write; Read; If Then Else; Atribuição • Expressões: • Aritméticas; • Boleanas;

  7. Semântica Denotacional • Notações para expressar a semântica • Notações • Indução Estrutural • A[[n]] = {(σ, n) | σЄΣ} • Notação Lambda • Ex: A[[n]] = λσЄΣ.n

  8. Semântica Denotacional • Domínios Sintáticos • Aexp a ::= x | n | a1 + a2 | a1 − a2 | a1 ∗ a2 • os significados de elementos de Aexp pertencem ao conjunto de funções totais Σ → IZ • Bexp b ::= t | a1 = a2 | a1 < a2 | ¬b | b1 ^ b2 | b1 v b2 • os significados de elementos de Bexp pertencem ao conjunto de funções totais Σ → IB • Com c ::= skip | x := n | C1; C2 | if b then C1 else C2 | while b do C • os significados de elementos de Com pertencem ao conjunto de funções Σ → Σ

  9. Semântica Denotacional • Semântica Composicional • O significado de comandos de uma linguagem IMP deve ser uma função pertencente ao conjunto de funções parciais Σ -> Σ. • Ex1: C[[C0; C1]] = C[[c1]] o C[[c0]] • A denotação de uma parte de um programa é determinada somente pela denotação das suas subpartes (a semântica é dita composicional). • Ex2: A[[a0 + a1]] = {(σ,n0 + n1) | (σ,n0) ЄA[[a0]] &(σ,n1) ЄA[[a1]] }

  10. Semântica Denotacional • Equações Semânticas para Aexp • A[[n]] = {(σ, n) | σЄΣ} • A[[X]] = {(σ, σ (X)) | σЄΣ} • A[[a0 + a1]] = {(σ,n0 + n1) | (σ,n0) ЄA[[a0]] &(σ,n1) ЄA[[a1]] } • A[[a0 - a1]] = {(σ,n0 - n1) | (σ,n0) ЄA[[a0]] &(σ,n1) ЄA[[a1]] } • A[[a0 * a1]] = {(σ,n0 * n1) | (σ,n0) ЄA[[a0]] &(σ,n1) ЄA[[a1]] }

  11. Semântica Denotacional • Equações Semânticas para Bexp • B[[true]] = {(σ, true) | σЄΣ} • B[[false]] = {(σ, false) | σЄΣ} • B[[a0 = a1]] = A[[a0]] σ = z A[[a1]] σ • B[[a0 ≤ a1]] = A[[a0]] σ≤ z A[[a1]] σ • B[[a0 ^ a1]] = A[[a0]] σ ^ T A[[a1]] σ • B[[a0 v a1]] = A[[a0]] σ v T A[[a1]] σ • B[[¬b]] = ¬T B[[b]] σ onde T = {true, false}

  12. Semântica Denotacional • Equações Semânticas para Com • C[[skip]] = {(σ, σ) | σЄΣ} • C[[x := a]] = {(σ, σ[n/X]) | σЄΣ & n = A[[a]] σ} • C[[c0; c1]] = C[[c1]] o C[[c0]] • C[[if b then c0 else c1]] = {(σ, σ’) | B[[b]] σ = true & (σ, σ’) Є C[[c0]] } U (σ, σ’) | B[[b]] σ = false &(σ, σ’) Є C[[c1]] } • C[[while b do c]] = . . . Essa aqui é pau visse..! Vide Bula…Next Page

  13. Semântica Denotacional • Equação Semântica do WHILE • Considerando que w ≡ while b do c nota- se a equivalência: • w ~ if b then c; w else skip • Semântica de C[[W]] então é dada por: • C[[w]] = {(σ, σ’) | B[[b]] σ = true & (σ, σ’) Є C[[w]] o C[[c]] } U {(σ, σ’) | B[[b]] σ = false } • Considerando que C[[w]] = φ, nota – se que: φ = Γ(φ); Essa relação é se aproxima do conceito de ponto fixo Equação Recursiva

  14. Semântica Denotacional • Ponto Fixo • Em função de primeira ordem: • Um ponto fixo de uma funcão é qualquer valor x para que f(x) = x; • Ex: F(x) = x2 Pontos Fixos = {0,1} pois (0)2 = 0 e (1) 2 = 1; • Em funções de alta ordem: • Os argumentos agora são funcões -> fix(f); • Ex do Caso do While para fix(Γ), temos: Γ(φ) = φ.

  15. Semântica Denotacional • Equações Semânticas do While • C[[while b do c]] = fix(Γ), onde • Γ(φ) = {(σ, σ’) | B[[b]] σ = true & (σ, σ’) Єφ o C[[c]] } U {(σ, σ’) | B[[b]] σ = false }

  16. Semântica Denotacional • O Projeto • Objetivo inicial: • Expressar Semântica Operacional/Denotacional da Linguagem; • Abordagem da Equipe: • Visão Operacional; • Ferramenta • Aprofundamento dos Conceitos de Semântica Denotacional;

  17. Semântica Denotacional • O Projeto – Abordagem Operacional • Apresentação do comportamento do ambiente • Criação da Ferramenta: • Exibição da visão operacional do ambiente • Exibição das funções semânticas

  18. Semântica Denotacional • Ferramenta • Utilização de Aspectos • Inserção dos métodos: • meaning(); • denotational();

  19. Implementação da Ferramenta • O Projeto – Abordagem Operacional • Apresentação do comportamento do ambiente • Criação da Ferramenta: • Exibição da visão operacional do ambiente • Exibição das funções semânticas

  20. Semântica Denotacional • Trabalho Futuro - O Projeto de Fato 1 - Tradução da sintaxe original para uma linguagem semântica var a = 2; -> {(σ, σ [n/X]) | σЄΣ & n = A[[2]] σ} var b = 3; -> {(σ, σ [n/X]) | σЄΣ & n = A[[3]] σ} {(σ, σ [n/X]) | σЄΣ & n = A[[2]] o n = A[[3]] σ} 2 – Criação de um interpretador para a linguagem semântica • Criação do Ambiente Semântico; • Etc… 3 – Execução da linguagem semântica ou Animação

  21. Referências • Programming Language Syntax and Semantics. David A Watt. Prentice Hall, 1991. Capítulo 3.; • Semantics With Applications, A Formal Introduction. Hanne Nielson, Flemming Nielson; • The Formal Semantics of Programming Languages, Glynn Winskel

More Related