package ql.util; import org.antlr.v4.runtime.ANTLRFileStream; import org.antlr.v4.runtime.ANTLRInputStream; import org.antlr.v4.runtime.CharStream; import org.antlr.v4.runtime.CommonTokenStream; import ql.ast.AstBuilder; import ql.ast.AstNode; import ql.gen.QLLexer; import ql.gen.QLParser; import java.io.IOException; /** * Created by bore on 17/02/15. */ public class ParserHelper { public static AstNode ParseExpression(String input) { CharStream s = createInputStream(input); QLParser parser = createQLParser(s); QLParser.ExpressionContext c = parser.expression(); AstBuilder visitor = new AstBuilder(); return c.accept(visitor); } public static AstNode ParseQuestion(String input) { CharStream s = createInputStream(input); QLParser parser = createQLParser(s); QLParser.QuestionContext c = parser.question(); AstBuilder visitor = new AstBuilder(); return c.accept(visitor); } public static AstNode ParseIfCondition(String input) { CharStream s = createInputStream(input); QLParser parser = createQLParser(s); QLParser.IfConditionContext c = parser.ifCondition(); AstBuilder visitor = new AstBuilder(); return c.accept(visitor); } public static AstNode ParseForm(String file) { CharStream stream = createFileStream(file); QLParser parser = createQLParser(stream); QLParser.FormContext f = parser.form(); AstBuilder visitor = new AstBuilder(); return f.accept(visitor); } public static CharStream createInputStream(String input) { return new ANTLRInputStream(input); } public static CharStream createFileStream(String file) { CharStream stream = null; try { stream = new ANTLRFileStream(file); } catch (IOException e) { e.printStackTrace(); } return stream; } private static QLParser createQLParser(CharStream stream) { QLLexer lexer = new QLLexer(stream); CommonTokenStream tokens = new CommonTokenStream(lexer); return new QLParser(tokens); } }