// $ANTLR start "command" // /home/jon/flume/src/antlr/FlumeShell.g:90:1: command : ( literal )+ -> ^( CMD ( literal )+ ) ; public final FlumeShellParser.command_return command() throws RecognitionException { FlumeShellParser.command_return retval = new FlumeShellParser.command_return(); retval.start = input.LT(1); Object root_0 = null; FlumeShellParser.literal_return literal7 = null; RewriteRuleSubtreeStream stream_literal = new RewriteRuleSubtreeStream(adaptor, "rule literal"); try { // /home/jon/flume/src/antlr/FlumeShell.g:90:9: ( ( literal )+ -> ^( CMD ( literal )+ ) ) // /home/jon/flume/src/antlr/FlumeShell.g:90:11: ( literal )+ { // /home/jon/flume/src/antlr/FlumeShell.g:90:11: ( literal )+ int cnt2 = 0; loop2: do { int alt2 = 2; int LA2_0 = input.LA(1); if (((LA2_0 >= DQuoteLiteral && LA2_0 <= Argument))) { alt2 = 1; } switch (alt2) { case 1: // /home/jon/flume/src/antlr/FlumeShell.g:90:11: literal { pushFollow(FOLLOW_literal_in_command122); literal7 = literal(); state._fsp--; stream_literal.add(literal7.getTree()); } break; default: if (cnt2 >= 1) break loop2; EarlyExitException eee = new EarlyExitException(2, input); throw eee; } cnt2++; } while (true); // AST REWRITE // elements: literal // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval = new RewriteRuleSubtreeStream( adaptor, "rule retval", retval != null ? retval.tree : null); root_0 = (Object) adaptor.nil(); // 90:20: -> ^( CMD ( literal )+ ) { // /home/jon/flume/src/antlr/FlumeShell.g:90:23: ^( CMD ( literal )+ ) { Object root_1 = (Object) adaptor.nil(); root_1 = (Object) adaptor.becomeRoot((Object) adaptor.create(CMD, "CMD"), root_1); if (!(stream_literal.hasNext())) { throw new RewriteEarlyExitException(); } while (stream_literal.hasNext()) { adaptor.addChild(root_1, stream_literal.nextTree()); } stream_literal.reset(); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } retval.stop = input.LT(-1); 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 { } return retval; }