Derivation Trees and Ambiguity in Grammar | व्युत्पत्ति वृक्ष और व्याकरण में अस्पष्टता
Derivation Trees and Ambiguity in Grammar | व्युत्पत्ति वृक्ष और व्याकरण में अस्पष्टता
ऑटोमाटा सिद्धांत और औपचारिक भाषाओं में Derivation Tree (व्युत्पत्ति वृक्ष) और Ambiguity (अस्पष्टता) अत्यंत महत्वपूर्ण अवधारणाएँ हैं। Derivation Tree किसी grammar द्वारा उत्पन्न की गई string की संरचना को tree के रूप में प्रदर्शित करता है, जबकि Ambiguity यह बताती है कि किसी string के लिए एक से अधिक parse tree संभव हैं।
परिचय / Introduction
Grammar किसी भाषा के निर्माण के नियमों का समूह है। Derivation उस प्रक्रिया को कहते हैं जिसमें Production Rules का उपयोग करके Terminals की एक string बनाई जाती है। जब हम इस derivation को tree के रूप में प्रदर्शित करते हैं, तो हमें Derivation Tree या Parse Tree प्राप्त होता है।
1️⃣ Derivation / व्युत्पत्ति
Derivation का अर्थ है — किसी Grammar की production rules का प्रयोग करके Non-terminal symbols को step-by-step Terminals में बदलना। यह प्रक्रिया या तो Leftmost या Rightmost derivation द्वारा की जाती है।
उदाहरण:
Grammar: S → aSb | ε
String: “aabb”
S ⇒ aSb
⇒ aaSbb
⇒ aabb
Leftmost Derivation:
हर step में सबसे बाएँ Non-terminal को expand किया जाता है।
Rightmost Derivation:
हर step में सबसे दाएँ Non-terminal को expand किया जाता है।
2️⃣ Derivation Tree (Parse Tree) / व्युत्पत्ति वृक्ष
Parse Tree किसी Grammar द्वारा string उत्पन्न करने की प्रक्रिया को tree के रूप में दर्शाता है। इसमें root node Start Symbol होता है और leaves Terminals होते हैं।
उदाहरण:
Grammar: S → aSb | ε
String: aabb
S
/ \
a S b
/ \
a ε b
यह tree दिखाता है कि Grammar के Production Rules का उपयोग कैसे किया गया।
3️⃣ Parse Tree के घटक / Components of a Parse Tree
- Root Node: Start Symbol
- Internal Nodes: Non-terminals
- Leaf Nodes: Terminals या ε
- Branches: Production Rules
4️⃣ Derivation Tree की विशेषताएँ / Characteristics of Parse Trees
- Parse Tree derivation को स्पष्ट रूप से दिखाता है।
- Tree traversal द्वारा string को पुनः प्राप्त किया जा सकता है।
- Ambiguity पहचानने के लिए उपयोगी होता है।
5️⃣ Ambiguity in Grammar / व्याकरण में अस्पष्टता
किसी Grammar को Ambiguous कहा जाता है यदि किसी string को एक से अधिक Parse Trees या Derivations से उत्पन्न किया जा सकता है।
औपचारिक परिभाषा:
Grammar G ambiguous है यदि कोई string w ऐसी मौजूद है कि w के लिए दो या अधिक भिन्न Parse Trees संभव हों।
उदाहरण:
Grammar:
E → E + E | E * E | id
String: id + id * id
इस string के लिए दो parse trees संभव हैं:
(1) Left Associative Parsing:
E
/ | \
E + E
id * E
id id
(2) Right Associative Parsing:
E
/ | \
E * E
id + E
id id
इस प्रकार Grammar ambiguous है क्योंकि दो अलग-अलग Parse Trees एक ही string के लिए संभव हैं।
6️⃣ Ambiguity के प्रकार / Types of Ambiguity
- Structural Ambiguity: जब दो अलग-अलग syntax structures संभव हों।
- Lexical Ambiguity: जब किसी शब्द का एक से अधिक अर्थ हो।
7️⃣ Ambiguity हटाने की विधियाँ / Methods to Remove Ambiguity
- Operator Precedence Grammar: Grammar में Operators की precedence निर्धारित करें।
- Associativity Rules: Left या Right Associativity परिभाषित करें।
- Grammar Modification: Ambiguous rules को पुनर्लेखन (Rewrite) करें।
उदाहरण (Ambiguity Removal):
Ambiguous Grammar:
E → E + E | E * E | id
Unambiguous Grammar:
E → E + T | T
T → T * F | F
F → (E) | id
अब यह grammar operator precedence का पालन करती है — ‘*’ को ‘+’ से अधिक precedence दी गई है।
8️⃣ Parse Tree का उपयोग / Applications
- Compiler Design में Syntax Analysis के लिए।
- Programming Languages के Grammar Validation में।
- Natural Language Processing (NLP) में Sentence Parsing के लिए।
9️⃣ Parse Tree बनाम Derivation
| विशेषता | Derivation | Parse Tree |
|---|---|---|
| Representation | Sequential Steps | Tree Structure |
| Ambiguity Detection | कठिन | आसान |
| Visualization | कम स्पष्ट | अधिक स्पष्ट |
निष्कर्ष / Conclusion
Derivation Tree और Ambiguity दोनों Grammar की संरचना को समझने के लिए महत्वपूर्ण हैं। Parse Tree भाषा के निर्माण को दर्शाता है, जबकि Ambiguity यह बताती है कि Grammar पर्याप्त रूप से स्पष्ट नहीं है। Compiler Design में Ambiguity हटाना अनिवार्य है ताकि प्रत्येक प्रोग्राम का एक ही अर्थ (Unique Meaning) हो।
Related Post
- Introduction to Automata Theory | ऑटोमाटा सिद्धांत का परिचय
- Review of Sets | सेट्स का पुनरावलोकन
- Mathematical Proofs (Induction and Contradiction) | गणितीय प्रमेय (आगमन और विरोधाभास द्वारा प्रमाण)
- Fundamentals of Languages, Grammars, and Automata | भाषाओं, व्याकरण और ऑटोमाटा के मूल सिद्धांत
- Alphabet and Representation of Language and Grammar | वर्णमाला और भाषा व व्याकरण का निरूपण
- Types of Automata and Their Applications | ऑटोमाटा के प्रकार और उनके उपयोग
- Finite Automata as Language Acceptor and Translator | भाषा स्वीकारक और अनुवादक के रूप में सीमित ऑटोमाटा
- Moore and Mealy Machines, Conversion and Composite Machine | मूर और मीली मशीनें, रूपांतरण और समग्र मशीनें
- Conversion Between Mealy and Moore Machines | मीली और मूर मशीनों के बीच रूपांतरण
- Composite Machine in Automata | ऑटोमाटा में समग्र मशीन
- Non-Deterministic Finite Automata (NDFA) | अनिश्चित सीमित ऑटोमाटा
- Deterministic Finite Automata (DFA) | निश्चित सीमित ऑटोमाटा
- Conversion of NDFA to DFA | एनडीएफए से डीएफए में रूपांतरण
- Minimization of Automata Machines | ऑटोमाटा मशीनों का लघुकरण
- Regular Expression in Automata | ऑटोमाटा में रेगुलर एक्सप्रेशन
- Applications of Regular Expressions | रेगुलर एक्सप्रेशंस के अनुप्रयोग
- Arden’s Theorem in Automata | ऑटोमाटा में आर्डन का प्रमेय
- Union, Intersection, Concatenation, and Closure in Automata | ऑटोमाटा में संयोजन, प्रतिच्छेद, संयोजन और क्लोज़र
- Two-Way Deterministic Finite Automata (2DFA) | द्विदिश निश्चित सीमित ऑटोमाटा
- Introduction and Types of Grammar in Automata Theory | ऑटोमाटा सिद्धांत में व्याकरण का परिचय और प्रकार
- Regular Grammar in Automata | ऑटोमाटा में रेगुलर व्याकरण
- Context-Free Grammar (CFG) in Automata | ऑटोमाटा में प्रसंग-मुक्त व्याकरण
- Context-Sensitive Grammar (CSG) in Automata | ऑटोमाटा में प्रसंग-संवेदनशील व्याकरण
- Derivation Trees and Ambiguity in Grammar | व्युत्पत्ति वृक्ष और व्याकरण में अस्पष्टता
- Simplification of Context-Free Grammar | प्रसंग-मुक्त व्याकरण का सरलीकरण
- Conversion Between Grammar and Automata | व्याकरण और ऑटोमाटा के बीच रूपांतरण
- Chomsky Hierarchy of Grammars | चॉम्स्की व्याकरण पदानुक्रम
- Chomsky Normal Form (CNF) and Greibach Normal Form (GNF) | चॉम्स्की एवं ग्रेबैक सामान्य रूप
- Introduction and Example of Pushdown Automata (PDA) | पुशडाउन ऑटोमाटा का परिचय और उदाहरण
- Deterministic and Non-Deterministic Pushdown Automata (DPDA vs NPDA) | नियतात्मक और अनियतात्मक पुशडाउन ऑटोमाटा
- Relationship Between PDA and Context-Free Grammar | PDA और प्रसंग-मुक्त व्याकरण का संबंध
- Parsing in Context-Free Grammar using PDA | PDA के माध्यम से पार्सिंग प्रक्रिया
- Ambiguity in Context-Free Grammar | प्रसंग-मुक्त व्याकरण में अस्पष्टता
- Normal Forms of CFG (CNF and GNF) | प्रसंग-मुक्त व्याकरण के सामान्य रूप (CNF और GNF)
- Conversion of CFG to NPDA | CFG से NPDA में रूपांतरण
- Conversion of NPDA to CFG | NPDA से CFG में रूपांतरण
- Petri Nets Model | पेट्री नेट्स मॉडल का परिचय
- Introduction to Turing Machine and its Components | ट्यूरिंग मशीन का परिचय और घटक
- Turing Machine as Language Acceptor | ट्यूरिंग मशीन के रूप में भाषा स्वीकारक
- Recognizing a Language using Turing Machine | ट्यूरिंग मशीन द्वारा भाषा की पहचान
- Universal Turing Machine (UTM) | सार्वभौमिक ट्यूरिंग मशीन (UTM)
- Linear Bounded Automata and Context Sensitive Languages | रैखिक सीमाबद्ध ऑटोमाटा और प्रसंग-संवेदनशील भाषाएँ
- Recursive and Recursively Enumerable Languages | पुनरावर्ती और पुनरावर्ती रूप से गणनीय भाषाएँ
- Unrestricted Grammars and Type-0 Languages | असीमित व्याकरण और टाइप-0 भाषाएँ
- Halting Problem and Post Correspondence Problem | हॉल्टिंग समस्या और पोस्ट पत्राचार समस्या
- Solvability and Unsolvability Concepts | हल करने योग्य और अ-हल करने योग्य समस्याएँ
- Church’s Thesis and Complexity Theory (P vs NP) | चर्च का सिद्धांत और जटिलता सिद्धांत (P बनाम NP समस्याएँ)