java - 编译java代码时找不到符号

标签 java antlr antlr3

使用 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();
        }
    }

最佳答案

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

grammar T;

prog
 : ...
 ;

...

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

filter
 : expression EOF
 ;

使用它来代替:

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

关于java - 编译java代码时找不到符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60512470/

相关文章:

java - 将 tinyint 映射为 boolean hibernate

java - ANTLR3 中的自定义初始化/清理

java - 导出 Android 应用程序时出错

java - 如果对话框文本字段与私有(private)文本字段匹配,系统退出

java - 从 beanshell 或 Java 程序使用 ANTLR

c - 如何在 ANTLR 中为 C 解析器实现词法分析器 hack

java - 使用 javax.lang.model 或 ANTLR JavaParser 获取 Java 源代码信息的示例/教程

c# - ANTLR:我可以让 ',' 成为一个上下文中的一个标记,而另一个在所述上下文之外吗?

antlr - ANTLR 3中如何匹配固定数量的字符?

Java删除或修改File中的一条记录