首页 > 解决方案 > 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()”所在的位置都有一个随机名称。正确的说法应该是什么?

谢谢!

标签: javaantlr4

解决方案


您传递给的侦听器addParseListener应该是您自己定义的类(并实现GYOOListener接口或扩展GYOOBaseListener由 ANTLR 生成的抽象类)。如果您没有定义侦听器类,则没有理由调用addParseListener.


推荐阅读