Gramáticas e análise descendente

 

 

  1. Considere a gramática:
    bexpr->bexpr  or bexpr | bterm
    bterm->bterm  and bterm | bfactor
    bfactor->not bfactor | ( bexpr ) |  true |  false
    1. Identifique os símbolos terminais e não terminais da gramática.
    2. Demonstre que a gramática é ambígua derivando 2 árvores de análise diferentes para a mesma sequência de entrada.
    3. Construa uma gramática não ambígua equivalente.
    4. Construa a árvore de análise para a entrada: 
      not ( true or false and true )
  2. Considere a seguinte gramática:
    E->E + T | E - T | T
    T->T * F | T / F | F
    F->( E ) |  id
    1. Transforme a gramática por forma a poder ser analisada por um analisador sintáctico preditivo.
    2. Calcule os conjuntos FIRST e FOLLOW para os símbolos não terminais.
    3. Elabore a tabela de análise do analisador sintáctico preditivo para esta gramática.
    4. Apresente uma tabela com o conteúdo da pilha, a entrada e a acção realizada em cada passo da análise quando a sequência de entrada é:  a*(b+c).
  3. Pretende-se desenvolver um analisador sintáctico preditivo para a gramática seguinte:
    S->A B d | C d
    A->C d h | S e
    C->g B | h f
    B->g | ø

    onde  S é o símbolo inicial e  defgh é o conjunto de símbolos terminais.

    1. Examine a gramática e transforme-a por forma a poder construir um analisador sintáctico preditivo para a linguagem correspondente.
    2. Construa os conjuntos FIRST e FOLLOW dos símbolos não terminais da gramática obtida na pergunta anterior.
    3. Construa a tabela de análise do analisador sintáctico preditivo.
    4. Apresente uma tabela com o conteúdo da pilha, a entrada e a acção realizada em cada passo da análise quando a sequência de entrada é:  hfded.

Nota:ø representra a produção nula.