【问题标题】:Cannot Find Symbol when compiling a java code编译java代码时找不到符号
【发布时间】:2020-06-16 03:26:45
【问题描述】:

使用 cmd 编译:javac Test.java。但是编译失败,说它找不到符号 parser.prog()。有什么想法吗?

import org.antlr.runtime.*;

    public class TestT {
        public static void main(String[] args) throws Exception {

            // Create an TLexer that feeds from that stream
            //TLexer lexer = new TLexer(new ANTLRInputStream(System.in));
            TLexer lexer = new TLexer(new ANTLRFileStream("input.txt"));

            // Create a stream of tokens fed by the lexer
            CommonTokenStream tokens = new CommonTokenStream(lexer);

            // Create a parser that feeds off the token stream
            TParser parser = new TParser(tokens);

            // Begin parsing at rule prog
            parser.prog();
        }
    }

【问题讨论】:

  • 请发布TParser的文档/代码的链接。
  • 请注意,antlr 生成了这个解析器。我只写语法。
  • 我在其中找不到方法prog()。我在ParserRecognizer 中也找不到它。看看here,也许你会找到解决办法。
  • 那么生成解析器的方法是什么?任何想法? @akuzminykh

标签: java antlr antlr3


【解决方案1】:

在您的T.g4 语法(或T.g)中,您还必须有一个名为prog 的解析器规则:

grammar T;

prog
 : ...
 ;

...

查看您生成的解析器,我看到您有这样的解析器规则:

filter
 : expression EOF
 ;

改用它:

// Begin parsing at rule prog
parser.filter();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    相关资源
    最近更新 更多