व्याकरण में परिवर्तन | Transformation on the Grammars in Compiler Design in Hindi


व्याकरण में परिवर्तन (Transformation on the Grammars in Compiler Design)

कंपाइलर डिज़ाइन में, व्याकरण (Grammar) को विभिन्न पार्सिंग तकनीकों के अनुसार संशोधित करने की आवश्यकता होती है। व्याकरण रूपांतरण (Grammar Transformation) उन प्रक्रियाओं को संदर्भित करता है, जिनका उपयोग व्याकरण को सरल और कुशल बनाने के लिए किया जाता है।

1. व्याकरण रूपांतरण का उद्देश्य (Objective of Grammar Transformation)

  • लेफ्ट रिकर्सन (Left Recursion) को समाप्त करना।
  • फैक्टरिंग (Factoring) द्वारा व्याकरण को आसान बनाना।
  • एलएल(1) पार्सिंग और एलआर(1) पार्सिंग के लिए व्याकरण को उपयुक्त बनाना।
  • व्याकरण को अन्वेषणीय (Parsable) बनाना।

2. व्याकरण रूपांतरण के प्रकार (Types of Grammar Transformation)

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

  • लेफ्ट रिकर्सन एलिमिनेशन (Left Recursion Elimination)
  • लेफ्ट फैक्टरिंग (Left Factoring)
  • व्याकरण सरलीकरण (Grammar Simplification)
  • वैकल्पिक व्याकरण (Alternative Grammar Forms)

3. लेफ्ट रिकर्सन हटाना (Elimination of Left Recursion)

यदि व्याकरण में लेफ्ट रिकर्सन (Left Recursion) मौजूद है, तो रिकर्सिव डिसेंट पार्सिंग (Recursive Descent Parsing) असमर्थ हो जाता है।

समस्या:

A → Aα | β

समाधान:

A → β A'
A' → α A' | ε

उदाहरण:

यदि हमारे पास निम्नलिखित व्याकरण है:

E → E + T | T

तो लेफ्ट रिकर्सन को हटाने के बाद इसे निम्नलिखित रूप में लिखा जाएगा:

E → T E'
E' → + T E' | ε

4. व्याकरण सरलीकरण (Grammar Simplification)

कुछ व्याकरण में अनावश्यक नियमों (Useless Rules) और अप्राप्य नियमों (Unreachable Rules) को हटाने की आवश्यकता होती है।

समस्या:

S → A B
A → aA | ε
B → bB
C → d

समाधान:

चूँकि C → d कभी भी S से नहीं पहुंचा जा सकता, इसे हटाया जाता है:

S → A B
A → aA | ε
B → bB

7. व्याकरण रूपांतरण की तुलना (Comparison of Grammar Transformations)

परिवर्तन प्रकार समस्या समाधान
लेफ्ट रिकर्सन रिकर्सिव डिसेंट पार्सिंग असफल होता है बैकअप नॉन-टर्मिनल का उपयोग करके हल
लेफ्ट फैक्टरिंग LL(1) पार्सिंग में समस्या कॉमन प्रीफिक्स को विभाजित करना
व्याकरण सरलीकरण अनावश्यक नियम व्याकरण को जटिल बनाते हैं बेकार और अप्राप्य नियमों को हटाना

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

व्याकरण रूपांतरण (Grammar Transformation) कंपाइलर डिज़ाइन में लेफ्ट रिकर्सन हटाने, लेफ्ट फैक्टरिंग, व्याकरण सरलीकरण, और वैकल्पिक व्याकरण रूपों के लिए आवश्यक होता है। यह पार्सिंग को अधिक कुशल और प्रभावी बनाता है।

Related Post