Подтвердить что ты не робот

Python metaclass и ModGrammar

Я нашел (после другого вопроса здесь, на 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? Некоторые хорошие новости?!:) спасибо

4b9b3361

Ответ 1

class Grammar(metaclass=GrammarClass)

использует синтаксис Python3. Эквивалентный синтаксис Python2 будет

class Grammar(object):
    __metaclass__=GrammarClass

но поскольку может быть много других Python3-измов, вам может понадобиться использовать Python3 для использования modgrammar.

Ответ 2

У меня есть backgram modgrammar для Python 2.6+. Backport также будет работать с Python 3.x. Вы можете найти его здесь: https://github.com/don-ramon/modgrammar-py2.