Linguagens de Programação - Atividade 03

Nesta atividade, vamos tratar da BNF, derivações e árvores.

Questão 01

Usando a gramática (Exemplo 3.2 do livro):

<assign> → <id> = <expr>
<id> → A | B | C
<expr> → <id> + <expr>
    | <id> * <expr>
    | (<expr>)
    | <id>
                            
mostre uma árvore de análise sintática e uma derivação mais a esquerda para cada uma das seguinte sentenças:
  1. A = A * (B + (C * A))
  2. B = C * (A * C + B)
  3. A = A * (B + (C))

Questão 02

Usando a gramática (Exemplo 3.4 do livro):

<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 a esquerda para cada uma das seguinte sentenças:
  1. A = ( A + B) * C
  2. A = B + C + A
  3. A = A * (B + C)
  4. A = B * (C * (A + B))

Questão 03

Escreva uma gramática para a linguagem com cadeias que têm n cópias da letra a seguida pelo mesmo número de cópias da letra b, onde n > 0. Por exemplo, as cadeias ab, aaaabbbb, e aaaaaaaabbbbbbbb estão na linguagem, mas a, abb, ba, e aaabb não estão.

Questão 04

Considere a gramática:

<S> → <A> a <B> b
<A> → <A> b | b
<B> → a <B> | a
                            
Quais das sentenças abaixo estão na linguagem gerada por essa gramática?
  1. baab
  2. bbbab
  3. bbaaaaa
  4. bbaab

Questão 05

Considere a gramática:

<S> → a <S> c <B> | <A> | b 
<A> → c <A> | c
<B> → d| <A>
                            
Quais das sentenças abaixo estão na linguagem gerada por essa gramática?
  1. abcd
  2. acccbd
  3. acccbcc
  4. acd
  5. accc