2012-01-14 6 views
16

में प्रोग्रामिंग भाषा कैसे बनाएं I प्रोग्रामिंग भाषा बनाने के लिए बहुत सारे ट्यूटोरियल देख चुके हैं, लेकिन पाइथन में एक लिखने के लिए बहुत कम हैं। मैं जानना चाहता हूं कि पाइथन का उपयोग करके प्रोग्रामिंग भाषा कैसे बनाएं (अपेक्षाकृत आसानी से)।पायथन

+3

किसी भी अन्य भाषा में जैसा ही है। गंभीरता से यदि आप जानते हैं कि किसी भी भाषा में एक कंपाइलर (या दुभाषिया) को कैसे कार्यान्वित करना है और आप जानते हैं कि प्रोग्राम पायथन कैसे करें, तो आप पाइथन में एक कंपाइलर को कार्यान्वित करने के बारे में जानते हैं। – sepp2k

+2

एक पार्सर लिखने के साथ शुरू करें। –

+0

आपकी भाषा को पार्स करने के लिए सी/सी ++ के लिए अच्छे उपकरण हैं: [bison] (http://www.gnu.org/software/bison/) और [flex] (http://flex.sourceforge.net/) कर सकते हैं बहुत मदद करो। मुझे नहीं पता कि ऐसे उपकरण अजगर के लिए भी मौजूद हैं या नहीं। – amit

उत्तर

8
  1. अपनी भाषा की कल्पना करें। आप इसे किस तरह दिखाना चाहते हैं? इसमें क्या विशेषताएं होनी चाहिए?
  2. अपनी मौजूदा भाषा के लिए जितनी संभव हो सके मौजूदा भाषा के बारे में सोचें। यह ठीक है अगर कीवर्ड सभी अलग हैं, लेकिन यदि आपने पायथन बनाने का निर्णय लिया है तो आप लिस्प के साथ शुरू नहीं करेंगे क्योंकि संरचनाएं मूल रूप से बहुत अलग हैं।
  3. चरण 2 में चुनी गई भाषा के लिए मौजूदा व्याकरण खोजें। मैं यहां देखता हूं: http://www.antlr3.org/grammar/list.html। यदि आप एक नहीं पा रहे हैं, तो चरण 2 फिर से करें।
  4. एएनटीएलआर का उपयोग करना (या जो भी पार्सर जेनरेटर आपको चरण 3 में मिले व्याकरण को समझता है), एक पायथन मॉड्यूल बनाएं जो आपके द्वारा चरण 2 में चुनी गई भाषा को समझता है। एएनटीएलआर के पास पाइथन "लक्ष्य" के लिए कुछ स्तर का समर्थन है (जिसका अर्थ है कि पार्सर कोड पायथन में होगा, पाइथन भाषा को समझने वाले पार्सर बनाने के विरोध में)। यदि आप सी में पार्सर कोड (जो आप कर सकते हैं) में फंस गए हैं, तो इसके लिए पाइथन बाइंडिंग लिखें (शायद बूस्ट पायथन का उपयोग करके सबसे आसान, लेकिन यदि आप सी और पायथन दोनों से परिचित हैं तो आप सीधे पाइथन सी एपीआई का उपयोग कर सकते हैं)।
  5. प्रारंभ में इसे और अधिक भाषा चरण में बनाया गया 1.

इन बातों को ध्यान से और जानबूझकर करते हैं की तरह बनाने के लिए संशोधन चरण 3 से व्याकरण के लिए (पहली बार में छोटे चरणों में) बनाने, और कुछ दिनों बाद काम की आपकी भाषा के लिए आधा रास्ते सभ्य पार्सर हो सकता है। फिर आपको पार्सर के आउटपुट का उपभोग करने की आवश्यकता होगी (यदि एएनटीएलआर का उपयोग करना है, तो सार सिंटेक्स पेड़ या एएसटी का उपयोग करने पर विचार करें, जो यह आपके लिए उत्पन्न हो सकता है)। फिर आपको पार्स किए गए सिंटैक्स को लक्षित भाषा में परिवर्तित करना होगा, जैसे x86 असेंबली या कुछ इंटरमीडिएट बाइटकोड जैसे कि जावा, लुआ, माइक्रोसॉफ्ट .NET, या जो कुछ भी इस्तेमाल किया जाता है।

शुभकामनाएं, और पूर्ववर्ती रहें: इस प्रक्रिया में सही करने में लंबा समय लगेगा।

16

सुनिश्चित नहीं है कि "प्रोग्रामिंग भाषा बनाना" का क्या मतलब है। लेकिन मुझे लगता है कि आप पीटर Norvig के उत्कृष्ट लेख (How to Write a (Lisp) Interpreter (in Python)) पढ़ना पसंद कर सकते हैं। यह दिखाता है कि आप केवल 90 lines of Python में लिस्प दुभाषिया कैसे बना सकते हैं!

एक बार जब आप इसे समझ गए, तो (An ((Even Better) Lisp) Interpreter (in Python)) आज़माएं।

+1

प्रोग्राम एक त्रुटि उठाता है। – elijaheac

+0

मेरे पीसी पर ठीक काम करता है। आप किस पायथन संस्करण का उपयोग कर रहे हैं (यह पाइथन 2.7 मानता है, मुझे लगता है)? –

+0

विशेषताएँ त्रुटि: 'noneType' ऑब्जेक्ट में कोई विशेषता नहीं है 'ढूंढें'। मैं विंडोज़ पर पायथन 2.7 का उपयोग कर रहा हूं। – elijaheac