में एक पार्सर द्वारा दिए गए रन टाइम के दौरान त्रुटियों को कैसे एकत्र करें I Antlr 3 से Antlr 4 में अपग्रेड किया गया है। मैं इस कोड का उपयोग करके अपवादों को पकड़ने के लिए इस कोड का उपयोग कर रहा था। लेकिन इस antlr 4.Antlr4
partial class XParser
{
public override void ReportError(RecognitionException e)
{
base.ReportError(e);
Console.WriteLine("Error in Parser at line " + ":" + e.OffendingToken.Column + e.OffendingToken.Line + e.Message);
}
}
के लिए काम नहीं कर रहा यह त्रुटि दिखाई देने वाले
'Parser.ReportError(Antlr4.Runtime.RecognitionException)': no suitable method found to override
antlr 4 में त्रुटियों है कि इनपुट धारा में होता है एकत्रित कर पाने में उम्मीद तरीका है क्या है। मैं नेट पर इसे हासिल करने का कोई तरीका नहीं ढूंढ पाया। कृपया मुझे कुछ दिशानिर्देश प्रदान करें।
संपादित करें:
मैं
partial class XParser : IAntlrErrorListener<IToken>
{
public void SyntaxError(IRecognizer recognizer, IToken offendingSymbol, int line, int charPositionInLine, string msg, RecognitionException e)
{
Console.WriteLine("Error in parser at line " + ":" + e.OffendingToken.Column + e.OffendingToken.Line + e.Message);
}
}
नीचे के रूप में XParser को लागू किया है जैसा कि आपने कहा है कि मैं इस पार्सर उल्लेख वर्गों में से किसी का उपयोग कर वर्ग का विस्तार कर सकते हैं। लेकिन मैं इस श्रोता को पंजीकृत करने में असमर्थ था, मुख्य कार्यक्रम में मैं listener
के रूप में उत्तीर्ण तर्क के साथ उलझन में हूं। कृपया पंजीकरण के साथ मेरी मदद करें।
जैसा कि मैं देख सकता हूं कि इन वर्गों में अधिक सार्थक त्रुटि संदेश बनाने की क्षमता है, है ना?
कृपया मेरे संपादन पर एक नज़र डालें। मुझे कुछ भ्रम और स्पष्टीकरण है। काम के माध्यम से बड़ी मदद के लिए धन्यवाद। इसे बहुत सराहना करो। –
@Diode मैंने अपनी पोस्ट अपडेट की। :) –
@ 2 9 0Z28 धन्यवाद कि काम करता है। मैं लेक्सर के लिए एक ही चीज़ क्यों नहीं कर सकता। मैंने एक और वर्ग बनाकर और 'IAntlrErrorListener' से कार्यान्वित करके पार्सर के लिए जो किया, उसका अनुकरण करने की कोशिश की। लेक्सर इंस्टेंस में 'AddErrorListener' एक विधि है। –