सिंटैक्स विश्लेषण: कंपाइलर टॉप डाउन & पार्सिंग प्रकार नीचे

विषय - सूची:

Anonim

सिंटेक्स विश्लेषण क्या है?

सिंटेक्स एनालिसिस कम्पाइलर डिज़ाइन प्रक्रिया का दूसरा चरण है, जिसमें दिए गए इनपुट स्ट्रिंग को नियमों की पुष्टि और औपचारिक व्याकरण की संरचना की जाँच की जाती है। यह वाक्यात्मक संरचना का विश्लेषण करता है और जांचता है कि दिया गया इनपुट प्रोग्रामिंग भाषा के सही सिंटैक्स में है या नहीं।

संकलक डिजाइन प्रक्रिया में सिंटैक्स विश्लेषण लेक्सिकल विश्लेषण चरण के बाद आता है। इसे पार्स ट्री या सिंटेक्स ट्री के नाम से भी जाना जाता है। पार्स ट्री को भाषा के पूर्व-परिभाषित व्याकरण की मदद से विकसित किया जाता है। वाक्यविन्यास विश्लेषक यह भी जाँचता है कि क्या दिया गया कार्यक्रम संदर्भ-मुक्त व्याकरण द्वारा निहित नियमों को पूरा करता है। यदि यह संतुष्ट करता है, तो पार्सर उस स्रोत कार्यक्रम के पार्स ट्री बनाता है। अन्यथा, यह त्रुटि संदेश प्रदर्शित करेगा।

सिंटेक्स विश्लेषक प्रक्रिया

इस ट्यूटोरियल में, आप सीखेंगे

  • आपको सिंटेक्स एनालाइज़र की आवश्यकता क्यों है?
  • महत्वपूर्ण सिंटैक्स विश्लेषक शब्दावली
  • हमें पार्सिंग की आवश्यकता क्यों है?
  • पार्सिंग तकनीक
  • त्रुटि - पुनर्प्राप्ति विधियाँ
  • व्याकरण:
  • उल्लेखनीय सम्मेलन
  • संदर्भ मुक्त व्याकरण
  • व्याकरण व्युत्पत्ति
  • सिंटेक्स बनाम लेक्सिकल एनालाइजर
  • सिंटैक्स एनालाइजर के उपयोग के नुकसान

आपको सिंटेक्स एनालाइज़र की आवश्यकता क्यों है?

  • जांचें कि क्या कोड व्याकरणिक रूप से मान्य है
  • सिंटैक्टिकल एनालाइज़र आपको कोड को नियम लागू करने में मदद करता है
  • आपको यह सुनिश्चित करने में मदद करता है कि प्रत्येक खोलने वाले ब्रेस में एक समान समापन संतुलन है
  • प्रत्येक घोषणा में एक प्रकार होता है और उस प्रकार का अस्तित्व होना चाहिए

महत्वपूर्ण सिंटैक्स विश्लेषक शब्दावली

वाक्यविन्यास विश्लेषण प्रक्रिया में प्रयुक्त महत्वपूर्ण शब्दावली:

  • वाक्य: एक वाक्य कुछ वर्णमाला के ऊपर वर्ण का एक समूह है।
  • लेक्सेम: एक लेक्सेम किसी भाषा की सबसे निचली स्तर की सिंटैक्टिक इकाई है (उदाहरण के लिए, कुल, प्रारंभ)।
  • टोकन: एक टोकन लेक्समेस की एक श्रेणी है।
  • कीवर्ड और आरक्षित शब्द - यह एक पहचानकर्ता है जो एक बयान के वाक्यविन्यास के एक निश्चित हिस्से के रूप में उपयोग किया जाता है। यह एक आरक्षित शब्द है जिसे आप एक चर नाम या पहचानकर्ता के रूप में उपयोग नहीं कर सकते हैं।
  • शोर शब्द - शोर शब्द वैकल्पिक हैं जो वाक्य की पठनीयता बढ़ाने के लिए एक बयान में डाले गए हैं।
  • टिप्पणियाँ - यह प्रलेखन का एक बहुत महत्वपूर्ण हिस्सा है। यह ज्यादातर / / * *, या // रिक्त (रिक्त स्थान) द्वारा प्रदर्शित होता है
  • डेलीमीटर - यह एक सिंटैक्टिक तत्व है जो कुछ सिंटैक्टिक यूनिट की शुरुआत या अंत को चिह्नित करता है। एक बयान या अभिव्यक्ति की तरह, "शुरू" ... '' अंत ", या {}।
  • चरित्र सेट - ASCII, यूनिकोड
  • पहचानकर्ता - यह लंबाई पर प्रतिबंध है जो आपको वाक्य की पठनीयता को कम करने में मदद करता है।
  • ऑपरेटर प्रतीक - + और - दो बुनियादी अंकगणितीय संचालन करता है।
  • भाषा के सिंथेटिक तत्व

