हां, ये टूल सीखने योग्य हैं यदि आपको कभी भी व्याकरण को पार करने वाले कोड को बनाने या संशोधित करने की आवश्यकता है।
कई वर्षों तक व्याकरण को पार्स करने के लिए कोड उत्पन्न करने के लिए वास्तविक तथ्य yacc था, या इसके जीएनयू चचेरे भाई, बाइसन।
हाल ही में मैंने सुना है कि ब्लॉक पर कुछ नए बच्चे हैं, लेकिन सिद्धांत समान है: आप बैकस-नौर फॉर्म (BNF) और yacc में कम या कम प्रारूप में एक घोषणात्मक व्याकरण लिखते हैं/बाइसन/जो कुछ भी आपके लिए कुछ कोड उत्पन्न करता है जो हाथ से लिखने के लिए बेहद कठिन होगा।
इसके अलावा, व्याकरण के पीछे के सिद्धांत भी सीखने के लिए बहुत उपयोगी हो सकते हैं भले ही आपको सीधे ऐसे कोड पर काम करने की आवश्यकता न हो। मैंने कॉलेज में कंपाइलर डिज़ाइन पर कोर्स करने के बाद से पार्सर्स के साथ बहुत कुछ नहीं किया है, लेकिन रनटाइम स्टैक्स, लुकहेड पार्सर्स, एक्सप्रेशन मूल्यांकन, और कई अन्य संबंधित चीजों को समझने से मुझे अपने कोड को प्रभावी ढंग से लिखने और डीबग करने में मदद मिली है।
संपादित करें: अन्य टूल्स के बारे में आपके फॉलोअप प्रश्न को देखते हुए, सीएसी सी ++ परियोजनाओं के लिए वाईएसी/बिसन कोर्स सबसे अच्छा है, क्योंकि वे सी कोड उत्पन्न करते हैं। अन्य भाषाओं के लिए समान उपकरण हैं। सभी व्याकरण समकक्ष नहीं हैं, और कुछ पार्सर जनरेटर केवल एक निश्चित जटिलता के व्याकरण को ग्रोक कर सकते हैं। तो आपको एक ऐसा टूल ढूंढना पड़ सकता है जो आपके व्याकरण को पार्स कर सके। http://en.wikipedia.org/wiki/Comparison_of_parser_generators
स्रोत
2008-12-02 01:13:13
बिल के साथ पूरी तरह से सहमत हैं - अवरोही पार्सर्स विकास विरासत का महत्वपूर्ण हिस्सा हैं जो भूल गए हैं। – stephbu