Search in sources :

Example 31 with ParserRuleReturnScope

use of org.antlr.runtime.ParserRuleReturnScope in project drools by kiegroup.

the class DSLMapParser method pattern.

// $ANTLR start "pattern"
// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:219:1: pattern : ( literal | DOT | MISC | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+ ;
public final DSLMapParser.pattern_return pattern() throws RecognitionException {
    DSLMapParser.pattern_return retval = new DSLMapParser.pattern_return();
    retval.start = input.LT(1);
    Object root_0 = null;
    Token DOT28 = null;
    Token MISC29 = null;
    Token LEFT_CURLY30 = null;
    Token RIGHT_CURLY32 = null;
    Token LEFT_SQUARE33 = null;
    Token RIGHT_SQUARE35 = null;
    ParserRuleReturnScope literal27 = null;
    ParserRuleReturnScope literal31 = null;
    ParserRuleReturnScope pattern34 = null;
    Object DOT28_tree = null;
    Object MISC29_tree = null;
    Object LEFT_CURLY30_tree = null;
    Object RIGHT_CURLY32_tree = null;
    Object LEFT_SQUARE33_tree = null;
    Object RIGHT_SQUARE35_tree = null;
    try {
        // src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:220:9: ( ( literal | DOT | MISC | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+ )
        // src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:220:11: ( literal | DOT | MISC | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+
        {
            root_0 = (Object) adaptor.nil();
            // src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:220:11: ( literal | DOT | MISC | LEFT_CURLY literal RIGHT_CURLY | LEFT_SQUARE pattern RIGHT_SQUARE )+
            int cnt16 = 0;
            loop16: while (true) {
                int alt16 = 6;
                switch(input.LA(1)) {
                    case RIGHT_SQUARE:
                        {
                            int LA16_2 = input.LA(2);
                            if ((synpred24_DSLMap())) {
                                alt16 = 1;
                            }
                        }
                        break;
                    case LEFT_SQUARE:
                        {
                            int LA16_3 = input.LA(2);
                            if ((synpred24_DSLMap())) {
                                alt16 = 1;
                            } else if ((synpred28_DSLMap())) {
                                alt16 = 5;
                            }
                        }
                        break;
                    case DOT:
                        {
                            alt16 = 2;
                        }
                        break;
                    case MISC:
                        {
                            alt16 = 3;
                        }
                        break;
                    case LEFT_CURLY:
                        {
                            alt16 = 4;
                        }
                        break;
                    case COLON:
                    case LITERAL:
                        {
                            alt16 = 1;
                        }
                        break;
                }
                switch(alt16) {
                    case 1:
                        // src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:220:13: literal
                        {
                            pushFollow(FOLLOW_literal_in_pattern1290);
                            literal27 = literal();
                            state._fsp--;
                            if (state.failed)
                                return retval;
                            if (state.backtracking == 0)
                                adaptor.addChild(root_0, literal27.getTree());
                        }
                        break;
                    case 2:
                        // src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:221:13: DOT
                        {
                            DOT28 = (Token) match(input, DOT, FOLLOW_DOT_in_pattern1304);
                            if (state.failed)
                                return retval;
                            if (state.backtracking == 0) {
                                DOT28_tree = (Object) adaptor.create(DOT28);
                                adaptor.addChild(root_0, DOT28_tree);
                            }
                        }
                        break;
                    case 3:
                        // src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:222:13: MISC
                        {
                            MISC29 = (Token) match(input, MISC, FOLLOW_MISC_in_pattern1318);
                            if (state.failed)
                                return retval;
                            if (state.backtracking == 0) {
                                MISC29_tree = (Object) adaptor.create(MISC29);
                                adaptor.addChild(root_0, MISC29_tree);
                            }
                        }
                        break;
                    case 4:
                        // src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:223:13: LEFT_CURLY literal RIGHT_CURLY
                        {
                            LEFT_CURLY30 = (Token) match(input, LEFT_CURLY, FOLLOW_LEFT_CURLY_in_pattern1332);
                            if (state.failed)
                                return retval;
                            if (state.backtracking == 0) {
                                LEFT_CURLY30_tree = (Object) adaptor.create(LEFT_CURLY30);
                                adaptor.addChild(root_0, LEFT_CURLY30_tree);
                            }
                            pushFollow(FOLLOW_literal_in_pattern1334);
                            literal31 = literal();
                            state._fsp--;
                            if (state.failed)
                                return retval;
                            if (state.backtracking == 0)
                                adaptor.addChild(root_0, literal31.getTree());
                            RIGHT_CURLY32 = (Token) match(input, RIGHT_CURLY, FOLLOW_RIGHT_CURLY_in_pattern1336);
                            if (state.failed)
                                return retval;
                            if (state.backtracking == 0) {
                                RIGHT_CURLY32_tree = (Object) adaptor.create(RIGHT_CURLY32);
                                adaptor.addChild(root_0, RIGHT_CURLY32_tree);
                            }
                        }
                        break;
                    case 5:
                        // src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:224:13: LEFT_SQUARE pattern RIGHT_SQUARE
                        {
                            LEFT_SQUARE33 = (Token) match(input, LEFT_SQUARE, FOLLOW_LEFT_SQUARE_in_pattern1350);
                            if (state.failed)
                                return retval;
                            if (state.backtracking == 0) {
                                LEFT_SQUARE33_tree = (Object) adaptor.create(LEFT_SQUARE33);
                                adaptor.addChild(root_0, LEFT_SQUARE33_tree);
                            }
                            pushFollow(FOLLOW_pattern_in_pattern1352);
                            pattern34 = pattern();
                            state._fsp--;
                            if (state.failed)
                                return retval;
                            if (state.backtracking == 0)
                                adaptor.addChild(root_0, pattern34.getTree());
                            RIGHT_SQUARE35 = (Token) match(input, RIGHT_SQUARE, FOLLOW_RIGHT_SQUARE_in_pattern1354);
                            if (state.failed)
                                return retval;
                            if (state.backtracking == 0) {
                                RIGHT_SQUARE35_tree = (Object) adaptor.create(RIGHT_SQUARE35);
                                adaptor.addChild(root_0, RIGHT_SQUARE35_tree);
                            }
                        }
                        break;
                    default:
                        if (cnt16 >= 1)
                            break loop16;
                        if (state.backtracking > 0) {
                            state.failed = true;
                            return retval;
                        }
                        EarlyExitException eee = new EarlyExitException(16, input);
                        throw eee;
                }
                cnt16++;
            }
        }
        retval.stop = input.LT(-1);
        if (state.backtracking == 0) {
            retval.tree = (Object) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
        }
    } catch (RecognitionException re) {
        reportError(re);
        recover(input, re);
        retval.tree = (Object) adaptor.errorNode(input, retval.start, input.LT(-1), re);
    } finally {
    // do for sure before leaving
    }
    return retval;
}
Also used : Token(org.antlr.runtime.Token) CommonToken(org.antlr.runtime.CommonToken) EarlyExitException(org.antlr.runtime.EarlyExitException) RewriteEarlyExitException(org.antlr.runtime.tree.RewriteEarlyExitException) ParserRuleReturnScope(org.antlr.runtime.ParserRuleReturnScope) RecognitionException(org.antlr.runtime.RecognitionException)

