为什么当我启用packat时,pyparsing会返回不同的解析树?

时间:2011-05-01 08:21:28

标签: python 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 禁用,返回的解析树

['a', 'b', 'a']

启用packrat 后,

['a', 'b', 'b', 'a']

为什么会发生这种情况,在最后一种情况下呢?感谢

1 个答案:

答案 0 :(得分:2)

这是pyparsing中的一个错误。修正后的版本已经检入SVN。