我是一個pyparsing的新蜜蜂我想嘗試setParseAction,但它並沒有被調用有時。 下面是代碼Pyparsing SetParseAction問題
def fun():
comdty_tok = StringStart() + Word(alphas) + StringEnd()
comdty_tok.setParseAction(call_back)
comdty_tok.leaveWhitespace()
return comdty_tok
def call_back(p):
print 'Calling ....'
print p
class ComdtyTok(Token):
comdty_tok = StringStart() + Word(alphas) + StringEnd()
comdty_tok.setParseAction(call_back)
comdty_tok.leaveWhitespace()
parseImpl = comdty_tok.parseImpl
class SymParser(object):
tok = ComdtyTok()
@staticmethod
def parse(symbol):
p = SymParser.tok.parseString(symbol)
print p
print "Second"
x = fun()
x.parseString(symbol)
return p
SymParser.parse('ABCD')
我不明白爲什麼setParseAction不叫首次。
我不認爲這是它 - 解析中的第一條語句是'p = SymParser.tok.parseString(symbol)'。 – PaulMcG 2012-02-10 19:26:24
@PaulMcGuire:你說得對。我剛剛在這隻小狗的膽量中花了大約1/2小時,坦率地說,我很困惑。在兩個令牌實例上設置'setDebug()'只會增加神祕感。第一次調用顯示根本沒有調試輸出,而第二次調用按預期進行。如果你用'= fun()'初始化'SymParser.tok',那麼所有東西都是甜美和輕盈的。 – 2012-02-10 20:32:41
+1爲了盡力弄清楚這個...... – PaulMcG 2012-02-10 21:07:00