Example 32 with ParserRuleReturnScope

use of org.antlr.runtime.ParserRuleReturnScope in project drools by kiegroup.

the class DSLMapParser method value_section.

// $ANTLR start "value_section"
// src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:167:1: value_section : ( value_sentence )+ -> ^( VT_ENTRY_VAL ( value_sentence )+ ) ;
public final DSLMapParser.value_section_return value_section() throws RecognitionException {
    DSLMapParser.value_section_return retval = new DSLMapParser.value_section_return();
    retval.start = input.LT(1);
    Object root_0 = null;
    ParserRuleReturnScope value_sentence18 = null;
    RewriteRuleSubtreeStream stream_value_sentence = new RewriteRuleSubtreeStream(adaptor, "rule value_sentence");
    try {
        // src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:168:5: ( ( value_sentence )+ -> ^( VT_ENTRY_VAL ( value_sentence )+ ) )
        // src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:168:7: ( value_sentence )+
        {
            // src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:168:7: ( value_sentence )+
            int cnt11 = 0;
            loop11: while (true) {
                int alt11 = 2;
                int LA11_0 = input.LA(1);
                if (((LA11_0 >= COLON && LA11_0 <= DOT) || LA11_0 == EQUALS || (LA11_0 >= LEFT_CURLY && LA11_0 <= LITERAL) || LA11_0 == RIGHT_SQUARE)) {
                    alt11 = 1;
                }
                switch(alt11) {
                    case 1:
                        // src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:168:7: value_sentence
                        {
                            pushFollow(FOLLOW_value_sentence_in_value_section664);
                            value_sentence18 = value_sentence();
                            state._fsp--;
                            if (state.failed)
                                return retval;
                            if (state.backtracking == 0)
                                stream_value_sentence.add(value_sentence18.getTree());
                        }
                        break;
                    default:
                        if (cnt11 >= 1)
                            break loop11;
                        if (state.backtracking > 0) {
                            state.failed = true;
                            return retval;
                        }
                        EarlyExitException eee = new EarlyExitException(11, input);
                        throw eee;
                }
                cnt11++;
            }
            // wildcard labels:
            if (state.backtracking == 0) {
                retval.tree = root_0;
                RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream(adaptor, "rule retval", retval != null ? retval.getTree() : null);
                root_0 = (Object) adaptor.nil();
                // 169:5: -> ^( VT_ENTRY_VAL ( value_sentence )+ )
                {
                    // src/main/resources/org/drools/compiler/lang/dsl/DSLMap.g:169:8: ^( VT_ENTRY_VAL ( value_sentence )+ )
                    {
                        Object root_1 = (Object) adaptor.nil();
                        root_1 = (Object) adaptor.becomeRoot((Object) adaptor.create(VT_ENTRY_VAL, "VT_ENTRY_VAL"), root_1);
                        if (!(stream_value_sentence.hasNext())) {
                            throw new RewriteEarlyExitException();
                        }
                        while (stream_value_sentence.hasNext()) {
                            adaptor.addChild(root_1, stream_value_sentence.nextTree());
                        }
                        stream_value_sentence.reset();
                        adaptor.addChild(root_0, root_1);
                    }
                }
                retval.tree = root_0;
            }
        }
        retval.stop = input.LT(-1);
        if (state.backtracking == 0) {
            retval.tree = (Object) adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
        }
    } catch (RecognitionException re) {
        reportError(re);
        recover(input, re);
        retval.tree = (Object) adaptor.errorNode(input, retval.start, input.LT(-1), re);
    } finally {
    // do for sure before leaving
    }
    return retval;
}
Also used : RewriteRuleSubtreeStream(org.antlr.runtime.tree.RewriteRuleSubtreeStream) EarlyExitException(org.antlr.runtime.EarlyExitException) RewriteEarlyExitException(org.antlr.runtime.tree.RewriteEarlyExitException) RewriteEarlyExitException(org.antlr.runtime.tree.RewriteEarlyExitException) ParserRuleReturnScope(org.antlr.runtime.ParserRuleReturnScope) RecognitionException(org.antlr.runtime.RecognitionException)

