Leia com atenção as instruções abaixo.
Valor: 2,0 pontos na 1ª Nota.
Data da Entrega Limite: 30/10/2021
Coloque a resposta na pasta atividades/atividade04 do repositório.
Problema 08 do capítulo 03 do livro texto
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.
Problema 15 do capítulo 03 do livro texto.
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>
Problema 16 do capítulo 03 do livro texto.
Transforme a seguinte gramática em EBNF:
<assign> → <id> = <expr>
<id> → A|B|C
<expr> → <expr> + <expr>
| <expr> * <expr> | (<expr>)
| <id>
Problema 19 do capítulo 03 do livro texto.
Considere a seguinte gramática do Exemplo 3.6:
<assign> → <var> = <expr>
<expr> → <var> + <var>
| <var>
<var> → A|B|C
Escreva uma gramática de atributos cuja base da BNF é aquela do Exemplo 3.6 (mostrada acima) e na Seção 3.4.5 (na qual temos um exemplo inicial de uma gramática de atributos), mas cujas regras da linguagem são as seguintes: os tipos de dados não podem ser misturados em expressões, mas as sentenças de atribuição não precisam ter os mesmos tipos em ambos os lados do operador de atribuição. Por exemplo, real = int + real não é permitido, mas int = real + real é.
Você pode reutilizar os atributos já definidos (actual_type e expected_type) e demonstrar a gramática de atributos da mesma forma que no exemplo 3.6, mostrando a regra sintática e a regra semântica associada.