हमें पार्सिंग की आवश्यकता क्यों है?

एक पार्स यह भी जांचता है कि इनपुट स्ट्रिंग अच्छी तरह से बनाई गई है, और यदि नहीं, तो इसे अस्वीकार कर दें।

कंपाइलर डिज़ाइन में पार्सर द्वारा किए जाने वाले महत्वपूर्ण कार्य निम्नलिखित हैं:

  • सभी प्रकार के सिंटैक्स त्रुटियों का पता लगाने में आपकी सहायता करता है
  • उस स्थिति का पता लगाएं जिस पर त्रुटि हुई है
  • त्रुटि का स्पष्ट और सटीक विवरण।
  • कोड में आगे और त्रुटियों को खोजने के लिए एक त्रुटि से पुनर्प्राप्ति।
  • "सही" कार्यक्रमों के संकलन को प्रभावित नहीं करना चाहिए।
  • पार्स को सिंटैक्स त्रुटियों की रिपोर्ट करके अमान्य ग्रंथों को अस्वीकार करना चाहिए

पार्सिंग तकनीक

पार्सिंग तकनीकों को दो अलग-अलग समूहों में विभाजित किया गया है:

  • टॉप-डाउन पार्सिंग,
  • नीचे-ऊपर पार्सिंग

टॉप-डाउन पार्सिंग:

पार्स ट्री के शीर्ष-डाउन पार्सिंग निर्माण में जड़ से शुरू होता है और फिर पत्तियों की ओर बढ़ता है।

टॉप-डाउन पार्सिंग के दो प्रकार हैं:

  1. भविष्य कहनेवाला:

प्रेडिक्टिव पार्स भविष्यवाणी कर सकता है कि विशिष्ट इनपुट स्ट्रिंग को बदलने के लिए किस उत्पादन का उपयोग किया जाना चाहिए। भविष्य कहनेवाला पार्सर लुक-फॉरवर्ड बिंदु का उपयोग करता है, जो अगले इनपुट प्रतीकों की ओर इशारा करता है। इस ट्रेकिंग तकनीक के साथ बैकट्रैकिंग कोई समस्या नहीं है। इसे LL (1) पार्सर के रूप में जाना जाता है

  1. पुनरावर्ती वंश परासन:

यह पार्सिंग तकनीक पुनरावर्ती पेड़ बनाने के लिए इनपुट को पार्स करती है। इसमें कई छोटे कार्य शामिल हैं, व्याकरण में प्रत्येक गैर-विषयक के लिए एक।

नीचे-ऊपर पार्सिंग:

कंपाइलर डिजाइन में नीचे की ओर पार्सिंग में, पार्स ट्री का निर्माण अवकाश से शुरू होता है, और फिर यह अपनी जड़ की ओर प्रक्रिया करता है। इसे शिफ्ट-कम पार्सिंग भी कहा जाता है। कंपाइलर डिज़ाइन में इस प्रकार के पार्सिंग को कुछ सॉफ्टवेयर टूल्स के उपयोग से बनाया जाता है।

त्रुटि - पुनर्प्राप्ति विधियाँ

