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

Python 为什么当我启用packat时,pyparsing会返回不同的解析树?,python,pyparsing,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" ) 禁用pa

这只是一个测试回溯的玩具语法:

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']

在最后一个案例中,为什么会发生这种情况?谢谢

这是pyparsing中的一个bug。已将更正的版本签入SVN