SóProvas


ID
1311751
Banca
CESPE / CEBRASPE
Órgão
Polícia Federal
Ano
2013
Provas
Disciplina
Arquitetura de Computadores
Assuntos

Com relação aos conceitos e características de compiladores, julgue os itens que se seguem.

Considere a gramática string  string + string → string – string |0|1|2|3|4|5|6|7|8|9 e a string como um único nó não terminal, que pode ser um dígito ou uma sentença. Nessa situação, a expressão 10 – 4 + 3 possibilita criar duas árvores de derivação distintas.

Alternativas
Comentários
  • Gabarito Certo

    Explicação da CESPE:
    "Uma gramática pode ter mais de uma árvore de uma árvore de derivação gerando determinada cadeia de terminais. Quando uma gramática permite esta característica ela é dita ambígua. A gramática apresentada neste item é ambígua porque permite gerar duas árvores de derivação distintas. Mais informações podem ser obtidas em Alfred V. Aho. Compiladores: princípios, técnicas e ferramentas. São Paulo. Pearson Addilson-Wesley, 2008. Pág 30. Uma árvore: (10 -4 ) + 3 e a outra: 10 - (4 + 3)"

     

    "Retroceder Nunca Render-se Jamais !"
    Força e Fé !
    Fortuna Audaces Sequitur !

  • Claramente, essa questão está com o gabarito errado, justificativa sem sentido do CESPE

    http://www.itnerante.com.br/forum/topics/quest-o-compiladores-pcf-2013?commentId=1867568%3AComment%3A403299&xg_source=activity

  • Gabarito: Certo

    1ª ÁRVORE:

                  expr
                 /       \

               /           \

        expr      -      expr

                            /  +  \

          10     -      4  +   3

     

    2ª ÁRVORE:

                  expr
                 /       \

               /           \

        expr      +      expr

       /  -  \

    10  -  4      +        3

     

    Fonte:

    Esse exemplo está bem próximo ao exemplo desenhado na página 15 desta apresentação: 

    http://www.joinville.udesc.br/portal/professores/damiani/materiais/Compiladores_v2.pdf

  • o Gabarito da questão deve ser considerado errado, pois com essa gramática não é possível gerar numeros de dois dígitos (10 por exemplo), pois está faltanto a transição string -> stringstring