我使用的第一个解析器生成器是Parse::RecDescent,它提供的指南/教程非常棒,但是它最有用的特性是它的调试工具,特别是跟踪功能(通过将$RD_TRACE设置为1激活)。我正在寻找一个解析器生成器,可以帮助你调试它的规则。在
问题是,它必须用python或ruby编写,并具有详细模式/跟踪模式或非常有用的调试技术。在
有人知道这样的解析器生成器吗?在
编辑:当我说调试时,我指的不是调试python或ruby。我指的是调试解析器生成器,看看它在每一步都在做什么,查看它读取的每个字符,它试图匹配的规则。希望你能明白。在
奖励编辑:要赢得奖金,请展示一个解析器生成器框架,并说明它的一些调试功能。我再说一遍,我对pdb不感兴趣,但对解析器的调试框架感兴趣。另外,请不要提到树顶。我对此不感兴趣。
我对它的调试特性一无所知,但我听说过PyParsing的优点。在
http://pyparsing.wikispaces.com/
Python是一种非常容易调试的语言。你可以直接导入pdbpdb.settrace(). 在
然而,这些解析器生成器应该带有良好的调试工具。在
http://www.antlr.org/
http://www.dabeaz.com/ply/
http://pyparsing.wikispaces.com/
回应悬赏
下面是PLY调试的实际操作。在
源代码
输出
^{pr2}$分析表生成于解析器.out在
我知道已经有人申请了赏金,但是这里有一个用pyparsing编写的等价解析器(加上支持使用零个或多个逗号分隔参数的函数调用):
此测试代码通过其基本速度运行解析器:
^{pr2}$给出以下输出:
为了调试,我们添加以下代码:
现在我们重新分析第一个测试(显示输入字符串和一个简单的列标尺):
给出这个输出:
Pyparsing还支持packrat解析,这是一种解析时间记忆(请阅读关于packratinghere)的更多信息。以下是相同的解析序列,但启用了packrat:
这是一个有趣的练习,有助于我了解其他解析器库的调试特性。在
相关问题 更多 >
编程相关推荐