Buscar

Descrevendo Sintática - BNF

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIVERSIDADE FEDERAL DE GOIÁS 
INSTITUTO DE INFORMÁTICA 
LINGUAGENS DE PROGRAMAÇÃO 
Engenharia de Software 
 
 
Exercícios de Fixação – Descrição Sintática 
 
1. Dada a gramática BNF de uma pequena linguagem de programação: 
 
<programa> ::= begin <lista_stmt> end 
<lista_stmt> ::= <stmt> | <stmt> ; <lista_stmt> 
<stmt> ::= <var> := <expressão> 
<var> ::= A | B | C | D | <expressão> 
<expressão> ::= <var> + <var> 
 | <var> - <var> 
 | <var> / <var> 
 | <var> * <var> 
 | <var> 
 
a. Construa a árvore de decisão para a seguinte expressão: 
begin A := B + C ; B := C end 
 
b. Construa a árvore de decisão para a seguinte expressão: 
begin A := B + C * D end 
 
c. Na derivação acima, existe uma ambiguidade. Como seria a gramática para evitar 
essa ambiguidade? (precedência do operador *) 
 
d. Construa a árvore de decisão para a seguinte expressão, usando a gramática 
construída no item anterior: 
begin A := C + B * C * D end 
 
e. Observe que a expressão anterior utiliza duas vezes o mesmo operador. Altere a 
gramática anterior definindo associatividade para o operador * à esquerda. 
 
2. Dada a expressão: 
 
int x = 123; 
int y = 432; 
int z = x + y; 
print z + 2; 
print z; 
print y; 
print x; 
 
Defina uma gramática BNF suficiente para descrever a sintaxe da linguagem utilizada nessa 
expressão.

Continue navegando