आपको निम्नलिखित की आवश्यकता होगी:
- नई भाषा बनाने का एक कारण
- एक दर्शन
- एक शब्दार्थ परिभाषा;
- अपने टोकन का एक शाब्दिक विवरण
- एक सिंटेक्स विश्लेषण परिभाषा
आपकी भाषा अलग कैसे होगी? इसका मिशन क्या है? क्या यह कार्यात्मक है? क्या यह वस्तु केंद्रित है? क्या यह एक मेटा-भाषा है? इसकी अनूठी विशेषताएं क्या हैं? यह उस दुनिया को क्या देगा जो अस्तित्व में नहीं है (या एक बदसूरत तरीके से मौजूद है)? आप चीजों को कैसे बदलना चाहते हैं? क्या इसे संकलित या व्याख्यायित किया गया है? एक DSL या सामान्य प्रयोजन की भाषा? यह आपका दर्शन है और आपकी भाषा के डिज़ाइन के बारे में बताता है।
अगला, कागज पर किसी न किसी वाक्य रचना और शब्दार्थ को खंगालने पर काम करें। यह आपकी शब्दार्थ परिभाषा होगी ... नकली कोड लिखना आपके विचारों को विकसित करने का एक शानदार तरीका है। यह कैसे किया जाता है के एक उत्कृष्ट उदाहरण के लिए "सी प्रोग्रामिंग भाषा" पढ़ें। इसके साथ खेलें।
फिर आपको किसी तरह अपने टोकन और सिंटैक्स को परिभाषित करने की आवश्यकता होगी। प्रोग्राम तब इन्हें ऑटोमेटा में संसाधित करते हैं जो स्ट्रिंग्स में पढ़ने और वाक्य रचना को संसाधित करने में सक्षम हैं। याक और बाइसन नियमित रूप से एक्सप्रेशंस और क्रमशः बीएक्सएफ शैली वाक्यविन्यास का उपयोग शाब्दिक और वाक्यविन्यास विश्लेषण के लिए करते हैं। अन्य भाषाओं के लिए उपकरण की तरह Yacc और Bison भी हैं।
आपको यह भी जानने के लिए भाषा सिद्धांत / संकलक में एक ग्राउंडिंग की आवश्यकता होगी । उदाहरणों में अस्पष्ट व्याकरण, एएसटी पीढ़ी और हेरफेर की समस्याएं शामिल हैं और आम तौर पर अपने लिए जीवन को सरल कैसे बनाया जाए। सिद्धांत जानना बहुत महत्वपूर्ण है। मैं शुरू करने के लिए निम्नलिखित पर विचार करूंगा:
कम्पाइलर: सिद्धांत, तकनीक और उपकरण (ड्रैगन बुक)
आधुनिक कंपाइलर कार्यान्वयन C में या आधुनिक कंपाइलर कार्यान्वयन जावा में