Question:
In compiler design, what is the primary condition that must be satisfied by a grammar to be parsed by an \(LL(1)\) predictive top-down parser without backtracking?
कंपाइलर डिज़ाइन में, बिना बैकट्रैकिंग के \(LL(1)\) प्रेडिक्टिव टॉप-डाउन पार्सर द्वारा पार्स किए जाने के लिए व्याकरण द्वारा कौन सी प्राथमिक शर्त पूरी होनी चाहिए?
Options:
- For every production \(A \rightarrow \alpha \mid \beta\), \(\text{FIRST}(\alpha) \cap \text{FIRST}(\beta) = \emptyset\) and if \(\beta \Rightarrow^* \epsilon\), then \(\text{FIRST}(\alpha) \cap \text{FOLLOW}(A) = \emptyset\)
- The grammar must contain left recursion
- The grammar must be inherently ambiguous
- Every non-terminal must derive the empty string \(\epsilon\)
- प्रत्येक उत्पादन \(A \rightarrow \alpha \mid \beta\) के लिए, \(\text{FIRST}(\alpha) \cap \text{FIRST}(\beta) = \emptyset\) तथा यदि \(\beta \Rightarrow^* \epsilon\) हो, तो \(\text{FIRST}(\alpha) \cap \text{FOLLOW}(A) = \emptyset\)
- व्याकरण में लेफ्ट रिकर्शन होना चाहिए
- व्याकरण अस्पष्ट (ambiguous) होना चाहिए
- प्रत्येक नॉन-टर्मिनल को \(\epsilon\) व्युत्पन्न करना चाहिए
Correct Answer: a)
Explanation:
A grammar is LL(1) if and only if for every pair of alternate productions \(A \rightarrow \alpha \mid \beta\): 1. \(\text{FIRST}(\alpha)\) and \(\text{FIRST}(\beta)\) are disjoint. 2. At most one of \(\alpha, \beta\) can derive \(\epsilon\). 3. If \(\beta \Rightarrow^* \epsilon\), then \(\text{FIRST}(\alpha) \cap \text{FOLLOW}(A) = \emptyset\).
LL(1) पार्सर के लिए FIRST और FOLLOW सेट परस्पर अनन्य (disjoint) होने चाहिए ताकि पार्स टेबल के किसी भी सेल में एक से अधिक प्रविष्टियाँ (संघर्ष) न हों।