Considere la siguiente expresión gramatical. Las reglas semánticas para el cálculo de expresiones se indican junto a cada producción gramatical.
E → number E.val = number. val | E '+' E E(1).val = E(2).val + E(3).val | E '×' E E(1).val = E(2).val × E(3).val
Suponga que los conflictos en la Parte (a) de esta pregunta se resuelven y se genera un analizador LALR(1) para analizar expresiones aritméticas según la gramática dada. Considere una expresión 3 × 2 + 1. ¿Qué propiedades de precedencia y asociatividad realiza el analizador generado?
(A) Igual precedencia y asociatividad por la izquierda; expresión se evalúa a 7
(B) Igual precedencia y asociatividad correcta; expresión se evalúa como 9
(C) La precedencia de ‘x’ es mayor que la de ‘+’, y ambos operadores se dejan asociativos; la expresión se evalúa como 7
(D) La precedencia de ‘+’ es mayor que la de ‘×’, y ambos operadores se dejan asociativos; expresión se evalúa a 9
Respuesta: (B)
Explicación:La respuesta es B ya que las producciones pertenecen al mismo no terminal y como YACC resuelve por shift over reduce, la asociatividad será asociativa por la derecha.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA