为什么当我启用 packat 时,pyparsing 返回不同的解析树?
这只是一个测试回溯的玩具语法:
from pyparsing import *
a = Literal("a")
b = Literal("b")
c = Literal("c")
abb = a + b + b
abc = a + b + c
aba = a + b + a
grammar = MatchFirst( [ abb.setDebug(), abc.setDebug(), aba.setDebug() ] )
grammar.parseString( "aba" )
使用 packrat disabled,返回的解析树
['a', 'b', 'a']
使用 packrat enabled,我明白
['a', 'b', 'b', 'a']
为什么会发生这种情况,在最后一种情况下?谢谢
This is just a toy grammar to test backtracking:
from pyparsing import *
a = Literal("a")
b = Literal("b")
c = Literal("c")
abb = a + b + b
abc = a + b + c
aba = a + b + a
grammar = MatchFirst( [ abb.setDebug(), abc.setDebug(), aba.setDebug() ] )
grammar.parseString( "aba" )
With packrat disabled, the returned parse tree
['a', 'b', 'a']
With packrat enabled, I get
['a', 'b', 'b', 'a']
Why is this happening, in the last case ? Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是 pyparsing 中的一个错误。更正后的版本已签入 SVN。
This is a bug in pyparsing. Corrected version has been checked into SVN.