我有一个基于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接口或扩展ANTLR生成的GYOOBaseListener抽象类)。如果未定义侦听器类,则没有理由调用addParseListener

关于java - Antlr主类错误:MyListener无法解析为一种类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52866081/

10-10 04:08