Example 33 with ParserRuleReturnScope

use of org.antlr.runtime.ParserRuleReturnScope in project hive by apache.

the class ParseDriver method parse.

/**
 * Parses a command, optionally assigning the parser's token stream to the
 * given context.
 *
 * @param command
 *          command to parse
 *
 * @param configuration
 *          hive configuration
 *
 * @return parsed AST
 */
public ParseResult parse(String command, Configuration configuration) throws ParseException {
    LOG.debug("Parsing command: {}", command);
    GenericHiveLexer lexer = GenericHiveLexer.of(command, configuration);
    TokenRewriteStream tokens = new TokenRewriteStream(lexer);
    HiveParser parser = new HiveParser(tokens);
    parser.setTreeAdaptor(adaptor);
    parser.setHiveConf(configuration);
    ParserRuleReturnScope r;
    try {
        r = parser.statement();
    } catch (RecognitionException e) {
        throw new ParseException(parser.errors);
    }
    if (lexer.getErrors().size() == 0 && parser.errors.size() == 0) {
        LOG.debug("Parse Completed");
    } else if (lexer.getErrors().size() != 0) {
        throw new ParseException(lexer.getErrors());
    } else {
        throw new ParseException(parser.errors);
    }
    ASTNode tree = (ASTNode) r.getTree();
    tree.setUnknownTokenBoundaries();
    return new ParseResult(tree, tokens, parser.gFromClauseParser.tables);
}
Also used : TokenRewriteStream(org.antlr.runtime.TokenRewriteStream) ParserRuleReturnScope(org.antlr.runtime.ParserRuleReturnScope) RecognitionException(org.antlr.runtime.RecognitionException)

Example 34 with ParserRuleReturnScope

use of org.antlr.runtime.ParserRuleReturnScope in project hive by apache.

the class ParseDriver method parseSelect.

