Ошибка основного класса Antlr: MyListener не может быть преобразован в тип - PullRequest
0 голосов
/ 18 октября 2018

У меня есть проект на основе 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 ()».Что должно быть правильное утверждение для этого?

Спасибо!

1 Ответ

0 голосов
/ 18 октября 2018

Прослушиватель, который вы передаете addParseListener, должен быть классом, который вы определили сами (и который реализует интерфейс GYOOListener или расширяет абстрактный класс GYOOBaseListener, сгенерированный ANTLR).Если вы не определили класс слушателя, нет причины вызывать addParseListener.

...