आम त्रुटियां जो सिस्टम सॉफ्टवेयर में पार्सिंग में होती हैं

  • लेक्सिकल : एक गलत टाइप किए गए पहचानकर्ता का नाम
  • सिंथेटिक : असंतुलित कोष्ठक या एक लापता अर्धविराम
  • शब्दार्थ : असंगत मान असाइनमेंट
  • तार्किक : अनंत लूप और न पहुंचने योग्य कोड

एक पार्सर को कार्यक्रम में पाई गई किसी भी त्रुटि का पता लगाने और रिपोर्ट करने में सक्षम होना चाहिए। तो, जब भी कोई त्रुटि पार्सर हुई। यह इसे संभालने में सक्षम होना चाहिए और शेष इनपुट को पार्स करना चाहिए। एक कार्यक्रम में विभिन्न संकलन प्रक्रिया चरणों में निम्नलिखित प्रकार की त्रुटियां हो सकती हैं। पाँच सामान्य त्रुटि-पुनर्प्राप्ति विधियाँ हैं जिन्हें पार्सर में लागू किया जा सकता है

स्टेटमेंट मोड रिकवरी

  • मामले में जब पार्सर एक त्रुटि का सामना करता है, तो यह आपको सुधारात्मक कदम उठाने में मदद करता है। यह बाकी इनपुट्स और राज्यों को आगे पार्स करने की अनुमति देता है।
  • उदाहरण के लिए, एक लापता अर्धविराम जोड़ना स्टेटमेंट मोड रिकवरी विधि में आता है। हालाँकि, इन परिवर्तनों को करते समय पार्स डिज़ाइनर को सावधान रहने की आवश्यकता है क्योंकि एक गलत सुधार के कारण एक अनंत लूप हो सकता है।

आतंक-मोड वसूली

  • मामले में जब पार्सर एक त्रुटि का सामना करता है, तो यह मोड शेष विवरण को अनदेखा करता है और गलत इनपुट से सीमांकक से इनपुट की प्रक्रिया नहीं करता है, अर्ध-कोलन की तरह। यह एक सरल त्रुटि रिकवरी विधि है।
  • इस प्रकार की पुनर्प्राप्ति पद्धति में, पार्सर इनपुट प्रतीकों को एक-एक करके खारिज कर देता है जब तक कि टोकन को सिंक्रनाइज़ करने का एक निर्दिष्ट समूह नहीं मिलता है। आमतौर पर या जैसे सीमांकक का उपयोग कर सिंक्रनाइज़ किए गए टोकन।

वाक्यांश-स्तरीय पुनर्प्राप्ति:

  • संकलक टोकन को सम्मिलित या हटाकर कार्यक्रम को सही करता है। यह इसे पार्स करने के लिए आगे बढ़ने की अनुमति देता है जहां से यह था। यह शेष इनपुट पर सुधार करता है। यह कुछ इनपुट के साथ शेष इनपुट के एक उपसर्ग को प्रतिस्थापित कर सकता है जो पार्सर को प्रक्रिया जारी रखने में मदद करता है।

त्रुटि प्रोडक्शंस

  • त्रुटि उत्पादन वसूली भाषा के लिए व्याकरण का विस्तार करती है जो गलत निर्माण करता है। पार्सर उस निर्माण के बारे में त्रुटि निदान करता है।

वैश्विक सुधार:

  • गलत इनपुट स्ट्रिंग को संसाधित करते समय कंपाइलर को कम से कम बदलाव करने चाहिए। गलत इनपुट स्ट्रिंग a और व्याकरण c को देखते हुए, एल्गोरिदम संबंधित स्ट्रिंग b के लिए पार्स ट्री की खोज करेगा। कुछ सम्मिलन की तरह, विलोपन, और संशोधन से बना टोकन एक बी में बदलने के लिए जितना संभव हो उतना कम है।

व्याकरण:

