मुझे लगता है कि आप इसे औपचारिक व्याकरण में रूपांतरित करते हैं, फॉर्म V-> w के नियमों के साथ, जहां वी एक nonterminal है और डब्ल्यू टर्मिनल/nonterminals की एक स्ट्रिंग है। प्रारंभ करने के लिए, तो आप बस कह सकते हैं (मिश्रण CFG और regex वाक्यविन्यास):
कहाँ एस शुरुआत प्रतीक है। अब यह थोड़ा तोड़ने के (और स्पष्टता के लिए खाली स्थान के जोड़ने) करते हैं:
S -> 0 A 1 0 B
A -> 1+
B -> (11)*
कुंजी *
तों और +
प्रत्यावर्तन के लिए तों कन्वर्ट करने के लिए है। सबसे पहले, हम एक मध्यवर्ती नियम है कि रिक्त स्ट्रिंग को स्वीकार करता है डालने से एक प्लस को क्लीन तारा बदल देंगे:
S -> 0 A 1 0 B
A -> 1+
B -> (empty)
B -> C
C -> (11)+
अंत में, हम प्रत्यावर्तन के लिए +
संकेतन बदल देंगे:
S -> 0 A 1 0 B
A -> 1
A -> A 1
B -> (empty)
B -> C
C -> 11
C -> C 11
को संभालने के लिए x?
, बस इसे खाली बनाने वाले नियम और एक्स बनाने वाले नियम में विभाजित करें।
स्रोत
2010-04-14 17:27:22
यह सोचकर कि क्या इस कार्य के लिए कोई ओपन सोर्स लाइब्रेरी कार्यान्वयन उपयोगी है, अब – matanster