Monday, 15 June 2015

antlr - ANTLR4 - how to specify line does not start with specific character? -


निम्न निश्चित एएनटीएलआर 4 संदर्भ <पूर्व> STUFF: ~ [\ t \ r \ n] +; // टैब, न्यूलाइन

को छोड़कर किसी भी वर्ण का मिलान करें मैं * के साथ शुरू होने वाली एक पंक्ति के लिए वैकल्पिक पथ को परिभाषित करने का प्रयास कर रहा हूं। उदाहरण के लिए:

  पंक्ति: ~ एस्ट्रैक्स कुंजी; एस्ट्रैक्स: '*';   

लेकिन, मैं ASTERIX नहीं है जो सब कुछ से मेल नहीं करना चाहता, मैं चाहता हूँ कि लाइन नियम को निष्पादित करने के लिए जब लाइन ASTERIX के साथ शुरू नहीं होता है और फिर शेष मिलान शुरू करते हैं।

आप ASTERISK नियम को केवल मैच * एक पंक्ति की शुरुआत में प्रदर्शित होता है।

  ASTERISK: '*' {_input.LA (-2) == '\ n'} ?;   

फिर आपका लाइन नियम बस ASTERISK संदर्भ नहीं कर सकता है।

  पंक्ति: कुंजियां;  कुंजी  के रूप में  ASTERISK  को पहले प्रतीक के रूप में नहीं देता है, फिर  लाइन  सकते हैं ' टी एक लाइन से मेल खाता है जहां पहला टोकन है  ASTERISK   

No comments:

Post a Comment