विफल रहा है, मुझे आश्चर्य है कि किसी दिए गए स्ट्रिंग में इंडेक्स स्थिति निकालना संभव है, जहां इसे मिलान करने का प्रयास करते समय रेगेक्स विफल हो गया है?मिलान स्ट्रिंग में रेगेक्स इंडेक्स जहां मैच
उदाहरण के लिए, अगर मेरे regex "abc" था और मुझे लगता है कि मैच के लिए "अब्द" के साथ करने की कोशिश की मैच सूचकांक पर विफल हो जाएगा स्पष्टीकरण के लिए 2.
संपादित करें। मुझे इसकी आवश्यकता है कि मुझे अपने आवेदन के पार्सिंग घटक को सरल बनाने दें। एप्लिकेशन एक Assmebly भाषा शिक्षण उपकरण है जो छात्रों को कार्यक्रमों की तरह असेंबली लिखने, संकलित करने और निष्पादित करने की अनुमति देता है।
वर्तमान में मेरे पास टोकननाइज़र क्लास है जो इनपुट स्ट्रिंग्स को रीगेक्स का उपयोग करके टोकन में परिवर्तित करती है। यह बहुत अच्छी तरह से काम करता है। उदाहरण के लिए:
tokenizer का उत्पादन करेगा निम्नलिखित टोकन निम्न इनपुट = "INP: x:" दिया
:
Token.OPCODE, Token.WHITESPACE, Token.LABEL, Token.EOL
ये टोकन तो सुनिश्चित करें कि वे किसी दिए गए बयान के लिए एक वाक्य रचना के अनुरूप विश्लेषण किया जाता है । वर्तमान में यह आईएफ स्टेटमेंट का उपयोग करके किया जाता है और बोझिल साबित होता है। इस दृष्टिकोण का उछाल यह है कि मैं विस्तृत त्रुटि संदेश प्रदान कर सकता हूं। आईई
if(token[2] != Token.LABEL) { throw new SyntaxError("Expected label");}
मैं कष्टप्रद IF कथन के बजाय एक वाक्यविन्यास को परिभाषित करने के लिए नियमित अभिव्यक्ति का उपयोग करना चाहता हूं। लेकिन ऐसा करने में मैं विस्तृत त्रुटि रिपोर्ट वापस करने की क्षमता खो देता हूं। इसलिए मैं कम से कम त्रुटि के उपयोगकर्ता को सूचित करना चाहता हूं।
मैं क्या यह वास्तव में आसान निकला पता करने के लिए दिलचस्पी होगी। किसी कंपाइलर के लिए कोड को कभी नहीं देखा, मेरा अनुमान है कि कोड जो उनके त्रुटि संदेशों को उत्पन्न करता है, वह अक्सर आपके जैसा ही दिखता है। – harpo
अंत में मैंने आईएफ स्टेटमेंट्स को जारी रखने का फैसला किया। हालांकि, मैंने किसी भी व्युत्पन्न वक्तव्य वर्गों से वास्तविक IF कथन हटा दिए और इसके बजाय मेरे बेस स्टेटमेंट क्लास में एक चेक सिंटैक्स() विधि डाली जिसने आईएफ जांच/फेंक दिया अपवाद किया। इसने मुझे बहुत सारे कोड डुप्लिकेशन को हटाने की अनुमति दी। –