Linguagens de Programação - Atividade 04

Nesta atividade, vamos tratar da EBNF e ambiguidade.

Questão 01

Prove que a seguinte gramática é ambígua:

<S> → <A>
<A> → <A> + <A> | <id>
<id> → a | b | c
                        

Para provar que uma gramática é ambígua, você precisa para uma mesma sentença, mostrar que duas árvores são possíveis de serem construídas. O desafio é justamente encontrar a sentença, mostrar as derivações e as árvores.

Questão 02

Transforme a seguinte gramática em EBNF:

 <program> → begin <stmt_list> end 
 <stmt_list> → <stmt>
 | <stmt> ; <stmt_list> 
 <stmt> → <var> = <expression>
 <var> → A | B | C 
 <expression> → <var> + <var>
 | <var> – <var> | <var>