Beruflich Dokumente
Kultur Dokumente
Tpicos Introduo O problema de descrever a sintaxe Mtodos formais para descrever a sintaxe Gramticas de atributos Descrevendo o significado dos programas: semntica dinmica
Introduo
Sintaxe
A forma ou estrutura das expresses, das instrues e das unidades de programas
Semntica
O significa das expresses, das instrues e das unidades de programas
Semntica
Se o valor da expresso for verdadeiro, a instruo ser executada
Descrevendo a sintaxe: terminologia Uma sentena uma cadeia de caracteres sobre um alfabeto Uma linguagem uma conjunto de sentenas Um lexema a unidade sinttica de mais baixo nvel de uma linguagem
Exemplos: *, sum, begin
Geradores de linguagens
Um dispositivo que gera sentenas de uma linguagem possvel determinar se a sintaxe de uma sentena em particular est correta atravs da comparao dela com a estrutura do gerador
BNF Fundamentos
No-terminais: BNF abstraes Terminais: lexemas e tokens Gramtica: uma coleo de regras
Exemplos de regras BNF:
<ident_list> identifier | identifier, <ident_list>
Regras BNF Uma regra possui um lado esquerdo (LHS) e um lado direito (RHS), e consiste de smbolos terminais e no-terminais Uma gramtica um conjunto no vazio de regras Uma abstrao (ou smbolo no-terminal) pode ter mais de um RHS
<stmt> <single_stmt> | begin <stmt_list> end
Descrevendo Listas
Listas sintticas so descritas usando recurso
<ident_list> ident | ident, <ident_list>
Uma derivao a aplicao de regras repetidas vezes, comeando com um smbolo inicial e finalizando com uma sentena formada de smbolos terminais
Ambigidade em gramticas
Uma gramtica ambgua se e somente se ela gera uma sentena para a qual h duas ou mais rvores de anlise distintas
Associatividade de operadores
Associatividade de operadores podem ser indicados pela gramtica
<expr> -> <expr> + <expr> | <expr> -> <expr> + const | const const (ambgua) (no-ambgua)
BNF estendida
Partes opcionais so colocadas entre colchetes [ ]
<proc_call> -> ident [(<expr_list>)]
Opes de mltipla escolha, partes alternativas da RHS so colocadas dentro de parnteses e separadas por barras verticais
<term> <term> (+|-) const
BNF e EBNF
Gramticas de Atributos
Gramticas livres de contexto (GLC) no podem descrever toda a sintaxe de linguagens de programao
Compatibilidade de tipos
Gramticas de Atributos
Exemplos de regras que no podem ser especificadas na BNF
Determina que todas as variveis devem ser declaradas antes de serem referenciadas O end do subprograma Ada seguido de um nome deve coincidir com o nome do subprograma
Esses dois problemas exemplificam a categoria das regras de linguagem chamada de semntica esttica
Leva esse nome pois a anlise necessria para verificar essas especificaes pode ser feita na compilao
Gramticas de Atributos: Exemplo Em um procedimento em Ada, o nome no end deve ser igual ao nome do procedimento Regra de sintaxe
<def_proc> procedure <nome_do_proc>[1] <corpo_do_proc> end <nome_do_proc>[2]
Regra semntica
<nome_do_proc>[1].string = <nome_do_proc>[2].string
1. <var>.tipo_efetivo look-up(A)
Regra 4
2. <expr>.tipo_esperado var.tipo_efetivo
Regra 1
Dificuldades
Complexo e grande Dificuldade de leitura e escritas das gramticas