जवाब यहां प्रतीक पार्स करने साथ (मैं क्या "नाम संकल्प" कहते हैं) के अर्थ का निर्धारण भ्रमित के अधिकांश (बाल बाल के रूप में "कार्यक्रम की वाक्य रचना पढ़ सकते हैं" परिभाषित)।
आप do these tasks separately. कर सकते हैं।
इसका मतलब यह है कि आप सी ++ (मेरी कंपनी, अर्थात् डिज़ाइन करता है) के लिए एक पूरी तरह से संदर्भ मुक्त पार्सर बना सकते हैं, और यह तय करने के मुद्दों को छोड़ सकते हैं कि प्रतीक का अर्थ स्पष्ट रूप से अलग कार्य के लिए क्या है।
अब, यह कार्य स्रोत कोड की संभावित वाक्यविन्यास व्याख्याओं द्वारा संचालित है। हमारे पार्सर्स में, इन्हें पार्स में अस्पष्टता के रूप में कैप्चर किया जाता है।
नामों की घोषणाओं के बारे में जानकारी एकत्र करने का नाम क्या है, और उस जानकारी का उपयोग यह निर्धारित करने के लिए करें कि कौन से अस्पष्ट पार्स समझ में नहीं आते हैं, और बस उन्हें छोड़ दें। एक वैध वैध व्याख्या के साथ, एक वैध पारदर्शी बनी हुई है।
अभ्यास में नाम समाधान पूरा करने के लिए मशीनरी एक बड़ी गड़बड़ है। लेकिन यह सी ++ कमेटी की गलती है, न कि पार्सर या नाम रिज़ॉल्वर। हमारे उपकरण के साथ अस्पष्टता को हटाने वास्तव में स्वचालित रूप से किया जाता है, जिससे वह हिस्सा वास्तव में बहुत अच्छा होता है लेकिन यदि आप हमारे उपकरण के अंदर नहीं देखते हैं तो आप इसकी सराहना नहीं करेंगे, लेकिन हम ऐसा इसलिए करते हैं क्योंकि इसका मतलब है कि एक छोटी इंजीनियरिंग टीम इसे बनाने में सक्षम थी।
See an example of resolution of template-vs-less than on C++s most vexing parse हमारे पार्सर द्वारा किया गया।
स्रोत
2016-02-14 18:36:11
एलएल व्याकरण की जांच करके आप क्या देख सकते हैं इसका एक अच्छा विचार हो सकता है। ;-) – Caduchon
@ कैडचॉन AFAIK सी ++ व्याकरण एलएल और न ही एलआर है। असल में मेरा मानना है कि यह संदर्भ-मुक्त नहीं है; यह उस उत्तर में संकेत दिया गया है जहां संदर्भ के बारे में ज्ञान सही ढंग से विश्लेषण करने के लिए आवश्यक लगता है। – Bakuriu
@ बाकुरीयू: अधिकांश पारंपरिक व्याकरण (एकल-nonterminal बाएं हाथ की तरफ) परिभाषा के अनुसार संदर्भ मुक्त हैं। सी ++ इसे नहीं बदलता है। सिंटैक्स की व्याख्या अधिकांश लैंगुगों के लिए अभ्यास में मुक्त नहीं है। इस संबंध में सी ++ अलग नहीं है। –