एक व्याकरण संरचनात्मक नियमों का एक समूह है जो एक भाषा का वर्णन करता है। व्याकरण किसी भी वाक्य को संरचना प्रदान करते हैं। यह शब्द इन नियमों के अध्ययन को भी संदर्भित करता है, और इस फ़ाइल में आकृति विज्ञान, स्वर विज्ञान और वाक्यविन्यास शामिल हैं। यह कई का वर्णन करने में सक्षम है, प्रोग्रामिंग भाषाओं के वाक्यविन्यास।

प्रपत्र व्याकरण के नियम

  • गैर-टर्मिनल प्रतीक को कम से कम एक उत्पादन के बाईं ओर दिखाई देना चाहिए
  • लक्ष्य प्रतीक को कभी भी किसी भी उत्पादन के :: = के दाईं ओर प्रदर्शित नहीं किया जाना चाहिए
  • एक नियम पुनरावर्ती है यदि LHS उसके RHS में दिखाई देता है

उल्लेखनीय सम्मेलन

वर्ग कोष्ठक में तत्व को संलग्न करके नोटिस्टिक कन्वेंशन सिंबल का संकेत दिया जा सकता है। यह उस तत्व के उदाहरणों का एक अनियंत्रित क्रम है, जिसे एक तारांकन चिह्न, {…} * * के बाद ब्रेसिज़ में तत्व को संलग्न करके इंगित किया जा सकता है।

यह विकल्प का एक विकल्प है जो एकल नियम के भीतर प्रतीक का उपयोग कर सकता है। आवश्यकता पड़ने पर इसे कोष्ठक ([,]) द्वारा संलग्न किया जा सकता है।

दो प्रकार के अधिसूचनात्मक सम्मेलन क्षेत्र टर्मिनल और गैर-टर्मिनल

1. मॉडल:

  • वर्णमाला में निम्न-केस अक्षर, जैसे, बी, सी,
  • संचालक प्रतीक जैसे +, -, *, आदि।
  • विराम चिह्न जैसे कि कोष्ठक, हैश, अल्पविराम
  • 0, 1,…, 9 अंक
  • बोल्डफेस स्ट्रिंग्स जैसे आईडी या यदि, कुछ भी जो एक टर्मिनल प्रतीक का प्रतिनिधित्व करता है

2.नोटर्स:

  • ऊपरी मामले के अक्षर जैसे ए, बी, सी
  • लोअर-केस इटैलिक नाम: अभिव्यक्ति या कुछ

संदर्भ मुक्त व्याकरण

सीएफजी एक वाम-पुनरावर्ती व्याकरण है जिसमें कम से कम एक प्रकार का उत्पादन होता है। संदर्भ-मुक्त व्याकरण में नियम मुख्य रूप से पुनरावर्ती हैं। एक सिंटैक्स विश्लेषक जाँच करता है कि विशिष्ट कार्यक्रम प्रसंग-मुक्त व्याकरण के सभी नियमों को संतुष्ट करता है या नहीं। यदि यह पूरा होता है, तो ये नियम वाक्यविन्यास विश्लेषक उस प्रोग्राम के लिए एक पार्स ट्री बना सकते हैं।

expression -> expression -+ termexpression -> expression - termexpression-> termterm -> term * factorterm -> expression/ factorterm -> factor factorfactor -> ( expression )factor -> id

व्याकरण व्युत्पत्ति

व्याकरण व्युत्पत्ति व्याकरण के नियम का एक क्रम है जो स्टार्ट सिंबल को स्ट्रिंग में बदल देता है। एक व्युत्पत्ति साबित करती है कि स्ट्रिंग व्याकरण की भाषा से संबंधित है।

वाम-सर्वाधिक व्युत्पत्ति

जब इनपुट के प्रांतीय रूप को स्कैन किया जाता है और बाएं से दाएं अनुक्रम में प्रतिस्थापित किया जाता है, तो इसे बाएं-सबसे व्युत्पत्ति के रूप में जाना जाता है। भावुक रूप जो बाईं ओर से व्युत्पन्न होता है, उसे बाएं-संवेदी रूप कहा जाता है।

राइट-सबसे व्युत्पत्ति

