我最近使用Ply在Python中编写了一个解析器(它是yacc的python重新实现).当我差不多完成解析器时,我发现我需要解析的语法要求我在解析过程中进行一些查找以通知词法分析器.在没有查看通知词法分析器的情况下,我无法正确解析语言中的字符串.
鉴于我可以从语法规则控制词法分析器的状态,我想我将使用解析器模块中的查找表来解决我的用例,但是维护/测试可能变得太难了.所以我想了解一些其他选择.
在Haskell中,我会使用Parsec,一个解析函数库(称为组合器).是否有Parsec的Python实现?或者也许其他一些生产质量库充满了解析功能,所以我可以在Python中构建一个上下文敏感的解析器?
编辑:我在上下文免费解析的所有尝试都失败了.出于这个原因,我不认为ANTLR在这里有用.
我相信pyparsing基于与parsec相同的原则.