रेलरोड आरेख संदर्भ-मुक्त व्याकरण को देखने के लिए एक लोकप्रिय तरीका हैं और आप इन आरेखों में बैकस-नौर फॉर्म को मानचित्र बना सकते हैं। लेकिन some variants of BNF, उदाहरण के लिए W3C-BNF अपवादों की अनुमति देता है (क्योंकि संदर्भ-मुक्त भाषाएं अंतर के तहत बंद नहीं होती हैं, इन अपवादों को नियमित होना चाहिए)। मैं रेलरोड आरेख में अपवादों के साथ एक व्याकरण को देखना चाहता हूं। क्या मुझे ग्राफिकल नोटेशन में अपना स्वयं का एक्सटेंशन आविष्कार करना चाहिए या किसी ने पहले से इसका प्रयोग किया है?क्या अपवादों को पकड़ने के लिए रेलरोड आरेखों का विस्तार है?
यहाँ अपवाद के साथ एक नियम का एक उदाहरण है (हाँ, आप भी बिना किसी अपवाद के इस विशेष व्याकरण व्यक्त कर सकते हैं, लेकिन उस समय नहीं है):
comment := "<!--" (string - "--") "-->"
एक अपवाद किसी भी नियमित व्याकरण हो सकता है। मैं तीर या लाइन के कुछ विशेष प्रकार (यहाँ विस्मयादिबोधक चिह्न से दर्शाया गया) द्वारा गैर टर्मिनल प्रतीकों से जुड़े अपवाद जोड़ने के बारे में सोचा:
[<] → [!] → [-] → [-] → (string) → [-] → [-] → [>]
!
! → [-] → [-] → ↯
पुनश्च: व्याकरण गलत था, यह होना चाहिए
comment := "<!--" (string - (string "--" string | string "-")) "-->"
शायद अस्वीकृति का गैर-अंतर्ज्ञानी उपयोग एक कारण है कि औपचारिक व्याकरण में इसका उपयोग क्यों नहीं किया जाता है?
दिलचस्प। मैं कोडपॉइंट्स और श्रेणियों के लिए अलग-अलग आकार के बॉक्सिंग का उपयोग करता हूं। इस तरह के एक बॉक्स में सरल नियमित अभिव्यक्ति भी लगाई जा सकती है। तो तीन प्रकार के बक्से होंगे: टर्मिनल प्रतीकों, nonterminal प्रतीकों, और पैटर्न प्रतीकों। इन पैटर्न बक्से में गैर-टर्मिनल प्रतीकों को अपने "चार - '-' 'जैसे एक समझौता करना एक समझौता है जिसे बेहतर किया जा सकता है। एक बॉक्स को चित्रित करने के बारे में जिसमें अन्य बक्से के रूप में एक पटर शामिल है? – Jakob
आप सही हैं, एक टर्मिनल बॉक्स काफी उपयुक्त नहीं है, इसलिए मैंने तदनुसार अपना जेनरेटर बदल दिया। – Gunther
अच्छा समाधान। मैंने इसे "अंतर" बॉक्स में बढ़ा दिया। मतभेदों के साथ आप व्याकरण को अधिक पठनीय लिख सकते हैं, लेकिन यह पार्स करना अधिक कठिन हो सकता है: http: // imgur।com/inAKK – Jakob