C# Antlr中的自定义、分类和收集错误
我是Antlr的新手。我正在尝试实现一个CSS解析器。首先,我使用语法生成解析器。我跟随作为向导。我正在使用Antlr3.4生成C#中的代码(接下来,我也将使用Antlr4.0进行尝试) 我面临着几个问题,我无法在互联网上找到资源,以便我能够清楚地理解它们 我遇到的问题:C# Antlr中的自定义、分类和收集错误,c#,antlr,antlr3,antlr4,C#,Antlr,Antlr3,Antlr4,我是Antlr的新手。我正在尝试实现一个CSS解析器。首先,我使用语法生成解析器。我跟随作为向导。我正在使用Antlr3.4生成C#中的代码(接下来,我也将使用Antlr4.0进行尝试) 我面临着几个问题,我无法在互联网上找到资源,以便我能够清楚地理解它们 我遇到的问题: 生成不同类型(错误、警告)的自定义错误消息。这是Antlr中提供的。请为我提供一些资源,以了解如何实现这一点 在下面的教程中,我能够捕获解析和词法分析中的异常。但是,在语法中,我尝试过没有给出任何错误,即使我添加了下面的代码,
partial class CSS3Lexer
{
public override void ReportError(RecognitionException e)
{
base.ReportError(e);
Console.WriteLine("Error in lexer at line " + e.Line + ":" + e.CharPositionInLine + e.Message);
}
}
我也想就我的方法获得建议,因为我仍然无法获得更优雅的设计。ANTLR唯一的内置错误报告机制非常简单,并且没有提供一种方法来为特定错误提供错误类别或数字。通常,在解析时发生的所有语法错误都被赋予相同的错误号。例如,ANTLR 4工具将解析器错误报告为错误50
初始解析完成后,您可以使用解析树(antlr4)或AST(antlr3)继续执行语义求值。根据其总体影响,从此处识别的错误可以被视为错误或警告。您为此使用的数据结构有时是特定于应用程序的,例如Visual Studio或NetBeans扩展,它需要向特定的UI组件报告错误/警告,但在其他方面,您可以自由地以任何对您有意义的方式进行定义。FYI,代码块的格式不正确,因为它被放置在列表项中。在这种情况下,它需要额外的4个缩进空间(总共8个)。@BartKiers很高兴知道这一点。谢谢