मैं अवलोकन बना दिया है कि Parse2 (राल्फ द्वारा उत्तर देखें) कुछ सीमाओं के साथ आता है:
- aparse टिप्पणी पसंद नहीं करता है और उन्हें हटाया जा करने के लिए है मैन्युअल
- सभी पीढ़ी कोड करने से पहले बयान इसलिए वे अगर अपने व्याकरण उन पर आधारित है आरएफसी से कॉपी करने के लिए
- अपार है परिभाषित आरएफसी 5234 के रूप में लाइन
- aparse "मूल" ABNF नियम लागू नहीं होता है के अंत में एक
;
के साथ समाप्त करने की जरूरत है से व्याकरण में लूप पसंद नहीं है (उदा। S --> NT1 NT2 T1 ; NT1 --> S | T2 ; ...
) और अंतहीन loops में चला सकता है।
इन टिप्पणियों की पुष्टि Parse2 के डेवलपर द्वारा की गई है। तो संक्षेप में: Parse2 एबीएनएफ व्याकरण के उप-समूह को पार्स कर सकता है, हालांकि यदि आपको मौजूदा एबीएनएफ व्याकरण मिलता है और इसे सॉफ़्टवेयर को खिलाने का प्रयास किया जाता है तो इसमें सबसे अधिक संभावनाएं होती हैं।
यदि आप एबीएनएफ व्याकरण स्वयं निर्दिष्ट करते हैं और इन सीमाओं को ध्यान में रखते हैं, तो इस पुस्तकालय को आपके लिए काम करना चाहिए। यदि आपको मौजूदा एबीएनएफ व्याकरण के साथ काम करना है तो आपको कोड पीढ़ी से पहले व्याकरण में अतिरिक्त प्रयास करना पड़ सकता है।
पीएस: पार्स 2 लाइब्रेरी स्रोत कोड वर्तमान में उपलब्ध नहीं है, भले ही संकलित बाइनरी (जावा बाइट कोड) स्वतंत्र रूप से उपलब्ध हो।
यदि लैंगुग जिन्हें आप सत्यापित करना चाहते हैं, पहले से ही एबीएनएफ विनिर्देश हैं, तो यह एक अच्छा विचार है। यदि वे नहीं करते हैं, तो आपको वास्तव में एक पार्सर जेनरेटर सिस्टम की तलाश करनी चाहिए जिसके लिए कई लैंगेज परिभाषाएं पहले ही एन्कोड और परीक्षण की जा चुकी हैं। मैं इस विशेष औपचारिकता में कई मौजूदा भाषा परिभाषाओं को जानकर आश्चर्यचकित हूं। –
@IraBaxter आरएफसी 822 (ईमेल), आरएफसी 2045 (एमआईएमई), आरएफसी 3501 (आईएमएपी) ... असल में हर गंभीर आरएफसी के साथ मैंने काम किया है एबीएनएफ में है। – djechlin
@ डीजेक्लिन: दिलचस्प। कितने कार्यान्वयन एबीएनएफ का उपयोग सीधे करते हैं? –