java - Antlr 主类错误:MyListener 无法解析为类型
问题描述
我有一个基于 antlr4 的项目,其 Main 类包含以下代码:
package com.progur.langtutorial;
import java.io.FileInputStream;
import java.io.IOException;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.CharStreams;
import org.antlr.v4.runtime.CommonTokenStream;
public class Main {
@SuppressWarnings("deprecation")
public static void main(String[] args) {
try {
CharStream input = CharStreams.fromString("test");
GYOOLexer lexer = new GYOOLexer(input);
GYOOParser parser = new GYOOParser(new CommonTokenStream(lexer));
parser.addParseListener(new MyListener());
// Start parsing
parser.program();
} catch (IOException e) {
e.printStackTrace();
}
}
}
但是,我在 parser.addParseListener(new MyListener()); 中有一个错误。它说的地方MyListener cannot be resolved to a type
。那意味着什么?在我查看的每个教程中,“MyListener()”所在的位置都有一个随机名称。正确的说法应该是什么?
谢谢!
解决方案
您传递给的侦听器addParseListener
应该是您自己定义的类(并实现GYOOListener
接口或扩展GYOOBaseListener
由 ANTLR 生成的抽象类)。如果您没有定义侦听器类,则没有理由调用addParseListener
.
推荐阅读
- c++ - 在循环中初始化结构时,为什么地址总是相同的?
- python - 使用数据框python分隔CSV中特定列的分隔符
- lisp - Common Lisp 中的 getter/accessor 等价物
- recaptcha - 验证 g-captcha-response 参数
- swiftui - 一起使用 .redacted 和 AsyncImage
- admob - Admob 收到大量请求,导致无效流量应用到我的帐户
- android - 是否可以仅在共享表中将您的应用显示为接收器,以获取特定数量的 Android 附件?
- windows - 关于选择链接文件时的上下文菜单设置
- java - 如何在 Anylogic 仿真实验页面上有一个按钮来运行模型并显示主页?
- postgresql - 无法使用 PostgreSQL JDBC 驱动程序通过 SSL 连接