मैं अपनी पुरानी परियोजना को बंद कर रहा हूं जो बड़ी सॉफ्टवेयर परियोजनाओं के बारे में कई सरल मीट्रिक की गणना करता है। मीट्रिक में से एक फाइल/कक्षाओं/विधियों की लंबाई है। वर्तमान में मेरा कोड "अनुमान" है जहां कक्षा/विधि सीमाएं बहुत ही क्रूड एल्गोरिदम पर आधारित होती हैं (फ़ाइल को पार करें, "वर्तमान गहराई" बनाए रखें और जब भी आपको अनगिनत ब्रैकेट का सामना करना पड़े, तब इसे समायोजित करें; जब आप कक्षा में वापस आते हैं या विधि शुरू होती है , इसे बाहर निकलने पर विचार करें)। हालांकि, इस प्रक्रिया के साथ कई समस्याएं हैं, और आपकी गहराई में बदलाव होने पर पता लगाने का एक "सरल" तरीका हमेशा प्रभावी नहीं होता है।प्रोग्रामिंग भाषाओं के लिए पार्सर्स का स्रोत?
इसे सटीक परिणाम देने के लिए, मुझे फ़ंक्शन परिभाषाओं, कक्षा परिभाषाओं और गहराई में परिवर्तनों का पता लगाने के लिए कैननिकल तरीके (प्रत्येक भाषा में) का उपयोग करने की आवश्यकता है। यह प्रत्येक भाषा के लिए कम से कम इन तत्वों वाले पार्स पेड़ों को उत्पन्न करने के लिए एक साधारण पार्सर लिखने की मात्रा है, जिसे मैं चाहता हूं कि मेरी परियोजना लागू हो।
स्पष्ट रूप से इन सभी भाषाओं के लिए पार्सर्स को लिखा गया है, इसलिए ऐसा लगता है कि मुझे उस प्रयास को डुप्लिकेट नहीं करना चाहिए (भले ही पार्सर्स मजेदार हो)। क्या कोई ओपन-सोर्स प्रोजेक्ट है जो स्रोत भाषाओं के समूह के लिए उपयोग में आसान पार्सर पुस्तकालय एकत्र करता है? या क्या मुझे अपना खुद का खरोंच से बनाने के लिए एएनटीएलआर का उपयोग करना चाहिए? (नोट: मुझे एक महान मौजूदा संसाधन का उपयोग करने के लिए परियोजना को दूसरी भाषा में बंद करने में खुशी होगी, इसलिए यदि आप एक के बारे में जानते हैं, इससे कोई फ़र्क नहीं पड़ता कि इसमें कौन सी भाषा लिखी गई है।)
सिंटैक्स-हाइलाइटिंग लाइब्रेरीज़ (पाइगर्स दिमाग में आते हैं) जो कई अलग-अलग भाषाओं को संभालते हैं। मुझे आश्चर्य है कि उनमें से एक आपके मामले के लिए पर्याप्त जानकारी प्रदान करेगा। मुझे संदेह नहीं है, लेकिन यह एक लायक हो सकता है। – Ken