Python元类和ModGrammar

时间:2011-08-15 12:32:18

标签: python metaclass

我发现(在StackOverflow上的另一个问题之后)这个用Python编写的有趣库,其目标是语法解析。

http://code.google.com/p/modgrammar/

我也找到了关于它的教程:

http://packages.python.org/modgrammar/tutorial.html

所以,在阅读完所有教程后,我明白这就是我在寻找的东西!我试着在教程中编写第一个例子:

from modgrammar import *
class MyGrammar (Grammar):
  grammar = (LITERAL("Hello,"), LITERAL("world!"))

但我遇到了这个错误:

Traceback (most recent call last):
  File "test.py", line 1, in <module>
    from modgrammar import *
  File "/Users/tesi/Desktop/Prova/modgrammar/__init__.py", line 503
    class Grammar(metaclass=GrammarClass):
                           ^
SyntaxError: invalid syntax

问题似乎出现在元类声明中。当我调用python解释器时,我可能需要添加一个“编译标志”吗?一些好消息?! :) Thx

3 个答案:

答案 0 :(得分:18)

class Grammar(metaclass=GrammarClass)

正在使用Python3语法。等效的Python2语法是

class Grammar(object):
    __metaclass__=GrammarClass

但由于可能存在许多其他Python3主义,您可能必须使用Python3来使用modgrammar

答案 1 :(得分:4)

我已将modgrammar反向移植到Python 2.6+。 Backport也适用于Python 3.x.您可以在此处找到它:https://github.com/don-ramon/modgrammar-py2

答案 2 :(得分:1)

是的,这是Python3库http://code.google.com/p/modgrammar/source/browse/setup.py#32

Python2x不支持class Grammar(metaclass=GrammarClass)