हम सभी जानते हैं कि नियमित अभिव्यक्तियों का उपयोग करके HTML को पार्स करना आम तौर पर संभव नहीं है, क्योंकि यह संदर्भ-संवेदनशील व्याकरण को पार्स कर रहा है, जबकि नियमित अभिव्यक्ति केवल नियमित व्याकरण को पार्स कर सकती है। अन्य प्रोग्रामिंग भाषाओं के लिए भी यह सच है।नियमित अभिव्यक्तियों का उपयोग कर प्रोग्रामिंग भाषाओं को सिंटैक्स-हाइलाइट करना संभव है?
अब, हाल ही में, Rainbow.js वाक्य रचना हाइलाइटर घोषणा की गई है। इसका आधार यह बहुत ही सरल रूप में वर्णित है: अपने आप ही
इंद्रधनुष बहुत सरल है। यह कोड ब्लॉक, प्रक्रिया regex पैटर्न, और टैग में मिलान पैटर्न wraps के माध्यम से चला जाता है।
मैं लगा वाक्य रचना हाइलाइटिंग अनिवार्य रूप से, भाषा पार्स के रूप में ही जटिलता का एक काम है अगर हम यह मान यह दोनों अच्छे और कई भाषाओं के लिए उपयुक्त हो गया है। फिर भी, जबकि वहाँ काफी है कि पुस्तकालय के criticism, न कि का एक सा है और न ही HackerNews discussion (तकनीकी रूप से इच्छुक द्वारा एक चर्चा के लिए एक उदाहरण के रूप में लिया है) का उल्लेख किया है कि नियमित रूप से अभिव्यक्ति का उपयोग करते वाक्य रचना पर प्रकाश डाला एक सामान्य मामले में मूल रूप से असंभव है, जो मैं एक प्रमुख, शो-स्टॉपिंग दोष पर विचार करें। वहाँ कुछ मैं याद कर रहा हूँ है:
अब सवाल यह है कि? विशेष रूप से:
- सामान्य रूप से सामान्य अभिव्यक्तियों के साथ सिंटैक्स हाइलाइटिंग संभव है?
- क्या यह एक लागू 80/20 नियम का एक उदाहरण है, जहां नियमित अभिव्यक्तियों के साथ पर्याप्त संभव है?
ठीक है, क्योंकि एक लेक्सर संदर्भ-मुक्त व्याकरण (सीएफजी) को परिभाषित करता है, लेकिन नियमित अभिव्यक्ति केवल नियमित व्याकरण (आरजी) को परिभाषित कर सकती है। – Daniel
"लेक्सर" का उपयोग जरूरी नहीं है कि संदर्भ-मुक्त व्याकरण - व्याख्यात्मक विश्लेषण कुछ ऐसा है जो आप सभी प्रकार की भाषाओं में कर सकते हैं। उस ने कहा, अधिकांश प्रोग्रामिंग भाषाओं में संदर्भ मुक्त व्याकरण होते हैं। –
मुझे संदेह है कि आपको 1 9वीं शताब्दी में रेगेक्स की गणितीय परिभाषा में शामिल किसी भी फैंसी फीचर्स की भी आवश्यकता नहीं है। आपके द्वारा दिए गए बैक-रेफरेंस को आसानी से बदला जा सकता है क्योंकि यह केवल चार चीजों में से एक हो सकता है - '(' ... ') | ("...") | (' '' ... '' ') | ("" "..." "") '। [पायथन भाषा संदर्भ] (http://docs.python.org/reference/lexical_analysis.html#string-literals) में प्रत्येक प्रकार की स्ट्रिंग में क्या सटीक रूप से वर्णित किया जा सकता है और रेगेक्स में अनुवाद करने के लिए पर्याप्त सरल लगता है। – delnan