我想在 scala StdTokenParsers 中表达这个语法:
expr -> expr ("+"|"-") ~ muldivexpr | muldivexpr
“+”和“-”是左关联的。
语法是左递归的,所以它导致了无限递归。我可以重写以删除左递归,但它会更改为右关联性。
现在我打算使用 scala rep() 将其重写为:
expr -> rep(muldivexpr ("+"|"-")) ~ muldivexpr
但是会改变关联性的 rep() 吗?rep() 在这种情况下如何工作?
我问这个问题是因为我将来必须输出 AST。