/*
   * parse a String as a Select List. This allows table functions to be passed expression Strings
   * that are translated in
   * the context they define at invocation time. Currently used by NPath to allow users to specify
   * what output they want.
   * NPath allows expressions n 'tpath' a column that represents the matched set of rows. This
   * column doesn't exist in
   * the input schema and hence the Result Expression cannot be analyzed by the regular Hive
   * translation process.
   */
public ParseResult parseSelect(String command, Configuration configuration) throws ParseException {
    LOG.debug("Parsing command: {}", command);
    GenericHiveLexer lexer = GenericHiveLexer.of(command, configuration);
    TokenRewriteStream tokens = new TokenRewriteStream(lexer);
    // if (ctx != null) {
    // ctx.setTokenRewriteStream(tokens);
    // }
    HiveParser parser = new HiveParser(tokens);
    parser.setTreeAdaptor(adaptor);
    parser.setHiveConf(configuration);
    ParserRuleReturnScope r;
    try {
        r = parser.selectClause();
    } catch (RecognitionException e) {
        throw new ParseException(parser.errors);
    }
    if (lexer.getErrors().size() == 0 && parser.errors.size() == 0) {
        LOG.debug("Parse Completed");
    } else if (lexer.getErrors().size() != 0) {
        throw new ParseException(lexer.getErrors());
    } else {
        throw new ParseException(parser.errors);
    }
    return new ParseResult((ASTNode) r.getTree(), tokens, parser.gFromClauseParser.tables);
}
Also used : TokenRewriteStream(org.antlr.runtime.TokenRewriteStream) ParserRuleReturnScope(org.antlr.runtime.ParserRuleReturnScope) RecognitionException(org.antlr.runtime.RecognitionException)

Example 35 with ParserRuleReturnScope

use of org.antlr.runtime.ParserRuleReturnScope in project hive by apache.

the class ParseDriver method parseTriggerActionExpression.

public ASTNode parseTriggerActionExpression(String command) throws ParseException {
    GenericHiveLexer lexer = GenericHiveLexer.of(command, null);
    TokenRewriteStream tokens = new TokenRewriteStream(lexer);
    HiveParser parser = new HiveParser(tokens);
    parser.setTreeAdaptor(adaptor);
    ParserRuleReturnScope r;
    try {
        r = parser.triggerActionExpressionStandalone();
    } catch (RecognitionException e) {
        throw new ParseException(parser.errors);
    }
    if (lexer.getErrors().size() != 0) {
        throw new ParseException(lexer.getErrors());
    } else if (parser.errors.size() != 0) {
        throw new ParseException(parser.errors);
    }
    return (ASTNode) r.getTree();
}
Also used : TokenRewriteStream(org.antlr.runtime.TokenRewriteStream) ParserRuleReturnScope(org.antlr.runtime.ParserRuleReturnScope) RecognitionException(org.antlr.runtime.RecognitionException)

Aggregations

ParserRuleReturnScope (org.antlr.runtime.ParserRuleReturnScope)35 RecognitionException (org.antlr.runtime.RecognitionException)35 RewriteRuleSubtreeStream (org.antlr.runtime.tree.RewriteRuleSubtreeStream)18 Token (org.antlr.runtime.Token)16 CommonToken (org.antlr.runtime.CommonToken)14 EarlyExitException (org.antlr.runtime.EarlyExitException)10 NoViableAltException (org.antlr.runtime.NoViableAltException)10 RewriteEarlyExitException (org.antlr.runtime.tree.RewriteEarlyExitException)10 RewriteRuleTokenStream (org.antlr.runtime.tree.RewriteRuleTokenStream)8 TokenRewriteStream (org.antlr.runtime.TokenRewriteStream)5 CommonTokenStream (org.antlr.runtime.CommonTokenStream)4 GrammarASTAdaptor (org.antlr.v4.parse.GrammarASTAdaptor)4 ToolANTLRParser (org.antlr.v4.parse.ToolANTLRParser)4 ANTLRStringStream (org.antlr.runtime.ANTLRStringStream)2 RewriteEmptyStreamException (org.antlr.runtime.tree.RewriteEmptyStreamException)2 ANTLRLexer (org.antlr.v4.parse.ANTLRLexer)2 ToolANTLRLexer (org.antlr.v4.parse.ToolANTLRLexer)2 org.antlr.v4.parse.v3TreeGrammarException (org.antlr.v4.parse.v3TreeGrammarException)2 GrammarAST (org.antlr.v4.tool.ast.GrammarAST)2 GrammarRootAST (org.antlr.v4.tool.ast.GrammarRootAST)2