दायाँ व्युत्पत्ति स्कैन, इनपुट को उत्पादन नियमों से बदल देता है, दाएं से बाएं, अनुक्रम से। इसे सही-सबसे व्युत्पत्ति के रूप में जाना जाता है। भावुक रूप जो सबसे सही व्युत्पत्ति से उत्पन्न होता है, उसे सही-संवेदी रूप के रूप में जाना जाता है।

सिंटेक्स बनाम लेक्सिकल एनालाइजर

सिंटेक्स विश्लेषक

लेक्सिकल एनालाइजर

वाक्यविन्यास विश्लेषक मुख्य रूप से भाषा के पुनरावर्ती निर्माण से संबंधित है।

लेक्सिकल विश्लेषक सिंटेक्स विश्लेषक के कार्य को आसान बनाता है।

सिंटैक्स विश्लेषक प्रोग्रामिंग भाषा में सार्थक संरचनाओं को पहचानने के लिए एक स्रोत कार्यक्रम में टोकन पर काम करता है।

लेक्सिकल विश्लेषक एक स्रोत कार्यक्रम में टोकन को पहचानता है।

यह लेक्सिकल एनालिसिस से, टोकन के रूप में, इनपुट प्राप्त करता है।

यह द्वारा आपूर्ति की गई टोकन की वैधता के लिए जिम्मेदार है

वाक्यविन्यास विश्लेषक

सिंटैक्स एनालाइजर के उपयोग के नुकसान

  • यह कभी निर्धारित नहीं होगा कि कोई टोकन वैध है या नहीं
  • यह निर्धारित करने में आपकी मदद नहीं करता है कि टोकन प्रकार पर किया गया कोई ऑपरेशन वैध है या नहीं
  • आप यह तय नहीं कर सकते कि उपयोग किए जाने से पहले टोकन घोषित और आरंभिक है

सारांश

  • सिंटैक्स विश्लेषण संकलक डिजाइन प्रक्रिया का एक दूसरा चरण है जो शाब्दिक विश्लेषण के बाद आता है
  • सिंटैक्टिकल एनालाइज़र आपको कोड को नियम लागू करने में मदद करता है
  • वाक्य, लेकेम, टोकन, कीवर्ड और आरक्षित शब्द, शब्द, टिप्पणियां, टिप्पणियां, परिमाण सेट, पहचानकर्ता कुछ महत्वपूर्ण शब्द हैं जो संकलक निर्माण में सिंटैक्स विश्लेषण में उपयोग किए जाते हैं
  • पार्स यह जांचता है कि इनपुट स्ट्रिंग अच्छी तरह से गठित है, और यदि नहीं, तो इसे अस्वीकार कर दें
  • पार्सिंग तकनीक को दो अलग-अलग समूहों में विभाजित किया जाता है: टॉप-डाउन पार्सिंग, बॉटम-अप पार्सिंग
  • पार्सिंग पद्धति के दौरान लेक्सिकल, सिंथेटिक, शब्दार्थ और तार्किक कुछ सामान्य त्रुटियाँ हैं
  • एक व्याकरण संरचनात्मक नियमों का एक समूह है जो एक भाषा का वर्णन करता है
  • वर्ग कोष्ठक में तत्व को संलग्न करके नोटिस्टिक कन्वेंशन सिंबल का संकेत दिया जा सकता है
  • सीएफजी एक वाम-पुनरावर्ती व्याकरण है जिसमें कम से कम एक प्रकार का उत्पादन होता है
  • व्याकरण व्युत्पत्ति व्याकरण के नियम का एक क्रम है जो स्टार्ट सिंबल को स्ट्रिंग में बदल देता है
  • सिंटैक्स विश्लेषक मुख्य रूप से भाषा के पुनरावर्ती निर्माण से संबंधित है, जबकि लेक्सिकल विश्लेषक डीबीएमएस में सिंटैक्स विश्लेषक के कार्य को आसान बनाता है
  • सिंटेक्स विश्लेषक विधि का दोष यह है कि यह कभी निर्धारित नहीं करेगा कि कोई टोकन वैध है या नहीं