मैंने अंत में एक दुभाषिया और एक कंपाइलर बनाने के पीछे की जटिलता को समझना शुरू कर दिया है। मैंने TinyBasic, 1964 (डार्टमाउथ) बेसिक के कई संस्करण बनाए हैं, और इस बिंदु पर पहुंचने से पहले उन भाषाओं पर मेरे अपने विस्तार हैं। सबसे हालिया परियोजना एक है जिसे मैं ओपन सोर्स बेसिक कहता हूं ... क्योंकि मैं उस भाषा की कोई अन्य विशेषता नहीं सोच सकता था जो लोगों को रुचिकर लगे। भाषा के स्रोत को खोलने में सक्षम होना और यह समझना कि कुछ जटिल चीजें कैसे की जाती हैं (कैसे स्कैनिंग, पार्सिंग, व्याख्या करना और संकलन किया जाता है)
ओपन सोर्स बेसिक की व्याख्या सबसे पहले स्टैक आधारित भाषा में की जाती है। तब स्टैक आधारित भाषा की व्याख्या की जाती है और उसे तुरंत निष्पादित या सीएलआर निष्पादन योग्य में बदल दिया जाता है।
मेरे सभी प्रश्न इस पर उबलते हैं:
- बेसिक-आधारित भाषा की मूलभूत विशेषताएँ / निर्माण क्या हैं? मेरे पास पहले से ही ये बुनियादी निर्माण हैं: असाइनमेंट, एक्सप्रेशन, वेरिएबल्स, कुछ फ़ंक्शंस (रैंडम, टूपर, टावलर), लूपिंग (के लिए और कब-कब तक), यदि (ब्लॉक और सिंगल-लाइन) एल्स फैसले, कंसोल आधारित इनपुट (इनपुट) ) और आउटपुट (प्रिंट), और उप-रूटीन (कोई मापदंडों के साथ, अभी तक)।
- जब मैं अपनी भाषा पर बुनियादी निर्माणों को जोड़ रहा हूं - तो मुझे कैसे शाखा देना चाहिए? क्या डोमेन में है? दूसरे शब्दों में, मेरे खुले स्रोत की मूल भाषा को किस दिशा में ले जाना चाहिए, जब मैंने सभी सामान्य निर्माण कार्य कर लिए हों?
अपना समय देने के लिए धन्यवाद,
डोमिनिक