yacc shift/reduce conflict -


मुझे yacc संकलन के दौरान संघर्ष समस्या का सामना करना पड़ा।

नीचे त्रुटि संदेश:

  24: '/' राज्य 24 अंकगणितीय _leaf: absolute_path पर संघर्ष / बदलाव को कम करें (बदलाव 66, कम करें 99) (99) निरपेक्ष_पाथ: निरपेक्ष_पाथ '/' Relative_ path (102)   

नीचे कोड:

  arithmetic_leaf: '(' arithmetic_expression ')' {} | पूर्णांक_मूल्य {} | | Real_value {} | Absolute_path {}; पूर्ण_पाथ: '/' {} | '/' Relative_ path {} | Absolute_path '/' relative_ path {}; Relative_ path: path_segment {} | Relative_path '/' path_segment {}; Path_segment: V_ATTRIBUTE_IDENTIFIER V_LOCAL_TERM_CODE_REF {} | V_ATTRIBUTE_IDENTIFIER '[' V_ARCHETYPE_ID ']' {} | V_ATTRIBUTE_IDENTIFIER {};   

इस बिंदु पर, 'बदलाव / कम' संघर्ष होगा।

मुझे नहीं पता कि समस्या क्या है। इस संघर्ष को हल करने के लिए कैसे?

धन्यवाद।

संघर्ष (मुझे दिखाई देता है ) को absolute_path के विकल्प के बीच होना चाहिए।

ऐसा लगता है कि '/ a / b' / /> की तरह एक स्ट्रिंग को absolute_path ' / 'Relative_path नियम, या को ' / 'relative_path नियम।

कम से कम मेरे लिए ऐसा लगता है कि आप चाहते हैं दो में से एक को समाप्त मुझे शायद यह लिखना होगा:

  absolute_path: '/' | '/' तुलनात्मक पथ ;   

वैकल्पिक रूप से, यह सिर्फ एक खाली स्ट्रिंग होने के लिए relative_path को अनुमति देने के लिए और अधिक समझ सकता है, उस स्थिति में, आप ऐसा कुछ के साथ समाप्त कर सकते हैं:

  पूर्ण_पाथ: '/' relative_ path; Relative_path: | पथ_सेगमेंट | Relative_path '/' path_segment;    

Comments