package edu.parser; import org.antlr.v4.runtime.ANTLRFileStream; import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.Lexer; import org.antlr.v4.runtime.Parser; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.ParseTreeVisitor; import java.io.IOException; /** * Created by Steven Kok on 17/02/2015. */ public abstract class AntlrParser { public <T> T parse(String inputFilePath, ParseTreeVisitor visitor, Class<T> returnClass) throws IOException { ANTLRFileStream antlrFileStream = new ANTLRFileStream(inputFilePath); Lexer lexer = getLexer(antlrFileStream); CommonTokenStream commonTokenStream = new CommonTokenStream(lexer); Parser parser = getParser(commonTokenStream); Object visit = visitor.visit(getParseTree(parser)); return returnClass.cast(visit); } protected abstract Lexer getLexer(ANTLRFileStream antlrFileStream); protected abstract Parser getParser(CommonTokenStream commonTokenStream); protected abstract ParseTree getParseTree(Parser parser); }