これは、pyparsing
Python 2.7の一般的な問題です(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
python3では問題なくpyparsing
動作しますが、2.7では
Parsing error : some_action() takes exactly 4 arguments (1 given)
私の質問は、両方のバージョンでそれを機能させる方法ですか?
編集:いくつかのテストの後、クラスメソッドだけでなく、一般的な問題であることがわかりました。