我是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。在
我所能说的是,我并不是真的打算像您所做的那样扩展Token这样的类。我怀疑在您对包含的
cmdty_tok
属性的委派中,您忽略了公开其他一些属性,例如parseAction
,它通常在解析时由parseImpl
引用。另一方面,您的fun()
的实现与我使用过和见过的其他helpers和闭包非常一致,这一方法很有效。在你想用
ComdtyTok
完成什么?在我只是第一次玩pyparsing,所以。。。在
在初始化类变量
comdty_tok
时,实际上从未调用parseString()
,因此与parse对象关联的回调永远不会被调用。在相关问题 更多 >
编程相关推荐