Escolar Documentos
Profissional Documentos
Cultura Documentos
Descrevendo Sintaxe
e Semântica
Conceitos de Linguagens de Programação – Robert W. Sebesta
» Introdução
» O problema geral de descrever sintaxe
» Métodos formais para descrever sintaxe
» Gramáticas de atributos
» Descrevendo o significado de programas: semântica dinâmica
» Conceitos iniciais
– Uma linguagem, seja natural (como a língua inglesa) ou artificial
(como Java), é um conjunto de cadeias de caracteres formadas a
partir de um alfabeto
– Uma sentença é uma cadeia de caracteres formada a partir do
alfabeto da linguagem
– Um lexema é a unidade sintática de mais baixo nível de uma
linguagem (por exemplo, *, sum, begin)
– Um token é uma categoria de lexemas (por exemplo,
identificador)
6
Conceitos de Linguagens de Programação – Robert W. Sebesta
10
» Reconhecedores
– Um dispositivo de reconhecimento lê cadeias de caracteres a
partir do alfabeto da linguagem e indica se a cadeia pertence ou
não à linguagem
– Exemplo: parte de análise sintática de um compilador
» Geradores
– Um dispositivo que gera sentenças de uma linguagem
– Pode determinar se a sintaxe de uma sentença em particular
está sintaticamente correta comparando à estrutura do gerador
11
12
13
14
Conceitos de Linguagens de Programação – Robert W. Sebesta
15
17
18
19
» Por exemplo:
– Seja w = ababab então wR = bababa
– Seja v = cdcdcdcd então vR = dcdcdcdc
20
» Por exemplo:
– Seja w = ababab e v = cdcdcdcd
– Então w U v = abababcdcdcdcd
21
22
» Regra de abstração:
– Tem um lado esquerdo (LHS), que representa um não terminal
– Tem um lado direito (RHS), que representa uma cadeia de não
terminais e terminais
– Podem representar mais de uma forma sintática da linguagem
1⃣
2
⃣
23
24
Conceitos de Linguagens de Programação – Robert W. Sebesta
25
26
27
» ‘
28
Conceitos de Linguagens de Programação – Robert W. Sebesta
29
Conceitos de Linguagens de Programação – Robert W. Sebesta
30
31
Conceitos de Linguagens de Programação – Robert W. Sebesta
32
33
Conceitos de Linguagens de Programação – Robert W. Sebesta
34
Conceitos de Linguagens de Programação – Robert W. Sebesta
35
Conceitos de Linguagens de Programação – Robert W. Sebesta
36
Conceitos de Linguagens de Programação – Robert W. Sebesta
37
» BNF
» <expr> → <expr> + <term>
» | <expr> - <term>
» | <term>
» <term> → <term> * <factor>
» | <term> / <factor>
» | <factor>
» EBNF
» <expr> → <term> {(+ | -) <term>}
38