Search in sources :

Example 1 with Node

use of io.confluent.ksql.parser.tree.Node in project ksql by confluentinc.

the class KsqlParser method buildAst.

/**
 * Builds an AST from the given query string.
 */
public List<Statement> buildAst(String sql, MetaStore metaStore) {
    try {
        ParserRuleContext tree = getParseTree(sql);
        SqlBaseParser.StatementsContext statementsContext = (SqlBaseParser.StatementsContext) tree;
        List<Statement> astNodes = new ArrayList<>();
        for (SqlBaseParser.SingleStatementContext statementContext : statementsContext.singleStatement()) {
            DataSourceExtractor dataSourceExtractor = new DataSourceExtractor(metaStore);
            dataSourceExtractor.extractDataSources(statementContext);
            Node root = new AstBuilder(dataSourceExtractor).visit(statementContext);
            Statement statement = (Statement) root;
            astNodes.add(statement);
        }
        return astNodes;
    } catch (Exception e) {
        // if we fail, parse with LL mode
        throw new ParseFailedException(e.getMessage(), e);
    }
}
Also used : ParserRuleContext(org.antlr.v4.runtime.ParserRuleContext) DataSourceExtractor(io.confluent.ksql.util.DataSourceExtractor) Statement(io.confluent.ksql.parser.tree.Statement) Node(io.confluent.ksql.parser.tree.Node) ParseFailedException(io.confluent.ksql.parser.exception.ParseFailedException) ArrayList(java.util.ArrayList) ParseCancellationException(org.antlr.v4.runtime.misc.ParseCancellationException) ParseFailedException(io.confluent.ksql.parser.exception.ParseFailedException) RecognitionException(org.antlr.v4.runtime.RecognitionException)

Example 2 with Node

use of io.confluent.ksql.parser.tree.Node in project ksql by confluentinc.

the class KsqlParser method prepareStatement.

public Pair<Statement, DataSourceExtractor> prepareStatement(SqlBaseParser.SingleStatementContext statementContext, MetaStore metaStore) {
    DataSourceExtractor dataSourceExtractor = new DataSourceExtractor(metaStore);
    dataSourceExtractor.extractDataSources(statementContext);
    AstBuilder astBuilder = new AstBuilder(dataSourceExtractor);
    Node root = astBuilder.visit(statementContext);
    Statement statement = (Statement) root;
    return new Pair<>(statement, dataSourceExtractor);
}
Also used : DataSourceExtractor(io.confluent.ksql.util.DataSourceExtractor) Statement(io.confluent.ksql.parser.tree.Statement) Node(io.confluent.ksql.parser.tree.Node) Pair(io.confluent.ksql.util.Pair)

Aggregations

Node (io.confluent.ksql.parser.tree.Node)2 Statement (io.confluent.ksql.parser.tree.Statement)2 DataSourceExtractor (io.confluent.ksql.util.DataSourceExtractor)2 ParseFailedException (io.confluent.ksql.parser.exception.ParseFailedException)1 Pair (io.confluent.ksql.util.Pair)1 ArrayList (java.util.ArrayList)1 ParserRuleContext (org.antlr.v4.runtime.ParserRuleContext)1 RecognitionException (org.antlr.v4.runtime.RecognitionException)1 ParseCancellationException (org.antlr.v4.runtime.misc.ParseCancellationException)1