सिंटैक्स एनालिसिस क्या है? | Syntax Analysis in Compiler Design in Hindi


सिंटैक्स एनालिसिस क्या है? (What is Syntax Analysis in Compiler Design?)

सिंटैक्स एनालिसिस (Syntax Analysis) कंपाइलर डिज़ाइन का दूसरा चरण होता है, जिसे पार्सिंग (Parsing) भी कहा जाता है। यह चरण यह सुनिश्चित करता है कि लेक्सिकल एनालाइज़र (Lexical Analyzer) द्वारा उत्पन्न किए गए टोकन्स (Tokens) किसी भाषा के व्याकरणिक नियमों (Grammatical Rules) के अनुसार सही हैं या नहीं।

1. सिंटैक्स एनालिसिस का उद्देश्य (Objective of Syntax Analysis)

  • लेक्सिकल एनालाइज़र द्वारा उत्पन्न टोकन्स का विश्लेषण करना।
  • सिंटैक्स त्रुटियों (Syntax Errors) को पहचानना।
  • पार्स ट्री (Parse Tree) या सिंटैक्स ट्री बनाना।
  • अभिव्यक्तियों (Expressions) और स्टेटमेंट्स (Statements) के बीच संबंध को परिभाषित करना।

2. सिंटैक्स एनालाइज़र (Syntax Analyzer) क्या करता है?

सिंटैक्स एनालाइज़र का कार्य निम्नलिखित चरणों में किया जाता है:

  1. टोकन्स को इनपुट के रूप में लेता है।
  2. ग्रामर (Grammar) के नियमों के अनुसार टोकन्स की वैधता जांचता है।
  3. सिंटैक्स एरर (Syntax Errors) को डिटेक्ट करता है।
  4. पार्स ट्री (Parse Tree) उत्पन्न करता है।
  5. अगले चरण (Semantic Analysis) को आउटपुट भेजता है।

3. पार्स ट्री क्या होता है? (What is a Parse Tree?)

पार्स ट्री (Parse Tree) एक **हायरार्किकल संरचना** होती है, जो सोर्स कोड की व्याकरणिक संरचना को दर्शाती है। यह कंपाइलर को यह समझने में मदद करता है कि दिए गए टोकन्स सही क्रम में हैं या नहीं।

उदाहरण:

यदि हमारे पास निम्नलिखित अभिव्यक्ति (Expression) है:

a + b * c

तो इसका पार्स ट्री निम्नलिखित होगा:

        +
       / 
      a   *
         / 
        b   c

4. सिंटैक्स एनालिसिस के प्रकार (Types of Syntax Analysis)

सिंटैक्स एनालिसिस को मुख्य रूप से दो प्रकारों में विभाजित किया जाता है:

1. टॉप-डाउन पार्सिंग (Top-Down Parsing)

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

  • रिकर्सिव डीसेंट पार्सिंग (Recursive Descent Parsing)
  • एलएल(1) पार्सिंग (LL(1) Parsing)

2. बॉटम-अप पार्सिंग (Bottom-Up Parsing)

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

  • एलआर पार्सिंग (LR Parsing)
  • एसएलआर पार्सिंग (SLR Parsing)
  • एलएएलआर पार्सिंग (LALR Parsing)

5. सिंटैक्स एनालाइज़र की संरचना (Structure of Syntax Analyzer)

घटक कार्य
इनपुट लेक्सिकल एनालाइज़र से प्राप्त टोकन्स
ग्रामर भाषा के सिंटैक्स नियमों का सेट
पार्सर टोकन्स का विश्लेषण करता है और पार्स ट्री उत्पन्न करता है
आउटपुट पार्स ट्री और सिंटैक्स एरर रिपोर्ट

6. सिंटैक्स एनालिसिस का उदाहरण (Example of Syntax Analysis)

मान लीजिए हमारे पास निम्नलिखित स्टेटमेंट है:

if (a > b) { c = a + b; }

सिंटैक्स एनालाइज़र इस स्टेटमेंट की जांच करेगा और इसे निम्नलिखित **पार्स ट्री** के रूप में प्रदर्शित करेगा:

        if
       /   
      (     )
     /       
    a > b    { c = a + b; }

7. सिंटैक्स एनालिसिस और लेक्सिकल एनालिसिस में अंतर (Syntax Analysis vs Lexical Analysis)

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

8. सिंटैक्स एनालिसिस की सीमाएँ (Limitations of Syntax Analysis)

  • यह केवल व्याकरणिक त्रुटियों को ही पहचान सकता है, तर्कगत (Logical) त्रुटियों को नहीं।
  • यदि ग्रामर सही ढंग से परिभाषित नहीं है, तो पार्सर सही ढंग से काम नहीं कर सकता।
  • कुछ भाषाओं के लिए पार्सर को डिज़ाइन करना जटिल हो सकता है।

9. निष्कर्ष (Conclusion)

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

Related Post

Comments

Comments