这是 python 2.7 的一个普遍问题pyparsing
(在 3 中它工作得很好)。一般结构是这样的:
class SomeParser(object):
def some_action(self, string, loc, tok):
print("action")
def gramma(self):
...pyparsing gramma for some
language....
some_rule = (token + token2).setParseAction(self.some_action)
return some_rule
def parse(self, string):
self.gramma().parseString(string)
return True
在 python3pyparsing
中工作得很好,但在 2.7 中我得到了
Parsing error : some_action() takes exactly 4 arguments (1 given)
我的问题是如何使它在两个版本中都起作用?
编辑:经过一些测试,我发现这是一般问题,不仅仅是类方法。