के बीच सी 11 व्याकरण अस्पष्टता मैं एन 1570 के बंद सी11 के लिए एक लेक्स/yacc व्याकरण लिखने की कोशिश कर रहा हूं। मेरे अधिकांश व्याकरण को सूचनात्मक वाक्यविन्यास सारांश से क्रियापद प्रतिलिपि बनाई गई है, लेकिन कुछ yacc संघर्ष उत्पन्न हुए हैं। मैंने उनमें से सभी को हल करने में कामयाब रहा है: एक 'एटॉमिक' का उपयोग एक प्रकार के विनिर्देशक के रूप में किया जाता है और जब इसे एक प्रकार क्वालीफायर के रूप में उपयोग किया जाता है तो कुछ अस्पष्टता दिखाई देती है।_11 एटमिक प्रकार विनिर्देशक और क्वालीफायर
विनिर्देशक रूप में, _Atomic तुरंत कोष्ठक द्वारा पीछा किया जाता है, इसलिए मुझे लगता है कि इसका सी के छोटे-छोटे सिंटैक्स के साथ कुछ करना है जो घोषणाकर्ताओं को कोष्ठक में रहने की अनुमति देता है, इस प्रकार कोष्ठक तुरंत क्वालीफायर का पालन करने की अनुमति देता है। लेकिन मेरा व्याकरण पहले से ही जानता है कि टाइपिफ नामों को अन्य पहचानकर्ताओं से कैसे अलग किया जाए, इसलिए yacc को अंतर पता होना चाहिए, है ना?
मैं अपने जीवन के लिए एक ऐसे मामले के बारे में सोच नहीं सकता जब यह वास्तव में संदिग्ध होगा।
मुझे संदेह है कि इससे मदद मिलती है, लेकिन जब मैं yacc's -v ध्वज का उपयोग करता हूं तो मुझे प्रासंगिक राज्य आउटपुट मिलता है। "परमाणु" स्पष्ट रूप से "_Atomic"
state 23
152 atomic_type_specifier: ATOMIC . '(' type_name ')'
156 type_qualifier: ATOMIC .
'(' shift, and go to state 49
'(' [reduce using rule 156 (type_qualifier)]
$default reduce using rule 156 (type_qualifier)
व्याकरण में विशिष्ट विनिर्देशक और क्वालीफायर काफी हद तक एक गैर-तिमाही है क्योंकि घोषणाएं विनिर्देशकों और क्वालीफायरों को किसी भी क्रम में मिश्रित कर सकती हैं: 'बिना हस्ताक्षरित int', 'हस्ताक्षरित const int', 'int unsigned const', ... – Kaz