Escolar Documentos
Profissional Documentos
Cultura Documentos
- Simbolos terminais
id + - * / ( )
- Símbolos não-terminais
expr e op , sendo expr o símbolo de partida
Exemplo 2
● Exemplo:
- E E::=-E
( E ) E::=(E)
E + E E::=E+E
Id id E::=id E::=id
exp
exp op exp
número + número
3 4
Ambas produzem x - 2 * y
Gramáticas Ambíguas
● A eliminação de ambiguidade não é tão simples
como a eliminação de não‐determinismo em
autômatos
● Tratamento de precedência:
● * deve ser derivado primeiro
● Precedência de Operadores
expr ::= expr op expr expr ::= term | term op1 term
expr ::= id term ::= fator | fator op2 fator
op ::= + fator ::= id | (expr)
op ::= - op1 ::= +
op ::= * op1 ::= -
op ::= / op2 ::= *
op2 ::= /
● Essa gramática tem três símbolos variáveis expr, term e fator
● Cada um representa um nível de precedência:
● expr representa a precedência mais baixa, onde estão os
operadores de soma e subtração
● term representa o próximo nível de precedência, com os operadores
de multiplicação e divisão
● fator representa o nível mais alto de precedência, onde ficam os
números isolados e as expressões entre parênteses; isso significa
que o uso de parênteses se sobrepõe à precedência de qualquer
operador, como esperado
Reescrita da Gramática
● If then else
cmd
E → TE’
E → E + T|T E’ → +TE’ | ε
T → T * F|F T → FT’
F → (E)|id T’ → *FT’ | ε
F → (E) | id
Exemplo 2
A → Ac | Aad | bd | ε cad
{
{
{
{
α1 α2 β1 β2 A
A → bdA' | A' A ad
● Método:
1) Para cada não-terminal A, encontrar o mais longo prefixo α
comum a duas ou mais alternativas
2) Se α ≠ ε, substituir todas as produções de A
A → αβ1 | αβ2 | ...| γ
onde γ são as alternativas que não começam com α
por:
A → αA' | γ
A' → β1| β2 |...| βn
Exemplo
S → iEtS | iEtSeS | a
{
{
{
{
α α β1 γ
S → iEtSS' | a
S' → ε | eS