使用ANTLR4解析文件

时间:2018-07-27 18:45:57

标签: java antlr antlr4 antlrworks

据我所知,我有一个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之类的东西,但是我似乎可以找到该类。我曾尝试从antlr创建的监听器中打印,但我不知道如何触发这些监听器

1 个答案:

答案 0 :(得分:1)

对于语法中的每个规则ruleNamey86Parser类将包含一个名为RuleNameContext的类和一个名为ruleName()的方法,该方法将根据该规则解析输入规则并返回包含解析树的RuleNameContext类的实例。然后,您可以使用侦听器或访客来浏览该解析树。

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