Linguagens de Programação - Atividade 03

Leia com atenção as instruções abaixo.

Valor: 2,0 pontos na 1ª Nota.

Data da Entrega Limite: 23/10/2021

Coloque a resposta na pasta atividades/atividade03 do repositório.

Questão 01 - 0,5 Pontos

Usando a gramática do exemplo 3.4 no livro texto:

<assign> → <id> = <expr> 
<id> → A|B|C
<expr> → <expr> + <term>
    | <term>
<term> → <term> * <factor>
    | <factor> 
<factor> → (<expr>)
    | <id>
                        

Mostre uma árvore de análise sintática e uma derivação mais à esquerda para cada uma das seguintes sentenças:

  1. A = A + (B + C)
  2. A = B * (C * (A + B))

Questão 02 - 0,5 Pontos

Considere a gramática a seguir:

<lexp> → <átomo> | <lista>
<átomo> → número | identificador
<lista> → (<lexp-seq>)
<lexp-seq> → <lexp-seq> <lexp> | <lexp> 
                        

Escreva uma derivação mais à direita para a cadeia (a 23 (m x y)) e construa uma árvore de análise sintática.

Questão 03 - 1,0 Ponto

Escreva uma descrição BNF para uma sentença switch em C. Você não precisa definir todos os não terminais de C para resolver esta questão. Por exemplo, você pode considerar que o não terminal <expr> já existe e está definido para expressões aritméticas.