मैं कंपाइलर्स का अध्ययन कर रहा हूं और व्याख्यात्मक विश्लेषण के बारे में सीख रहा हूं। मैं समझता हूं कि प्रत्येक नियमित रूप से अभिव्यक्ति के रूप में प्रत्येक लेक्समे को निर्दिष्ट करता है, और flex
का उपयोग करके, एक लेक्सर स्वचालित रूप से जेनरेट किया जा सकता है। मैं आगे सीख रहा हूं कि कैसे नियमित अभिव्यक्ति को एनएफए में परिवर्तित किया जाता है जिसे फिर एक डीएफए में परिवर्तित किया जाता है, जहां इसे तुरंत मूल्यांकन किया जा सकता है।अधिकतम-मंच कैसे कार्यान्वित किया जाता है?
हालांकि, मेरा प्रश्न है, अधिकतम-मंच नियम लागू किया गया है? आंतरिक रूप से, लेक्सर सबसे लंबे समय तक संभव लेक्सम खोजने के लिए "जारी रखने" के बारे में कैसे जानता है?
धन्यवाद! प्रभाव में, tell()
और seek()
जैसे कार्यों के साथ उपलब्ध कराने के:
मैं तुम्हें फ्लेक्स-lexer जो शाब्दिक विश्लेषक के लिए प्रयोग किया जाता है के साथ इस को टैग करने के लिए होती है; फ़्लेक्स नहीं जो Adobe/Apache UI Framework के लिए उपयोग किया जाता है। मैंने टैगिंग बदल दी। – JeffryHouser
मुझे लगता है कि एक डीएफए में यह उतना सरल है जितना कि कई स्वीकार्य है क्योंकि अंतिम स्वीकार्य स्थिति को याद करते समय संक्रमण होते हैं। –
@ जोसो: अच्छा मूल उत्तर। डीएफए के बारे में सोचना थोड़ा आसान है क्योंकि राज्यों के माध्यम से यह संक्रमण चलता है। प्रत्येक राज्य को "स्वीकार" या "स्वीकार नहीं किया जाता" के रूप में चिह्नित किया जाता है (उदाहरण के लिए, हरे और लाल राज्य); यह कई हरे और लाल राज्यों के माध्यम से चला सकता है क्योंकि यह चलता है। आखिरकार यह एक ऐसे राज्य में आता है जिसके पास अगले इनपुट चरित्र के लिए कोई मान्य निकास नहीं है; अगर वह राज्य हरा है, तो यह स्वीकार करता है, अन्यथा यह शिकायत करता है। इसलिए इसे वास्तव में अंतिम स्वीकृति स्थिति याद नहीं है; यह या तो समाप्त होता है, या नहीं, जब यह समाप्त होता है। –