भाषा L = {ai bj ck | i != j or j != k}
को L = L1 U L2
जैसे L1 = {ai bj ck | i != j }
और L1 = {ai bj ck | j != k }
के रूप में लिखा जा सकता है। numberOf(a)
एल में प्रतीक c
केवल इस शर्त पर कोई बाधा नहीं है है नहीं होना चाहिए numberOf(b)
के बराबर है। या तो numberof(a)
>numberOf(b)
याnumberof(a)
<। numberOf(b)
। तो इस भाषा के लिए व्याकरण होना चाहिए:
L1 => EX // L1 is start variable
E => aEb | A | B
X => C |^
A => aA | a
B => bB | b
C => cC | c
ऊपर व्याकरण में ई का उपयोग कर हम anEbn
के पैटर्न में a
और b
की संख्या के बराबर उत्पन्न कर सकते हैं, तो सजा के रूप में इस भावुक कन्वर्ट करने के लिए या तो E
करने के द्वारा बदल दिया गया है B
या A
जो ai bj
के साथ i != j
के साथ फॉर्म में एक स्ट्रिंग उत्पन्न करता है, X
का उपयोग करके c
की संख्या ai bj
पैटर्न पर पर्याप्त हो सकती है।
इस व्याकरण समझने के लिए पढ़ें: Tips for creating Context free grammar और Why the need for terminals? Is my solution sufficient enough?
इसी तरह एल के लिए वहाँ प्रतीक a
केवल इस शर्त पर कोई बाधा numberOf(b)
नहीं होना चाहिए numberOf(c)
के बराबर रहा है। या तो numberof(b)
>numberOf(c)
याnumberof(b)
<। numberOf(c)
। एक नई शुरूआत चर S
और दो नए उत्पादन नियमों S => L1 | L2
हम L = {ai bj ck | i != j or j != k}
भाषा के लिए व्याकरण हो जाता है शुरू करने
L2 => YF // L2 is start variable
F => bFc | B | C
Y => A |^
A => aA | a
B => bB | b
C => cC | c
अब इस व्याकरण के दोनों का उपयोग कर: तो इस भाषा के लिए व्याकरण होना चाहिए।
स्रोत
2013-10-20 07:39:19
एक और संबंधित लिंक जोड़ना [औपचारिक भाषा के लिए व्याकरण कैसे लिखें?] (Http://stackoverflow.com/questions/15559324/construct-grammar-given-the-following-language-an-bm-nm-0 -1-2-एन-2/१,५५,७८,६४१? noredirect = 1 # comment28898425_15578641) –