ANTLR4自动生成的文件充满错误

时间:2018-11-28 16:02:16

标签: antlr antlr4

我是语言设计和实现方面的完整入门者,而且我通常是经验不足的程序员。我正在尝试使用ANTLR4来编写自己的编程语言,但是首先我想follow a tutorial,以便对如何进行自己的项目有所了解。在链接的教程中,我尝试遵循Spreadsheet Project(项目#29-32),因为我真的很熟悉C#,并且这是唯一使用C#的教程项目。我设法很容易地创建了语法,并且在运行以下命令时它似乎可以正常编译:

antlr4 -Dlanguage=CSharp Spreadsheet.g4

这将生成所需的文件:

File System after Generation

在这里我遇到了一些问题。也就是说,ANTLR生成的文件似乎充满了错误:

enter image description here (我在这里仅显示图片,因为存在太多错误,无法全部写出。如果需要指定任何特定的错误,请告诉我,我将其写出来。)

本教程为我提供了Program类:

using System;
using Antlr4.Runtime;

namespace AntlrTutorial
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = "log(10 + A1 * 35 + (5.4 - 7.4))";

            AntlrInputStream inputStream = new AntlrInputStream(input);
            SpreadsheetLexer spreadsheetLexer = new SpreadsheetLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(spreadsheetLexer);
            SpreadsheetParser spreadsheetParser = new SpreadsheetParser(commonTokenStream);

            SpreadsheetParser.ExpressionContext expressionContext = spreadsheetParser.expression();
            SpreadsheetVisitor visitor = new SpreadsheetVisitor();

            Console.WriteLine(visitor.Visit(expressionContext));
        }
    }
}

这给党带来了许多新的错误。例如:

  

错误CS1729'SpreadsheetLexer'不包含带有1个参数的构造函数

似乎该行指向Spreadsheet.g4.lexer.cs而不是生成的SpreadsheetLexer.cs,后者确实包含构造函数。我不知道为什么要指出它在哪里,如果那是预期的功能,或者如果没有解决该如何解决。

我发现this GitHub issue似乎涵盖了类似的问题,但是我不知道我的情况是否相同,如果这样,我也不知道如何解决。

如果任何人都知道我的问题可能是什么以及如何解决它们,我将非常感谢您的投入。

0 个答案:

没有答案