package org.fugazi.ql.ast;
import org.antlr.v4.runtime.ANTLRInputStream;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.tree.ParseTree;
import org.fugazi.ql.ast.form.Form;
import org.fugazi.ql.parser.QLLexer;
import org.fugazi.ql.parser.QLParser;
import java.io.IOException;
import java.io.InputStream;
public class QLASTBuilder {
private final QLParser parser;
public QLASTBuilder(InputStream inputStream) throws IOException {
ANTLRInputStream input = new ANTLRInputStream(inputStream);
QLLexer lexer = new QLLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
this.parser = new QLParser(tokens);
}
public Form buildForm() {
return (Form) buildFromTree(parser.form());
}
private AbstractASTNode buildFromTree(ParseTree tree) {
return tree.accept(new FugaziQLVisitor());
}
}