Pyparsing SetParseAction troub解析

2024-10-03 09:10:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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。在


Tags: defbackcallsymbolwordprintfuntok
2条回答

我所能说的是,我并不是真的打算像您所做的那样扩展Token这样的类。我怀疑在您对包含的cmdty_tok属性的委派中,您忽略了公开其他一些属性,例如parseAction,它通常在解析时由parseImpl引用。另一方面,您的fun()的实现与我使用过和见过的其他helpers和闭包非常一致,这一方法很有效。在

你想用ComdtyTok完成什么?在

我只是第一次玩pyparsing,所以。。。在

在初始化类变量comdty_tok时,实际上从未调用parseString(),因此与parse对象关联的回调永远不会被调用。在

相关问题 更多 >