antlr 4.2难以使用解析器

  • 本文关键字:antlr antlr antlr4
  • 更新时间 :
  • 英文 :


我刚开始使用鹿角,我使用4.2。很容易猜出它的基本结构类似于antlr3。所以我遵循了这个问题的公认答案。(但不是Exp,我替换了Java,这意味着我想解析Java)一切都很好,直到我想编译ANTLRDemo.java示例。

当我编译它时,我得到了4个错误:

    ANTLRStringStream in = new ANTLRStringStream("some random text");
    JavaLexer lexer = new JavaLexer(in);
  • 第一个错误:类JavaLexer中的构造函数JavaLexer无法应用给定的类型;JavaLexer lexer = new JavaLexer(in);要求:CharStream发现:ANTLRStringStream原因:实际参数ANTLRStringStream不能通过方法转换为CharStream调用转换(我知道这个错误是什么;-)

    CommonTokenStream tokens = new CommonTokenStream( lexer);
    JavaParser parser = new JavaParser(tokens);
    System.out.println(parser.eval());
    

为简洁起见,假设每一行都有类似的错误。例如,"parser"没有"eval()"方法。

我错过了什么?我猜antlr4跑起来不像3。什么好主意吗?

在ANTLR 4中,使用ANTLRInputStream代替ANTLR 3中的旧ANTLRStringStream

当语法中有一个名为eval的解析器规则时,存在eval()方法。为语法中的每个规则创建一个这样的方法。如果您不打算在规则eval处开始解析,那么您应该用特定语法的开始规则的名称替换该调用。

相关内容

  • 没有找到相关文章

最新更新