GCC ने Bison से C ++ और C के लिए पुनरावर्ती वंशीय पार्सर पर स्विच क्यों किया?


10

क्या कोई भाषा परिवर्तन था जिसकी आवश्यकता थी या कुछ व्यावहारिक कारण कि बाइसन अब उपयुक्त या इष्टतम नहीं था?

मैंने विकिपीडिया पर देखा कि उन्होंने स्विच किया, जीसीसी 3.4 और जीसीसी 4.1 रिलीज नोटों का जिक्र किया ।

ये रिलीज़ नोट राज्य:

एक हाथ से लिखे गए पुनरावर्ती-वंश C ++ पार्सर ने पिछले GCC रिलीज़ से YACC-व्युत्पन्न C ++ पार्सर को बदल दिया है। नए शब्दकोष में C ++ स्रोत कोड के बेहतर पार्सिंग, एक्सटेंशन को संभालने और उचित शब्दार्थ विश्लेषण और पार्सिंग के बीच स्वच्छ पृथक्करण (जहां संभव हो) के लिए बेहतर बुनियादी ढांचे की आवश्यकता होती है। नया पार्सर कई कीड़े को ठीक करता है जो पुराने पार्सर में पाए गए थे।

तथा:

पुराने बाइसन-आधारित सी और ऑब्जेक्टिव-सी पार्सर को एक नए, तेज हाथ से लिखे गए रिकर्सिव-डिसेंटरी से बदल दिया गया है

मैं यह जानना चाहूंगा कि बाइसन के उपयोग को हल करने के लिए वे क्या वास्तविक समस्याएँ थीं और यह क्यों असंभव / अव्यवहारिक था


1
आखिरकार सभी पार्सर पर्याप्त संशोधनों के बाद होमब्रेवैन बन जाएंगे जब पार्सर जनरेटर आवश्यकताओं को नहीं संभाल सकता है
शाफ़्ट फ्रीक

1
अपने शोध को साझा करना हर किसी की मदद करता है । हमें बताएं कि आपने क्या प्रयास किया है और यह आपकी आवश्यकताओं को पूरा क्यों नहीं करता है। यह दर्शाता है कि आपने खुद को मदद करने का प्रयास करने के लिए समय लिया है, यह हमें स्पष्ट उत्तरों को दोहराने से बचाता है, और सबसे अधिक यह आपको अधिक विशिष्ट और प्रासंगिक उत्तर प्राप्त करने में मदद करता है। यह भी देखें कि कैसे पूछें
gnat

1
@ जगत् ने मेरे प्रश्न का विस्तार किया
नील्सग

1
C ++ अधिकांश अन्य प्रोग्रामिंग भाषाओं की तुलना में पार्स करने के लिए एक असाधारण जटिल भाषा है। मेरी आंत की भावना एक सामान्य-उद्देश्य पार्सर है जो शायद कुछ अनुकूलन का समर्थन नहीं कर सकता है जो कि घर का बना हुआ पार्सर उपयोग कर सकता है।

जवाबों:


16

जीसीसी ने हाथ से लिखे गए पार्सिंग पर स्विच किया क्योंकि पुनरावर्ती वंश तकनीकों का उपयोग करते समय त्रुटि संदेश अधिक सार्थक हैं, जैसा कि मैंने यहां बताया

इसके अलावा, C ++ पार्स करने के लिए ऐसी (वाक्य रचना) जटिल भाषा बन रही है कि पार्सर जनरेटर का उपयोग करना इसके लिए सार्थक नहीं है।

अंत में, एक वास्तविक संकलक के काम का थोक पार्स नहीं है, यह अनुकूलन है। जीसीसी मध्यम अंत अनुकूलन पास इसके पार्सिंग की तुलना में बहुत अधिक जटिल हैं।

(बीटीडब्ल्यू आप प्लगइन्स के साथ या एमईएलटी का उपयोग करके जीसीसी को अनुकूलित कर सकते हैं , लेकिन आप वास्तव में उस भाषा के सिंटैक्स का विस्तार नहीं कर सकते हैं जो इसे स्वीकार कर रहा है - विशेषताओं और व्यावहारिकता को छोड़कर)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.