LL(1) 解析器如何处理右关联文法

How LL(1) parser handle Right Associative grammar

我试图找出 LL(1) 解析器如何处理正确的关联语法。例如,在像这样的左关联语法的情况下 E->+TE' first() 和 follow() 工作顺利并且解析 table 很容易生成。但是,在右递归语法的情况下,例如,在像 E->T^E/T 解析 table 这样的权力的情况下没有正确生成。我正在搜索资源,但发现每个例子都避免了像幂这样的右结合性。

LL 算法处理右递归没有任何问题。实际上,你说的转换是把左结合文法变成右结合文法,而左结合性需要通过语义规则中的语法树转换来恢复。所以如果产生式真的是右结合的,你可以使用相同的语法而不需要 post- 处理树。

E->T^E/T 的问题不在于它是右递归的。问题在于右侧的两个以相同的非终结符开头,因此无法进行预测。解决方案是左因式分解,将产生 E->T (^T)*`.