Lógica de Programação 1

Propaganda
Compiladores
Linguagens definidas por gramática
Aula 04
Prof. Me Ivan José dos Reis Filho
Aulas anteriores
• O que é uma gramática?
– Sistema gerador de linguagens
– Um sistema de reescrita
– Uma maneira finita de descrever
(representar) uma linguagem
Aulas anteriores
• Linguagens Formais
– Vocabulário
– Palavras
– Frases
• Gramática Geradora G = (Σ, T, S, P)
–
–
–
–
Símbolos não terminais - Maiúscula
Símbolos terminais - Minúscula
Símbolo inicial – Lado Esquerdo
Conjunto de regras sintáticas
• P ⊆ (Σ ∪ T)+ x (Σ ∪ T)*
Reforço
• Exemplo G = (Σ, T, S, P) da língua portuguesa
– Σ = { <sentença> , <sujeito> , <predicado> ,
<substantivo> ,<artigo> , <adjetivo> ,
<predicado> , <verbo> , <objeto> }
– T = { joão, maria , cachorro, livro , pão, o , a ,
pequeno, bom , bela , morde , le , olha }
– P = é o conjunto das regras gramaticais
apresentado
– S = <sentença>
Reforço
• Analogia de G = (Σ, T, S, P) para uma noção
formal
– Σ – são as categorias sintáticas ou
gramaticais;
– T – são as palavras utilizadas como símbolos
da linguagem;
– P – são as regras sintáticas (ou gramaticais);
– S - é a categoria gramatical que sintetiza o
que será produzido (gerado) pela
gramática.
Reforço
• Exemplo intuitivo de uma Gramática (um subconjunto da
gramática da língua portuguesa)
<sentença> → <sujeito> <predicado>
<sujeito> → <substantivo>
| <artigo> <substantivo>
| <artigo> <adjetivo> <substantivo>
<predicado> → <verbo> <objeto>
<substantivo> → joão | Maria | cachorro | livro | pão
<artigo> → o | a
<adjetivo> → pequeno | bom | bela
<verbo> → morde | le | olha
<objeto> → <substantivo>
| <artigo> <substantivo>
| <artigo> <adjetivo> <substantivo>
Linguagens geradas por uma
gramática
Exemplo:
Consideremos a gramática G = (Σ, T, P, S) onde
–Σ={S}
– T = { a, b }
Quais são as produções possíveis?
Linguagens geradas por uma
gramática
Exemplo:
Consideremos a gramática G = (Σ, T, P, S) onde
–Σ={S}
– T = { a, b }
Quais são as produções possíveis?
P = {S → aSb , S → ab, S → ba, S → a, S → b} ou
P = {S → aSb | ab | ba | a | b}
Linguagens geradas por uma
gramática
• Exemplo
Consideremos a gramática
G = ({E}, {+, *, [, ], x}, P, E)
Quais são as produções possíveis?
Linguagens geradas por uma
gramática
• Exemplo
Consideremos a gramática
G = ({E}, {+, *, [, ], x}, P, E)
Quais são as produções possíveis?
P = { E → E+E | E*E | [E] | x }
Linguagens geradas por uma
gramática
• Exemplo
Consideremos a gramática G = ({S}, {0,1}, P, S)
Quais são as produções possíveis?
Linguagens geradas por uma
gramática
• Exemplo
Consideremos a gramática G = ({S}, {0,1}, P, S)
Quais são as produções possíveis?
P = { S → 0S1 | 01 | 0 | 1}
Linguagens geradas por uma
gramática
• Definir a gramática que gera Palíndromos, i.e:
– Direita para esquerda
– Esquerda para a direita
Gramática
G=({A}, {0, 1}, P, S)
Produção
P = {S → 0 | 1 | 00 | 11 | 0A0 | 1A1}
Derivação
continua
Derivação
P = {S → 0 | 1 | 00 | 11 | 0A0 | 1A1 | λ}
S → 0A0
00A00
001A100
0010A0100
0010λ0100
Resultado = 00100100
Derivação
P = { E → E + E | E * E | [E] | x }
Por exemplo, a expressão [x+x]*x pode ser gerada
pela seguinte sequência de derivações:
E→
E*E
[E] * E
[E+E] * E
[x+E] * E
[x+x] * E
[x+x] * x
Exercício
• Forme a gramática das seguintes produções
1)
P = {S → S | a S a | b S b }
2)
S→abA
A→aA|bA|B
B → ba
3)
S→aS|bS|B
B → aa | bb
Exercício
• Verifque se as seguintes palavras são reconhecidas
pela gramática
1) S → SS | a S a | b S b | λ
a) abba
b) aabbaaaa
2) S → a b A
A→aA|bA|B
B → ba
a) abbbaba
b) abba
Download