首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到符号

找不到符号
EN

Stack Overflow用户
提问于 2015-01-11 12:30:08
回答 2查看 5.2K关注 0票数 5

我有一个名为"Test.g4“的ANTLR项目,我使用antlrworks2创建的文件没有任何问题: Test.tokens、TestBaseListner.java、TestLexer.java、TestLexer.tokens、TestListener.java和TestParser.java。

现在,我想在我的程序Test.java中使用语法:

代码语言:javascript
复制
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.tree.*;

public class Test {
    public static void main(String[] args) throws Exception {
        // create a CharStream that reads from standard input
        ANTLRInputStream input = new ANTLRInputStream(System.in);

        // create a lexer that feeds off of input CharStream
        TestLexer lexer = new TestLexer(input);

        // create a buffer of tokens pulled from the lexer
        CommonTokenStream tokens = new CommonTokenStream(lexer);

        // create a parser that feeds off the tokens buffer
        TestParser parser = new TestParser(tokens);

        ParseTree tree = parser.init(); // begin parsing at init rule
        System.out.println(tree.toStringTree(parser)); // print LISP-style tree
    }
}

当我尝试用"javac -classpath /path/java2/antlr-4.4-complete.jar Test.java"编译它时,我会得到以下错误:

代码语言:javascript
复制
Test.java:19: error: cannot find symbol
        TestLexer lexer = new TestLexer(input);
        ^
  symbol:   class TestLexer
  location: class Test
Test.java:19: error: cannot find symbol
        TestLexer lexer = new TestLexer(input);
                                        ^
  symbol:   class TestLexer
  location: class Test
Test.java:25: error: cannot find symbol
        TestParser parser = new TestParser(tokens);
        ^
  symbol:   class TestParser
  location: class Test
Test.java:25: error: cannot find symbol
        TestParser parser = new TestParser(tokens);
                                          ^
  symbol:   class TestParser
  location: class Test
4 errors

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-11 12:52:41

TestLexer.javaTestParser.java也应该在同一个命令中使用Test.java编译,否则编译器将不知道在哪里查找它们的二进制文件。尝试按以下方式调用javac

代码语言:javascript
复制
javac -classpath /path/java2/antlr-4.4-complete.jar *java

或者手动传递所有文件:

代码语言:javascript
复制
javac -classpath /path/java2/antlr-4.4-complete.jar Test.java TestLexer.java TestParser.java
票数 2
EN

Stack Overflow用户

发布于 2015-01-11 12:44:18

您需要构建和导入由ANTLR生成的lexer和解析器。要做到这一点,你需要:

  1. 使用main方法将导入语句添加到文件中
  2. 将ANTLR生成的类放入包中,如导入语句中所示
  3. 使用主方法构建生成的类和类
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27887058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档