是否可以构造一个 LR(0) 解析器来解析具有前缀和后缀运算符的语言?例如,如果我有一个带有 +(加法)和 ! (阶乘)运算符通常优先于 1+3!应该是 1 + 3!= 1 + 6 = 7,但如果解析器是 LR(0),那么当它在堆栈上有 1+3 时,它肯定会减少而不是移位?
另外,右结合运算符会带来问题吗?例如,2^3^4 应该是 2^(3^4) 但同样,当解析器在堆栈上有 2^3 时,它如何知道减少或移位?
如果这不可能,是否还有办法使用 LR(0) 解析器,可能通过更改语法在适当的位置添加括号?