package org.fugazi.qls.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.AbstractASTNode; import org.fugazi.qls.ast.stylesheet.StyleSheet; import org.fugazi.qls.parser.QLSLexer; import org.fugazi.qls.parser.QLSParser; import java.io.IOException; import java.io.InputStream; public class QLSASTBuilder { private final QLSParser parser; public QLSASTBuilder(InputStream inputStream) throws IOException { ANTLRInputStream input = new ANTLRInputStream(inputStream); QLSLexer lexer = new QLSLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); this.parser = new QLSParser(tokens); } public StyleSheet buildStyleSheet() { return (StyleSheet) buildFromTree(parser.stylesheet()); } private AbstractASTNode buildFromTree(ParseTree tree) { return tree.accept(new FugaziQLSVisitor()); } }