4
我在Parsec中编写解析器。像E - > E + E这样的左递归生成不能在LL语法分析器中轻松编写,所以Parsec提供了buildExpressionParser
,它支持中缀,后缀和前缀运算符。但是下标操作符呢?如何在Parsec中实现下标运算符?
E - > E [E]如何实施? 如果我可以在不消耗第二个表达式的情况下使用右括号,那么我可以用buildExpressionParser
的Infix表条目来模拟它。思考?
编辑:我知道有一个左递归消除算法很可能适用于我的语法。我正在寻找一些简单或抽象的(如buildExpressionParser
)。否则我只会用Happy。
我会建议不要使用为此高兴或基本上任何理由。快乐回避了Haskell的抽象力。 – luqui
只要用'buildExpressionParser'作为'Postfix'。 – luqui
postfix如何帮助?与我可以匹配右括号,但没有办法匹配开幕... – BruceBerry