2010-04-27 17 views
12

मैं जीसीसी स्रोत कोड में सी व्याकरण की तलाश में हूं, विशेष रूप से yacc/bison form में व्याकरण के लिए।जीसीसी स्रोत कोड में व्याकरण

+6

यह एक प्रश्न से अधिक बयान है? (मैंने एक प्रश्न के रूप में अपने बयान को phrasing द्वारा reciprocate करने का फैसला किया। मजेदार!) –

+0

क्या आप googling कोशिश की? मैंने "सी yacc व्याकरण" की खोज की और कई अन्य हिटों के बीच http://www.lysator.liu.se/c/ANSI-C-grammar-y.html के साथ आया। –

+0

@ नील, शायद यह नहीं है कि हुर्कई का क्या मतलब है, लेकिन जीसीसी में कुछ सी एक्सटेंशन हैं, और जेनेरिक सी व्याकरण ठीक से फिट नहीं होगा। –

उत्तर

12

फ़ाइल में मिला जीसीसी संस्करण 3.3 में Yacc विनिर्देश में सी व्याकरण "सी parse.y"

+2

http://yaxx.googlecode.com/svn/branches/yaxx-proc/gcc-3.4.0/gcc/c-parse.y –

7

संस्करण 4.3 के जीसीसी में स्पष्ट रूप से लिखित सी व्याकरण नहीं था। एक अलग डेटा संरचना के रूप में वाक्यविन्यास पेड़ प्रस्तुत किए बिना, पार्सिंग और अर्थात् विश्लेषण एक साथ किया गया था।

सूचना स्रोत: मैंने जीसीसी स्रोत कोड पढ़ा है।

10

आपको वर्तमान जीसीसी स्रोत कोड के भीतर सी ग्रैमर yacc/bison फ़ाइल नहीं मिलेगी। यह अतीत में किया गया था, egcs कांटा सामान से पहले। मैं तुम्हें सही संस्करण और स्थान नहीं दे सकते हैं, लेकिन मैं आपको बता दूँ कि यह 2.x विज्ञप्ति में होना चाहिए कर सकते हैं

जीसीसी के वर्तमान संस्करण का अपना सी पार्सर है

+0

तो जीसीसी स्रोत कोड में व्याकरण विनिर्देश है, है ना? जीसीसी के सी सी पार्सर के साथ पार्स किया जाएगा। क्या आप जानते हैं कि मुझे कौन सी फाइल मिलती है? – Haruki

+0

@ हुर्कई आप इसे पार्सिंग करने वाले सबराउटिन पर टिप्पणियों में देख सकते हैं :-) –

7

जीसीसी के ग्राम ++ एक याक से बदल (बाइसन) आधारित पार्सर साल पहले (शायद कम से कम 5 साल)। उन्होंने एक रिकर्सिव सभ्य पार्सर का उपयोग शुरू किया क्योंकि सी ++ yacc में मुश्किल है।

इस पार्सर को सी ++ के लिए कई सालों तक उपयोग करने के बाद उन्होंने रिकर्सिव सभ्य के साथ सी को पार्सिंग में भी स्विच किया।

आपको बाइसन प्रारूप में व्याकरण का पता लगाने के लिए कई संस्करणों को वापस जाना होगा, लेकिन यह वहां है। 2012 में गूगल कोड खोज शटडाउन

http://en.wikipedia.org/wiki/Google_Code_Search

ओल्ड:: आप के साथ

जीसीसी yyparse

अद्यतन गूगल कोड खोज का प्रयास करना चाहिए http://yaxx.googlecode.com/svn/branches/yaxx-proc/gcc-3.4.0/gcc/c-parse.y

जीसीसी के एक संस्करण को खोजने के लिए इसमें यह है और फिर आपको वहां yacc/bison स्रोत फ़ाइल ढूंढने में सक्षम होना चाहिए। हालांकि, यह पुराना होगा।

+6

मुझे लगता है कि आपका मतलब _descent_ था, हालांकि पार्सर _decent_ पर्याप्त है :) –

4

जीसीसी जेनरेट किए गए पार्सर का उपयोग नहीं करता है; इसका पार्सर एक हाथ से लिखित रिकर्सिव-वंश पार्सर है।

+1

यह संस्करण 4.6+ – Jack

+1

@ जैक से दिलचस्प है: दिलचस्प! क्या आप मुझे किसी दस्तावेज़ पर इंगित कर सकते हैं? मुझे पता है कि उन्होंने * जेनरेट किए गए पार्सर * से * प्रदर्शन के लिए नए हाथ से लिखे गए एक से * और * अधिक महत्वपूर्ण रूप से) रखरखाव के कारणों से स्विच किया है, शायद 3.4-4.2 टाइमफ्रेम (मुझे बिल्कुल याद नहीं है) के आसपास कहीं भी। वापस स्विच करने के कारण क्या थे और वे किस पार्सर जनरेटर का उपयोग करते हैं? –

0

सी व्याकरण सी पार्सर में टिप्पणी में पाया जा सकता है। जी 0 स्रोतों में सी फ़ाइल। हालांकि यह पहले से ही कहा गया है कि यह एक yacc/bison नहीं है।

संबंधित मुद्दे