Linguagens de Programação - Atividade 04

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.

Questão 01 - 0,5 Pontos

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.

Questão 02 - 0,5 Pontos

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>
                        

Questão 03 - 0,5 Pontos

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>
                        

Questão 04 - 0,5 Pontos

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.