2011-11-21 7 views
8

एएनटीएलआर व्याकरण फ़ाइल से जावा स्रोत उत्पन्न करता है। जेनरेटेड स्रोत एएनटीएलआर कक्षाओं पर निर्भरता है।क्या मैं जेनरेट कोड से एएनटीएलआर निर्भरताओं को हटा सकता हूं?

क्या मैं एएनटीएलआर का उपयोग करके 'स्वच्छ' जावा स्रोत उत्पन्न कर सकता हूं, जिसमें कोई एंटीलर-निर्भरता नहीं है?

यदि नहीं, तो क्या कोई कुछ जावा पार्सर की सिफारिश कर सकता है जो प्रदर्शन के साथ उत्कृष्टता प्राप्त करता है और स्वच्छ जावा कोड उत्पन्न कर सकता है?

+0

मुझे लगता है कि यह एक उत्कृष्ट सवाल है। उपकरण, ढांचे और पुस्तकालयों की बड़ी उपलब्धता, सीमित ऊर्ध्वाधर स्केलिंग, और समग्र क्षैतिज स्केलिंग और ऊर्जा खपत के पर्यावरणीय प्रभाव के साथ, मेरा मानना ​​है कि कार्यक्षमता पर दुबला ब्लोट-फ्री कोड का उत्पादन आधुनिक गुणवत्ता सॉफ्टवेयर इंजीनियरिंग की सबसे बड़ी चिंता होना चाहिए। –

+0

अरे @ जोनाथन नेउफेल मैं आपके साथ सहमत हूं - क्या मैं इसका उद्धरण दे सकता हूं? Thats क्यों मैं कोड [jodd] (http://jodd.org) - कोड आधार को कम करने के लिए ... – igr

उत्तर

2

एएनटीएलआर पर रनटाइम निर्भरताओं को हटाने के लिए वास्तव में व्यावहारिक नहीं है। आपको अपने पहचानकर्ताओं के साथ एएनटीएलआर रनटाइम लाइब्रेरी वितरित करने की आवश्यकता है।

अगर मुझे सही याद है, JavaCC "जेनरेट" कोड के हिस्से के रूप में आवश्यक रनटाइम कक्षाओं (जावासीसी "बॉयलरप्लेट") की एक प्रति बनाता है, ताकि आपको अतिरिक्त JAR शामिल करने की आवश्यकता न हो।

एएनटीएलआर निर्भरताओं के बारे में आपकी चिंता का मूल क्या है?

+0

जेनरेट कोड ढांचे/पुस्तकालय का हिस्सा होना चाहिए, इसलिए मैं संभावित टकराव से बचने के लिए निर्भरता न्यूनतम रखना चाहता हूं मौजूदा क्लाइंट एंटरल जार के विभिन्न संस्करण। लेकिन, अधिक महत्वपूर्ण, मुझे ऐसा चाहिए;) – igr

1

आप एएनटीएलआर को एक नए पैकेज में स्थानांतरित करने के लिए Apache Maven Shade Plugin का उपयोग कर सकते हैं जो एक ही प्रक्रिया में अन्य एएनटीएलआर रनटाइम इंस्टॉलेशन के साथ संघर्ष नहीं करेगा। स्ट्रिंग टेम्पलेट 4 ST4-4.0.8-complete.jar वितरित जार के हिस्से के रूप में relocate the ANTLR runtime to package st4hidden.org.antlr पर बिल्कुल इस विधि का उपयोग करता है।

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