2015-09-03 25 views
7

मैं एक नियमित अभिव्यक्ति पार्सर का कोड पढ़ रहा हूं, और आश्चर्यचकित होना शुरू करता हूं कि नियमित अभिव्यक्ति का वाक्यविन्यास नियमित रूप से नियमित होता है, और इसे किसी अन्य (काफी जटिल) नियमित अभिव्यक्ति के साथ व्यक्त किया जा सकता है?क्या एक नियमित अभिव्यक्ति को नियमित रूप से अभिव्यक्ति के साथ पार्स किया जा सकता है?

rere = "" # the regular expression of regular language 
match1 = re.match(rere, "[a-z][email protected][a-z]+.com") # True 
match2 = re.match(rere, ")az[") # False 

मुझे नियमित अभिव्यक्ति वाक्यविन्यास में कोई पुनरावर्ती संरचना नहीं दिखाई देती है, तो मुझे लगता है कि यह संभव है?

यदि यह है, तो अभिव्यक्ति कैसी दिखती है? यदि नहीं, तो क्यों?

+3

नहीं। आपको नियमित अभिव्यक्ति को पार्स करने के लिए संदर्भ-मुक्त व्याकरण की आवश्यकता है। नेस्टेड कोष्ठक (सैद्धांतिक) नियमित अभिव्यक्ति के साथ पार्स नहीं किया जा सकता है। – nhahtdh

+0

हां, नेस्टेड कोष्ठक। मैं उसके बारे में भूल गया। लेकिन अगर मैं समूह के अंदर समूह का समर्थन नहीं करता, तो क्या उत्तर अलग होगा? – NeoWang

+1

@NeoWang: फिर आपके पास नियमित अभिव्यक्ति से कमजोर है। यानी ऐसी भाषाएं हैं जहां नियमित अभिव्यक्ति/नियमित व्याकरण का वर्णन किया जा सकता है, लेकिन आपका व्याकरण नहीं। – nhahtdh

उत्तर

3

आप नियमित अभिव्यक्ति के साथ नेस्टेड कोष्ठक को पार्स नहीं कर सकते हैं क्योंकि आपको ऐसा करने के लिए अनंत स्थिति की आवश्यकता होगी। तो उत्तर नहीं है। आप जो खोज रहे हैं उसे context-free grammars कहा जाता है।

संबंधित मुद्दे