使用 ANTLR4 解析文件

Parse a file using ANTLR4

据我所知,我有一个 Lexer 和一个名为 y86 Lexer and Parser 的解析器。但是我有一个包含 y86 命令的文件,我想使用 Java 来解析它们。到目前为止,我的代码如下。

y86Lexer y86 = null;
CommonTokenStream tokenStream = null;
y86Parser y86p = null;

try
{
    y86 = new y86Lexer(CharStreams.fromFileName("C:\Users\saigbomian\Documents"
            + "\LearnANTLR\src\sum.ys"));
    tokenStream = new CommonTokenStream(y86);
    y86p = new y86Parser(tokenStream);

}
catch (IOException e)
{
    log.error("Error occured while reading from file");
    e.printStackTrace();
} 

我不确定如何进行解析。我看到人们使用类似 y86Parser.CompilationUnitContext 的东西,但我似乎可以找到 class。我试过从 antlr 创建的监听器打印,但我不知道如何触发这些监听器

对于语法中的每个规则 ruleNamey86Parser class 将包含一个名为 RuleNameContext 的 class 和一个名为 ruleName(),它将根据该规则和 return 包含解析树的 RuleNameContext class 的实例解析输入。然后,您可以使用侦听器或访问器来遍历该解析树。

因此,如果您没有 compilationUnit 方法或 CompilationUnitContext class,您的语法可能只是没有名为 compilationUnit 的规则。相反,您应该选择一个您拥有的规则并调用与该规则对应的方法。