Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
liqp.LiquidParser Maven / Gradle / Ivy
// $ANTLR 3.5.2 liqp/Liquid.g 2016-01-23 17:51:31
package liqp.parser;
import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import org.antlr.runtime.tree.*;
@SuppressWarnings("all")
public class LiquidParser extends Parser {
public static final String[] tokenNames = new String[] {
"", "", "", "", "ASSIGNMENT", "ATTRIBUTES", "And",
"Assign", "BLOCK", "Break", "CAPTURE", "CASE", "CBr", "COMMENT", "CPar",
"CUSTOM_TAG", "CUSTOM_TAG_BLOCK", "CYCLE", "CaptureEnd", "CaptureStart",
"CaseEnd", "CaseStart", "Col", "Comma", "CommentEnd", "CommentStart",
"Contains", "Continue", "Cycle", "DStr", "Digit", "Dot", "DotDot", "DoubleNum",
"ELSE", "ELSIF", "Else", "Elsif", "Empty", "EndId", "Eq", "EqSign", "FILTER",
"FILTERS", "FOR_ARRAY", "FOR_BLOCK", "FOR_RANGE", "False", "ForEnd", "ForStart",
"GROUP", "Gt", "GtEq", "HASH", "IF", "INCLUDE", "INDEX", "Id", "IfEnd",
"IfStart", "In", "Include", "LOOKUP", "Letter", "LongNum", "Lt", "LtEq",
"Minus", "NEq", "NO_SPACE", "Nil", "NoSpace", "OBr", "OPar", "OUTPUT",
"Or", "Other", "OutEnd", "OutStart", "PARAMS", "PLAIN", "Pipe", "QMark",
"RAW", "RawEnd", "RawStart", "SStr", "Str", "TABLE", "TableEnd", "TableStart",
"TagEnd", "TagStart", "True", "UNLESS", "UnlessEnd", "UnlessStart", "WHEN",
"WITH", "WS", "When", "With"
};
public static final int EOF=-1;
public static final int ASSIGNMENT=4;
public static final int ATTRIBUTES=5;
public static final int And=6;
public static final int Assign=7;
public static final int BLOCK=8;
public static final int Break=9;
public static final int CAPTURE=10;
public static final int CASE=11;
public static final int CBr=12;
public static final int COMMENT=13;
public static final int CPar=14;
public static final int CUSTOM_TAG=15;
public static final int CUSTOM_TAG_BLOCK=16;
public static final int CYCLE=17;
public static final int CaptureEnd=18;
public static final int CaptureStart=19;
public static final int CaseEnd=20;
public static final int CaseStart=21;
public static final int Col=22;
public static final int Comma=23;
public static final int CommentEnd=24;
public static final int CommentStart=25;
public static final int Contains=26;
public static final int Continue=27;
public static final int Cycle=28;
public static final int DStr=29;
public static final int Digit=30;
public static final int Dot=31;
public static final int DotDot=32;
public static final int DoubleNum=33;
public static final int ELSE=34;
public static final int ELSIF=35;
public static final int Else=36;
public static final int Elsif=37;
public static final int Empty=38;
public static final int EndId=39;
public static final int Eq=40;
public static final int EqSign=41;
public static final int FILTER=42;
public static final int FILTERS=43;
public static final int FOR_ARRAY=44;
public static final int FOR_BLOCK=45;
public static final int FOR_RANGE=46;
public static final int False=47;
public static final int ForEnd=48;
public static final int ForStart=49;
public static final int GROUP=50;
public static final int Gt=51;
public static final int GtEq=52;
public static final int HASH=53;
public static final int IF=54;
public static final int INCLUDE=55;
public static final int INDEX=56;
public static final int Id=57;
public static final int IfEnd=58;
public static final int IfStart=59;
public static final int In=60;
public static final int Include=61;
public static final int LOOKUP=62;
public static final int Letter=63;
public static final int LongNum=64;
public static final int Lt=65;
public static final int LtEq=66;
public static final int Minus=67;
public static final int NEq=68;
public static final int NO_SPACE=69;
public static final int Nil=70;
public static final int NoSpace=71;
public static final int OBr=72;
public static final int OPar=73;
public static final int OUTPUT=74;
public static final int Or=75;
public static final int Other=76;
public static final int OutEnd=77;
public static final int OutStart=78;
public static final int PARAMS=79;
public static final int PLAIN=80;
public static final int Pipe=81;
public static final int QMark=82;
public static final int RAW=83;
public static final int RawEnd=84;
public static final int RawStart=85;
public static final int SStr=86;
public static final int Str=87;
public static final int TABLE=88;
public static final int TableEnd=89;
public static final int TableStart=90;
public static final int TagEnd=91;
public static final int TagStart=92;
public static final int True=93;
public static final int UNLESS=94;
public static final int UnlessEnd=95;
public static final int UnlessStart=96;
public static final int WHEN=97;
public static final int WITH=98;
public static final int WS=99;
public static final int When=100;
public static final int With=101;
// delegates
public Parser[] getDelegates() {
return new Parser[] {};
}
// delegators
public LiquidParser(TokenStream input) {
this(input, new RecognizerSharedState());
}
public LiquidParser(TokenStream input, RecognizerSharedState state) {
super(input, state);
}
protected TreeAdaptor adaptor = new CommonTreeAdaptor();
public void setTreeAdaptor(TreeAdaptor adaptor) {
this.adaptor = adaptor;
}
public TreeAdaptor getTreeAdaptor() {
return adaptor;
}
@Override public String[] getTokenNames() { return LiquidParser.tokenNames; }
@Override public String getGrammarFileName() { return "liqp/Liquid.g"; }
@Override
public void reportError(RecognitionException e) {
throw new RuntimeException(e);
}
public static class parse_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "parse"
// liqp/Liquid.g:123:1: parse : block EOF -> block ;
public final LiquidParser.parse_return parse() throws RecognitionException {
LiquidParser.parse_return retval = new LiquidParser.parse_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token EOF2=null;
ParserRuleReturnScope block1 =null;
CommonTree EOF2_tree=null;
RewriteRuleTokenStream stream_EOF=new RewriteRuleTokenStream(adaptor,"token EOF");
RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");
try {
// liqp/Liquid.g:124:2: ( block EOF -> block )
// liqp/Liquid.g:124:4: block EOF
{
pushFollow(FOLLOW_block_in_parse231);
block1=block();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_block.add(block1.getTree());
EOF2=(Token)match(input,EOF,FOLLOW_EOF_in_parse233); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_EOF.add(EOF2);
// AST REWRITE
// elements: block
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 124:14: -> block
{
adaptor.addChild(root_0, stream_block.nextTree());
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "parse"
public static class block_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "block"
// liqp/Liquid.g:128:1: block : ( options {greedy=true; } : atom )* -> ^( BLOCK ( atom )* ) ;
public final LiquidParser.block_return block() throws RecognitionException {
LiquidParser.block_return retval = new LiquidParser.block_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
ParserRuleReturnScope atom3 =null;
RewriteRuleSubtreeStream stream_atom=new RewriteRuleSubtreeStream(adaptor,"rule atom");
try {
// liqp/Liquid.g:129:2: ( ( options {greedy=true; } : atom )* -> ^( BLOCK ( atom )* ) )
// liqp/Liquid.g:129:4: ( options {greedy=true; } : atom )*
{
// liqp/Liquid.g:129:4: ( options {greedy=true; } : atom )*
loop1:
while (true) {
int alt1=2;
int LA1_0 = input.LA(1);
if ( (LA1_0==TagStart) ) {
int LA1_2 = input.LA(2);
if ( (LA1_2==Assign||LA1_2==Break||LA1_2==CaptureStart||LA1_2==CaseStart||LA1_2==CommentStart||(LA1_2 >= Continue && LA1_2 <= Cycle)||LA1_2==ForStart||LA1_2==Id||LA1_2==IfStart||LA1_2==Include||LA1_2==RawStart||LA1_2==TableStart||LA1_2==UnlessStart) ) {
alt1=1;
}
}
else if ( (LA1_0==Other||LA1_0==OutStart) ) {
alt1=1;
}
switch (alt1) {
case 1 :
// liqp/Liquid.g:129:28: atom
{
pushFollow(FOLLOW_atom_in_block261);
atom3=atom();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_atom.add(atom3.getTree());
}
break;
default :
break loop1;
}
}
// AST REWRITE
// elements: atom
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 129:35: -> ^( BLOCK ( atom )* )
{
// liqp/Liquid.g:129:38: ^( BLOCK ( atom )* )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(BLOCK, "BLOCK"), root_1);
// liqp/Liquid.g:129:46: ( atom )*
while ( stream_atom.hasNext() ) {
adaptor.addChild(root_1, stream_atom.nextTree());
}
stream_atom.reset();
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "block"
public static class atom_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "atom"
// liqp/Liquid.g:132:1: atom : ( tag | output | assignment | Other -> PLAIN[$Other.text] );
public final LiquidParser.atom_return atom() throws RecognitionException {
LiquidParser.atom_return retval = new LiquidParser.atom_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token Other7=null;
ParserRuleReturnScope tag4 =null;
ParserRuleReturnScope output5 =null;
ParserRuleReturnScope assignment6 =null;
CommonTree Other7_tree=null;
RewriteRuleTokenStream stream_Other=new RewriteRuleTokenStream(adaptor,"token Other");
try {
// liqp/Liquid.g:133:2: ( tag | output | assignment | Other -> PLAIN[$Other.text] )
int alt2=4;
switch ( input.LA(1) ) {
case TagStart:
{
int LA2_1 = input.LA(2);
if ( (LA2_1==Break||LA2_1==CaptureStart||LA2_1==CaseStart||LA2_1==CommentStart||(LA2_1 >= Continue && LA2_1 <= Cycle)||LA2_1==ForStart||LA2_1==Id||LA2_1==IfStart||LA2_1==Include||LA2_1==RawStart||LA2_1==TableStart||LA2_1==UnlessStart) ) {
alt2=1;
}
else if ( (LA2_1==Assign) ) {
alt2=3;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
int nvaeMark = input.mark();
try {
input.consume();
NoViableAltException nvae =
new NoViableAltException("", 2, 1, input);
throw nvae;
} finally {
input.rewind(nvaeMark);
}
}
}
break;
case OutStart:
{
alt2=2;
}
break;
case Other:
{
alt2=4;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 2, 0, input);
throw nvae;
}
switch (alt2) {
case 1 :
// liqp/Liquid.g:133:4: tag
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_tag_in_atom283);
tag4=tag();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, tag4.getTree());
}
break;
case 2 :
// liqp/Liquid.g:134:4: output
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_output_in_atom288);
output5=output();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, output5.getTree());
}
break;
case 3 :
// liqp/Liquid.g:135:4: assignment
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_assignment_in_atom293);
assignment6=assignment();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, assignment6.getTree());
}
break;
case 4 :
// liqp/Liquid.g:136:4: Other
{
Other7=(Token)match(input,Other,FOLLOW_Other_in_atom298); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Other.add(Other7);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 136:10: -> PLAIN[$Other.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(PLAIN, (Other7!=null?Other7.getText():null)));
}
retval.tree = root_0;
}
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "atom"
public static class tag_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "tag"
// liqp/Liquid.g:139:1: tag : ( custom_tag | raw_tag | comment_tag | if_tag | unless_tag | case_tag | cycle_tag | for_tag | table_tag | capture_tag | include_tag | break_tag | continue_tag );
public final LiquidParser.tag_return tag() throws RecognitionException {
LiquidParser.tag_return retval = new LiquidParser.tag_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
ParserRuleReturnScope custom_tag8 =null;
ParserRuleReturnScope raw_tag9 =null;
ParserRuleReturnScope comment_tag10 =null;
ParserRuleReturnScope if_tag11 =null;
ParserRuleReturnScope unless_tag12 =null;
ParserRuleReturnScope case_tag13 =null;
ParserRuleReturnScope cycle_tag14 =null;
ParserRuleReturnScope for_tag15 =null;
ParserRuleReturnScope table_tag16 =null;
ParserRuleReturnScope capture_tag17 =null;
ParserRuleReturnScope include_tag18 =null;
ParserRuleReturnScope break_tag19 =null;
ParserRuleReturnScope continue_tag20 =null;
try {
// liqp/Liquid.g:140:2: ( custom_tag | raw_tag | comment_tag | if_tag | unless_tag | case_tag | cycle_tag | for_tag | table_tag | capture_tag | include_tag | break_tag | continue_tag )
int alt3=13;
int LA3_0 = input.LA(1);
if ( (LA3_0==TagStart) ) {
switch ( input.LA(2) ) {
case Id:
{
alt3=1;
}
break;
case RawStart:
{
alt3=2;
}
break;
case CommentStart:
{
alt3=3;
}
break;
case IfStart:
{
alt3=4;
}
break;
case UnlessStart:
{
alt3=5;
}
break;
case CaseStart:
{
alt3=6;
}
break;
case Cycle:
{
alt3=7;
}
break;
case ForStart:
{
alt3=8;
}
break;
case TableStart:
{
alt3=9;
}
break;
case CaptureStart:
{
alt3=10;
}
break;
case Include:
{
alt3=11;
}
break;
case Break:
{
alt3=12;
}
break;
case Continue:
{
alt3=13;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
int nvaeMark = input.mark();
try {
input.consume();
NoViableAltException nvae =
new NoViableAltException("", 3, 1, input);
throw nvae;
} finally {
input.rewind(nvaeMark);
}
}
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 3, 0, input);
throw nvae;
}
switch (alt3) {
case 1 :
// liqp/Liquid.g:140:4: custom_tag
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_custom_tag_in_tag314);
custom_tag8=custom_tag();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, custom_tag8.getTree());
}
break;
case 2 :
// liqp/Liquid.g:141:4: raw_tag
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_raw_tag_in_tag319);
raw_tag9=raw_tag();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, raw_tag9.getTree());
}
break;
case 3 :
// liqp/Liquid.g:142:4: comment_tag
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_comment_tag_in_tag324);
comment_tag10=comment_tag();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, comment_tag10.getTree());
}
break;
case 4 :
// liqp/Liquid.g:143:4: if_tag
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_if_tag_in_tag329);
if_tag11=if_tag();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, if_tag11.getTree());
}
break;
case 5 :
// liqp/Liquid.g:144:4: unless_tag
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_unless_tag_in_tag334);
unless_tag12=unless_tag();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, unless_tag12.getTree());
}
break;
case 6 :
// liqp/Liquid.g:145:4: case_tag
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_case_tag_in_tag339);
case_tag13=case_tag();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, case_tag13.getTree());
}
break;
case 7 :
// liqp/Liquid.g:146:4: cycle_tag
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_cycle_tag_in_tag344);
cycle_tag14=cycle_tag();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, cycle_tag14.getTree());
}
break;
case 8 :
// liqp/Liquid.g:147:4: for_tag
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_for_tag_in_tag349);
for_tag15=for_tag();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, for_tag15.getTree());
}
break;
case 9 :
// liqp/Liquid.g:148:4: table_tag
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_table_tag_in_tag354);
table_tag16=table_tag();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, table_tag16.getTree());
}
break;
case 10 :
// liqp/Liquid.g:149:4: capture_tag
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_capture_tag_in_tag359);
capture_tag17=capture_tag();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, capture_tag17.getTree());
}
break;
case 11 :
// liqp/Liquid.g:150:4: include_tag
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_include_tag_in_tag364);
include_tag18=include_tag();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, include_tag18.getTree());
}
break;
case 12 :
// liqp/Liquid.g:151:4: break_tag
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_break_tag_in_tag369);
break_tag19=break_tag();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, break_tag19.getTree());
}
break;
case 13 :
// liqp/Liquid.g:152:4: continue_tag
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_continue_tag_in_tag374);
continue_tag20=continue_tag();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, continue_tag20.getTree());
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "tag"
public static class custom_tag_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "custom_tag"
// liqp/Liquid.g:155:1: custom_tag : ( TagStart Id ( expr ( Comma expr )* )? TagEnd -> ^( CUSTOM_TAG Id ( expr )* ) ) ( ( custom_tag_block )=> custom_tag_block -> ^( CUSTOM_TAG_BLOCK Id ( expr )* custom_tag_block ) )? ;
public final LiquidParser.custom_tag_return custom_tag() throws RecognitionException {
LiquidParser.custom_tag_return retval = new LiquidParser.custom_tag_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token TagStart21=null;
Token Id22=null;
Token Comma24=null;
Token TagEnd26=null;
ParserRuleReturnScope expr23 =null;
ParserRuleReturnScope expr25 =null;
ParserRuleReturnScope custom_tag_block27 =null;
CommonTree TagStart21_tree=null;
CommonTree Id22_tree=null;
CommonTree Comma24_tree=null;
CommonTree TagEnd26_tree=null;
RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma");
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_Id=new RewriteRuleTokenStream(adaptor,"token Id");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
RewriteRuleSubtreeStream stream_custom_tag_block=new RewriteRuleSubtreeStream(adaptor,"rule custom_tag_block");
RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
try {
// liqp/Liquid.g:156:2: ( ( TagStart Id ( expr ( Comma expr )* )? TagEnd -> ^( CUSTOM_TAG Id ( expr )* ) ) ( ( custom_tag_block )=> custom_tag_block -> ^( CUSTOM_TAG_BLOCK Id ( expr )* custom_tag_block ) )? )
// liqp/Liquid.g:156:4: ( TagStart Id ( expr ( Comma expr )* )? TagEnd -> ^( CUSTOM_TAG Id ( expr )* ) ) ( ( custom_tag_block )=> custom_tag_block -> ^( CUSTOM_TAG_BLOCK Id ( expr )* custom_tag_block ) )?
{
// liqp/Liquid.g:156:4: ( TagStart Id ( expr ( Comma expr )* )? TagEnd -> ^( CUSTOM_TAG Id ( expr )* ) )
// liqp/Liquid.g:156:5: TagStart Id ( expr ( Comma expr )* )? TagEnd
{
TagStart21=(Token)match(input,TagStart,FOLLOW_TagStart_in_custom_tag386); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart21);
Id22=(Token)match(input,Id,FOLLOW_Id_in_custom_tag388); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Id.add(Id22);
// liqp/Liquid.g:156:17: ( expr ( Comma expr )* )?
int alt5=2;
int LA5_0 = input.LA(1);
if ( (LA5_0==Continue||LA5_0==DoubleNum||LA5_0==Empty||LA5_0==False||LA5_0==Id||LA5_0==LongNum||(LA5_0 >= Nil && LA5_0 <= OPar)||LA5_0==Str||LA5_0==True) ) {
alt5=1;
}
switch (alt5) {
case 1 :
// liqp/Liquid.g:156:18: expr ( Comma expr )*
{
pushFollow(FOLLOW_expr_in_custom_tag391);
expr23=expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expr.add(expr23.getTree());
// liqp/Liquid.g:156:23: ( Comma expr )*
loop4:
while (true) {
int alt4=2;
int LA4_0 = input.LA(1);
if ( (LA4_0==Comma) ) {
alt4=1;
}
switch (alt4) {
case 1 :
// liqp/Liquid.g:156:24: Comma expr
{
Comma24=(Token)match(input,Comma,FOLLOW_Comma_in_custom_tag394); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Comma.add(Comma24);
pushFollow(FOLLOW_expr_in_custom_tag396);
expr25=expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expr.add(expr25.getTree());
}
break;
default :
break loop4;
}
}
}
break;
}
TagEnd26=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_custom_tag402); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd26);
// AST REWRITE
// elements: Id, expr
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 156:46: -> ^( CUSTOM_TAG Id ( expr )* )
{
// liqp/Liquid.g:156:49: ^( CUSTOM_TAG Id ( expr )* )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(CUSTOM_TAG, "CUSTOM_TAG"), root_1);
adaptor.addChild(root_1, stream_Id.nextNode());
// liqp/Liquid.g:156:65: ( expr )*
while ( stream_expr.hasNext() ) {
adaptor.addChild(root_1, stream_expr.nextTree());
}
stream_expr.reset();
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
// liqp/Liquid.g:157:4: ( ( custom_tag_block )=> custom_tag_block -> ^( CUSTOM_TAG_BLOCK Id ( expr )* custom_tag_block ) )?
int alt6=2;
switch ( input.LA(1) ) {
case TagStart:
{
int LA6_1 = input.LA(2);
if ( (synpred1_Liquid()) ) {
alt6=1;
}
}
break;
case OutStart:
{
int LA6_2 = input.LA(2);
if ( (synpred1_Liquid()) ) {
alt6=1;
}
}
break;
case Other:
{
int LA6_3 = input.LA(2);
if ( (synpred1_Liquid()) ) {
alt6=1;
}
}
break;
}
switch (alt6) {
case 1 :
// liqp/Liquid.g:157:5: ( custom_tag_block )=> custom_tag_block
{
pushFollow(FOLLOW_custom_tag_block_in_custom_tag425);
custom_tag_block27=custom_tag_block();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_custom_tag_block.add(custom_tag_block27.getTree());
// AST REWRITE
// elements: custom_tag_block, expr, Id
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 157:46: -> ^( CUSTOM_TAG_BLOCK Id ( expr )* custom_tag_block )
{
// liqp/Liquid.g:157:49: ^( CUSTOM_TAG_BLOCK Id ( expr )* custom_tag_block )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(CUSTOM_TAG_BLOCK, "CUSTOM_TAG_BLOCK"), root_1);
adaptor.addChild(root_1, stream_Id.nextNode());
// liqp/Liquid.g:157:71: ( expr )*
while ( stream_expr.hasNext() ) {
adaptor.addChild(root_1, stream_expr.nextTree());
}
stream_expr.reset();
adaptor.addChild(root_1, stream_custom_tag_block.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
break;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "custom_tag"
public static class custom_tag_block_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "custom_tag_block"
// liqp/Liquid.g:160:1: custom_tag_block : ( options {greedy=false; } : atom )* TagStart EndId TagEnd -> ^( BLOCK ( atom )* ) ;
public final LiquidParser.custom_tag_block_return custom_tag_block() throws RecognitionException {
LiquidParser.custom_tag_block_return retval = new LiquidParser.custom_tag_block_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token TagStart29=null;
Token EndId30=null;
Token TagEnd31=null;
ParserRuleReturnScope atom28 =null;
CommonTree TagStart29_tree=null;
CommonTree EndId30_tree=null;
CommonTree TagEnd31_tree=null;
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_EndId=new RewriteRuleTokenStream(adaptor,"token EndId");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
RewriteRuleSubtreeStream stream_atom=new RewriteRuleSubtreeStream(adaptor,"rule atom");
try {
// liqp/Liquid.g:161:2: ( ( options {greedy=false; } : atom )* TagStart EndId TagEnd -> ^( BLOCK ( atom )* ) )
// liqp/Liquid.g:161:4: ( options {greedy=false; } : atom )* TagStart EndId TagEnd
{
// liqp/Liquid.g:161:4: ( options {greedy=false; } : atom )*
loop7:
while (true) {
int alt7=2;
int LA7_0 = input.LA(1);
if ( (LA7_0==TagStart) ) {
int LA7_1 = input.LA(2);
if ( (LA7_1==EndId) ) {
alt7=2;
}
else if ( (LA7_1==Assign||LA7_1==Break||LA7_1==CaptureStart||LA7_1==CaseStart||LA7_1==CommentStart||(LA7_1 >= Continue && LA7_1 <= Cycle)||LA7_1==ForStart||LA7_1==Id||LA7_1==IfStart||LA7_1==Include||LA7_1==RawStart||LA7_1==TableStart||LA7_1==UnlessStart) ) {
alt7=1;
}
}
else if ( (LA7_0==Other||LA7_0==OutStart) ) {
alt7=1;
}
switch (alt7) {
case 1 :
// liqp/Liquid.g:161:29: atom
{
pushFollow(FOLLOW_atom_in_custom_tag_block463);
atom28=atom();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_atom.add(atom28.getTree());
}
break;
default :
break loop7;
}
}
TagStart29=(Token)match(input,TagStart,FOLLOW_TagStart_in_custom_tag_block467); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart29);
EndId30=(Token)match(input,EndId,FOLLOW_EndId_in_custom_tag_block469); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_EndId.add(EndId30);
TagEnd31=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_custom_tag_block471); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd31);
// AST REWRITE
// elements: atom
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 161:58: -> ^( BLOCK ( atom )* )
{
// liqp/Liquid.g:161:61: ^( BLOCK ( atom )* )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(BLOCK, "BLOCK"), root_1);
// liqp/Liquid.g:161:69: ( atom )*
while ( stream_atom.hasNext() ) {
adaptor.addChild(root_1, stream_atom.nextTree());
}
stream_atom.reset();
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "custom_tag_block"
public static class raw_tag_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "raw_tag"
// liqp/Liquid.g:164:1: raw_tag : TagStart RawStart TagEnd raw_body TagStart RawEnd TagEnd -> raw_body ;
public final LiquidParser.raw_tag_return raw_tag() throws RecognitionException {
LiquidParser.raw_tag_return retval = new LiquidParser.raw_tag_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token TagStart32=null;
Token RawStart33=null;
Token TagEnd34=null;
Token TagStart36=null;
Token RawEnd37=null;
Token TagEnd38=null;
ParserRuleReturnScope raw_body35 =null;
CommonTree TagStart32_tree=null;
CommonTree RawStart33_tree=null;
CommonTree TagEnd34_tree=null;
CommonTree TagStart36_tree=null;
CommonTree RawEnd37_tree=null;
CommonTree TagEnd38_tree=null;
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_RawEnd=new RewriteRuleTokenStream(adaptor,"token RawEnd");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
RewriteRuleTokenStream stream_RawStart=new RewriteRuleTokenStream(adaptor,"token RawStart");
RewriteRuleSubtreeStream stream_raw_body=new RewriteRuleSubtreeStream(adaptor,"rule raw_body");
try {
// liqp/Liquid.g:165:2: ( TagStart RawStart TagEnd raw_body TagStart RawEnd TagEnd -> raw_body )
// liqp/Liquid.g:165:4: TagStart RawStart TagEnd raw_body TagStart RawEnd TagEnd
{
TagStart32=(Token)match(input,TagStart,FOLLOW_TagStart_in_raw_tag491); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart32);
RawStart33=(Token)match(input,RawStart,FOLLOW_RawStart_in_raw_tag493); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RawStart.add(RawStart33);
TagEnd34=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_raw_tag495); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd34);
pushFollow(FOLLOW_raw_body_in_raw_tag497);
raw_body35=raw_body();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_raw_body.add(raw_body35.getTree());
TagStart36=(Token)match(input,TagStart,FOLLOW_TagStart_in_raw_tag499); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart36);
RawEnd37=(Token)match(input,RawEnd,FOLLOW_RawEnd_in_raw_tag501); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RawEnd.add(RawEnd37);
TagEnd38=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_raw_tag503); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd38);
// AST REWRITE
// elements: raw_body
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 165:61: -> raw_body
{
adaptor.addChild(root_0, stream_raw_body.nextTree());
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "raw_tag"
public static class raw_body_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "raw_body"
// liqp/Liquid.g:168:1: raw_body : other_than_tag_start -> RAW[$other_than_tag_start.text] ;
public final LiquidParser.raw_body_return raw_body() throws RecognitionException {
LiquidParser.raw_body_return retval = new LiquidParser.raw_body_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
ParserRuleReturnScope other_than_tag_start39 =null;
RewriteRuleSubtreeStream stream_other_than_tag_start=new RewriteRuleSubtreeStream(adaptor,"rule other_than_tag_start");
try {
// liqp/Liquid.g:169:2: ( other_than_tag_start -> RAW[$other_than_tag_start.text] )
// liqp/Liquid.g:169:4: other_than_tag_start
{
pushFollow(FOLLOW_other_than_tag_start_in_raw_body518);
other_than_tag_start39=other_than_tag_start();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_other_than_tag_start.add(other_than_tag_start39.getTree());
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 169:25: -> RAW[$other_than_tag_start.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(RAW, (other_than_tag_start39!=null?input.toString(other_than_tag_start39.start,other_than_tag_start39.stop):null)));
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "raw_body"
public static class comment_tag_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "comment_tag"
// liqp/Liquid.g:172:1: comment_tag : TagStart CommentStart TagEnd comment_body TagStart CommentEnd TagEnd -> comment_body ;
public final LiquidParser.comment_tag_return comment_tag() throws RecognitionException {
LiquidParser.comment_tag_return retval = new LiquidParser.comment_tag_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token TagStart40=null;
Token CommentStart41=null;
Token TagEnd42=null;
Token TagStart44=null;
Token CommentEnd45=null;
Token TagEnd46=null;
ParserRuleReturnScope comment_body43 =null;
CommonTree TagStart40_tree=null;
CommonTree CommentStart41_tree=null;
CommonTree TagEnd42_tree=null;
CommonTree TagStart44_tree=null;
CommonTree CommentEnd45_tree=null;
CommonTree TagEnd46_tree=null;
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_CommentEnd=new RewriteRuleTokenStream(adaptor,"token CommentEnd");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
RewriteRuleTokenStream stream_CommentStart=new RewriteRuleTokenStream(adaptor,"token CommentStart");
RewriteRuleSubtreeStream stream_comment_body=new RewriteRuleSubtreeStream(adaptor,"rule comment_body");
try {
// liqp/Liquid.g:173:2: ( TagStart CommentStart TagEnd comment_body TagStart CommentEnd TagEnd -> comment_body )
// liqp/Liquid.g:173:4: TagStart CommentStart TagEnd comment_body TagStart CommentEnd TagEnd
{
TagStart40=(Token)match(input,TagStart,FOLLOW_TagStart_in_comment_tag534); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart40);
CommentStart41=(Token)match(input,CommentStart,FOLLOW_CommentStart_in_comment_tag536); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CommentStart.add(CommentStart41);
TagEnd42=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_comment_tag538); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd42);
pushFollow(FOLLOW_comment_body_in_comment_tag540);
comment_body43=comment_body();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_comment_body.add(comment_body43.getTree());
TagStart44=(Token)match(input,TagStart,FOLLOW_TagStart_in_comment_tag542); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart44);
CommentEnd45=(Token)match(input,CommentEnd,FOLLOW_CommentEnd_in_comment_tag544); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CommentEnd.add(CommentEnd45);
TagEnd46=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_comment_tag546); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd46);
// AST REWRITE
// elements: comment_body
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 173:73: -> comment_body
{
adaptor.addChild(root_0, stream_comment_body.nextTree());
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "comment_tag"
public static class comment_body_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "comment_body"
// liqp/Liquid.g:176:1: comment_body : other_than_tag_start -> COMMENT[$other_than_tag_start.text] ;
public final LiquidParser.comment_body_return comment_body() throws RecognitionException {
LiquidParser.comment_body_return retval = new LiquidParser.comment_body_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
ParserRuleReturnScope other_than_tag_start47 =null;
RewriteRuleSubtreeStream stream_other_than_tag_start=new RewriteRuleSubtreeStream(adaptor,"rule other_than_tag_start");
try {
// liqp/Liquid.g:177:2: ( other_than_tag_start -> COMMENT[$other_than_tag_start.text] )
// liqp/Liquid.g:177:4: other_than_tag_start
{
pushFollow(FOLLOW_other_than_tag_start_in_comment_body561);
other_than_tag_start47=other_than_tag_start();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_other_than_tag_start.add(other_than_tag_start47.getTree());
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 177:25: -> COMMENT[$other_than_tag_start.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(COMMENT, (other_than_tag_start47!=null?input.toString(other_than_tag_start47.start,other_than_tag_start47.stop):null)));
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "comment_body"
public static class other_than_tag_start_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "other_than_tag_start"
// liqp/Liquid.g:180:1: other_than_tag_start : (~ TagStart )* ;
public final LiquidParser.other_than_tag_start_return other_than_tag_start() throws RecognitionException {
LiquidParser.other_than_tag_start_return retval = new LiquidParser.other_than_tag_start_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token set48=null;
CommonTree set48_tree=null;
try {
// liqp/Liquid.g:181:2: ( (~ TagStart )* )
// liqp/Liquid.g:181:4: (~ TagStart )*
{
root_0 = (CommonTree)adaptor.nil();
// liqp/Liquid.g:181:4: (~ TagStart )*
loop8:
while (true) {
int alt8=2;
int LA8_0 = input.LA(1);
if ( ((LA8_0 >= ASSIGNMENT && LA8_0 <= TagEnd)||(LA8_0 >= True && LA8_0 <= With)) ) {
alt8=1;
}
switch (alt8) {
case 1 :
// liqp/Liquid.g:
{
set48=input.LT(1);
if ( (input.LA(1) >= ASSIGNMENT && input.LA(1) <= TagEnd)||(input.LA(1) >= True && input.LA(1) <= With) ) {
input.consume();
if ( state.backtracking==0 ) adaptor.addChild(root_0, (CommonTree)adaptor.create(set48));
state.errorRecovery=false;
state.failed=false;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
}
break;
default :
break loop8;
}
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "other_than_tag_start"
public static class if_tag_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "if_tag"
// liqp/Liquid.g:184:1: if_tag : TagStart IfStart expr TagEnd block ( elsif_tag )* ( else_tag )? TagStart IfEnd TagEnd -> ^( IF expr block ( elsif_tag )* ^( ELSE ( else_tag )? ) ) ;
public final LiquidParser.if_tag_return if_tag() throws RecognitionException {
LiquidParser.if_tag_return retval = new LiquidParser.if_tag_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token TagStart49=null;
Token IfStart50=null;
Token TagEnd52=null;
Token TagStart56=null;
Token IfEnd57=null;
Token TagEnd58=null;
ParserRuleReturnScope expr51 =null;
ParserRuleReturnScope block53 =null;
ParserRuleReturnScope elsif_tag54 =null;
ParserRuleReturnScope else_tag55 =null;
CommonTree TagStart49_tree=null;
CommonTree IfStart50_tree=null;
CommonTree TagEnd52_tree=null;
CommonTree TagStart56_tree=null;
CommonTree IfEnd57_tree=null;
CommonTree TagEnd58_tree=null;
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_IfStart=new RewriteRuleTokenStream(adaptor,"token IfStart");
RewriteRuleTokenStream stream_IfEnd=new RewriteRuleTokenStream(adaptor,"token IfEnd");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
RewriteRuleSubtreeStream stream_else_tag=new RewriteRuleSubtreeStream(adaptor,"rule else_tag");
RewriteRuleSubtreeStream stream_elsif_tag=new RewriteRuleSubtreeStream(adaptor,"rule elsif_tag");
RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");
try {
// liqp/Liquid.g:185:2: ( TagStart IfStart expr TagEnd block ( elsif_tag )* ( else_tag )? TagStart IfEnd TagEnd -> ^( IF expr block ( elsif_tag )* ^( ELSE ( else_tag )? ) ) )
// liqp/Liquid.g:185:4: TagStart IfStart expr TagEnd block ( elsif_tag )* ( else_tag )? TagStart IfEnd TagEnd
{
TagStart49=(Token)match(input,TagStart,FOLLOW_TagStart_in_if_tag590); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart49);
IfStart50=(Token)match(input,IfStart,FOLLOW_IfStart_in_if_tag592); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_IfStart.add(IfStart50);
pushFollow(FOLLOW_expr_in_if_tag594);
expr51=expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expr.add(expr51.getTree());
TagEnd52=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_if_tag596); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd52);
pushFollow(FOLLOW_block_in_if_tag598);
block53=block();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_block.add(block53.getTree());
// liqp/Liquid.g:185:39: ( elsif_tag )*
loop9:
while (true) {
int alt9=2;
int LA9_0 = input.LA(1);
if ( (LA9_0==TagStart) ) {
int LA9_1 = input.LA(2);
if ( (LA9_1==Elsif) ) {
alt9=1;
}
}
switch (alt9) {
case 1 :
// liqp/Liquid.g:185:39: elsif_tag
{
pushFollow(FOLLOW_elsif_tag_in_if_tag600);
elsif_tag54=elsif_tag();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_elsif_tag.add(elsif_tag54.getTree());
}
break;
default :
break loop9;
}
}
// liqp/Liquid.g:185:50: ( else_tag )?
int alt10=2;
int LA10_0 = input.LA(1);
if ( (LA10_0==TagStart) ) {
int LA10_1 = input.LA(2);
if ( (LA10_1==Else) ) {
alt10=1;
}
}
switch (alt10) {
case 1 :
// liqp/Liquid.g:185:50: else_tag
{
pushFollow(FOLLOW_else_tag_in_if_tag603);
else_tag55=else_tag();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_else_tag.add(else_tag55.getTree());
}
break;
}
TagStart56=(Token)match(input,TagStart,FOLLOW_TagStart_in_if_tag606); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart56);
IfEnd57=(Token)match(input,IfEnd,FOLLOW_IfEnd_in_if_tag608); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_IfEnd.add(IfEnd57);
TagEnd58=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_if_tag610); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd58);
// AST REWRITE
// elements: elsif_tag, else_tag, block, expr
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 185:82: -> ^( IF expr block ( elsif_tag )* ^( ELSE ( else_tag )? ) )
{
// liqp/Liquid.g:185:85: ^( IF expr block ( elsif_tag )* ^( ELSE ( else_tag )? ) )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(IF, "IF"), root_1);
adaptor.addChild(root_1, stream_expr.nextTree());
adaptor.addChild(root_1, stream_block.nextTree());
// liqp/Liquid.g:185:101: ( elsif_tag )*
while ( stream_elsif_tag.hasNext() ) {
adaptor.addChild(root_1, stream_elsif_tag.nextTree());
}
stream_elsif_tag.reset();
// liqp/Liquid.g:185:112: ^( ELSE ( else_tag )? )
{
CommonTree root_2 = (CommonTree)adaptor.nil();
root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ELSE, "ELSE"), root_2);
// liqp/Liquid.g:185:119: ( else_tag )?
if ( stream_else_tag.hasNext() ) {
adaptor.addChild(root_2, stream_else_tag.nextTree());
}
stream_else_tag.reset();
adaptor.addChild(root_1, root_2);
}
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "if_tag"
public static class elsif_tag_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "elsif_tag"
// liqp/Liquid.g:188:1: elsif_tag : TagStart Elsif expr TagEnd block -> ^( ELSIF expr block ) ;
public final LiquidParser.elsif_tag_return elsif_tag() throws RecognitionException {
LiquidParser.elsif_tag_return retval = new LiquidParser.elsif_tag_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token TagStart59=null;
Token Elsif60=null;
Token TagEnd62=null;
ParserRuleReturnScope expr61 =null;
ParserRuleReturnScope block63 =null;
CommonTree TagStart59_tree=null;
CommonTree Elsif60_tree=null;
CommonTree TagEnd62_tree=null;
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_Elsif=new RewriteRuleTokenStream(adaptor,"token Elsif");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");
try {
// liqp/Liquid.g:189:2: ( TagStart Elsif expr TagEnd block -> ^( ELSIF expr block ) )
// liqp/Liquid.g:189:4: TagStart Elsif expr TagEnd block
{
TagStart59=(Token)match(input,TagStart,FOLLOW_TagStart_in_elsif_tag641); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart59);
Elsif60=(Token)match(input,Elsif,FOLLOW_Elsif_in_elsif_tag643); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Elsif.add(Elsif60);
pushFollow(FOLLOW_expr_in_elsif_tag645);
expr61=expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expr.add(expr61.getTree());
TagEnd62=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_elsif_tag647); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd62);
pushFollow(FOLLOW_block_in_elsif_tag649);
block63=block();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_block.add(block63.getTree());
// AST REWRITE
// elements: expr, block
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 189:37: -> ^( ELSIF expr block )
{
// liqp/Liquid.g:189:40: ^( ELSIF expr block )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ELSIF, "ELSIF"), root_1);
adaptor.addChild(root_1, stream_expr.nextTree());
adaptor.addChild(root_1, stream_block.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "elsif_tag"
public static class else_tag_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "else_tag"
// liqp/Liquid.g:192:1: else_tag : TagStart Else TagEnd block -> block ;
public final LiquidParser.else_tag_return else_tag() throws RecognitionException {
LiquidParser.else_tag_return retval = new LiquidParser.else_tag_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token TagStart64=null;
Token Else65=null;
Token TagEnd66=null;
ParserRuleReturnScope block67 =null;
CommonTree TagStart64_tree=null;
CommonTree Else65_tree=null;
CommonTree TagEnd66_tree=null;
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_Else=new RewriteRuleTokenStream(adaptor,"token Else");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");
try {
// liqp/Liquid.g:193:2: ( TagStart Else TagEnd block -> block )
// liqp/Liquid.g:193:4: TagStart Else TagEnd block
{
TagStart64=(Token)match(input,TagStart,FOLLOW_TagStart_in_else_tag670); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart64);
Else65=(Token)match(input,Else,FOLLOW_Else_in_else_tag672); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Else.add(Else65);
TagEnd66=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_else_tag674); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd66);
pushFollow(FOLLOW_block_in_else_tag676);
block67=block();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_block.add(block67.getTree());
// AST REWRITE
// elements: block
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 193:31: -> block
{
adaptor.addChild(root_0, stream_block.nextTree());
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "else_tag"
public static class unless_tag_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "unless_tag"
// liqp/Liquid.g:196:1: unless_tag : TagStart UnlessStart expr TagEnd block ( else_tag )? TagStart UnlessEnd TagEnd -> ^( UNLESS expr block ^( ELSE ( else_tag )? ) ) ;
public final LiquidParser.unless_tag_return unless_tag() throws RecognitionException {
LiquidParser.unless_tag_return retval = new LiquidParser.unless_tag_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token TagStart68=null;
Token UnlessStart69=null;
Token TagEnd71=null;
Token TagStart74=null;
Token UnlessEnd75=null;
Token TagEnd76=null;
ParserRuleReturnScope expr70 =null;
ParserRuleReturnScope block72 =null;
ParserRuleReturnScope else_tag73 =null;
CommonTree TagStart68_tree=null;
CommonTree UnlessStart69_tree=null;
CommonTree TagEnd71_tree=null;
CommonTree TagStart74_tree=null;
CommonTree UnlessEnd75_tree=null;
CommonTree TagEnd76_tree=null;
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_UnlessStart=new RewriteRuleTokenStream(adaptor,"token UnlessStart");
RewriteRuleTokenStream stream_UnlessEnd=new RewriteRuleTokenStream(adaptor,"token UnlessEnd");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
RewriteRuleSubtreeStream stream_else_tag=new RewriteRuleSubtreeStream(adaptor,"rule else_tag");
RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");
try {
// liqp/Liquid.g:197:2: ( TagStart UnlessStart expr TagEnd block ( else_tag )? TagStart UnlessEnd TagEnd -> ^( UNLESS expr block ^( ELSE ( else_tag )? ) ) )
// liqp/Liquid.g:197:4: TagStart UnlessStart expr TagEnd block ( else_tag )? TagStart UnlessEnd TagEnd
{
TagStart68=(Token)match(input,TagStart,FOLLOW_TagStart_in_unless_tag691); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart68);
UnlessStart69=(Token)match(input,UnlessStart,FOLLOW_UnlessStart_in_unless_tag693); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_UnlessStart.add(UnlessStart69);
pushFollow(FOLLOW_expr_in_unless_tag695);
expr70=expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expr.add(expr70.getTree());
TagEnd71=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_unless_tag697); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd71);
pushFollow(FOLLOW_block_in_unless_tag699);
block72=block();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_block.add(block72.getTree());
// liqp/Liquid.g:197:43: ( else_tag )?
int alt11=2;
int LA11_0 = input.LA(1);
if ( (LA11_0==TagStart) ) {
int LA11_1 = input.LA(2);
if ( (LA11_1==Else) ) {
alt11=1;
}
}
switch (alt11) {
case 1 :
// liqp/Liquid.g:197:43: else_tag
{
pushFollow(FOLLOW_else_tag_in_unless_tag701);
else_tag73=else_tag();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_else_tag.add(else_tag73.getTree());
}
break;
}
TagStart74=(Token)match(input,TagStart,FOLLOW_TagStart_in_unless_tag704); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart74);
UnlessEnd75=(Token)match(input,UnlessEnd,FOLLOW_UnlessEnd_in_unless_tag706); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_UnlessEnd.add(UnlessEnd75);
TagEnd76=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_unless_tag708); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd76);
// AST REWRITE
// elements: else_tag, block, expr
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 197:79: -> ^( UNLESS expr block ^( ELSE ( else_tag )? ) )
{
// liqp/Liquid.g:197:82: ^( UNLESS expr block ^( ELSE ( else_tag )? ) )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(UNLESS, "UNLESS"), root_1);
adaptor.addChild(root_1, stream_expr.nextTree());
adaptor.addChild(root_1, stream_block.nextTree());
// liqp/Liquid.g:197:102: ^( ELSE ( else_tag )? )
{
CommonTree root_2 = (CommonTree)adaptor.nil();
root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ELSE, "ELSE"), root_2);
// liqp/Liquid.g:197:109: ( else_tag )?
if ( stream_else_tag.hasNext() ) {
adaptor.addChild(root_2, stream_else_tag.nextTree());
}
stream_else_tag.reset();
adaptor.addChild(root_1, root_2);
}
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "unless_tag"
public static class case_tag_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "case_tag"
// liqp/Liquid.g:200:1: case_tag : TagStart CaseStart expr TagEnd ( Other )? ( when_tag )+ ( else_tag )? TagStart CaseEnd TagEnd -> ^( CASE expr ( when_tag )+ ^( ELSE ( else_tag )? ) ) ;
public final LiquidParser.case_tag_return case_tag() throws RecognitionException {
LiquidParser.case_tag_return retval = new LiquidParser.case_tag_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token TagStart77=null;
Token CaseStart78=null;
Token TagEnd80=null;
Token Other81=null;
Token TagStart84=null;
Token CaseEnd85=null;
Token TagEnd86=null;
ParserRuleReturnScope expr79 =null;
ParserRuleReturnScope when_tag82 =null;
ParserRuleReturnScope else_tag83 =null;
CommonTree TagStart77_tree=null;
CommonTree CaseStart78_tree=null;
CommonTree TagEnd80_tree=null;
CommonTree Other81_tree=null;
CommonTree TagStart84_tree=null;
CommonTree CaseEnd85_tree=null;
CommonTree TagEnd86_tree=null;
RewriteRuleTokenStream stream_CaseEnd=new RewriteRuleTokenStream(adaptor,"token CaseEnd");
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_CaseStart=new RewriteRuleTokenStream(adaptor,"token CaseStart");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
RewriteRuleTokenStream stream_Other=new RewriteRuleTokenStream(adaptor,"token Other");
RewriteRuleSubtreeStream stream_else_tag=new RewriteRuleSubtreeStream(adaptor,"rule else_tag");
RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
RewriteRuleSubtreeStream stream_when_tag=new RewriteRuleSubtreeStream(adaptor,"rule when_tag");
try {
// liqp/Liquid.g:201:2: ( TagStart CaseStart expr TagEnd ( Other )? ( when_tag )+ ( else_tag )? TagStart CaseEnd TagEnd -> ^( CASE expr ( when_tag )+ ^( ELSE ( else_tag )? ) ) )
// liqp/Liquid.g:201:4: TagStart CaseStart expr TagEnd ( Other )? ( when_tag )+ ( else_tag )? TagStart CaseEnd TagEnd
{
TagStart77=(Token)match(input,TagStart,FOLLOW_TagStart_in_case_tag736); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart77);
CaseStart78=(Token)match(input,CaseStart,FOLLOW_CaseStart_in_case_tag738); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CaseStart.add(CaseStart78);
pushFollow(FOLLOW_expr_in_case_tag740);
expr79=expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expr.add(expr79.getTree());
TagEnd80=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_case_tag742); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd80);
// liqp/Liquid.g:201:35: ( Other )?
int alt12=2;
int LA12_0 = input.LA(1);
if ( (LA12_0==Other) ) {
alt12=1;
}
switch (alt12) {
case 1 :
// liqp/Liquid.g:201:35: Other
{
Other81=(Token)match(input,Other,FOLLOW_Other_in_case_tag744); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Other.add(Other81);
}
break;
}
// liqp/Liquid.g:201:42: ( when_tag )+
int cnt13=0;
loop13:
while (true) {
int alt13=2;
int LA13_0 = input.LA(1);
if ( (LA13_0==TagStart) ) {
int LA13_1 = input.LA(2);
if ( (LA13_1==When) ) {
alt13=1;
}
}
switch (alt13) {
case 1 :
// liqp/Liquid.g:201:42: when_tag
{
pushFollow(FOLLOW_when_tag_in_case_tag747);
when_tag82=when_tag();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_when_tag.add(when_tag82.getTree());
}
break;
default :
if ( cnt13 >= 1 ) break loop13;
if (state.backtracking>0) {state.failed=true; return retval;}
EarlyExitException eee = new EarlyExitException(13, input);
throw eee;
}
cnt13++;
}
// liqp/Liquid.g:201:52: ( else_tag )?
int alt14=2;
int LA14_0 = input.LA(1);
if ( (LA14_0==TagStart) ) {
int LA14_1 = input.LA(2);
if ( (LA14_1==Else) ) {
alt14=1;
}
}
switch (alt14) {
case 1 :
// liqp/Liquid.g:201:52: else_tag
{
pushFollow(FOLLOW_else_tag_in_case_tag750);
else_tag83=else_tag();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_else_tag.add(else_tag83.getTree());
}
break;
}
TagStart84=(Token)match(input,TagStart,FOLLOW_TagStart_in_case_tag753); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart84);
CaseEnd85=(Token)match(input,CaseEnd,FOLLOW_CaseEnd_in_case_tag755); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CaseEnd.add(CaseEnd85);
TagEnd86=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_case_tag757); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd86);
// AST REWRITE
// elements: when_tag, expr, else_tag
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 201:86: -> ^( CASE expr ( when_tag )+ ^( ELSE ( else_tag )? ) )
{
// liqp/Liquid.g:201:89: ^( CASE expr ( when_tag )+ ^( ELSE ( else_tag )? ) )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(CASE, "CASE"), root_1);
adaptor.addChild(root_1, stream_expr.nextTree());
if ( !(stream_when_tag.hasNext()) ) {
throw new RewriteEarlyExitException();
}
while ( stream_when_tag.hasNext() ) {
adaptor.addChild(root_1, stream_when_tag.nextTree());
}
stream_when_tag.reset();
// liqp/Liquid.g:201:111: ^( ELSE ( else_tag )? )
{
CommonTree root_2 = (CommonTree)adaptor.nil();
root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ELSE, "ELSE"), root_2);
// liqp/Liquid.g:201:118: ( else_tag )?
if ( stream_else_tag.hasNext() ) {
adaptor.addChild(root_2, stream_else_tag.nextTree());
}
stream_else_tag.reset();
adaptor.addChild(root_1, root_2);
}
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "case_tag"
public static class when_tag_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "when_tag"
// liqp/Liquid.g:204:1: when_tag : TagStart When term ( ( Or | Comma ) term )* TagEnd block -> ^( WHEN ( term )+ block ) ;
public final LiquidParser.when_tag_return when_tag() throws RecognitionException {
LiquidParser.when_tag_return retval = new LiquidParser.when_tag_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token TagStart87=null;
Token When88=null;
Token Or90=null;
Token Comma91=null;
Token TagEnd93=null;
ParserRuleReturnScope term89 =null;
ParserRuleReturnScope term92 =null;
ParserRuleReturnScope block94 =null;
CommonTree TagStart87_tree=null;
CommonTree When88_tree=null;
CommonTree Or90_tree=null;
CommonTree Comma91_tree=null;
CommonTree TagEnd93_tree=null;
RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma");
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_When=new RewriteRuleTokenStream(adaptor,"token When");
RewriteRuleTokenStream stream_Or=new RewriteRuleTokenStream(adaptor,"token Or");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
RewriteRuleSubtreeStream stream_term=new RewriteRuleSubtreeStream(adaptor,"rule term");
RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");
try {
// liqp/Liquid.g:205:2: ( TagStart When term ( ( Or | Comma ) term )* TagEnd block -> ^( WHEN ( term )+ block ) )
// liqp/Liquid.g:205:4: TagStart When term ( ( Or | Comma ) term )* TagEnd block
{
TagStart87=(Token)match(input,TagStart,FOLLOW_TagStart_in_when_tag786); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart87);
When88=(Token)match(input,When,FOLLOW_When_in_when_tag788); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_When.add(When88);
pushFollow(FOLLOW_term_in_when_tag790);
term89=term();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_term.add(term89.getTree());
// liqp/Liquid.g:205:23: ( ( Or | Comma ) term )*
loop16:
while (true) {
int alt16=2;
int LA16_0 = input.LA(1);
if ( (LA16_0==Comma||LA16_0==Or) ) {
alt16=1;
}
switch (alt16) {
case 1 :
// liqp/Liquid.g:205:24: ( Or | Comma ) term
{
// liqp/Liquid.g:205:24: ( Or | Comma )
int alt15=2;
int LA15_0 = input.LA(1);
if ( (LA15_0==Or) ) {
alt15=1;
}
else if ( (LA15_0==Comma) ) {
alt15=2;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 15, 0, input);
throw nvae;
}
switch (alt15) {
case 1 :
// liqp/Liquid.g:205:25: Or
{
Or90=(Token)match(input,Or,FOLLOW_Or_in_when_tag794); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Or.add(Or90);
}
break;
case 2 :
// liqp/Liquid.g:205:30: Comma
{
Comma91=(Token)match(input,Comma,FOLLOW_Comma_in_when_tag798); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Comma.add(Comma91);
}
break;
}
pushFollow(FOLLOW_term_in_when_tag801);
term92=term();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_term.add(term92.getTree());
}
break;
default :
break loop16;
}
}
TagEnd93=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_when_tag805); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd93);
pushFollow(FOLLOW_block_in_when_tag807);
block94=block();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_block.add(block94.getTree());
// AST REWRITE
// elements: term, block
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 205:57: -> ^( WHEN ( term )+ block )
{
// liqp/Liquid.g:205:60: ^( WHEN ( term )+ block )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(WHEN, "WHEN"), root_1);
if ( !(stream_term.hasNext()) ) {
throw new RewriteEarlyExitException();
}
while ( stream_term.hasNext() ) {
adaptor.addChild(root_1, stream_term.nextTree());
}
stream_term.reset();
adaptor.addChild(root_1, stream_block.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "when_tag"
public static class cycle_tag_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "cycle_tag"
// liqp/Liquid.g:208:1: cycle_tag : TagStart Cycle cycle_group expr ( Comma expr )* TagEnd -> ^( CYCLE cycle_group ( expr )+ ) ;
public final LiquidParser.cycle_tag_return cycle_tag() throws RecognitionException {
LiquidParser.cycle_tag_return retval = new LiquidParser.cycle_tag_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token TagStart95=null;
Token Cycle96=null;
Token Comma99=null;
Token TagEnd101=null;
ParserRuleReturnScope cycle_group97 =null;
ParserRuleReturnScope expr98 =null;
ParserRuleReturnScope expr100 =null;
CommonTree TagStart95_tree=null;
CommonTree Cycle96_tree=null;
CommonTree Comma99_tree=null;
CommonTree TagEnd101_tree=null;
RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma");
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
RewriteRuleTokenStream stream_Cycle=new RewriteRuleTokenStream(adaptor,"token Cycle");
RewriteRuleSubtreeStream stream_cycle_group=new RewriteRuleSubtreeStream(adaptor,"rule cycle_group");
RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
try {
// liqp/Liquid.g:209:2: ( TagStart Cycle cycle_group expr ( Comma expr )* TagEnd -> ^( CYCLE cycle_group ( expr )+ ) )
// liqp/Liquid.g:209:4: TagStart Cycle cycle_group expr ( Comma expr )* TagEnd
{
TagStart95=(Token)match(input,TagStart,FOLLOW_TagStart_in_cycle_tag829); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart95);
Cycle96=(Token)match(input,Cycle,FOLLOW_Cycle_in_cycle_tag831); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Cycle.add(Cycle96);
pushFollow(FOLLOW_cycle_group_in_cycle_tag833);
cycle_group97=cycle_group();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_cycle_group.add(cycle_group97.getTree());
pushFollow(FOLLOW_expr_in_cycle_tag835);
expr98=expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expr.add(expr98.getTree());
// liqp/Liquid.g:209:36: ( Comma expr )*
loop17:
while (true) {
int alt17=2;
int LA17_0 = input.LA(1);
if ( (LA17_0==Comma) ) {
alt17=1;
}
switch (alt17) {
case 1 :
// liqp/Liquid.g:209:37: Comma expr
{
Comma99=(Token)match(input,Comma,FOLLOW_Comma_in_cycle_tag838); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Comma.add(Comma99);
pushFollow(FOLLOW_expr_in_cycle_tag840);
expr100=expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expr.add(expr100.getTree());
}
break;
default :
break loop17;
}
}
TagEnd101=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_cycle_tag844); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd101);
// AST REWRITE
// elements: cycle_group, expr
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 209:57: -> ^( CYCLE cycle_group ( expr )+ )
{
// liqp/Liquid.g:209:60: ^( CYCLE cycle_group ( expr )+ )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(CYCLE, "CYCLE"), root_1);
adaptor.addChild(root_1, stream_cycle_group.nextTree());
if ( !(stream_expr.hasNext()) ) {
throw new RewriteEarlyExitException();
}
while ( stream_expr.hasNext() ) {
adaptor.addChild(root_1, stream_expr.nextTree());
}
stream_expr.reset();
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "cycle_tag"
public static class cycle_group_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "cycle_group"
// liqp/Liquid.g:212:1: cycle_group : ( ( expr Col )=> expr Col )? -> ^( GROUP ( expr )? ) ;
public final LiquidParser.cycle_group_return cycle_group() throws RecognitionException {
LiquidParser.cycle_group_return retval = new LiquidParser.cycle_group_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token Col103=null;
ParserRuleReturnScope expr102 =null;
CommonTree Col103_tree=null;
RewriteRuleTokenStream stream_Col=new RewriteRuleTokenStream(adaptor,"token Col");
RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
try {
// liqp/Liquid.g:213:2: ( ( ( expr Col )=> expr Col )? -> ^( GROUP ( expr )? ) )
// liqp/Liquid.g:213:4: ( ( expr Col )=> expr Col )?
{
// liqp/Liquid.g:213:4: ( ( expr Col )=> expr Col )?
int alt18=2;
switch ( input.LA(1) ) {
case DoubleNum:
{
int LA18_1 = input.LA(2);
if ( (synpred2_Liquid()) ) {
alt18=1;
}
}
break;
case LongNum:
{
int LA18_2 = input.LA(2);
if ( (synpred2_Liquid()) ) {
alt18=1;
}
}
break;
case Str:
{
int LA18_3 = input.LA(2);
if ( (synpred2_Liquid()) ) {
alt18=1;
}
}
break;
case True:
{
int LA18_4 = input.LA(2);
if ( (synpred2_Liquid()) ) {
alt18=1;
}
}
break;
case False:
{
int LA18_5 = input.LA(2);
if ( (synpred2_Liquid()) ) {
alt18=1;
}
}
break;
case Nil:
{
int LA18_6 = input.LA(2);
if ( (synpred2_Liquid()) ) {
alt18=1;
}
}
break;
case NoSpace:
{
int LA18_7 = input.LA(2);
if ( (synpred2_Liquid()) ) {
alt18=1;
}
}
break;
case Id:
{
int LA18_8 = input.LA(2);
if ( (synpred2_Liquid()) ) {
alt18=1;
}
}
break;
case Continue:
{
int LA18_9 = input.LA(2);
if ( (synpred2_Liquid()) ) {
alt18=1;
}
}
break;
case OBr:
{
int LA18_10 = input.LA(2);
if ( (synpred2_Liquid()) ) {
alt18=1;
}
}
break;
case Empty:
{
int LA18_11 = input.LA(2);
if ( (synpred2_Liquid()) ) {
alt18=1;
}
}
break;
case OPar:
{
int LA18_12 = input.LA(2);
if ( (synpred2_Liquid()) ) {
alt18=1;
}
}
break;
}
switch (alt18) {
case 1 :
// liqp/Liquid.g:213:5: ( expr Col )=> expr Col
{
pushFollow(FOLLOW_expr_in_cycle_group874);
expr102=expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expr.add(expr102.getTree());
Col103=(Token)match(input,Col,FOLLOW_Col_in_cycle_group876); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Col.add(Col103);
}
break;
}
// AST REWRITE
// elements: expr
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 213:29: -> ^( GROUP ( expr )? )
{
// liqp/Liquid.g:213:32: ^( GROUP ( expr )? )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(GROUP, "GROUP"), root_1);
// liqp/Liquid.g:213:40: ( expr )?
if ( stream_expr.hasNext() ) {
adaptor.addChild(root_1, stream_expr.nextTree());
}
stream_expr.reset();
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "cycle_group"
public static class for_tag_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "for_tag"
// liqp/Liquid.g:216:1: for_tag : ( for_array | for_range );
public final LiquidParser.for_tag_return for_tag() throws RecognitionException {
LiquidParser.for_tag_return retval = new LiquidParser.for_tag_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
ParserRuleReturnScope for_array104 =null;
ParserRuleReturnScope for_range105 =null;
try {
// liqp/Liquid.g:217:2: ( for_array | for_range )
int alt19=2;
int LA19_0 = input.LA(1);
if ( (LA19_0==TagStart) ) {
int LA19_1 = input.LA(2);
if ( (LA19_1==ForStart) ) {
int LA19_2 = input.LA(3);
if ( (LA19_2==Id) ) {
int LA19_3 = input.LA(4);
if ( (LA19_3==In) ) {
int LA19_4 = input.LA(5);
if ( (LA19_4==OPar) ) {
alt19=2;
}
else if ( (LA19_4==Continue||LA19_4==Id||LA19_4==OBr) ) {
alt19=1;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
int nvaeMark = input.mark();
try {
for (int nvaeConsume = 0; nvaeConsume < 5 - 1; nvaeConsume++) {
input.consume();
}
NoViableAltException nvae =
new NoViableAltException("", 19, 4, input);
throw nvae;
} finally {
input.rewind(nvaeMark);
}
}
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
int nvaeMark = input.mark();
try {
for (int nvaeConsume = 0; nvaeConsume < 4 - 1; nvaeConsume++) {
input.consume();
}
NoViableAltException nvae =
new NoViableAltException("", 19, 3, input);
throw nvae;
} finally {
input.rewind(nvaeMark);
}
}
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
int nvaeMark = input.mark();
try {
for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
input.consume();
}
NoViableAltException nvae =
new NoViableAltException("", 19, 2, input);
throw nvae;
} finally {
input.rewind(nvaeMark);
}
}
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
int nvaeMark = input.mark();
try {
input.consume();
NoViableAltException nvae =
new NoViableAltException("", 19, 1, input);
throw nvae;
} finally {
input.rewind(nvaeMark);
}
}
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 19, 0, input);
throw nvae;
}
switch (alt19) {
case 1 :
// liqp/Liquid.g:217:4: for_array
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_for_array_in_for_tag898);
for_array104=for_array();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, for_array104.getTree());
}
break;
case 2 :
// liqp/Liquid.g:218:4: for_range
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_for_range_in_for_tag903);
for_range105=for_range();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, for_range105.getTree());
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "for_tag"
public static class for_array_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "for_array"
// liqp/Liquid.g:221:1: for_array : TagStart ForStart Id In lookup ( attribute )* TagEnd for_block TagStart ForEnd TagEnd -> ^( FOR_ARRAY Id lookup for_block ^( ATTRIBUTES ( attribute )* ) ) ;
public final LiquidParser.for_array_return for_array() throws RecognitionException {
LiquidParser.for_array_return retval = new LiquidParser.for_array_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token TagStart106=null;
Token ForStart107=null;
Token Id108=null;
Token In109=null;
Token TagEnd112=null;
Token TagStart114=null;
Token ForEnd115=null;
Token TagEnd116=null;
ParserRuleReturnScope lookup110 =null;
ParserRuleReturnScope attribute111 =null;
ParserRuleReturnScope for_block113 =null;
CommonTree TagStart106_tree=null;
CommonTree ForStart107_tree=null;
CommonTree Id108_tree=null;
CommonTree In109_tree=null;
CommonTree TagEnd112_tree=null;
CommonTree TagStart114_tree=null;
CommonTree ForEnd115_tree=null;
CommonTree TagEnd116_tree=null;
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_In=new RewriteRuleTokenStream(adaptor,"token In");
RewriteRuleTokenStream stream_ForEnd=new RewriteRuleTokenStream(adaptor,"token ForEnd");
RewriteRuleTokenStream stream_Id=new RewriteRuleTokenStream(adaptor,"token Id");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
RewriteRuleTokenStream stream_ForStart=new RewriteRuleTokenStream(adaptor,"token ForStart");
RewriteRuleSubtreeStream stream_lookup=new RewriteRuleSubtreeStream(adaptor,"rule lookup");
RewriteRuleSubtreeStream stream_for_block=new RewriteRuleSubtreeStream(adaptor,"rule for_block");
RewriteRuleSubtreeStream stream_attribute=new RewriteRuleSubtreeStream(adaptor,"rule attribute");
try {
// liqp/Liquid.g:222:2: ( TagStart ForStart Id In lookup ( attribute )* TagEnd for_block TagStart ForEnd TagEnd -> ^( FOR_ARRAY Id lookup for_block ^( ATTRIBUTES ( attribute )* ) ) )
// liqp/Liquid.g:222:4: TagStart ForStart Id In lookup ( attribute )* TagEnd for_block TagStart ForEnd TagEnd
{
TagStart106=(Token)match(input,TagStart,FOLLOW_TagStart_in_for_array918); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart106);
ForStart107=(Token)match(input,ForStart,FOLLOW_ForStart_in_for_array920); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ForStart.add(ForStart107);
Id108=(Token)match(input,Id,FOLLOW_Id_in_for_array922); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Id.add(Id108);
In109=(Token)match(input,In,FOLLOW_In_in_for_array924); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_In.add(In109);
pushFollow(FOLLOW_lookup_in_for_array926);
lookup110=lookup();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_lookup.add(lookup110.getTree());
// liqp/Liquid.g:222:35: ( attribute )*
loop20:
while (true) {
int alt20=2;
int LA20_0 = input.LA(1);
if ( (LA20_0==Id) ) {
alt20=1;
}
switch (alt20) {
case 1 :
// liqp/Liquid.g:222:35: attribute
{
pushFollow(FOLLOW_attribute_in_for_array928);
attribute111=attribute();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_attribute.add(attribute111.getTree());
}
break;
default :
break loop20;
}
}
TagEnd112=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_for_array931); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd112);
pushFollow(FOLLOW_for_block_in_for_array936);
for_block113=for_block();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_for_block.add(for_block113.getTree());
TagStart114=(Token)match(input,TagStart,FOLLOW_TagStart_in_for_array941); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart114);
ForEnd115=(Token)match(input,ForEnd,FOLLOW_ForEnd_in_for_array943); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ForEnd.add(ForEnd115);
TagEnd116=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_for_array945); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd116);
// AST REWRITE
// elements: lookup, Id, attribute, for_block
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 225:4: -> ^( FOR_ARRAY Id lookup for_block ^( ATTRIBUTES ( attribute )* ) )
{
// liqp/Liquid.g:225:7: ^( FOR_ARRAY Id lookup for_block ^( ATTRIBUTES ( attribute )* ) )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(FOR_ARRAY, "FOR_ARRAY"), root_1);
adaptor.addChild(root_1, stream_Id.nextNode());
adaptor.addChild(root_1, stream_lookup.nextTree());
adaptor.addChild(root_1, stream_for_block.nextTree());
// liqp/Liquid.g:225:39: ^( ATTRIBUTES ( attribute )* )
{
CommonTree root_2 = (CommonTree)adaptor.nil();
root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ATTRIBUTES, "ATTRIBUTES"), root_2);
// liqp/Liquid.g:225:52: ( attribute )*
while ( stream_attribute.hasNext() ) {
adaptor.addChild(root_2, stream_attribute.nextTree());
}
stream_attribute.reset();
adaptor.addChild(root_1, root_2);
}
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "for_array"
public static class for_range_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "for_range"
// liqp/Liquid.g:228:1: for_range : TagStart ForStart Id In OPar expr DotDot expr CPar ( attribute )* TagEnd block TagStart ForEnd TagEnd -> ^( FOR_RANGE Id expr expr block ^( ATTRIBUTES ( attribute )* ) ) ;
public final LiquidParser.for_range_return for_range() throws RecognitionException {
LiquidParser.for_range_return retval = new LiquidParser.for_range_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token TagStart117=null;
Token ForStart118=null;
Token Id119=null;
Token In120=null;
Token OPar121=null;
Token DotDot123=null;
Token CPar125=null;
Token TagEnd127=null;
Token TagStart129=null;
Token ForEnd130=null;
Token TagEnd131=null;
ParserRuleReturnScope expr122 =null;
ParserRuleReturnScope expr124 =null;
ParserRuleReturnScope attribute126 =null;
ParserRuleReturnScope block128 =null;
CommonTree TagStart117_tree=null;
CommonTree ForStart118_tree=null;
CommonTree Id119_tree=null;
CommonTree In120_tree=null;
CommonTree OPar121_tree=null;
CommonTree DotDot123_tree=null;
CommonTree CPar125_tree=null;
CommonTree TagEnd127_tree=null;
CommonTree TagStart129_tree=null;
CommonTree ForEnd130_tree=null;
CommonTree TagEnd131_tree=null;
RewriteRuleTokenStream stream_CPar=new RewriteRuleTokenStream(adaptor,"token CPar");
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_In=new RewriteRuleTokenStream(adaptor,"token In");
RewriteRuleTokenStream stream_ForEnd=new RewriteRuleTokenStream(adaptor,"token ForEnd");
RewriteRuleTokenStream stream_OPar=new RewriteRuleTokenStream(adaptor,"token OPar");
RewriteRuleTokenStream stream_Id=new RewriteRuleTokenStream(adaptor,"token Id");
RewriteRuleTokenStream stream_DotDot=new RewriteRuleTokenStream(adaptor,"token DotDot");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
RewriteRuleTokenStream stream_ForStart=new RewriteRuleTokenStream(adaptor,"token ForStart");
RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");
RewriteRuleSubtreeStream stream_attribute=new RewriteRuleSubtreeStream(adaptor,"rule attribute");
try {
// liqp/Liquid.g:229:2: ( TagStart ForStart Id In OPar expr DotDot expr CPar ( attribute )* TagEnd block TagStart ForEnd TagEnd -> ^( FOR_RANGE Id expr expr block ^( ATTRIBUTES ( attribute )* ) ) )
// liqp/Liquid.g:229:4: TagStart ForStart Id In OPar expr DotDot expr CPar ( attribute )* TagEnd block TagStart ForEnd TagEnd
{
TagStart117=(Token)match(input,TagStart,FOLLOW_TagStart_in_for_range978); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart117);
ForStart118=(Token)match(input,ForStart,FOLLOW_ForStart_in_for_range980); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ForStart.add(ForStart118);
Id119=(Token)match(input,Id,FOLLOW_Id_in_for_range982); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Id.add(Id119);
In120=(Token)match(input,In,FOLLOW_In_in_for_range984); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_In.add(In120);
OPar121=(Token)match(input,OPar,FOLLOW_OPar_in_for_range986); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_OPar.add(OPar121);
pushFollow(FOLLOW_expr_in_for_range988);
expr122=expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expr.add(expr122.getTree());
DotDot123=(Token)match(input,DotDot,FOLLOW_DotDot_in_for_range990); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_DotDot.add(DotDot123);
pushFollow(FOLLOW_expr_in_for_range992);
expr124=expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expr.add(expr124.getTree());
CPar125=(Token)match(input,CPar,FOLLOW_CPar_in_for_range994); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CPar.add(CPar125);
// liqp/Liquid.g:229:55: ( attribute )*
loop21:
while (true) {
int alt21=2;
int LA21_0 = input.LA(1);
if ( (LA21_0==Id) ) {
alt21=1;
}
switch (alt21) {
case 1 :
// liqp/Liquid.g:229:55: attribute
{
pushFollow(FOLLOW_attribute_in_for_range996);
attribute126=attribute();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_attribute.add(attribute126.getTree());
}
break;
default :
break loop21;
}
}
TagEnd127=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_for_range999); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd127);
pushFollow(FOLLOW_block_in_for_range1004);
block128=block();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_block.add(block128.getTree());
TagStart129=(Token)match(input,TagStart,FOLLOW_TagStart_in_for_range1009); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart129);
ForEnd130=(Token)match(input,ForEnd,FOLLOW_ForEnd_in_for_range1011); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ForEnd.add(ForEnd130);
TagEnd131=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_for_range1013); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd131);
// AST REWRITE
// elements: block, attribute, Id, expr, expr
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 232:4: -> ^( FOR_RANGE Id expr expr block ^( ATTRIBUTES ( attribute )* ) )
{
// liqp/Liquid.g:232:7: ^( FOR_RANGE Id expr expr block ^( ATTRIBUTES ( attribute )* ) )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(FOR_RANGE, "FOR_RANGE"), root_1);
adaptor.addChild(root_1, stream_Id.nextNode());
adaptor.addChild(root_1, stream_expr.nextTree());
adaptor.addChild(root_1, stream_expr.nextTree());
adaptor.addChild(root_1, stream_block.nextTree());
// liqp/Liquid.g:232:38: ^( ATTRIBUTES ( attribute )* )
{
CommonTree root_2 = (CommonTree)adaptor.nil();
root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ATTRIBUTES, "ATTRIBUTES"), root_2);
// liqp/Liquid.g:232:51: ( attribute )*
while ( stream_attribute.hasNext() ) {
adaptor.addChild(root_2, stream_attribute.nextTree());
}
stream_attribute.reset();
adaptor.addChild(root_1, root_2);
}
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "for_range"
public static class for_block_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "for_block"
// liqp/Liquid.g:235:1: for_block : a= block ( TagStart Else TagEnd b= block )? -> ^( FOR_BLOCK block ( block )? ) ;
public final LiquidParser.for_block_return for_block() throws RecognitionException {
LiquidParser.for_block_return retval = new LiquidParser.for_block_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token TagStart132=null;
Token Else133=null;
Token TagEnd134=null;
ParserRuleReturnScope a =null;
ParserRuleReturnScope b =null;
CommonTree TagStart132_tree=null;
CommonTree Else133_tree=null;
CommonTree TagEnd134_tree=null;
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_Else=new RewriteRuleTokenStream(adaptor,"token Else");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");
try {
// liqp/Liquid.g:236:2: (a= block ( TagStart Else TagEnd b= block )? -> ^( FOR_BLOCK block ( block )? ) )
// liqp/Liquid.g:236:4: a= block ( TagStart Else TagEnd b= block )?
{
pushFollow(FOLLOW_block_in_for_block1050);
a=block();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_block.add(a.getTree());
// liqp/Liquid.g:236:12: ( TagStart Else TagEnd b= block )?
int alt22=2;
int LA22_0 = input.LA(1);
if ( (LA22_0==TagStart) ) {
int LA22_1 = input.LA(2);
if ( (LA22_1==Else) ) {
alt22=1;
}
}
switch (alt22) {
case 1 :
// liqp/Liquid.g:236:13: TagStart Else TagEnd b= block
{
TagStart132=(Token)match(input,TagStart,FOLLOW_TagStart_in_for_block1053); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart132);
Else133=(Token)match(input,Else,FOLLOW_Else_in_for_block1055); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Else.add(Else133);
TagEnd134=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_for_block1057); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd134);
pushFollow(FOLLOW_block_in_for_block1061);
b=block();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_block.add(b.getTree());
}
break;
}
// AST REWRITE
// elements: block, block
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 236:44: -> ^( FOR_BLOCK block ( block )? )
{
// liqp/Liquid.g:236:47: ^( FOR_BLOCK block ( block )? )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(FOR_BLOCK, "FOR_BLOCK"), root_1);
adaptor.addChild(root_1, stream_block.nextTree());
// liqp/Liquid.g:236:65: ( block )?
if ( stream_block.hasNext() ) {
adaptor.addChild(root_1, stream_block.nextTree());
}
stream_block.reset();
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "for_block"
public static class attribute_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "attribute"
// liqp/Liquid.g:239:1: attribute : Id Col expr -> ^( Id expr ) ;
public final LiquidParser.attribute_return attribute() throws RecognitionException {
LiquidParser.attribute_return retval = new LiquidParser.attribute_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token Id135=null;
Token Col136=null;
ParserRuleReturnScope expr137 =null;
CommonTree Id135_tree=null;
CommonTree Col136_tree=null;
RewriteRuleTokenStream stream_Col=new RewriteRuleTokenStream(adaptor,"token Col");
RewriteRuleTokenStream stream_Id=new RewriteRuleTokenStream(adaptor,"token Id");
RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
try {
// liqp/Liquid.g:240:2: ( Id Col expr -> ^( Id expr ) )
// liqp/Liquid.g:240:4: Id Col expr
{
Id135=(Token)match(input,Id,FOLLOW_Id_in_attribute1085); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Id.add(Id135);
Col136=(Token)match(input,Col,FOLLOW_Col_in_attribute1087); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Col.add(Col136);
pushFollow(FOLLOW_expr_in_attribute1089);
expr137=expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expr.add(expr137.getTree());
// AST REWRITE
// elements: expr, Id
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 240:16: -> ^( Id expr )
{
// liqp/Liquid.g:240:19: ^( Id expr )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot(stream_Id.nextNode(), root_1);
adaptor.addChild(root_1, stream_expr.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "attribute"
public static class table_tag_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "table_tag"
// liqp/Liquid.g:243:1: table_tag : TagStart TableStart Id In lookup ( attribute )* TagEnd block TagStart TableEnd TagEnd -> ^( TABLE Id lookup block ^( ATTRIBUTES ( attribute )* ) ) ;
public final LiquidParser.table_tag_return table_tag() throws RecognitionException {
LiquidParser.table_tag_return retval = new LiquidParser.table_tag_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token TagStart138=null;
Token TableStart139=null;
Token Id140=null;
Token In141=null;
Token TagEnd144=null;
Token TagStart146=null;
Token TableEnd147=null;
Token TagEnd148=null;
ParserRuleReturnScope lookup142 =null;
ParserRuleReturnScope attribute143 =null;
ParserRuleReturnScope block145 =null;
CommonTree TagStart138_tree=null;
CommonTree TableStart139_tree=null;
CommonTree Id140_tree=null;
CommonTree In141_tree=null;
CommonTree TagEnd144_tree=null;
CommonTree TagStart146_tree=null;
CommonTree TableEnd147_tree=null;
CommonTree TagEnd148_tree=null;
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_In=new RewriteRuleTokenStream(adaptor,"token In");
RewriteRuleTokenStream stream_TableEnd=new RewriteRuleTokenStream(adaptor,"token TableEnd");
RewriteRuleTokenStream stream_TableStart=new RewriteRuleTokenStream(adaptor,"token TableStart");
RewriteRuleTokenStream stream_Id=new RewriteRuleTokenStream(adaptor,"token Id");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
RewriteRuleSubtreeStream stream_lookup=new RewriteRuleSubtreeStream(adaptor,"rule lookup");
RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");
RewriteRuleSubtreeStream stream_attribute=new RewriteRuleSubtreeStream(adaptor,"rule attribute");
try {
// liqp/Liquid.g:244:2: ( TagStart TableStart Id In lookup ( attribute )* TagEnd block TagStart TableEnd TagEnd -> ^( TABLE Id lookup block ^( ATTRIBUTES ( attribute )* ) ) )
// liqp/Liquid.g:244:4: TagStart TableStart Id In lookup ( attribute )* TagEnd block TagStart TableEnd TagEnd
{
TagStart138=(Token)match(input,TagStart,FOLLOW_TagStart_in_table_tag1108); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart138);
TableStart139=(Token)match(input,TableStart,FOLLOW_TableStart_in_table_tag1110); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TableStart.add(TableStart139);
Id140=(Token)match(input,Id,FOLLOW_Id_in_table_tag1112); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Id.add(Id140);
In141=(Token)match(input,In,FOLLOW_In_in_table_tag1114); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_In.add(In141);
pushFollow(FOLLOW_lookup_in_table_tag1116);
lookup142=lookup();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_lookup.add(lookup142.getTree());
// liqp/Liquid.g:244:37: ( attribute )*
loop23:
while (true) {
int alt23=2;
int LA23_0 = input.LA(1);
if ( (LA23_0==Id) ) {
alt23=1;
}
switch (alt23) {
case 1 :
// liqp/Liquid.g:244:37: attribute
{
pushFollow(FOLLOW_attribute_in_table_tag1118);
attribute143=attribute();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_attribute.add(attribute143.getTree());
}
break;
default :
break loop23;
}
}
TagEnd144=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_table_tag1121); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd144);
pushFollow(FOLLOW_block_in_table_tag1123);
block145=block();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_block.add(block145.getTree());
TagStart146=(Token)match(input,TagStart,FOLLOW_TagStart_in_table_tag1125); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart146);
TableEnd147=(Token)match(input,TableEnd,FOLLOW_TableEnd_in_table_tag1127); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TableEnd.add(TableEnd147);
TagEnd148=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_table_tag1129); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd148);
// AST REWRITE
// elements: lookup, block, attribute, Id
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 244:86: -> ^( TABLE Id lookup block ^( ATTRIBUTES ( attribute )* ) )
{
// liqp/Liquid.g:244:89: ^( TABLE Id lookup block ^( ATTRIBUTES ( attribute )* ) )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(TABLE, "TABLE"), root_1);
adaptor.addChild(root_1, stream_Id.nextNode());
adaptor.addChild(root_1, stream_lookup.nextTree());
adaptor.addChild(root_1, stream_block.nextTree());
// liqp/Liquid.g:244:113: ^( ATTRIBUTES ( attribute )* )
{
CommonTree root_2 = (CommonTree)adaptor.nil();
root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ATTRIBUTES, "ATTRIBUTES"), root_2);
// liqp/Liquid.g:244:126: ( attribute )*
while ( stream_attribute.hasNext() ) {
adaptor.addChild(root_2, stream_attribute.nextTree());
}
stream_attribute.reset();
adaptor.addChild(root_1, root_2);
}
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "table_tag"
public static class capture_tag_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "capture_tag"
// liqp/Liquid.g:247:1: capture_tag : TagStart CaptureStart ( Id TagEnd block TagStart CaptureEnd TagEnd -> ^( CAPTURE Id block ) | Str TagEnd block TagStart CaptureEnd TagEnd -> ^( CAPTURE Id[$Str.text] block ) ) ;
public final LiquidParser.capture_tag_return capture_tag() throws RecognitionException {
LiquidParser.capture_tag_return retval = new LiquidParser.capture_tag_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token TagStart149=null;
Token CaptureStart150=null;
Token Id151=null;
Token TagEnd152=null;
Token TagStart154=null;
Token CaptureEnd155=null;
Token TagEnd156=null;
Token Str157=null;
Token TagEnd158=null;
Token TagStart160=null;
Token CaptureEnd161=null;
Token TagEnd162=null;
ParserRuleReturnScope block153 =null;
ParserRuleReturnScope block159 =null;
CommonTree TagStart149_tree=null;
CommonTree CaptureStart150_tree=null;
CommonTree Id151_tree=null;
CommonTree TagEnd152_tree=null;
CommonTree TagStart154_tree=null;
CommonTree CaptureEnd155_tree=null;
CommonTree TagEnd156_tree=null;
CommonTree Str157_tree=null;
CommonTree TagEnd158_tree=null;
CommonTree TagStart160_tree=null;
CommonTree CaptureEnd161_tree=null;
CommonTree TagEnd162_tree=null;
RewriteRuleTokenStream stream_Str=new RewriteRuleTokenStream(adaptor,"token Str");
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_CaptureStart=new RewriteRuleTokenStream(adaptor,"token CaptureStart");
RewriteRuleTokenStream stream_Id=new RewriteRuleTokenStream(adaptor,"token Id");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
RewriteRuleTokenStream stream_CaptureEnd=new RewriteRuleTokenStream(adaptor,"token CaptureEnd");
RewriteRuleSubtreeStream stream_block=new RewriteRuleSubtreeStream(adaptor,"rule block");
try {
// liqp/Liquid.g:248:2: ( TagStart CaptureStart ( Id TagEnd block TagStart CaptureEnd TagEnd -> ^( CAPTURE Id block ) | Str TagEnd block TagStart CaptureEnd TagEnd -> ^( CAPTURE Id[$Str.text] block ) ) )
// liqp/Liquid.g:248:4: TagStart CaptureStart ( Id TagEnd block TagStart CaptureEnd TagEnd -> ^( CAPTURE Id block ) | Str TagEnd block TagStart CaptureEnd TagEnd -> ^( CAPTURE Id[$Str.text] block ) )
{
TagStart149=(Token)match(input,TagStart,FOLLOW_TagStart_in_capture_tag1159); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart149);
CaptureStart150=(Token)match(input,CaptureStart,FOLLOW_CaptureStart_in_capture_tag1161); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CaptureStart.add(CaptureStart150);
// liqp/Liquid.g:248:26: ( Id TagEnd block TagStart CaptureEnd TagEnd -> ^( CAPTURE Id block ) | Str TagEnd block TagStart CaptureEnd TagEnd -> ^( CAPTURE Id[$Str.text] block ) )
int alt24=2;
int LA24_0 = input.LA(1);
if ( (LA24_0==Id) ) {
alt24=1;
}
else if ( (LA24_0==Str) ) {
alt24=2;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 24, 0, input);
throw nvae;
}
switch (alt24) {
case 1 :
// liqp/Liquid.g:248:28: Id TagEnd block TagStart CaptureEnd TagEnd
{
Id151=(Token)match(input,Id,FOLLOW_Id_in_capture_tag1165); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Id.add(Id151);
TagEnd152=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_capture_tag1167); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd152);
pushFollow(FOLLOW_block_in_capture_tag1169);
block153=block();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_block.add(block153.getTree());
TagStart154=(Token)match(input,TagStart,FOLLOW_TagStart_in_capture_tag1171); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart154);
CaptureEnd155=(Token)match(input,CaptureEnd,FOLLOW_CaptureEnd_in_capture_tag1173); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CaptureEnd.add(CaptureEnd155);
TagEnd156=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_capture_tag1175); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd156);
// AST REWRITE
// elements: block, Id
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 248:72: -> ^( CAPTURE Id block )
{
// liqp/Liquid.g:248:75: ^( CAPTURE Id block )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(CAPTURE, "CAPTURE"), root_1);
adaptor.addChild(root_1, stream_Id.nextNode());
adaptor.addChild(root_1, stream_block.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
break;
case 2 :
// liqp/Liquid.g:249:28: Str TagEnd block TagStart CaptureEnd TagEnd
{
Str157=(Token)match(input,Str,FOLLOW_Str_in_capture_tag1215); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Str.add(Str157);
TagEnd158=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_capture_tag1217); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd158);
pushFollow(FOLLOW_block_in_capture_tag1219);
block159=block();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_block.add(block159.getTree());
TagStart160=(Token)match(input,TagStart,FOLLOW_TagStart_in_capture_tag1221); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart160);
CaptureEnd161=(Token)match(input,CaptureEnd,FOLLOW_CaptureEnd_in_capture_tag1223); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CaptureEnd.add(CaptureEnd161);
TagEnd162=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_capture_tag1225); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd162);
// AST REWRITE
// elements: Id, block
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 249:72: -> ^( CAPTURE Id[$Str.text] block )
{
// liqp/Liquid.g:249:75: ^( CAPTURE Id[$Str.text] block )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(CAPTURE, "CAPTURE"), root_1);
adaptor.addChild(root_1, (CommonTree)adaptor.create(Id, (Str157!=null?Str157.getText():null)));
adaptor.addChild(root_1, stream_block.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
break;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "capture_tag"
public static class include_tag_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "include_tag"
// liqp/Liquid.g:253:1: include_tag : TagStart Include a= Str ( With b= Str )? TagEnd -> ^( INCLUDE $a ^( WITH ( $b)? ) ) ;
public final LiquidParser.include_tag_return include_tag() throws RecognitionException {
LiquidParser.include_tag_return retval = new LiquidParser.include_tag_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token a=null;
Token b=null;
Token TagStart163=null;
Token Include164=null;
Token With165=null;
Token TagEnd166=null;
CommonTree a_tree=null;
CommonTree b_tree=null;
CommonTree TagStart163_tree=null;
CommonTree Include164_tree=null;
CommonTree With165_tree=null;
CommonTree TagEnd166_tree=null;
RewriteRuleTokenStream stream_Str=new RewriteRuleTokenStream(adaptor,"token Str");
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_Include=new RewriteRuleTokenStream(adaptor,"token Include");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
RewriteRuleTokenStream stream_With=new RewriteRuleTokenStream(adaptor,"token With");
try {
// liqp/Liquid.g:254:2: ( TagStart Include a= Str ( With b= Str )? TagEnd -> ^( INCLUDE $a ^( WITH ( $b)? ) ) )
// liqp/Liquid.g:254:4: TagStart Include a= Str ( With b= Str )? TagEnd
{
TagStart163=(Token)match(input,TagStart,FOLLOW_TagStart_in_include_tag1274); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart163);
Include164=(Token)match(input,Include,FOLLOW_Include_in_include_tag1276); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Include.add(Include164);
a=(Token)match(input,Str,FOLLOW_Str_in_include_tag1280); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Str.add(a);
// liqp/Liquid.g:254:27: ( With b= Str )?
int alt25=2;
int LA25_0 = input.LA(1);
if ( (LA25_0==With) ) {
alt25=1;
}
switch (alt25) {
case 1 :
// liqp/Liquid.g:254:28: With b= Str
{
With165=(Token)match(input,With,FOLLOW_With_in_include_tag1283); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_With.add(With165);
b=(Token)match(input,Str,FOLLOW_Str_in_include_tag1287); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Str.add(b);
}
break;
}
TagEnd166=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_include_tag1291); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd166);
// AST REWRITE
// elements: a, b
// token labels: a, b
// rule labels: retval
// token list labels:
// rule list labels:
// wildcard labels:
if ( state.backtracking==0 ) {
retval.tree = root_0;
RewriteRuleTokenStream stream_a=new RewriteRuleTokenStream(adaptor,"token a",a);
RewriteRuleTokenStream stream_b=new RewriteRuleTokenStream(adaptor,"token b",b);
RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
root_0 = (CommonTree)adaptor.nil();
// 254:48: -> ^( INCLUDE $a ^( WITH ( $b)? ) )
{
// liqp/Liquid.g:254:51: ^( INCLUDE $a ^( WITH ( $b)? ) )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(INCLUDE, "INCLUDE"), root_1);
adaptor.addChild(root_1, stream_a.nextNode());
// liqp/Liquid.g:254:64: ^( WITH ( $b)? )
{
CommonTree root_2 = (CommonTree)adaptor.nil();
root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(WITH, "WITH"), root_2);
// liqp/Liquid.g:254:72: ( $b)?
if ( stream_b.hasNext() ) {
adaptor.addChild(root_2, stream_b.nextNode());
}
stream_b.reset();
adaptor.addChild(root_1, root_2);
}
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "include_tag"
public static class break_tag_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "break_tag"
// liqp/Liquid.g:257:1: break_tag : TagStart Break TagEnd -> Break ;
public final LiquidParser.break_tag_return break_tag() throws RecognitionException {
LiquidParser.break_tag_return retval = new LiquidParser.break_tag_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token TagStart167=null;
Token Break168=null;
Token TagEnd169=null;
CommonTree TagStart167_tree=null;
CommonTree Break168_tree=null;
CommonTree TagEnd169_tree=null;
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_Break=new RewriteRuleTokenStream(adaptor,"token Break");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
try {
// liqp/Liquid.g:258:2: ( TagStart Break TagEnd -> Break )
// liqp/Liquid.g:258:4: TagStart Break TagEnd
{
TagStart167=(Token)match(input,TagStart,FOLLOW_TagStart_in_break_tag1319); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart167);
Break168=(Token)match(input,Break,FOLLOW_Break_in_break_tag1321); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Break.add(Break168);
TagEnd169=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_break_tag1323); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd169);
// AST REWRITE
// elements: Break
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 258:26: -> Break
{
adaptor.addChild(root_0, stream_Break.nextNode());
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "break_tag"
public static class continue_tag_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "continue_tag"
// liqp/Liquid.g:261:1: continue_tag : TagStart Continue TagEnd -> Continue ;
public final LiquidParser.continue_tag_return continue_tag() throws RecognitionException {
LiquidParser.continue_tag_return retval = new LiquidParser.continue_tag_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token TagStart170=null;
Token Continue171=null;
Token TagEnd172=null;
CommonTree TagStart170_tree=null;
CommonTree Continue171_tree=null;
CommonTree TagEnd172_tree=null;
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_Continue=new RewriteRuleTokenStream(adaptor,"token Continue");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
try {
// liqp/Liquid.g:262:2: ( TagStart Continue TagEnd -> Continue )
// liqp/Liquid.g:262:4: TagStart Continue TagEnd
{
TagStart170=(Token)match(input,TagStart,FOLLOW_TagStart_in_continue_tag1338); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart170);
Continue171=(Token)match(input,Continue,FOLLOW_Continue_in_continue_tag1340); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Continue.add(Continue171);
TagEnd172=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_continue_tag1342); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd172);
// AST REWRITE
// elements: Continue
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 262:29: -> Continue
{
adaptor.addChild(root_0, stream_Continue.nextNode());
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "continue_tag"
public static class output_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "output"
// liqp/Liquid.g:265:1: output : OutStart expr ( filter )* OutEnd -> ^( OUTPUT expr ^( FILTERS ( filter )* ) ) ;
public final LiquidParser.output_return output() throws RecognitionException {
LiquidParser.output_return retval = new LiquidParser.output_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token OutStart173=null;
Token OutEnd176=null;
ParserRuleReturnScope expr174 =null;
ParserRuleReturnScope filter175 =null;
CommonTree OutStart173_tree=null;
CommonTree OutEnd176_tree=null;
RewriteRuleTokenStream stream_OutEnd=new RewriteRuleTokenStream(adaptor,"token OutEnd");
RewriteRuleTokenStream stream_OutStart=new RewriteRuleTokenStream(adaptor,"token OutStart");
RewriteRuleSubtreeStream stream_filter=new RewriteRuleSubtreeStream(adaptor,"rule filter");
RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
try {
// liqp/Liquid.g:266:2: ( OutStart expr ( filter )* OutEnd -> ^( OUTPUT expr ^( FILTERS ( filter )* ) ) )
// liqp/Liquid.g:266:4: OutStart expr ( filter )* OutEnd
{
OutStart173=(Token)match(input,OutStart,FOLLOW_OutStart_in_output1357); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_OutStart.add(OutStart173);
pushFollow(FOLLOW_expr_in_output1359);
expr174=expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expr.add(expr174.getTree());
// liqp/Liquid.g:266:18: ( filter )*
loop26:
while (true) {
int alt26=2;
int LA26_0 = input.LA(1);
if ( (LA26_0==Pipe) ) {
alt26=1;
}
switch (alt26) {
case 1 :
// liqp/Liquid.g:266:18: filter
{
pushFollow(FOLLOW_filter_in_output1361);
filter175=filter();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_filter.add(filter175.getTree());
}
break;
default :
break loop26;
}
}
OutEnd176=(Token)match(input,OutEnd,FOLLOW_OutEnd_in_output1364); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_OutEnd.add(OutEnd176);
// AST REWRITE
// elements: expr, filter
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 266:33: -> ^( OUTPUT expr ^( FILTERS ( filter )* ) )
{
// liqp/Liquid.g:266:36: ^( OUTPUT expr ^( FILTERS ( filter )* ) )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(OUTPUT, "OUTPUT"), root_1);
adaptor.addChild(root_1, stream_expr.nextTree());
// liqp/Liquid.g:266:50: ^( FILTERS ( filter )* )
{
CommonTree root_2 = (CommonTree)adaptor.nil();
root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(FILTERS, "FILTERS"), root_2);
// liqp/Liquid.g:266:60: ( filter )*
while ( stream_filter.hasNext() ) {
adaptor.addChild(root_2, stream_filter.nextTree());
}
stream_filter.reset();
adaptor.addChild(root_1, root_2);
}
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "output"
public static class filter_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "filter"
// liqp/Liquid.g:269:1: filter : Pipe Id ( params )? -> ^( FILTER Id ^( PARAMS ( params )? ) ) ;
public final LiquidParser.filter_return filter() throws RecognitionException {
LiquidParser.filter_return retval = new LiquidParser.filter_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token Pipe177=null;
Token Id178=null;
ParserRuleReturnScope params179 =null;
CommonTree Pipe177_tree=null;
CommonTree Id178_tree=null;
RewriteRuleTokenStream stream_Pipe=new RewriteRuleTokenStream(adaptor,"token Pipe");
RewriteRuleTokenStream stream_Id=new RewriteRuleTokenStream(adaptor,"token Id");
RewriteRuleSubtreeStream stream_params=new RewriteRuleSubtreeStream(adaptor,"rule params");
try {
// liqp/Liquid.g:270:2: ( Pipe Id ( params )? -> ^( FILTER Id ^( PARAMS ( params )? ) ) )
// liqp/Liquid.g:270:4: Pipe Id ( params )?
{
Pipe177=(Token)match(input,Pipe,FOLLOW_Pipe_in_filter1390); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Pipe.add(Pipe177);
Id178=(Token)match(input,Id,FOLLOW_Id_in_filter1392); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Id.add(Id178);
// liqp/Liquid.g:270:12: ( params )?
int alt27=2;
int LA27_0 = input.LA(1);
if ( (LA27_0==Col) ) {
alt27=1;
}
switch (alt27) {
case 1 :
// liqp/Liquid.g:270:12: params
{
pushFollow(FOLLOW_params_in_filter1394);
params179=params();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_params.add(params179.getTree());
}
break;
}
// AST REWRITE
// elements: Id, params
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 270:20: -> ^( FILTER Id ^( PARAMS ( params )? ) )
{
// liqp/Liquid.g:270:23: ^( FILTER Id ^( PARAMS ( params )? ) )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(FILTER, "FILTER"), root_1);
adaptor.addChild(root_1, stream_Id.nextNode());
// liqp/Liquid.g:270:35: ^( PARAMS ( params )? )
{
CommonTree root_2 = (CommonTree)adaptor.nil();
root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(PARAMS, "PARAMS"), root_2);
// liqp/Liquid.g:270:44: ( params )?
if ( stream_params.hasNext() ) {
adaptor.addChild(root_2, stream_params.nextTree());
}
stream_params.reset();
adaptor.addChild(root_1, root_2);
}
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "filter"
public static class params_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "params"
// liqp/Liquid.g:273:1: params : Col expr ( Comma expr )* -> ( expr )+ ;
public final LiquidParser.params_return params() throws RecognitionException {
LiquidParser.params_return retval = new LiquidParser.params_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token Col180=null;
Token Comma182=null;
ParserRuleReturnScope expr181 =null;
ParserRuleReturnScope expr183 =null;
CommonTree Col180_tree=null;
CommonTree Comma182_tree=null;
RewriteRuleTokenStream stream_Col=new RewriteRuleTokenStream(adaptor,"token Col");
RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma");
RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
try {
// liqp/Liquid.g:274:2: ( Col expr ( Comma expr )* -> ( expr )+ )
// liqp/Liquid.g:274:4: Col expr ( Comma expr )*
{
Col180=(Token)match(input,Col,FOLLOW_Col_in_params1421); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Col.add(Col180);
pushFollow(FOLLOW_expr_in_params1423);
expr181=expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expr.add(expr181.getTree());
// liqp/Liquid.g:274:13: ( Comma expr )*
loop28:
while (true) {
int alt28=2;
int LA28_0 = input.LA(1);
if ( (LA28_0==Comma) ) {
alt28=1;
}
switch (alt28) {
case 1 :
// liqp/Liquid.g:274:14: Comma expr
{
Comma182=(Token)match(input,Comma,FOLLOW_Comma_in_params1426); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Comma.add(Comma182);
pushFollow(FOLLOW_expr_in_params1428);
expr183=expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expr.add(expr183.getTree());
}
break;
default :
break loop28;
}
}
// AST REWRITE
// elements: expr
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 274:27: -> ( expr )+
{
if ( !(stream_expr.hasNext()) ) {
throw new RewriteEarlyExitException();
}
while ( stream_expr.hasNext() ) {
adaptor.addChild(root_0, stream_expr.nextTree());
}
stream_expr.reset();
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "params"
public static class assignment_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "assignment"
// liqp/Liquid.g:277:1: assignment : TagStart Assign Id EqSign expr ( filter )? TagEnd -> ^( ASSIGNMENT Id ( filter )? expr ) ;
public final LiquidParser.assignment_return assignment() throws RecognitionException {
LiquidParser.assignment_return retval = new LiquidParser.assignment_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token TagStart184=null;
Token Assign185=null;
Token Id186=null;
Token EqSign187=null;
Token TagEnd190=null;
ParserRuleReturnScope expr188 =null;
ParserRuleReturnScope filter189 =null;
CommonTree TagStart184_tree=null;
CommonTree Assign185_tree=null;
CommonTree Id186_tree=null;
CommonTree EqSign187_tree=null;
CommonTree TagEnd190_tree=null;
RewriteRuleTokenStream stream_TagStart=new RewriteRuleTokenStream(adaptor,"token TagStart");
RewriteRuleTokenStream stream_EqSign=new RewriteRuleTokenStream(adaptor,"token EqSign");
RewriteRuleTokenStream stream_Assign=new RewriteRuleTokenStream(adaptor,"token Assign");
RewriteRuleTokenStream stream_Id=new RewriteRuleTokenStream(adaptor,"token Id");
RewriteRuleTokenStream stream_TagEnd=new RewriteRuleTokenStream(adaptor,"token TagEnd");
RewriteRuleSubtreeStream stream_filter=new RewriteRuleSubtreeStream(adaptor,"rule filter");
RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
try {
// liqp/Liquid.g:278:2: ( TagStart Assign Id EqSign expr ( filter )? TagEnd -> ^( ASSIGNMENT Id ( filter )? expr ) )
// liqp/Liquid.g:278:4: TagStart Assign Id EqSign expr ( filter )? TagEnd
{
TagStart184=(Token)match(input,TagStart,FOLLOW_TagStart_in_assignment1446); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagStart.add(TagStart184);
Assign185=(Token)match(input,Assign,FOLLOW_Assign_in_assignment1448); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Assign.add(Assign185);
Id186=(Token)match(input,Id,FOLLOW_Id_in_assignment1450); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Id.add(Id186);
EqSign187=(Token)match(input,EqSign,FOLLOW_EqSign_in_assignment1452); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_EqSign.add(EqSign187);
pushFollow(FOLLOW_expr_in_assignment1454);
expr188=expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expr.add(expr188.getTree());
// liqp/Liquid.g:278:35: ( filter )?
int alt29=2;
int LA29_0 = input.LA(1);
if ( (LA29_0==Pipe) ) {
alt29=1;
}
switch (alt29) {
case 1 :
// liqp/Liquid.g:278:35: filter
{
pushFollow(FOLLOW_filter_in_assignment1456);
filter189=filter();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_filter.add(filter189.getTree());
}
break;
}
TagEnd190=(Token)match(input,TagEnd,FOLLOW_TagEnd_in_assignment1459); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TagEnd.add(TagEnd190);
// AST REWRITE
// elements: Id, filter, expr
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 278:50: -> ^( ASSIGNMENT Id ( filter )? expr )
{
// liqp/Liquid.g:278:53: ^( ASSIGNMENT Id ( filter )? expr )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(ASSIGNMENT, "ASSIGNMENT"), root_1);
adaptor.addChild(root_1, stream_Id.nextNode());
// liqp/Liquid.g:278:69: ( filter )?
if ( stream_filter.hasNext() ) {
adaptor.addChild(root_1, stream_filter.nextTree());
}
stream_filter.reset();
adaptor.addChild(root_1, stream_expr.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "assignment"
public static class expr_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "expr"
// liqp/Liquid.g:281:1: expr : or_expr ;
public final LiquidParser.expr_return expr() throws RecognitionException {
LiquidParser.expr_return retval = new LiquidParser.expr_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
ParserRuleReturnScope or_expr191 =null;
try {
// liqp/Liquid.g:282:2: ( or_expr )
// liqp/Liquid.g:282:4: or_expr
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_or_expr_in_expr1483);
or_expr191=or_expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, or_expr191.getTree());
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "expr"
public static class or_expr_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "or_expr"
// liqp/Liquid.g:285:1: or_expr : and_expr ( Or ^ and_expr )* ;
public final LiquidParser.or_expr_return or_expr() throws RecognitionException {
LiquidParser.or_expr_return retval = new LiquidParser.or_expr_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token Or193=null;
ParserRuleReturnScope and_expr192 =null;
ParserRuleReturnScope and_expr194 =null;
CommonTree Or193_tree=null;
try {
// liqp/Liquid.g:286:2: ( and_expr ( Or ^ and_expr )* )
// liqp/Liquid.g:286:4: and_expr ( Or ^ and_expr )*
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_and_expr_in_or_expr1494);
and_expr192=and_expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, and_expr192.getTree());
// liqp/Liquid.g:286:13: ( Or ^ and_expr )*
loop30:
while (true) {
int alt30=2;
int LA30_0 = input.LA(1);
if ( (LA30_0==Or) ) {
alt30=1;
}
switch (alt30) {
case 1 :
// liqp/Liquid.g:286:14: Or ^ and_expr
{
Or193=(Token)match(input,Or,FOLLOW_Or_in_or_expr1497); if (state.failed) return retval;
if ( state.backtracking==0 ) {
Or193_tree = (CommonTree)adaptor.create(Or193);
root_0 = (CommonTree)adaptor.becomeRoot(Or193_tree, root_0);
}
pushFollow(FOLLOW_and_expr_in_or_expr1500);
and_expr194=and_expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, and_expr194.getTree());
}
break;
default :
break loop30;
}
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "or_expr"
public static class and_expr_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "and_expr"
// liqp/Liquid.g:289:1: and_expr : contains_expr ( And ^ contains_expr )* ;
public final LiquidParser.and_expr_return and_expr() throws RecognitionException {
LiquidParser.and_expr_return retval = new LiquidParser.and_expr_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token And196=null;
ParserRuleReturnScope contains_expr195 =null;
ParserRuleReturnScope contains_expr197 =null;
CommonTree And196_tree=null;
try {
// liqp/Liquid.g:290:2: ( contains_expr ( And ^ contains_expr )* )
// liqp/Liquid.g:290:4: contains_expr ( And ^ contains_expr )*
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_contains_expr_in_and_expr1513);
contains_expr195=contains_expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, contains_expr195.getTree());
// liqp/Liquid.g:290:18: ( And ^ contains_expr )*
loop31:
while (true) {
int alt31=2;
int LA31_0 = input.LA(1);
if ( (LA31_0==And) ) {
alt31=1;
}
switch (alt31) {
case 1 :
// liqp/Liquid.g:290:19: And ^ contains_expr
{
And196=(Token)match(input,And,FOLLOW_And_in_and_expr1516); if (state.failed) return retval;
if ( state.backtracking==0 ) {
And196_tree = (CommonTree)adaptor.create(And196);
root_0 = (CommonTree)adaptor.becomeRoot(And196_tree, root_0);
}
pushFollow(FOLLOW_contains_expr_in_and_expr1519);
contains_expr197=contains_expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, contains_expr197.getTree());
}
break;
default :
break loop31;
}
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "and_expr"
public static class contains_expr_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "contains_expr"
// liqp/Liquid.g:293:1: contains_expr : eq_expr ( Contains ^ eq_expr )? ;
public final LiquidParser.contains_expr_return contains_expr() throws RecognitionException {
LiquidParser.contains_expr_return retval = new LiquidParser.contains_expr_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token Contains199=null;
ParserRuleReturnScope eq_expr198 =null;
ParserRuleReturnScope eq_expr200 =null;
CommonTree Contains199_tree=null;
try {
// liqp/Liquid.g:294:2: ( eq_expr ( Contains ^ eq_expr )? )
// liqp/Liquid.g:294:4: eq_expr ( Contains ^ eq_expr )?
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_eq_expr_in_contains_expr1532);
eq_expr198=eq_expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, eq_expr198.getTree());
// liqp/Liquid.g:294:12: ( Contains ^ eq_expr )?
int alt32=2;
int LA32_0 = input.LA(1);
if ( (LA32_0==Contains) ) {
alt32=1;
}
switch (alt32) {
case 1 :
// liqp/Liquid.g:294:13: Contains ^ eq_expr
{
Contains199=(Token)match(input,Contains,FOLLOW_Contains_in_contains_expr1535); if (state.failed) return retval;
if ( state.backtracking==0 ) {
Contains199_tree = (CommonTree)adaptor.create(Contains199);
root_0 = (CommonTree)adaptor.becomeRoot(Contains199_tree, root_0);
}
pushFollow(FOLLOW_eq_expr_in_contains_expr1538);
eq_expr200=eq_expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, eq_expr200.getTree());
}
break;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "contains_expr"
public static class eq_expr_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "eq_expr"
// liqp/Liquid.g:297:1: eq_expr : rel_expr ( ( Eq | NEq ) ^ rel_expr )* ;
public final LiquidParser.eq_expr_return eq_expr() throws RecognitionException {
LiquidParser.eq_expr_return retval = new LiquidParser.eq_expr_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token set202=null;
ParserRuleReturnScope rel_expr201 =null;
ParserRuleReturnScope rel_expr203 =null;
CommonTree set202_tree=null;
try {
// liqp/Liquid.g:298:2: ( rel_expr ( ( Eq | NEq ) ^ rel_expr )* )
// liqp/Liquid.g:298:4: rel_expr ( ( Eq | NEq ) ^ rel_expr )*
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_rel_expr_in_eq_expr1551);
rel_expr201=rel_expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, rel_expr201.getTree());
// liqp/Liquid.g:298:13: ( ( Eq | NEq ) ^ rel_expr )*
loop33:
while (true) {
int alt33=2;
int LA33_0 = input.LA(1);
if ( (LA33_0==Eq||LA33_0==NEq) ) {
alt33=1;
}
switch (alt33) {
case 1 :
// liqp/Liquid.g:298:14: ( Eq | NEq ) ^ rel_expr
{
set202=input.LT(1);
set202=input.LT(1);
if ( input.LA(1)==Eq||input.LA(1)==NEq ) {
input.consume();
if ( state.backtracking==0 ) root_0 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(set202), root_0);
state.errorRecovery=false;
state.failed=false;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
pushFollow(FOLLOW_rel_expr_in_eq_expr1563);
rel_expr203=rel_expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, rel_expr203.getTree());
}
break;
default :
break loop33;
}
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "eq_expr"
public static class rel_expr_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "rel_expr"
// liqp/Liquid.g:301:1: rel_expr : term ( ( LtEq | Lt | GtEq | Gt ) ^ term )? ;
public final LiquidParser.rel_expr_return rel_expr() throws RecognitionException {
LiquidParser.rel_expr_return retval = new LiquidParser.rel_expr_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token set205=null;
ParserRuleReturnScope term204 =null;
ParserRuleReturnScope term206 =null;
CommonTree set205_tree=null;
try {
// liqp/Liquid.g:302:2: ( term ( ( LtEq | Lt | GtEq | Gt ) ^ term )? )
// liqp/Liquid.g:302:4: term ( ( LtEq | Lt | GtEq | Gt ) ^ term )?
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_term_in_rel_expr1576);
term204=term();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, term204.getTree());
// liqp/Liquid.g:302:9: ( ( LtEq | Lt | GtEq | Gt ) ^ term )?
int alt34=2;
int LA34_0 = input.LA(1);
if ( ((LA34_0 >= Gt && LA34_0 <= GtEq)||(LA34_0 >= Lt && LA34_0 <= LtEq)) ) {
alt34=1;
}
switch (alt34) {
case 1 :
// liqp/Liquid.g:302:10: ( LtEq | Lt | GtEq | Gt ) ^ term
{
set205=input.LT(1);
set205=input.LT(1);
if ( (input.LA(1) >= Gt && input.LA(1) <= GtEq)||(input.LA(1) >= Lt && input.LA(1) <= LtEq) ) {
input.consume();
if ( state.backtracking==0 ) root_0 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(set205), root_0);
state.errorRecovery=false;
state.failed=false;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
MismatchedSetException mse = new MismatchedSetException(null,input);
throw mse;
}
pushFollow(FOLLOW_term_in_rel_expr1596);
term206=term();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, term206.getTree());
}
break;
}
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "rel_expr"
public static class term_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "term"
// liqp/Liquid.g:305:1: term : ( DoubleNum | LongNum | Str | True | False | Nil | ( NoSpace )+ -> NO_SPACE[$text] | lookup | Empty | OPar expr CPar -> expr );
public final LiquidParser.term_return term() throws RecognitionException {
LiquidParser.term_return retval = new LiquidParser.term_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token DoubleNum207=null;
Token LongNum208=null;
Token Str209=null;
Token True210=null;
Token False211=null;
Token Nil212=null;
Token NoSpace213=null;
Token Empty215=null;
Token OPar216=null;
Token CPar218=null;
ParserRuleReturnScope lookup214 =null;
ParserRuleReturnScope expr217 =null;
CommonTree DoubleNum207_tree=null;
CommonTree LongNum208_tree=null;
CommonTree Str209_tree=null;
CommonTree True210_tree=null;
CommonTree False211_tree=null;
CommonTree Nil212_tree=null;
CommonTree NoSpace213_tree=null;
CommonTree Empty215_tree=null;
CommonTree OPar216_tree=null;
CommonTree CPar218_tree=null;
RewriteRuleTokenStream stream_NoSpace=new RewriteRuleTokenStream(adaptor,"token NoSpace");
RewriteRuleTokenStream stream_CPar=new RewriteRuleTokenStream(adaptor,"token CPar");
RewriteRuleTokenStream stream_OPar=new RewriteRuleTokenStream(adaptor,"token OPar");
RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
try {
// liqp/Liquid.g:306:2: ( DoubleNum | LongNum | Str | True | False | Nil | ( NoSpace )+ -> NO_SPACE[$text] | lookup | Empty | OPar expr CPar -> expr )
int alt36=10;
switch ( input.LA(1) ) {
case DoubleNum:
{
alt36=1;
}
break;
case LongNum:
{
alt36=2;
}
break;
case Str:
{
alt36=3;
}
break;
case True:
{
alt36=4;
}
break;
case False:
{
alt36=5;
}
break;
case Nil:
{
alt36=6;
}
break;
case NoSpace:
{
alt36=7;
}
break;
case Continue:
case Id:
case OBr:
{
alt36=8;
}
break;
case Empty:
{
alt36=9;
}
break;
case OPar:
{
alt36=10;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 36, 0, input);
throw nvae;
}
switch (alt36) {
case 1 :
// liqp/Liquid.g:306:4: DoubleNum
{
root_0 = (CommonTree)adaptor.nil();
DoubleNum207=(Token)match(input,DoubleNum,FOLLOW_DoubleNum_in_term1609); if (state.failed) return retval;
if ( state.backtracking==0 ) {
DoubleNum207_tree = (CommonTree)adaptor.create(DoubleNum207);
adaptor.addChild(root_0, DoubleNum207_tree);
}
}
break;
case 2 :
// liqp/Liquid.g:307:4: LongNum
{
root_0 = (CommonTree)adaptor.nil();
LongNum208=(Token)match(input,LongNum,FOLLOW_LongNum_in_term1614); if (state.failed) return retval;
if ( state.backtracking==0 ) {
LongNum208_tree = (CommonTree)adaptor.create(LongNum208);
adaptor.addChild(root_0, LongNum208_tree);
}
}
break;
case 3 :
// liqp/Liquid.g:308:4: Str
{
root_0 = (CommonTree)adaptor.nil();
Str209=(Token)match(input,Str,FOLLOW_Str_in_term1619); if (state.failed) return retval;
if ( state.backtracking==0 ) {
Str209_tree = (CommonTree)adaptor.create(Str209);
adaptor.addChild(root_0, Str209_tree);
}
}
break;
case 4 :
// liqp/Liquid.g:309:4: True
{
root_0 = (CommonTree)adaptor.nil();
True210=(Token)match(input,True,FOLLOW_True_in_term1624); if (state.failed) return retval;
if ( state.backtracking==0 ) {
True210_tree = (CommonTree)adaptor.create(True210);
adaptor.addChild(root_0, True210_tree);
}
}
break;
case 5 :
// liqp/Liquid.g:310:4: False
{
root_0 = (CommonTree)adaptor.nil();
False211=(Token)match(input,False,FOLLOW_False_in_term1629); if (state.failed) return retval;
if ( state.backtracking==0 ) {
False211_tree = (CommonTree)adaptor.create(False211);
adaptor.addChild(root_0, False211_tree);
}
}
break;
case 6 :
// liqp/Liquid.g:311:4: Nil
{
root_0 = (CommonTree)adaptor.nil();
Nil212=(Token)match(input,Nil,FOLLOW_Nil_in_term1634); if (state.failed) return retval;
if ( state.backtracking==0 ) {
Nil212_tree = (CommonTree)adaptor.create(Nil212);
adaptor.addChild(root_0, Nil212_tree);
}
}
break;
case 7 :
// liqp/Liquid.g:312:4: ( NoSpace )+
{
// liqp/Liquid.g:312:4: ( NoSpace )+
int cnt35=0;
loop35:
while (true) {
int alt35=2;
int LA35_0 = input.LA(1);
if ( (LA35_0==NoSpace) ) {
alt35=1;
}
switch (alt35) {
case 1 :
// liqp/Liquid.g:312:4: NoSpace
{
NoSpace213=(Token)match(input,NoSpace,FOLLOW_NoSpace_in_term1639); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_NoSpace.add(NoSpace213);
}
break;
default :
if ( cnt35 >= 1 ) break loop35;
if (state.backtracking>0) {state.failed=true; return retval;}
EarlyExitException eee = new EarlyExitException(35, input);
throw eee;
}
cnt35++;
}
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 312:19: -> NO_SPACE[$text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(NO_SPACE, input.toString(retval.start,input.LT(-1))));
}
retval.tree = root_0;
}
}
break;
case 8 :
// liqp/Liquid.g:313:4: lookup
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_lookup_in_term1656);
lookup214=lookup();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, lookup214.getTree());
}
break;
case 9 :
// liqp/Liquid.g:314:4: Empty
{
root_0 = (CommonTree)adaptor.nil();
Empty215=(Token)match(input,Empty,FOLLOW_Empty_in_term1661); if (state.failed) return retval;
if ( state.backtracking==0 ) {
Empty215_tree = (CommonTree)adaptor.create(Empty215);
adaptor.addChild(root_0, Empty215_tree);
}
}
break;
case 10 :
// liqp/Liquid.g:315:4: OPar expr CPar
{
OPar216=(Token)match(input,OPar,FOLLOW_OPar_in_term1666); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_OPar.add(OPar216);
pushFollow(FOLLOW_expr_in_term1668);
expr217=expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expr.add(expr217.getTree());
CPar218=(Token)match(input,CPar,FOLLOW_CPar_in_term1670); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CPar.add(CPar218);
// AST REWRITE
// elements: expr
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 315:19: -> expr
{
adaptor.addChild(root_0, stream_expr.nextTree());
}
retval.tree = root_0;
}
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "term"
public static class lookup_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "lookup"
// liqp/Liquid.g:318:1: lookup : ( id ( index )* ( QMark )? -> ^( LOOKUP id ( index )* ( QMark )? ) | OBr Str CBr ( QMark )? -> ^( LOOKUP Id[$Str.text] ( QMark )? ) | OBr Id CBr ( QMark )? -> ^( LOOKUP Id[\"@\" + $Id.text] ( QMark )? ) );
public final LiquidParser.lookup_return lookup() throws RecognitionException {
LiquidParser.lookup_return retval = new LiquidParser.lookup_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token QMark221=null;
Token OBr222=null;
Token Str223=null;
Token CBr224=null;
Token QMark225=null;
Token OBr226=null;
Token Id227=null;
Token CBr228=null;
Token QMark229=null;
ParserRuleReturnScope id219 =null;
ParserRuleReturnScope index220 =null;
CommonTree QMark221_tree=null;
CommonTree OBr222_tree=null;
CommonTree Str223_tree=null;
CommonTree CBr224_tree=null;
CommonTree QMark225_tree=null;
CommonTree OBr226_tree=null;
CommonTree Id227_tree=null;
CommonTree CBr228_tree=null;
CommonTree QMark229_tree=null;
RewriteRuleTokenStream stream_Str=new RewriteRuleTokenStream(adaptor,"token Str");
RewriteRuleTokenStream stream_CBr=new RewriteRuleTokenStream(adaptor,"token CBr");
RewriteRuleTokenStream stream_QMark=new RewriteRuleTokenStream(adaptor,"token QMark");
RewriteRuleTokenStream stream_Id=new RewriteRuleTokenStream(adaptor,"token Id");
RewriteRuleTokenStream stream_OBr=new RewriteRuleTokenStream(adaptor,"token OBr");
RewriteRuleSubtreeStream stream_index=new RewriteRuleSubtreeStream(adaptor,"rule index");
RewriteRuleSubtreeStream stream_id=new RewriteRuleSubtreeStream(adaptor,"rule id");
try {
// liqp/Liquid.g:319:2: ( id ( index )* ( QMark )? -> ^( LOOKUP id ( index )* ( QMark )? ) | OBr Str CBr ( QMark )? -> ^( LOOKUP Id[$Str.text] ( QMark )? ) | OBr Id CBr ( QMark )? -> ^( LOOKUP Id[\"@\" + $Id.text] ( QMark )? ) )
int alt41=3;
int LA41_0 = input.LA(1);
if ( (LA41_0==Continue||LA41_0==Id) ) {
alt41=1;
}
else if ( (LA41_0==OBr) ) {
int LA41_2 = input.LA(2);
if ( (LA41_2==Str) ) {
alt41=2;
}
else if ( (LA41_2==Id) ) {
alt41=3;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
int nvaeMark = input.mark();
try {
input.consume();
NoViableAltException nvae =
new NoViableAltException("", 41, 2, input);
throw nvae;
} finally {
input.rewind(nvaeMark);
}
}
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 41, 0, input);
throw nvae;
}
switch (alt41) {
case 1 :
// liqp/Liquid.g:319:4: id ( index )* ( QMark )?
{
pushFollow(FOLLOW_id_in_lookup1685);
id219=id();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_id.add(id219.getTree());
// liqp/Liquid.g:319:7: ( index )*
loop37:
while (true) {
int alt37=2;
int LA37_0 = input.LA(1);
if ( (LA37_0==Dot||LA37_0==OBr) ) {
alt37=1;
}
switch (alt37) {
case 1 :
// liqp/Liquid.g:319:7: index
{
pushFollow(FOLLOW_index_in_lookup1687);
index220=index();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_index.add(index220.getTree());
}
break;
default :
break loop37;
}
}
// liqp/Liquid.g:319:14: ( QMark )?
int alt38=2;
int LA38_0 = input.LA(1);
if ( (LA38_0==QMark) ) {
alt38=1;
}
switch (alt38) {
case 1 :
// liqp/Liquid.g:319:14: QMark
{
QMark221=(Token)match(input,QMark,FOLLOW_QMark_in_lookup1690); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_QMark.add(QMark221);
}
break;
}
// AST REWRITE
// elements: QMark, index, id
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 319:23: -> ^( LOOKUP id ( index )* ( QMark )? )
{
// liqp/Liquid.g:319:26: ^( LOOKUP id ( index )* ( QMark )? )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(LOOKUP, "LOOKUP"), root_1);
adaptor.addChild(root_1, stream_id.nextTree());
// liqp/Liquid.g:319:38: ( index )*
while ( stream_index.hasNext() ) {
adaptor.addChild(root_1, stream_index.nextTree());
}
stream_index.reset();
// liqp/Liquid.g:319:45: ( QMark )?
if ( stream_QMark.hasNext() ) {
adaptor.addChild(root_1, stream_QMark.nextNode());
}
stream_QMark.reset();
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
break;
case 2 :
// liqp/Liquid.g:320:4: OBr Str CBr ( QMark )?
{
OBr222=(Token)match(input,OBr,FOLLOW_OBr_in_lookup1712); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_OBr.add(OBr222);
Str223=(Token)match(input,Str,FOLLOW_Str_in_lookup1714); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Str.add(Str223);
CBr224=(Token)match(input,CBr,FOLLOW_CBr_in_lookup1716); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CBr.add(CBr224);
// liqp/Liquid.g:320:16: ( QMark )?
int alt39=2;
int LA39_0 = input.LA(1);
if ( (LA39_0==QMark) ) {
alt39=1;
}
switch (alt39) {
case 1 :
// liqp/Liquid.g:320:16: QMark
{
QMark225=(Token)match(input,QMark,FOLLOW_QMark_in_lookup1718); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_QMark.add(QMark225);
}
break;
}
// AST REWRITE
// elements: QMark
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 320:23: -> ^( LOOKUP Id[$Str.text] ( QMark )? )
{
// liqp/Liquid.g:320:26: ^( LOOKUP Id[$Str.text] ( QMark )? )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(LOOKUP, "LOOKUP"), root_1);
adaptor.addChild(root_1, (CommonTree)adaptor.create(Id, (Str223!=null?Str223.getText():null)));
// liqp/Liquid.g:320:49: ( QMark )?
if ( stream_QMark.hasNext() ) {
adaptor.addChild(root_1, stream_QMark.nextNode());
}
stream_QMark.reset();
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
break;
case 3 :
// liqp/Liquid.g:321:4: OBr Id CBr ( QMark )?
{
OBr226=(Token)match(input,OBr,FOLLOW_OBr_in_lookup1736); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_OBr.add(OBr226);
Id227=(Token)match(input,Id,FOLLOW_Id_in_lookup1738); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Id.add(Id227);
CBr228=(Token)match(input,CBr,FOLLOW_CBr_in_lookup1740); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CBr.add(CBr228);
// liqp/Liquid.g:321:15: ( QMark )?
int alt40=2;
int LA40_0 = input.LA(1);
if ( (LA40_0==QMark) ) {
alt40=1;
}
switch (alt40) {
case 1 :
// liqp/Liquid.g:321:15: QMark
{
QMark229=(Token)match(input,QMark,FOLLOW_QMark_in_lookup1742); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_QMark.add(QMark229);
}
break;
}
// AST REWRITE
// elements: Id, QMark
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 321:23: -> ^( LOOKUP Id[\"@\" + $Id.text] ( QMark )? )
{
// liqp/Liquid.g:321:26: ^( LOOKUP Id[\"@\" + $Id.text] ( QMark )? )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(LOOKUP, "LOOKUP"), root_1);
adaptor.addChild(root_1, (CommonTree)adaptor.create(Id, "@" + (Id227!=null?Id227.getText():null)));
// liqp/Liquid.g:321:54: ( QMark )?
if ( stream_QMark.hasNext() ) {
adaptor.addChild(root_1, stream_QMark.nextNode());
}
stream_QMark.reset();
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "lookup"
public static class id_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "id"
// liqp/Liquid.g:324:1: id : ( Id | Continue -> Id[$Continue.text] );
public final LiquidParser.id_return id() throws RecognitionException {
LiquidParser.id_return retval = new LiquidParser.id_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token Id230=null;
Token Continue231=null;
CommonTree Id230_tree=null;
CommonTree Continue231_tree=null;
RewriteRuleTokenStream stream_Continue=new RewriteRuleTokenStream(adaptor,"token Continue");
try {
// liqp/Liquid.g:325:2: ( Id | Continue -> Id[$Continue.text] )
int alt42=2;
int LA42_0 = input.LA(1);
if ( (LA42_0==Id) ) {
alt42=1;
}
else if ( (LA42_0==Continue) ) {
alt42=2;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 42, 0, input);
throw nvae;
}
switch (alt42) {
case 1 :
// liqp/Liquid.g:325:4: Id
{
root_0 = (CommonTree)adaptor.nil();
Id230=(Token)match(input,Id,FOLLOW_Id_in_id1767); if (state.failed) return retval;
if ( state.backtracking==0 ) {
Id230_tree = (CommonTree)adaptor.create(Id230);
adaptor.addChild(root_0, Id230_tree);
}
}
break;
case 2 :
// liqp/Liquid.g:326:4: Continue
{
Continue231=(Token)match(input,Continue,FOLLOW_Continue_in_id1772); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Continue.add(Continue231);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 326:13: -> Id[$Continue.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (Continue231!=null?Continue231.getText():null)));
}
retval.tree = root_0;
}
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "id"
public static class id2_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "id2"
// liqp/Liquid.g:329:1: id2 : ( id | Empty -> Id[$Empty.text] | CaptureStart -> Id[$CaptureStart.text] | CaptureEnd -> Id[$CaptureEnd.text] | CommentStart -> Id[$CommentStart.text] | CommentEnd -> Id[$CommentEnd.text] | RawStart -> Id[$RawStart.text] | RawEnd -> Id[$RawEnd.text] | IfStart -> Id[$IfStart.text] | Elsif -> Id[$Elsif.text] | IfEnd -> Id[$IfEnd.text] | UnlessStart -> Id[$UnlessStart.text] | UnlessEnd -> Id[$UnlessEnd.text] | Else -> Id[$Else.text] | Contains -> Id[$Contains.text] | CaseStart -> Id[$CaseStart.text] | CaseEnd -> Id[$CaseEnd.text] | When -> Id[$When.text] | Cycle -> Id[$Cycle.text] | ForStart -> Id[$ForStart.text] | ForEnd -> Id[$ForEnd.text] | In -> Id[$In.text] | And -> Id[$And.text] | Or -> Id[$Or.text] | TableStart -> Id[$TableStart.text] | TableEnd -> Id[$TableEnd.text] | Assign -> Id[$Assign.text] | True -> Id[$True.text] | False -> Id[$False.text] | Nil -> Id[$Nil.text] | Include -> Id[$Include.text] | With -> Id[$With.text] | EndId -> Id[$EndId.text] | Break -> Id[$Break.text] );
public final LiquidParser.id2_return id2() throws RecognitionException {
LiquidParser.id2_return retval = new LiquidParser.id2_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token Empty233=null;
Token CaptureStart234=null;
Token CaptureEnd235=null;
Token CommentStart236=null;
Token CommentEnd237=null;
Token RawStart238=null;
Token RawEnd239=null;
Token IfStart240=null;
Token Elsif241=null;
Token IfEnd242=null;
Token UnlessStart243=null;
Token UnlessEnd244=null;
Token Else245=null;
Token Contains246=null;
Token CaseStart247=null;
Token CaseEnd248=null;
Token When249=null;
Token Cycle250=null;
Token ForStart251=null;
Token ForEnd252=null;
Token In253=null;
Token And254=null;
Token Or255=null;
Token TableStart256=null;
Token TableEnd257=null;
Token Assign258=null;
Token True259=null;
Token False260=null;
Token Nil261=null;
Token Include262=null;
Token With263=null;
Token EndId264=null;
Token Break265=null;
ParserRuleReturnScope id232 =null;
CommonTree Empty233_tree=null;
CommonTree CaptureStart234_tree=null;
CommonTree CaptureEnd235_tree=null;
CommonTree CommentStart236_tree=null;
CommonTree CommentEnd237_tree=null;
CommonTree RawStart238_tree=null;
CommonTree RawEnd239_tree=null;
CommonTree IfStart240_tree=null;
CommonTree Elsif241_tree=null;
CommonTree IfEnd242_tree=null;
CommonTree UnlessStart243_tree=null;
CommonTree UnlessEnd244_tree=null;
CommonTree Else245_tree=null;
CommonTree Contains246_tree=null;
CommonTree CaseStart247_tree=null;
CommonTree CaseEnd248_tree=null;
CommonTree When249_tree=null;
CommonTree Cycle250_tree=null;
CommonTree ForStart251_tree=null;
CommonTree ForEnd252_tree=null;
CommonTree In253_tree=null;
CommonTree And254_tree=null;
CommonTree Or255_tree=null;
CommonTree TableStart256_tree=null;
CommonTree TableEnd257_tree=null;
CommonTree Assign258_tree=null;
CommonTree True259_tree=null;
CommonTree False260_tree=null;
CommonTree Nil261_tree=null;
CommonTree Include262_tree=null;
CommonTree With263_tree=null;
CommonTree EndId264_tree=null;
CommonTree Break265_tree=null;
RewriteRuleTokenStream stream_Or=new RewriteRuleTokenStream(adaptor,"token Or");
RewriteRuleTokenStream stream_In=new RewriteRuleTokenStream(adaptor,"token In");
RewriteRuleTokenStream stream_CaptureStart=new RewriteRuleTokenStream(adaptor,"token CaptureStart");
RewriteRuleTokenStream stream_RawEnd=new RewriteRuleTokenStream(adaptor,"token RawEnd");
RewriteRuleTokenStream stream_Break=new RewriteRuleTokenStream(adaptor,"token Break");
RewriteRuleTokenStream stream_True=new RewriteRuleTokenStream(adaptor,"token True");
RewriteRuleTokenStream stream_Include=new RewriteRuleTokenStream(adaptor,"token Include");
RewriteRuleTokenStream stream_EndId=new RewriteRuleTokenStream(adaptor,"token EndId");
RewriteRuleTokenStream stream_False=new RewriteRuleTokenStream(adaptor,"token False");
RewriteRuleTokenStream stream_CaptureEnd=new RewriteRuleTokenStream(adaptor,"token CaptureEnd");
RewriteRuleTokenStream stream_RawStart=new RewriteRuleTokenStream(adaptor,"token RawStart");
RewriteRuleTokenStream stream_ForStart=new RewriteRuleTokenStream(adaptor,"token ForStart");
RewriteRuleTokenStream stream_With=new RewriteRuleTokenStream(adaptor,"token With");
RewriteRuleTokenStream stream_Empty=new RewriteRuleTokenStream(adaptor,"token Empty");
RewriteRuleTokenStream stream_UnlessStart=new RewriteRuleTokenStream(adaptor,"token UnlessStart");
RewriteRuleTokenStream stream_Elsif=new RewriteRuleTokenStream(adaptor,"token Elsif");
RewriteRuleTokenStream stream_UnlessEnd=new RewriteRuleTokenStream(adaptor,"token UnlessEnd");
RewriteRuleTokenStream stream_IfStart=new RewriteRuleTokenStream(adaptor,"token IfStart");
RewriteRuleTokenStream stream_CaseEnd=new RewriteRuleTokenStream(adaptor,"token CaseEnd");
RewriteRuleTokenStream stream_TableStart=new RewriteRuleTokenStream(adaptor,"token TableStart");
RewriteRuleTokenStream stream_IfEnd=new RewriteRuleTokenStream(adaptor,"token IfEnd");
RewriteRuleTokenStream stream_CommentStart=new RewriteRuleTokenStream(adaptor,"token CommentStart");
RewriteRuleTokenStream stream_Cycle=new RewriteRuleTokenStream(adaptor,"token Cycle");
RewriteRuleTokenStream stream_Nil=new RewriteRuleTokenStream(adaptor,"token Nil");
RewriteRuleTokenStream stream_When=new RewriteRuleTokenStream(adaptor,"token When");
RewriteRuleTokenStream stream_CommentEnd=new RewriteRuleTokenStream(adaptor,"token CommentEnd");
RewriteRuleTokenStream stream_ForEnd=new RewriteRuleTokenStream(adaptor,"token ForEnd");
RewriteRuleTokenStream stream_And=new RewriteRuleTokenStream(adaptor,"token And");
RewriteRuleTokenStream stream_TableEnd=new RewriteRuleTokenStream(adaptor,"token TableEnd");
RewriteRuleTokenStream stream_Else=new RewriteRuleTokenStream(adaptor,"token Else");
RewriteRuleTokenStream stream_Contains=new RewriteRuleTokenStream(adaptor,"token Contains");
RewriteRuleTokenStream stream_CaseStart=new RewriteRuleTokenStream(adaptor,"token CaseStart");
RewriteRuleTokenStream stream_Assign=new RewriteRuleTokenStream(adaptor,"token Assign");
try {
// liqp/Liquid.g:330:2: ( id | Empty -> Id[$Empty.text] | CaptureStart -> Id[$CaptureStart.text] | CaptureEnd -> Id[$CaptureEnd.text] | CommentStart -> Id[$CommentStart.text] | CommentEnd -> Id[$CommentEnd.text] | RawStart -> Id[$RawStart.text] | RawEnd -> Id[$RawEnd.text] | IfStart -> Id[$IfStart.text] | Elsif -> Id[$Elsif.text] | IfEnd -> Id[$IfEnd.text] | UnlessStart -> Id[$UnlessStart.text] | UnlessEnd -> Id[$UnlessEnd.text] | Else -> Id[$Else.text] | Contains -> Id[$Contains.text] | CaseStart -> Id[$CaseStart.text] | CaseEnd -> Id[$CaseEnd.text] | When -> Id[$When.text] | Cycle -> Id[$Cycle.text] | ForStart -> Id[$ForStart.text] | ForEnd -> Id[$ForEnd.text] | In -> Id[$In.text] | And -> Id[$And.text] | Or -> Id[$Or.text] | TableStart -> Id[$TableStart.text] | TableEnd -> Id[$TableEnd.text] | Assign -> Id[$Assign.text] | True -> Id[$True.text] | False -> Id[$False.text] | Nil -> Id[$Nil.text] | Include -> Id[$Include.text] | With -> Id[$With.text] | EndId -> Id[$EndId.text] | Break -> Id[$Break.text] )
int alt43=34;
switch ( input.LA(1) ) {
case Continue:
case Id:
{
alt43=1;
}
break;
case Empty:
{
alt43=2;
}
break;
case CaptureStart:
{
alt43=3;
}
break;
case CaptureEnd:
{
alt43=4;
}
break;
case CommentStart:
{
alt43=5;
}
break;
case CommentEnd:
{
alt43=6;
}
break;
case RawStart:
{
alt43=7;
}
break;
case RawEnd:
{
alt43=8;
}
break;
case IfStart:
{
alt43=9;
}
break;
case Elsif:
{
alt43=10;
}
break;
case IfEnd:
{
alt43=11;
}
break;
case UnlessStart:
{
alt43=12;
}
break;
case UnlessEnd:
{
alt43=13;
}
break;
case Else:
{
alt43=14;
}
break;
case Contains:
{
alt43=15;
}
break;
case CaseStart:
{
alt43=16;
}
break;
case CaseEnd:
{
alt43=17;
}
break;
case When:
{
alt43=18;
}
break;
case Cycle:
{
alt43=19;
}
break;
case ForStart:
{
alt43=20;
}
break;
case ForEnd:
{
alt43=21;
}
break;
case In:
{
alt43=22;
}
break;
case And:
{
alt43=23;
}
break;
case Or:
{
alt43=24;
}
break;
case TableStart:
{
alt43=25;
}
break;
case TableEnd:
{
alt43=26;
}
break;
case Assign:
{
alt43=27;
}
break;
case True:
{
alt43=28;
}
break;
case False:
{
alt43=29;
}
break;
case Nil:
{
alt43=30;
}
break;
case Include:
{
alt43=31;
}
break;
case With:
{
alt43=32;
}
break;
case EndId:
{
alt43=33;
}
break;
case Break:
{
alt43=34;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 43, 0, input);
throw nvae;
}
switch (alt43) {
case 1 :
// liqp/Liquid.g:330:4: id
{
root_0 = (CommonTree)adaptor.nil();
pushFollow(FOLLOW_id_in_id21788);
id232=id();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) adaptor.addChild(root_0, id232.getTree());
}
break;
case 2 :
// liqp/Liquid.g:331:4: Empty
{
Empty233=(Token)match(input,Empty,FOLLOW_Empty_in_id21793); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Empty.add(Empty233);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 331:17: -> Id[$Empty.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (Empty233!=null?Empty233.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 3 :
// liqp/Liquid.g:332:4: CaptureStart
{
CaptureStart234=(Token)match(input,CaptureStart,FOLLOW_CaptureStart_in_id21810); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CaptureStart.add(CaptureStart234);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 332:17: -> Id[$CaptureStart.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (CaptureStart234!=null?CaptureStart234.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 4 :
// liqp/Liquid.g:333:4: CaptureEnd
{
CaptureEnd235=(Token)match(input,CaptureEnd,FOLLOW_CaptureEnd_in_id21820); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CaptureEnd.add(CaptureEnd235);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 333:17: -> Id[$CaptureEnd.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (CaptureEnd235!=null?CaptureEnd235.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 5 :
// liqp/Liquid.g:334:4: CommentStart
{
CommentStart236=(Token)match(input,CommentStart,FOLLOW_CommentStart_in_id21832); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CommentStart.add(CommentStart236);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 334:17: -> Id[$CommentStart.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (CommentStart236!=null?CommentStart236.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 6 :
// liqp/Liquid.g:335:4: CommentEnd
{
CommentEnd237=(Token)match(input,CommentEnd,FOLLOW_CommentEnd_in_id21842); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CommentEnd.add(CommentEnd237);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 335:17: -> Id[$CommentEnd.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (CommentEnd237!=null?CommentEnd237.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 7 :
// liqp/Liquid.g:336:4: RawStart
{
RawStart238=(Token)match(input,RawStart,FOLLOW_RawStart_in_id21854); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RawStart.add(RawStart238);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 336:17: -> Id[$RawStart.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (RawStart238!=null?RawStart238.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 8 :
// liqp/Liquid.g:337:4: RawEnd
{
RawEnd239=(Token)match(input,RawEnd,FOLLOW_RawEnd_in_id21868); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_RawEnd.add(RawEnd239);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 337:17: -> Id[$RawEnd.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (RawEnd239!=null?RawEnd239.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 9 :
// liqp/Liquid.g:338:4: IfStart
{
IfStart240=(Token)match(input,IfStart,FOLLOW_IfStart_in_id21884); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_IfStart.add(IfStart240);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 338:17: -> Id[$IfStart.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (IfStart240!=null?IfStart240.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 10 :
// liqp/Liquid.g:339:4: Elsif
{
Elsif241=(Token)match(input,Elsif,FOLLOW_Elsif_in_id21899); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Elsif.add(Elsif241);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 339:17: -> Id[$Elsif.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (Elsif241!=null?Elsif241.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 11 :
// liqp/Liquid.g:340:4: IfEnd
{
IfEnd242=(Token)match(input,IfEnd,FOLLOW_IfEnd_in_id21916); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_IfEnd.add(IfEnd242);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 340:17: -> Id[$IfEnd.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (IfEnd242!=null?IfEnd242.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 12 :
// liqp/Liquid.g:341:4: UnlessStart
{
UnlessStart243=(Token)match(input,UnlessStart,FOLLOW_UnlessStart_in_id21933); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_UnlessStart.add(UnlessStart243);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 341:17: -> Id[$UnlessStart.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (UnlessStart243!=null?UnlessStart243.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 13 :
// liqp/Liquid.g:342:4: UnlessEnd
{
UnlessEnd244=(Token)match(input,UnlessEnd,FOLLOW_UnlessEnd_in_id21944); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_UnlessEnd.add(UnlessEnd244);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 342:17: -> Id[$UnlessEnd.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (UnlessEnd244!=null?UnlessEnd244.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 14 :
// liqp/Liquid.g:343:4: Else
{
Else245=(Token)match(input,Else,FOLLOW_Else_in_id21957); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Else.add(Else245);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 343:17: -> Id[$Else.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (Else245!=null?Else245.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 15 :
// liqp/Liquid.g:344:4: Contains
{
Contains246=(Token)match(input,Contains,FOLLOW_Contains_in_id21975); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Contains.add(Contains246);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 344:17: -> Id[$Contains.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (Contains246!=null?Contains246.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 16 :
// liqp/Liquid.g:345:4: CaseStart
{
CaseStart247=(Token)match(input,CaseStart,FOLLOW_CaseStart_in_id21989); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CaseStart.add(CaseStart247);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 345:17: -> Id[$CaseStart.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (CaseStart247!=null?CaseStart247.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 17 :
// liqp/Liquid.g:346:4: CaseEnd
{
CaseEnd248=(Token)match(input,CaseEnd,FOLLOW_CaseEnd_in_id22002); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CaseEnd.add(CaseEnd248);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 346:17: -> Id[$CaseEnd.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (CaseEnd248!=null?CaseEnd248.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 18 :
// liqp/Liquid.g:347:4: When
{
When249=(Token)match(input,When,FOLLOW_When_in_id22017); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_When.add(When249);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 347:17: -> Id[$When.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (When249!=null?When249.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 19 :
// liqp/Liquid.g:348:4: Cycle
{
Cycle250=(Token)match(input,Cycle,FOLLOW_Cycle_in_id22035); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Cycle.add(Cycle250);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 348:17: -> Id[$Cycle.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (Cycle250!=null?Cycle250.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 20 :
// liqp/Liquid.g:349:4: ForStart
{
ForStart251=(Token)match(input,ForStart,FOLLOW_ForStart_in_id22052); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ForStart.add(ForStart251);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 349:17: -> Id[$ForStart.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (ForStart251!=null?ForStart251.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 21 :
// liqp/Liquid.g:350:4: ForEnd
{
ForEnd252=(Token)match(input,ForEnd,FOLLOW_ForEnd_in_id22066); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_ForEnd.add(ForEnd252);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 350:17: -> Id[$ForEnd.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (ForEnd252!=null?ForEnd252.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 22 :
// liqp/Liquid.g:351:4: In
{
In253=(Token)match(input,In,FOLLOW_In_in_id22082); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_In.add(In253);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 351:17: -> Id[$In.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (In253!=null?In253.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 23 :
// liqp/Liquid.g:352:4: And
{
And254=(Token)match(input,And,FOLLOW_And_in_id22102); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_And.add(And254);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 352:17: -> Id[$And.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (And254!=null?And254.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 24 :
// liqp/Liquid.g:353:4: Or
{
Or255=(Token)match(input,Or,FOLLOW_Or_in_id22121); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Or.add(Or255);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 353:17: -> Id[$Or.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (Or255!=null?Or255.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 25 :
// liqp/Liquid.g:354:4: TableStart
{
TableStart256=(Token)match(input,TableStart,FOLLOW_TableStart_in_id22141); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TableStart.add(TableStart256);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 354:17: -> Id[$TableStart.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (TableStart256!=null?TableStart256.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 26 :
// liqp/Liquid.g:355:4: TableEnd
{
TableEnd257=(Token)match(input,TableEnd,FOLLOW_TableEnd_in_id22153); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_TableEnd.add(TableEnd257);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 355:17: -> Id[$TableEnd.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (TableEnd257!=null?TableEnd257.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 27 :
// liqp/Liquid.g:356:4: Assign
{
Assign258=(Token)match(input,Assign,FOLLOW_Assign_in_id22167); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Assign.add(Assign258);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 356:17: -> Id[$Assign.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (Assign258!=null?Assign258.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 28 :
// liqp/Liquid.g:357:4: True
{
True259=(Token)match(input,True,FOLLOW_True_in_id22183); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_True.add(True259);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 357:17: -> Id[$True.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (True259!=null?True259.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 29 :
// liqp/Liquid.g:358:4: False
{
False260=(Token)match(input,False,FOLLOW_False_in_id22201); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_False.add(False260);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 358:17: -> Id[$False.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (False260!=null?False260.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 30 :
// liqp/Liquid.g:359:4: Nil
{
Nil261=(Token)match(input,Nil,FOLLOW_Nil_in_id22218); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Nil.add(Nil261);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 359:17: -> Id[$Nil.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (Nil261!=null?Nil261.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 31 :
// liqp/Liquid.g:360:4: Include
{
Include262=(Token)match(input,Include,FOLLOW_Include_in_id22237); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Include.add(Include262);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 360:17: -> Id[$Include.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (Include262!=null?Include262.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 32 :
// liqp/Liquid.g:361:4: With
{
With263=(Token)match(input,With,FOLLOW_With_in_id22252); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_With.add(With263);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 361:17: -> Id[$With.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (With263!=null?With263.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 33 :
// liqp/Liquid.g:362:4: EndId
{
EndId264=(Token)match(input,EndId,FOLLOW_EndId_in_id22270); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_EndId.add(EndId264);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 362:17: -> Id[$EndId.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (EndId264!=null?EndId264.getText():null)));
}
retval.tree = root_0;
}
}
break;
case 34 :
// liqp/Liquid.g:363:4: Break
{
Break265=(Token)match(input,Break,FOLLOW_Break_in_id22287); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Break.add(Break265);
// AST REWRITE
// elements:
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 363:17: -> Id[$Break.text]
{
adaptor.addChild(root_0, (CommonTree)adaptor.create(Id, (Break265!=null?Break265.getText():null)));
}
retval.tree = root_0;
}
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "id2"
public static class index_return extends ParserRuleReturnScope {
CommonTree tree;
@Override
public CommonTree getTree() { return tree; }
};
// $ANTLR start "index"
// liqp/Liquid.g:366:1: index : ( Dot id2 -> ^( HASH id2 ) | OBr expr CBr -> ^( INDEX expr ) );
public final LiquidParser.index_return index() throws RecognitionException {
LiquidParser.index_return retval = new LiquidParser.index_return();
retval.start = input.LT(1);
CommonTree root_0 = null;
Token Dot266=null;
Token OBr268=null;
Token CBr270=null;
ParserRuleReturnScope id2267 =null;
ParserRuleReturnScope expr269 =null;
CommonTree Dot266_tree=null;
CommonTree OBr268_tree=null;
CommonTree CBr270_tree=null;
RewriteRuleTokenStream stream_CBr=new RewriteRuleTokenStream(adaptor,"token CBr");
RewriteRuleTokenStream stream_Dot=new RewriteRuleTokenStream(adaptor,"token Dot");
RewriteRuleTokenStream stream_OBr=new RewriteRuleTokenStream(adaptor,"token OBr");
RewriteRuleSubtreeStream stream_id2=new RewriteRuleSubtreeStream(adaptor,"rule id2");
RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
try {
// liqp/Liquid.g:367:2: ( Dot id2 -> ^( HASH id2 ) | OBr expr CBr -> ^( INDEX expr ) )
int alt44=2;
int LA44_0 = input.LA(1);
if ( (LA44_0==Dot) ) {
alt44=1;
}
else if ( (LA44_0==OBr) ) {
alt44=2;
}
else {
if (state.backtracking>0) {state.failed=true; return retval;}
NoViableAltException nvae =
new NoViableAltException("", 44, 0, input);
throw nvae;
}
switch (alt44) {
case 1 :
// liqp/Liquid.g:367:4: Dot id2
{
Dot266=(Token)match(input,Dot,FOLLOW_Dot_in_index2310); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_Dot.add(Dot266);
pushFollow(FOLLOW_id2_in_index2312);
id2267=id2();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_id2.add(id2267.getTree());
// AST REWRITE
// elements: id2
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 367:17: -> ^( HASH id2 )
{
// liqp/Liquid.g:367:20: ^( HASH id2 )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(HASH, "HASH"), root_1);
adaptor.addChild(root_1, stream_id2.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
break;
case 2 :
// liqp/Liquid.g:368:4: OBr expr CBr
{
OBr268=(Token)match(input,OBr,FOLLOW_OBr_in_index2330); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_OBr.add(OBr268);
pushFollow(FOLLOW_expr_in_index2332);
expr269=expr();
state._fsp--;
if (state.failed) return retval;
if ( state.backtracking==0 ) stream_expr.add(expr269.getTree());
CBr270=(Token)match(input,CBr,FOLLOW_CBr_in_index2334); if (state.failed) return retval;
if ( state.backtracking==0 ) stream_CBr.add(CBr270);
// AST REWRITE
// elements: expr
// token labels:
// rule labels: retval
// token list labels:
// rule list labels:
// 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 = (CommonTree)adaptor.nil();
// 368:17: -> ^( INDEX expr )
{
// liqp/Liquid.g:368:20: ^( INDEX expr )
{
CommonTree root_1 = (CommonTree)adaptor.nil();
root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(INDEX, "INDEX"), root_1);
adaptor.addChild(root_1, stream_expr.nextTree());
adaptor.addChild(root_0, root_1);
}
}
retval.tree = root_0;
}
}
break;
}
retval.stop = input.LT(-1);
if ( state.backtracking==0 ) {
retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
}
}
catch (RecognitionException re) {
reportError(re);
recover(input,re);
retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
}
finally {
// do for sure before leaving
}
return retval;
}
// $ANTLR end "index"
// $ANTLR start synpred1_Liquid
public final void synpred1_Liquid_fragment() throws RecognitionException {
// liqp/Liquid.g:157:5: ( custom_tag_block )
// liqp/Liquid.g:157:6: custom_tag_block
{
pushFollow(FOLLOW_custom_tag_block_in_synpred1_Liquid421);
custom_tag_block();
state._fsp--;
if (state.failed) return;
}
}
// $ANTLR end synpred1_Liquid
// $ANTLR start synpred2_Liquid
public final void synpred2_Liquid_fragment() throws RecognitionException {
// liqp/Liquid.g:213:5: ( expr Col )
// liqp/Liquid.g:213:6: expr Col
{
pushFollow(FOLLOW_expr_in_synpred2_Liquid868);
expr();
state._fsp--;
if (state.failed) return;
match(input,Col,FOLLOW_Col_in_synpred2_Liquid870); if (state.failed) return;
}
}
// $ANTLR end synpred2_Liquid
// Delegated rules
public final boolean synpred2_Liquid() {
state.backtracking++;
int start = input.mark();
try {
synpred2_Liquid_fragment(); // can never throw exception
} catch (RecognitionException re) {
System.err.println("impossible: "+re);
}
boolean success = !state.failed;
input.rewind(start);
state.backtracking--;
state.failed=false;
return success;
}
public final boolean synpred1_Liquid() {
state.backtracking++;
int start = input.mark();
try {
synpred1_Liquid_fragment(); // can never throw exception
} catch (RecognitionException re) {
System.err.println("impossible: "+re);
}
boolean success = !state.failed;
input.rewind(start);
state.backtracking--;
state.failed=false;
return success;
}
public static final BitSet FOLLOW_block_in_parse231 = new BitSet(new long[]{0x0000000000000000L});
public static final BitSet FOLLOW_EOF_in_parse233 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_atom_in_block261 = new BitSet(new long[]{0x0000000000000002L,0x0000000010005000L});
public static final BitSet FOLLOW_tag_in_atom283 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_output_in_atom288 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_assignment_in_atom293 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Other_in_atom298 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_custom_tag_in_tag314 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_raw_tag_in_tag319 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_comment_tag_in_tag324 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_if_tag_in_tag329 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_unless_tag_in_tag334 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_case_tag_in_tag339 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_cycle_tag_in_tag344 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_for_tag_in_tag349 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_table_tag_in_tag354 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_capture_tag_in_tag359 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_include_tag_in_tag364 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_break_tag_in_tag369 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_continue_tag_in_tag374 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TagStart_in_custom_tag386 = new BitSet(new long[]{0x0200000000000000L});
public static final BitSet FOLLOW_Id_in_custom_tag388 = new BitSet(new long[]{0x0200804208000000L,0x00000000288003C1L});
public static final BitSet FOLLOW_expr_in_custom_tag391 = new BitSet(new long[]{0x0000000000800000L,0x0000000008000000L});
public static final BitSet FOLLOW_Comma_in_custom_tag394 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_expr_in_custom_tag396 = new BitSet(new long[]{0x0000000000800000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_custom_tag402 = new BitSet(new long[]{0x0000000000000002L,0x0000000010005000L});
public static final BitSet FOLLOW_custom_tag_block_in_custom_tag425 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_atom_in_custom_tag_block463 = new BitSet(new long[]{0x0000000000000000L,0x0000000010005000L});
public static final BitSet FOLLOW_TagStart_in_custom_tag_block467 = new BitSet(new long[]{0x0000008000000000L});
public static final BitSet FOLLOW_EndId_in_custom_tag_block469 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_custom_tag_block471 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TagStart_in_raw_tag491 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
public static final BitSet FOLLOW_RawStart_in_raw_tag493 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_raw_tag495 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000003FEFFFFFFFL});
public static final BitSet FOLLOW_raw_body_in_raw_tag497 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
public static final BitSet FOLLOW_TagStart_in_raw_tag499 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
public static final BitSet FOLLOW_RawEnd_in_raw_tag501 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_raw_tag503 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_other_than_tag_start_in_raw_body518 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TagStart_in_comment_tag534 = new BitSet(new long[]{0x0000000002000000L});
public static final BitSet FOLLOW_CommentStart_in_comment_tag536 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_comment_tag538 = new BitSet(new long[]{0xFFFFFFFFFFFFFFF0L,0x0000003FEFFFFFFFL});
public static final BitSet FOLLOW_comment_body_in_comment_tag540 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
public static final BitSet FOLLOW_TagStart_in_comment_tag542 = new BitSet(new long[]{0x0000000001000000L});
public static final BitSet FOLLOW_CommentEnd_in_comment_tag544 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_comment_tag546 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_other_than_tag_start_in_comment_body561 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TagStart_in_if_tag590 = new BitSet(new long[]{0x0800000000000000L});
public static final BitSet FOLLOW_IfStart_in_if_tag592 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_expr_in_if_tag594 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_if_tag596 = new BitSet(new long[]{0x0000000000000000L,0x0000000010005000L});
public static final BitSet FOLLOW_block_in_if_tag598 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
public static final BitSet FOLLOW_elsif_tag_in_if_tag600 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
public static final BitSet FOLLOW_else_tag_in_if_tag603 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
public static final BitSet FOLLOW_TagStart_in_if_tag606 = new BitSet(new long[]{0x0400000000000000L});
public static final BitSet FOLLOW_IfEnd_in_if_tag608 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_if_tag610 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TagStart_in_elsif_tag641 = new BitSet(new long[]{0x0000002000000000L});
public static final BitSet FOLLOW_Elsif_in_elsif_tag643 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_expr_in_elsif_tag645 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_elsif_tag647 = new BitSet(new long[]{0x0000000000000000L,0x0000000010005000L});
public static final BitSet FOLLOW_block_in_elsif_tag649 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TagStart_in_else_tag670 = new BitSet(new long[]{0x0000001000000000L});
public static final BitSet FOLLOW_Else_in_else_tag672 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_else_tag674 = new BitSet(new long[]{0x0000000000000000L,0x0000000010005000L});
public static final BitSet FOLLOW_block_in_else_tag676 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TagStart_in_unless_tag691 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
public static final BitSet FOLLOW_UnlessStart_in_unless_tag693 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_expr_in_unless_tag695 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_unless_tag697 = new BitSet(new long[]{0x0000000000000000L,0x0000000010005000L});
public static final BitSet FOLLOW_block_in_unless_tag699 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
public static final BitSet FOLLOW_else_tag_in_unless_tag701 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
public static final BitSet FOLLOW_TagStart_in_unless_tag704 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
public static final BitSet FOLLOW_UnlessEnd_in_unless_tag706 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_unless_tag708 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TagStart_in_case_tag736 = new BitSet(new long[]{0x0000000000200000L});
public static final BitSet FOLLOW_CaseStart_in_case_tag738 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_expr_in_case_tag740 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_case_tag742 = new BitSet(new long[]{0x0000000000000000L,0x0000000010001000L});
public static final BitSet FOLLOW_Other_in_case_tag744 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
public static final BitSet FOLLOW_when_tag_in_case_tag747 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
public static final BitSet FOLLOW_else_tag_in_case_tag750 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
public static final BitSet FOLLOW_TagStart_in_case_tag753 = new BitSet(new long[]{0x0000000000100000L});
public static final BitSet FOLLOW_CaseEnd_in_case_tag755 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_case_tag757 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TagStart_in_when_tag786 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
public static final BitSet FOLLOW_When_in_when_tag788 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_term_in_when_tag790 = new BitSet(new long[]{0x0000000000800000L,0x0000000008000800L});
public static final BitSet FOLLOW_Or_in_when_tag794 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_Comma_in_when_tag798 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_term_in_when_tag801 = new BitSet(new long[]{0x0000000000800000L,0x0000000008000800L});
public static final BitSet FOLLOW_TagEnd_in_when_tag805 = new BitSet(new long[]{0x0000000000000000L,0x0000000010005000L});
public static final BitSet FOLLOW_block_in_when_tag807 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TagStart_in_cycle_tag829 = new BitSet(new long[]{0x0000000010000000L});
public static final BitSet FOLLOW_Cycle_in_cycle_tag831 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_cycle_group_in_cycle_tag833 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_expr_in_cycle_tag835 = new BitSet(new long[]{0x0000000000800000L,0x0000000008000000L});
public static final BitSet FOLLOW_Comma_in_cycle_tag838 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_expr_in_cycle_tag840 = new BitSet(new long[]{0x0000000000800000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_cycle_tag844 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_expr_in_cycle_group874 = new BitSet(new long[]{0x0000000000400000L});
public static final BitSet FOLLOW_Col_in_cycle_group876 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_for_array_in_for_tag898 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_for_range_in_for_tag903 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TagStart_in_for_array918 = new BitSet(new long[]{0x0002000000000000L});
public static final BitSet FOLLOW_ForStart_in_for_array920 = new BitSet(new long[]{0x0200000000000000L});
public static final BitSet FOLLOW_Id_in_for_array922 = new BitSet(new long[]{0x1000000000000000L});
public static final BitSet FOLLOW_In_in_for_array924 = new BitSet(new long[]{0x0200000008000000L,0x0000000000000100L});
public static final BitSet FOLLOW_lookup_in_for_array926 = new BitSet(new long[]{0x0200000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_attribute_in_for_array928 = new BitSet(new long[]{0x0200000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_for_array931 = new BitSet(new long[]{0x0000000000000000L,0x0000000010005000L});
public static final BitSet FOLLOW_for_block_in_for_array936 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
public static final BitSet FOLLOW_TagStart_in_for_array941 = new BitSet(new long[]{0x0001000000000000L});
public static final BitSet FOLLOW_ForEnd_in_for_array943 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_for_array945 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TagStart_in_for_range978 = new BitSet(new long[]{0x0002000000000000L});
public static final BitSet FOLLOW_ForStart_in_for_range980 = new BitSet(new long[]{0x0200000000000000L});
public static final BitSet FOLLOW_Id_in_for_range982 = new BitSet(new long[]{0x1000000000000000L});
public static final BitSet FOLLOW_In_in_for_range984 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
public static final BitSet FOLLOW_OPar_in_for_range986 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_expr_in_for_range988 = new BitSet(new long[]{0x0000000100000000L});
public static final BitSet FOLLOW_DotDot_in_for_range990 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_expr_in_for_range992 = new BitSet(new long[]{0x0000000000004000L});
public static final BitSet FOLLOW_CPar_in_for_range994 = new BitSet(new long[]{0x0200000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_attribute_in_for_range996 = new BitSet(new long[]{0x0200000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_for_range999 = new BitSet(new long[]{0x0000000000000000L,0x0000000010005000L});
public static final BitSet FOLLOW_block_in_for_range1004 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
public static final BitSet FOLLOW_TagStart_in_for_range1009 = new BitSet(new long[]{0x0001000000000000L});
public static final BitSet FOLLOW_ForEnd_in_for_range1011 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_for_range1013 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_block_in_for_block1050 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
public static final BitSet FOLLOW_TagStart_in_for_block1053 = new BitSet(new long[]{0x0000001000000000L});
public static final BitSet FOLLOW_Else_in_for_block1055 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_for_block1057 = new BitSet(new long[]{0x0000000000000000L,0x0000000010005000L});
public static final BitSet FOLLOW_block_in_for_block1061 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Id_in_attribute1085 = new BitSet(new long[]{0x0000000000400000L});
public static final BitSet FOLLOW_Col_in_attribute1087 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_expr_in_attribute1089 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TagStart_in_table_tag1108 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
public static final BitSet FOLLOW_TableStart_in_table_tag1110 = new BitSet(new long[]{0x0200000000000000L});
public static final BitSet FOLLOW_Id_in_table_tag1112 = new BitSet(new long[]{0x1000000000000000L});
public static final BitSet FOLLOW_In_in_table_tag1114 = new BitSet(new long[]{0x0200000008000000L,0x0000000000000100L});
public static final BitSet FOLLOW_lookup_in_table_tag1116 = new BitSet(new long[]{0x0200000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_attribute_in_table_tag1118 = new BitSet(new long[]{0x0200000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_table_tag1121 = new BitSet(new long[]{0x0000000000000000L,0x0000000010005000L});
public static final BitSet FOLLOW_block_in_table_tag1123 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
public static final BitSet FOLLOW_TagStart_in_table_tag1125 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
public static final BitSet FOLLOW_TableEnd_in_table_tag1127 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_table_tag1129 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TagStart_in_capture_tag1159 = new BitSet(new long[]{0x0000000000080000L});
public static final BitSet FOLLOW_CaptureStart_in_capture_tag1161 = new BitSet(new long[]{0x0200000000000000L,0x0000000000800000L});
public static final BitSet FOLLOW_Id_in_capture_tag1165 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_capture_tag1167 = new BitSet(new long[]{0x0000000000000000L,0x0000000010005000L});
public static final BitSet FOLLOW_block_in_capture_tag1169 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
public static final BitSet FOLLOW_TagStart_in_capture_tag1171 = new BitSet(new long[]{0x0000000000040000L});
public static final BitSet FOLLOW_CaptureEnd_in_capture_tag1173 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_capture_tag1175 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Str_in_capture_tag1215 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_capture_tag1217 = new BitSet(new long[]{0x0000000000000000L,0x0000000010005000L});
public static final BitSet FOLLOW_block_in_capture_tag1219 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
public static final BitSet FOLLOW_TagStart_in_capture_tag1221 = new BitSet(new long[]{0x0000000000040000L});
public static final BitSet FOLLOW_CaptureEnd_in_capture_tag1223 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_capture_tag1225 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TagStart_in_include_tag1274 = new BitSet(new long[]{0x2000000000000000L});
public static final BitSet FOLLOW_Include_in_include_tag1276 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
public static final BitSet FOLLOW_Str_in_include_tag1280 = new BitSet(new long[]{0x0000000000000000L,0x0000002008000000L});
public static final BitSet FOLLOW_With_in_include_tag1283 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
public static final BitSet FOLLOW_Str_in_include_tag1287 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_include_tag1291 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TagStart_in_break_tag1319 = new BitSet(new long[]{0x0000000000000200L});
public static final BitSet FOLLOW_Break_in_break_tag1321 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_break_tag1323 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TagStart_in_continue_tag1338 = new BitSet(new long[]{0x0000000008000000L});
public static final BitSet FOLLOW_Continue_in_continue_tag1340 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_continue_tag1342 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_OutStart_in_output1357 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_expr_in_output1359 = new BitSet(new long[]{0x0000000000000000L,0x0000000000022000L});
public static final BitSet FOLLOW_filter_in_output1361 = new BitSet(new long[]{0x0000000000000000L,0x0000000000022000L});
public static final BitSet FOLLOW_OutEnd_in_output1364 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Pipe_in_filter1390 = new BitSet(new long[]{0x0200000000000000L});
public static final BitSet FOLLOW_Id_in_filter1392 = new BitSet(new long[]{0x0000000000400002L});
public static final BitSet FOLLOW_params_in_filter1394 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Col_in_params1421 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_expr_in_params1423 = new BitSet(new long[]{0x0000000000800002L});
public static final BitSet FOLLOW_Comma_in_params1426 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_expr_in_params1428 = new BitSet(new long[]{0x0000000000800002L});
public static final BitSet FOLLOW_TagStart_in_assignment1446 = new BitSet(new long[]{0x0000000000000080L});
public static final BitSet FOLLOW_Assign_in_assignment1448 = new BitSet(new long[]{0x0200000000000000L});
public static final BitSet FOLLOW_Id_in_assignment1450 = new BitSet(new long[]{0x0000020000000000L});
public static final BitSet FOLLOW_EqSign_in_assignment1452 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_expr_in_assignment1454 = new BitSet(new long[]{0x0000000000000000L,0x0000000008020000L});
public static final BitSet FOLLOW_filter_in_assignment1456 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
public static final BitSet FOLLOW_TagEnd_in_assignment1459 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_or_expr_in_expr1483 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_and_expr_in_or_expr1494 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000800L});
public static final BitSet FOLLOW_Or_in_or_expr1497 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_and_expr_in_or_expr1500 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000800L});
public static final BitSet FOLLOW_contains_expr_in_and_expr1513 = new BitSet(new long[]{0x0000000000000042L});
public static final BitSet FOLLOW_And_in_and_expr1516 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_contains_expr_in_and_expr1519 = new BitSet(new long[]{0x0000000000000042L});
public static final BitSet FOLLOW_eq_expr_in_contains_expr1532 = new BitSet(new long[]{0x0000000004000002L});
public static final BitSet FOLLOW_Contains_in_contains_expr1535 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_eq_expr_in_contains_expr1538 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_rel_expr_in_eq_expr1551 = new BitSet(new long[]{0x0000010000000002L,0x0000000000000010L});
public static final BitSet FOLLOW_set_in_eq_expr1554 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_rel_expr_in_eq_expr1563 = new BitSet(new long[]{0x0000010000000002L,0x0000000000000010L});
public static final BitSet FOLLOW_term_in_rel_expr1576 = new BitSet(new long[]{0x0018000000000002L,0x0000000000000006L});
public static final BitSet FOLLOW_set_in_rel_expr1579 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_term_in_rel_expr1596 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_DoubleNum_in_term1609 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_LongNum_in_term1614 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Str_in_term1619 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_True_in_term1624 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_False_in_term1629 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Nil_in_term1634 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_NoSpace_in_term1639 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
public static final BitSet FOLLOW_lookup_in_term1656 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Empty_in_term1661 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_OPar_in_term1666 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_expr_in_term1668 = new BitSet(new long[]{0x0000000000004000L});
public static final BitSet FOLLOW_CPar_in_term1670 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_id_in_lookup1685 = new BitSet(new long[]{0x0000000080000002L,0x0000000000040100L});
public static final BitSet FOLLOW_index_in_lookup1687 = new BitSet(new long[]{0x0000000080000002L,0x0000000000040100L});
public static final BitSet FOLLOW_QMark_in_lookup1690 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_OBr_in_lookup1712 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
public static final BitSet FOLLOW_Str_in_lookup1714 = new BitSet(new long[]{0x0000000000001000L});
public static final BitSet FOLLOW_CBr_in_lookup1716 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
public static final BitSet FOLLOW_QMark_in_lookup1718 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_OBr_in_lookup1736 = new BitSet(new long[]{0x0200000000000000L});
public static final BitSet FOLLOW_Id_in_lookup1738 = new BitSet(new long[]{0x0000000000001000L});
public static final BitSet FOLLOW_CBr_in_lookup1740 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
public static final BitSet FOLLOW_QMark_in_lookup1742 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Id_in_id1767 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Continue_in_id1772 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_id_in_id21788 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Empty_in_id21793 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_CaptureStart_in_id21810 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_CaptureEnd_in_id21820 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_CommentStart_in_id21832 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_CommentEnd_in_id21842 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_RawStart_in_id21854 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_RawEnd_in_id21868 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_IfStart_in_id21884 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Elsif_in_id21899 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_IfEnd_in_id21916 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_UnlessStart_in_id21933 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_UnlessEnd_in_id21944 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Else_in_id21957 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Contains_in_id21975 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_CaseStart_in_id21989 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_CaseEnd_in_id22002 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_When_in_id22017 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Cycle_in_id22035 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_ForStart_in_id22052 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_ForEnd_in_id22066 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_In_in_id22082 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_And_in_id22102 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Or_in_id22121 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TableStart_in_id22141 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_TableEnd_in_id22153 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Assign_in_id22167 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_True_in_id22183 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_False_in_id22201 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Nil_in_id22218 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Include_in_id22237 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_With_in_id22252 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_EndId_in_id22270 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Break_in_id22287 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_Dot_in_index2310 = new BitSet(new long[]{0x3E0380F01F3C02C0L,0x00000031A6300840L});
public static final BitSet FOLLOW_id2_in_index2312 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_OBr_in_index2330 = new BitSet(new long[]{0x0200804208000000L,0x00000000208003C1L});
public static final BitSet FOLLOW_expr_in_index2332 = new BitSet(new long[]{0x0000000000001000L});
public static final BitSet FOLLOW_CBr_in_index2334 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_custom_tag_block_in_synpred1_Liquid421 = new BitSet(new long[]{0x0000000000000002L});
public static final BitSet FOLLOW_expr_in_synpred2_Liquid868 = new BitSet(new long[]{0x0000000000400000L});
public static final BitSet FOLLOW_Col_in_synpred2_Liquid870 = new BitSet(new long[]{0x0000000000000002L});
}