package org.nlamah.QBase.Tools;
import org.antlr.v4.runtime.ANTLRErrorListener;
import org.antlr.v4.runtime.ANTLRInputStream;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.tree.ParseTree;
import org.nlamah.QL.QLLexer;
import org.nlamah.QL.QLParser;
import org.nlamah.QL.Builders.RawFormBuilder;
import org.nlamah.QL.Model.Expression.Abstract.Expression;
import org.nlamah.QLS.QLSLexer;
import org.nlamah.QLS.QLSParser;
public class AntlrTools
{
static public QLParser createQLParserWithSourceCode(String sourceCode)
{
ANTLRInputStream input = new ANTLRInputStream(sourceCode);
QLLexer lexer = new QLLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
return new QLParser(tokens);
}
static public ParseTree createFormTreeFromSourceCode(String sourceCode, ANTLRErrorListener listener)
{
QLParser parser = createQLParserWithSourceCode(sourceCode);
parser.addErrorListener(listener);
return parser.form();
}
static public Expression createQLExpressionFromString(String sourceCode)
{
QLParser parser = createQLParserWithSourceCode(sourceCode);
ParseTree tree = parser.expression();
RawFormBuilder formBuilder = new RawFormBuilder();
Expression expression = (Expression)formBuilder.visit(tree);
return expression;
}
static public ParseTree createStylesheetTreeFromSourceCode(String sourceCode, ANTLRErrorListener listener)
{
ANTLRInputStream input = new ANTLRInputStream(sourceCode);
QLSLexer lexer = new QLSLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
QLSParser parser = new QLSParser(tokens);
parser.addErrorListener(listener);
return parser.stylesheet();
}
}