Wednesday, 15 August 2012

compiler construction - Javacc : one input accepted by two rules -


मेरे पास javacc में एक व्याकरण फ़ाइल है जो निम्नानुसार है:

  टोकन: {& lt ; STRING_LITERAL: ("\" "~ [" \ "", "\\"] | "\\" (["n", "टी", "बी", "आर", "एफ", "\\" "" "", "" ""] [["0" - "7"] (["0" - "7"])? | ["0" - "3"] ["0" - " 7 "] [" 0 "-" 7 "] | ([" \ n "," \ r "] |" \ r \ n "))) * '' \" "& gt; }  

और एक उत्पादन नियम जो स्ट्रिंग_लिट्राल के विशिष्ट पैटर्न की जांच करता है I.e

  शून्य श्रेणी (): {} {& lt; DQUOTE & gt; Rangearg1 () & lt; DQUOTE & gt; } Void rangearg1 (): {} {rangepart () ("|" rangepart ()) *} void rangepart (): {} {borderboundary () [".. .." सीमाबाह्य ()]} शून्य सीमावर्ती (): {} {& Lt; MIN & gt; | & LT; मैक्स & gt; | & LT; शून्य & gt; | (& Lt; INTVALUE & gt;) + (& lt; INTVALUE1 & gt;) * | & LT; माइनस & gt; अब मेरी समस्या यह है: जब भी उसे फ़ॉर्म की एक स्ट्रिंग का सामना करना पड़ता है, तो उसे "STRING_LITERAL" का उद्भव कहने में त्रुटि दिखाई देती है (& lt; INTVALUE & gt; लाइन XX स्तंभ XX पर, अपेक्षित "\" "क्या इस त्रुटि को संभालने का कोई तरीका है?   

क्या मैं सुझाव देता हूं कि आप निम्न की तरह कुछ के साथ रेंज स्टेटमेंट को पार्स करते हैं।

  शून्य श्रेणी स्थिरता ():} {टोकन टीके;} {& lt; RANGE & gt; टीके = & lt; STRING_LITERAL & gt; {reparse (Tk.image);} ...}  

एक श्रेणी स्ट्रिंग के रूप में किसी भी स्ट्रिंग को स्वीकार करते हैं और फिर एक दूसरे पार्सर के साथ श्रेणी स्ट्रिंग की सामग्री को पार्स करते हैं।


No comments:

Post a Comment