2011-08-15 6 views
13

मैंने पाया (स्टैक ओवरव्लो पर एक और प्रश्न के बाद) पाइथन में लिखी गई यह दिलचस्प लाइब्रेरी जिसका लक्ष्य व्याकरण पार्सिंग है।पायथन मेटाक्लास और मॉडग्रामर

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 

समस्या metaclass घोषणा में हो रहा है। जब मैं पाइथन दुभाषिया कहूं तो मुझे "संकलन ध्वज" जोड़ना होगा? कुछ अच्छी खबर?! :) Thx

उत्तर

17
class Grammar(metaclass=GrammarClass) 

पायथन 3 वाक्यविन्यास का उपयोग कर रहा है। बराबर को Python2 वाक्य रचना

class Grammar(object): 
    __metaclass__=GrammarClass 

होगा, लेकिन बाद से वहाँ अन्य python3-वाद के बहुत सारे हो सकता है, आप modgrammar उपयोग करने के लिए python3 उपयोग करने के लिए हो सकता है।

+0

आपको बहुत बहुत धन्यवाद! बेवकूफ, मैंने नहीं सोचा था कि समस्या पायथन संस्करण पर थी! :) – Dario

4

का समर्थन नहीं करता मैंने backport modgrammar है। बैकपोर्ट पायथन 3.x के साथ भी काम करेगा। आप इसे यहां पा सकते हैं: https://github.com/don-ramon/modgrammar-py2

+0

modgrammar 0.10 के साथ पकड़ने के लिए modgrammar-py2 अपग्रेड करने की कोई योजना? – kjam