क्या वास्तव में अपनी भाषा में एक कंपाइलर लिखने का कोई तरीका है?
आप में अपने नए संकलक लिखने के कुछ मौजूदा भाषा के लिए की है। आप एक नया, कहते हैं, सी ++ संकलक लिख रहे थे, तो आप सिर्फ C++ इसे लिखने और एक मौजूदा संकलक के साथ यह संकलन पहले होगा। दूसरी तरफ, यदि आप एक नई भाषा के लिए एक कंपाइलर बना रहे थे, तो इसे Yazzleof कहते हैं, आपको पहले किसी अन्य भाषा में नया कंपाइलर लिखना होगा। आम तौर पर, यह एक और प्रोग्रामिंग भाषा होगी, लेकिन यह होना जरूरी नहीं है। यह असेंबली हो सकती है, या यदि आवश्यक हो, तो मशीन कोड।
यदि आप Yazzleof के लिए एक कंपाइलर बूटस्ट्रैप करने जा रहे थे, तो आप आमतौर पर पूरी भाषा के लिए एक कंपाइलर नहीं लिखेंगे। इसके बजाय आप Yazzle-lite के लिए एक कंपाइलर लिखेंगे, जो Yazzleof का सबसे छोटा संभव सबसेट (अच्छी तरह से, कम से कम सबसेट कम से कम)। फिर याज़ले-लाइट में, आप पूरी भाषा के लिए एक कंपाइलर लिखेंगे। (जाहिर है यह एक कूद में इसके बजाय क्रमशः हो सकता है।) क्योंकि याज़ले-लाइट याज़लेफ का एक उचित सबसेट है, अब आपके पास एक कंपाइलर है जो स्वयं संकलित कर सकता है।
एक वास्तव में न्यूनतम संभव स्तर (जो एक आधुनिक मशीन पर मूल रूप से एक हेक्स संपादक है) से एक संकलक bootstrapping के बारे में अच्छा writeup नहीं है, कुछ भी नहीं से एक सरल संकलक बूटस्ट्रेपिंग शीर्षक । यह https://web.archive.org/web/20061108010907/http://www.rano.org/bcompiler.html पर पाया जा सकता है।
स्रोत
2008-08-17 07:20:55
जानकारी के लिए धन्यवाद, हर कोई। प्रारंभिक रूप से एक सीमित कंपाइलर लिखने के विचार के साथ समझाया गया, उसके बाद ऊपर की ओर बढ़ रहा है, तो बूटस्ट्रैपिंग का विचार अधिक समझ में आता है। मैं इस सेमेस्टर में एक कंपाइलर्स क्लास ले रहा हूं, एक निर्णय काफी हद तक प्रभावित होता है [स्टीव येगेज के पोस्ट पर कंपाइलर्स में कक्षा कितनी महत्वपूर्ण है] (http://steve-yegge.blogspot.com/2007/06/rich-programmer-food।एचटीएमएल) है, और मैंने अभी अमेज़ॅन लिंक से ड्रैगन पुस्तक की एक प्रति खरीदी है जो पहले एसओ पर इतनी कम हो गई थी। – pbh101
इसी तरह के प्रश्न भी देखें: [अपने आप में एक कंपाइलर लागू करना] (http://stackoverflow.com/questions/193560/implementing-a-compiler-in-itself) –