1

これは、バックトラッキングをテストするためのおもちゃの文法です。

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

最後のケースで、なぜこれが起こっているのですか?ありがとう

4

1 に答える 1

2

これは pyparse のバグです。修正版はSVNにチェックイン済みです。

于 2011-05-01T09:26:48.920 に答える