इस wikipedia पृष्ठ से:पीईजी और सीएफजी के बीच अंतर क्या हैं?
विषय से मुक्त व्याकरण और पार्स करने अभिव्यक्ति व्याकरण के बीच मौलिक अंतर यह है कि पेग के पसंद ऑपरेटर का आदेश दिया है। यदि पहला विकल्प सफल होता है, तो दूसरा विकल्प अनदेखा किया जाता है। इस प्रकार आदेश दिया गया विकल्प विपरीत नहीं है, संदर्भ-मुक्त व्याकरण और नियमित अभिव्यक्तियों के रूप में असामान्य पसंद के विपरीत। आदेशित विकल्प कुछ तर्क प्रोग्रामिंग भाषाओं में उपलब्ध नरम कट ऑपरेटर के समान है।
पीईजी का विकल्प ऑपरेटर मिलान करने वाले शॉर्ट सर्किट क्यों करता है? क्या यह स्मृति उपयोग को कम करने के लिए है (ज्ञापन के कारण)?
मुझे यकीन नहीं है कि पसंद ऑपरेटर नियमित अभिव्यक्तियों में क्या है लेकिन मान लीजिए कि यह एक स्वर से मेल खाने के लिए /[aeiou]/
है। तो यह regex कम्यूटिव है क्योंकि मैं इसे 5 में से किसी एक में लिखा होगा! (पांच फैक्टोरियल) स्वर चरित्रों के क्रमपरिवर्तन? यानी /[aeiou]/
/[eiaou]/
जैसा व्यवहार करता है। इसे कम्यूटिव होने का क्या फायदा है? (सी.एफ़ पेग की गैर-commutativity)
परिणाम यह है कि अगर एक CFG एक पेग को सीधे लिप्यंतरण है, पूर्व में किसी भी अस्पष्टता से निर्धारणात्मक संभव पार्स से एक पार्स पेड़ उठा हल हो गई है है। सावधानीपूर्वक उस क्रम को चुनना जिसमें व्याकरण विकल्प निर्दिष्ट हैं, एक प्रोग्रामर के पास नियंत्रण का सौदा है जिस पर पार्स पेड़ चयनित है।
क्या यह कह रहा है कि पीईजी का व्याकरण सीएफजी से बेहतर है?
"सुपीरियर"? "श्रेष्ठ" के लिए आप क्या मानदंड हैं? – Gabe
कम्यूटिटी के लिए, शब्द (हवाई जहाज) से निपटने की कोशिश कर रहे 'वायु हवाई जहाज) के बारे में सोचें। – xanatos
ऐसा लगता है कि आप पसंद ऑपरेटर और चरित्र वर्ग की अवधारणाओं को भ्रमित कर रहे हैं। नियमित अभिव्यक्तियों में वर्ण वर्गों को स्क्वायर ब्रैकेट '[एईओयू] 'के साथ सीमित किया जाता है जबकि पसंद ऑपरेटर पाइप वर्ण' | 'होता है। पीईजी में पसंद ऑपरेटर बदले में स्लैश कैरेक्टर '/' है। – hippietrail