/*
* Copyright (c) 2008-2019 Emmanuel Dupuy.
* This project is distributed under the GPLv3 license.
* This is a Copyleft license that gives the user the right to use,
* copy and modify the code freely for non-commercial purposes.
*/
package org.jd.gui.util.parser.antlr;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.tree.ParseTree;
import org.antlr.v4.runtime.tree.ParseTreeWalker;
import org.jd.gui.util.exception.ExceptionUtil;
public class ANTLRJavaParser {
public static void parse(CharStream input, JavaListener listener) {
try {
JavaLexer lexer = new JavaLexer(input);
lexer.removeErrorListeners();
CommonTokenStream tokens = new CommonTokenStream(lexer);
JavaParser parser = new JavaParser(tokens);
parser.removeErrorListeners();
ParseTree tree = parser.compilationUnit();
ParseTreeWalker.DEFAULT.walk(listener, tree);
} catch (StackOverflowError e) {
// Too complex source file, probably not written by a human.
// This error may happen on Java file generated by ANTLR for example.
assert ExceptionUtil.printStackTrace(e);
}
}
}