Semantica
Programação
Centro de Informática, UFPE
Luis Carlos (lcsm@cin.ufpe.br)
Hermano Moura
(hermano@cin.ufpe.br)
1
Objetivo
Introduzir conceitos de semântica formal de linguagens de programação
2
Motivação: Qual o significado do seguinte programa? program simples = var x : int := 3 in x := x + 5 end. =
?
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
4
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 5
Aplicações em Linguagens de Programação
Interface entre projetistas, implementadores e usuários Projetista:
Implementador:
Define precisamente a linguagem desejada
Permite a identificação precoce de erros
Possibilita a utilização de geradores (semi-)automáticos
Dificulta o aparecimento de erros
Usuários: Produção de bons manuais da linguagem
6
Ciclo de vida de LP baseado em especificações projeto formais
especificação formal protótipos manuais, livros
compiladores
Introdução
características principais de uma lp:
sintaxe semântica pragmática
8
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)
9
Gramáticas Livres de
Contexto
Estrutura principal:
Comando <-[[ “if” Expressão “then” Comando “else”
Comando ]]
Significado:
Um Comando da linguagem definida pode ser