Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Antlr中的自定义、分类和收集错误_C#_Antlr_Antlr3_Antlr4 - Fatal编程技术网

C# Antlr中的自定义、分类和收集错误

C# Antlr中的自定义、分类和收集错误,c#,antlr,antlr3,antlr4,C#,Antlr,Antlr3,Antlr4,我是Antlr的新手。我正在尝试实现一个CSS解析器。首先,我使用语法生成解析器。我跟随作为向导。我正在使用Antlr3.4生成C#中的代码(接下来,我也将使用Antlr4.0进行尝试) 我面临着几个问题,我无法在互联网上找到资源,以便我能够清楚地理解它们 我遇到的问题: 生成不同类型(错误、警告)的自定义错误消息。这是Antlr中提供的。请为我提供一些资源,以了解如何实现这一点 在下面的教程中,我能够捕获解析和词法分析中的异常。但是,在语法中,我尝试过没有给出任何错误,即使我添加了下面的代码,

我是Antlr的新手。我正在尝试实现一个CSS解析器。首先,我使用语法生成解析器。我跟随作为向导。我正在使用Antlr3.4生成C#中的代码(接下来,我也将使用Antlr4.0进行尝试)

我面临着几个问题,我无法在互联网上找到资源,以便我能够清楚地理解它们

我遇到的问题:

  • 生成不同类型(错误、警告)的自定义错误消息。这是Antlr中提供的。请为我提供一些资源,以了解如何实现这一点

  • 在下面的教程中,我能够捕获解析和词法分析中的异常。但是,在语法中,我尝试过没有给出任何错误,即使我添加了下面的代码,并在错误的css内容上进行了测试

    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很高兴知道这一点。谢谢