我最近使用 Ply 在 Python 中编写了一个解析器(它是 yacc 的 Python 重新实现)。当我几乎用完解析器时,我发现我需要解析的语法需要我在解析过程中进行一些查找以通知词法分析器。如果不进行查找以通知词法分析器,我将无法正确解析该语言中的字符串。
鉴于我无法从语法规则中控制词法分析器的状态,我想我将使用解析器模块中的查找表来解决我的用例,但维护/测试可能变得太难了。所以我想知道其他一些选择。
在 Haskell 中,我会使用 Parsec,一个解析函数库(称为组合子)。是否有 Parsec 的 Python 实现?或者也许是其他一些具有解析功能的生产质量库,以便我可以在 Python 中构建上下文敏感的解析器?
编辑:我所有的上下文无关解析尝试都失败了。出于这个原因,我不希望 ANTLR 在这里有用。