CompCert परियोजना एक शोध सी संकलक जो सी में या C ++ लिखा नहीं है, लेकिन OCaml और Coq में अधिक है।
गौर करें कि C ++ का C ( Cfront में ) अनुवाद किया जाता था । अब आप उपयोग कर सकते हैं जीसीसी के लिए सामने के अंत Gimple , तो फिर कुछ डेटाबेस के लिए Gimple डंप, अपने कोडांतरक अनुवादक के लिए एक Gimple लिखें। लेकिन कानूनी कारणों ( जीसीसी रनटाइम लाइब्रेरी अपवाद ) को खुले स्रोत होने के लिए इस तरह के संकलक की आवश्यकता होती है। विवरण के लिए अपने वकील से पूछें, मैं वकील नहीं हूं। GCC के पुराने वेरिएंट C + के कुछ वेरिएंट के लिए फ्रंट-एंड के साथ C (+ कई डोमेन विशिष्ट भाषाओं) में लिखे गए हैं। OpenWatcom C में लिखा गया C ++ कंपाइलर हो सकता है (मैं आपको जाँचने के लिए छोड़ता हूँ)।
Compcert का स्रोत अकादमिक और अनुसंधान उद्देश्यों के लिए स्वतंत्र रूप से उपलब्ध है। यदि आप इसे औद्योगिक रूप से (और कानूनी रूप से) उपयोग करना चाहते हैं, तो आपको Absint से कुछ लाइसेंस प्राप्त करने की आवश्यकता है।
यह भी देखें इस और है कि दो संबंधित सवालों के जवाब।
यदि मुझे 2020 में सी (या सी ++) कंपाइलर को स्क्रैच (लिनक्स पर चलने, शायद कुछ क्रॉस-कंपाइलर ) लिखने का काम सौंपा गया था, तो शायद मैं इसे सी ++ में नहीं लिखूंगा। मैं इसे Ocaml , Go , या Rust का उपयोग करके लिखने पर विचार करूंगा । और मैं इसे अनुमति दे सकता है तो Frama-C पर । यदि C या C ++ में कोड करने की आवश्यकता होती है, तो मैं पहले इसके लिए एक कचरा संग्राहक पुस्तकालय कोड करूँगा , शायद कुछ दृढ़ता परत- पूरे कार्यक्रम अनुकूलन के लिए उपयोगी है - और फिर मैं एक मेटाप्रोग्रामिंग दृष्टिकोण (अधिकांश C या C ++ कोड का निर्माण) पर विचार करूंगा मेरे एड-हॉक टूल्स के साथ कंपाइलर, शायद बिस्मोन या रेफरीज़ अगर अनुमति है)।
आप कुछ (अधिक या कम खुला स्रोत) सी कंपाइलर कॉमन लिस्प में या पाइथन (उदाहरण के लिए शिवायसी या नैक ) में कोडित कर सकते हैं । ज़ेटासी में भी देखें ।
ध्यान दें कि जीसीसी के हाल के संस्करणों को तकनीकी रूप से शुद्ध सी ++ में कोडित नहीं किया गया है, वे जीसीसी में शामिल दर्जनों डोमेन विशिष्ट भाषाएं हैं (उनमें से कई ट्यूरिंग-पूर्ण हैं )। मेरी पुरानी GCC MELT परियोजना भी देखें ।
मुझे आश्चर्य नहीं होगा, अगर जीसीसी के भविष्य के संस्करणों में, कुछ पायथन या गइल दुभाषिया उनके अंदर एम्बेडेड होंगे (उदाहरण के लिए, जीसीसी के पास प्रबंधक के प्रतिस्थापन के रूप में)।
MILEPOST GCC प्रोजेक्ट में भी देखें ।