ऑपरेटर के बाएं संघ को बनाए रखते हुए व्याकरण में बाएं-पुनरावृत्ति को हटा देना


13

मुझे इस अभ्यास से समस्या है:

G को λ-पथरी के लिए निम्नलिखित अस्पष्ट व्याकरण होने दें:

E → v | λv.E | EE | (E)

जहां E एकल गैर-टर्मिनल प्रतीक है, λv.E, E में चर v को अमूर्तता का प्रतिनिधित्व करता है, और EE अनुप्रयोग का प्रतिनिधित्व करता है।

  1. एक LL (1) व्याकरण G L को परिभाषित करें जैसे कि L (G =) = L (G) और G की अस्पष्टता को निम्नलिखित सामान्य सम्मेलनों को लागू करके हल किया जाता है:
    1. अमूर्त सही सहयोगी है;
    2. आवेदन छोड़ दिया है साहचर्य;
    3. आवेदन में अमूर्तता से अधिक प्राथमिकता है।
  2. जी the के लिए एलएल (1) पार्सिंग टेबल और स्ट्रिंग को पार्स करते समय प्राप्त पार्स ट्री दिखाएं λv1. λv2. v1v2v1

मैंने इस व्याकरण को प्राप्त करते हुए अस्पष्टता की स्थापना की पूर्वता और संगति को समाप्त कर दिया:

E -> EF | F
F -> λv.G | G
G -> (E) | v

जो एलएल (1) नहीं है, क्योंकि उत्पादन E -> EFपुनरावर्ती छोड़ दिया गया है। हालाँकि, मेरे द्वारा प्राप्त उत्पादन से बाईं पुनरावृत्ति को समाप्त करना:

E -> FE¹
E¹-> FE¹ | ɛ
F -> λv.G | G
G -> (E) | v

आवश्यकता 1.2 का अनुपालन नहीं करता है।

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

हालांकि, यह अभ्यास कुछ साल पहले संकलक परीक्षा में दिखाई दिया था, इसलिए एक सही उत्तर होना चाहिए।

आपके सहयोग के लिए धन्यवाद।

जवाबों:


11

बाईं सहकारिता और एलएल (1) पार्सिंग की संगतता

आपने संदर्भ-मुक्त (CF) सिंटैक्स के उपयोग में प्रमुख असंगतियों में से एक को मारा। लोग व्याकरण का चयन करना चाहते हैं ताकि पार्स-ट्री वाक्य के इच्छित संरचना को प्रतिबिंबित करे, इसके शब्दार्थ के करीब, विशेष रूप से गैर सहयोगी संचालकों के मामले में, जैसे कि आवेदन । यह भाषा विज्ञान में CF व्याकरण के मूल इरादे से बहुत अधिक था। लेकिन एक ही समय में वे खुद को तकनीक के लिए विवश कर रहे हैं जो केवल कुछ प्रकार के व्याकरणों को सहन करेगा।

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

इसमें से दो तरीके हैं। प्रसंस्करण के बाद के चरणों (जैसे कि लंबोदर अभिव्यक्ति को कम करने के लिए), का उपयोग करने के लिए रिगर "पार्से-ट्री" देने के लिए पार्सर पर भरोसा नहीं करना है। यह सार सिंटैक्स ट्री (एएसटी) की अवधारणा को जन्म देता है जिसे पार्स-ट्री से बनाया जा सकता है, लेकिन एक अलग संरचना के साथ।

अन्य समाधान अधिक सामान्य पार्सिंग तकनीकों का उपयोग करना है जो किसी भी सीएफ व्याकरण को स्वीकार करेंगे, और इसके अनुसार पार्स करेंगे। जनरल CF पार्सर एक अच्छी तरह से विकसित तकनीक है (और मुझे आश्चर्य नहीं है कि एलएल इतना लोकप्रिय क्यों है)।

मुझे नहीं पता कि इन विरोधाभासी आवश्यकताओं का उचित उत्तर क्या माना जा सकता है।

मैं जो करूंगा वह यह दिखाएगा कि वे आवश्यकताओं का विरोध कर रहे हैं। पहले व्याकरण दें जो संघात और प्राथमिकता बाधाओं को पूरा करता है, फिर व्याकरण को पार्सिंग के लिए और एलएल (1) व्याकरण में परिवर्तित करें।

तथ्य यह है कि एक पत्रिका में या एक परीक्षा में कुछ दिखाई दिया कुल टंकण नहीं है कि यह सही है। और मैं गलत भी हो सकता हूं ... लेकिन मैंने इस मुद्दे के अपने ज्ञान के अलावा, कुछ जाँच की।

इस विशिष्ट उदाहरण के बारे में

यह कहा जा रहा है, आप जिस पहले व्याकरण का सुझाव दे रहे हैं वह बिल्कुल सही नहीं है। यह λu.λv.v के उत्पादन का एक तरीका नहीं है।

पता करने के लिए एक चाल सबसे कम प्राथमिकता (अमूर्त) के साथ ऑपरेटरों (यहाँ अमूर्त या आवेदन) के साथ शुरू करने के लिए है। यह अंकगणित की अभिव्यक्तियों के लिए समान है।


आपकी विस्तृत टिप्पणी के लिए बहुत-बहुत धन्यवाद। आपने सही कहा, मैंने पहले व्याकरण के साथ एक त्रुटि की, इसके लिए भी धन्यवाद। मैं तब प्रोफेसर से पूछूंगा।
मार्को दल्ला जी

यदि आप रुचि रखते हैं, तो मैं उत्तर को जोड़ सकता हूं, डमी (मुझे भी) के लिए व्याकरण डिजाइन पर एक छोटे से नोट के साथ। यह भी बताएं कि इस पर आपका प्रोफेसर क्या कहता है।
बबौ

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

पियर्स के TAPL पर काम करने पर @MarcoDallaG इस पर आ गया। क्या आपके प्रोफेसर ने इस उत्तर से अलग कुछ भी कहा? :)
lcn

0

मेरा प्रयास:

E  -> A | λv.E
A  -> FA'
A' -> A | ɛ
F  -> (E) | v

यह व्याकरण एलएल (1) है और इसे आवश्यक गुणों का सम्मान करना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.