首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyparsing SetParseAction问题

Pyparsing SetParseAction问题
EN

Stack Overflow用户
提问于 2012-02-11 02:44:19
回答 2查看 425关注 0票数 1

我是pyparsing的新手,我正在尝试使用setParseAction,但它有时不会被调用。以下是代码

代码语言:javascript
复制
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。

EN

回答 2

Stack Overflow用户

发布于 2012-02-11 03:14:19

我只是第一次玩pyparsing,所以...

在初始化类变量comdty_tok时,您实际上从未调用过parseString(),因此与解析对象关联的回调也从未被调用过。

票数 2
EN

Stack Overflow用户

发布于 2012-02-11 05:06:34

我所能说的是,我真的不想让Token这样的类以您所做的方式进行扩展。我怀疑,在委托所包含的cmdty_tok属性时,您忽略了公开一些其他属性,比如parseAction,这些属性通常会在解析时由parseImpl引用。另一方面,您的fun()实现与我使用过的其他帮助器和闭包非常一致,这并不奇怪,这种方法是有效的。

您试图使用ComdtyTok实现什么目标

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9233032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档