// $ANTLR 3.4 C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g 2012-10-28 23:48:28 // Generated by ANTLR package net.sf.jabref.bst; import org.antlr.runtime.*; import java.util.Stack; import java.util.List; import java.util.ArrayList; import org.antlr.runtime.tree.*; @SuppressWarnings({"all", "warnings", "unchecked"}) public class BstParser extends Parser { public static final String[] tokenNames = new String[] { "<invalid>", "<EOR>", "<DOWN>", "<UP>", "COMMANDS", "ENTRY", "EXECUTE", "FUNCTION", "IDENTIFIER", "IDLIST", "INTEGER", "INTEGERS", "ITERATE", "LETTER", "LINE_COMMENT", "MACRO", "NUMERAL", "QUOTED", "READ", "REVERSE", "SORT", "STACK", "STRING", "STRINGS", "WS", "'*'", "'+'", "'-'", "':='", "'<'", "'='", "'>'", "'{'", "'}'" }; public static final int EOF=-1; public static final int T__25=25; public static final int T__26=26; public static final int T__27=27; public static final int T__28=28; public static final int T__29=29; public static final int T__30=30; public static final int T__31=31; public static final int T__32=32; public static final int T__33=33; public static final int COMMANDS=4; public static final int ENTRY=5; public static final int EXECUTE=6; public static final int FUNCTION=7; public static final int IDENTIFIER=8; public static final int IDLIST=9; public static final int INTEGER=10; public static final int INTEGERS=11; public static final int ITERATE=12; public static final int LETTER=13; public static final int LINE_COMMENT=14; public static final int MACRO=15; public static final int NUMERAL=16; public static final int QUOTED=17; public static final int READ=18; public static final int REVERSE=19; public static final int SORT=20; public static final int STACK=21; public static final int STRING=22; public static final int STRINGS=23; public static final int WS=24; // delegates public Parser[] getDelegates() { return new Parser[] {}; } // delegators public BstParser(TokenStream input) { this(input, new RecognizerSharedState()); } public BstParser(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; } public String[] getTokenNames() { return BstParser.tokenNames; } public String getGrammarFileName() { return "C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g"; } public static class program_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "program" // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:22:1: program : ( commands )+ -> ^( COMMANDS ( commands )+ ) ; public final BstParser.program_return program() throws RecognitionException { BstParser.program_return retval = new BstParser.program_return(); retval.start = input.LT(1); Object root_0 = null; BstParser.commands_return commands1 =null; RewriteRuleSubtreeStream stream_commands=new RewriteRuleSubtreeStream(adaptor,"rule commands"); try { // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:22:9: ( ( commands )+ -> ^( COMMANDS ( commands )+ ) ) // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:22:11: ( commands )+ { // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:22:11: ( commands )+ int cnt1=0; loop1: do { int alt1=2; int LA1_0 = input.LA(1); if ( ((LA1_0 >= ENTRY && LA1_0 <= FUNCTION)||(LA1_0 >= INTEGERS && LA1_0 <= ITERATE)||LA1_0==MACRO||(LA1_0 >= READ && LA1_0 <= SORT)||LA1_0==STRINGS) ) { alt1=1; } switch (alt1) { case 1 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:22:11: commands { pushFollow(FOLLOW_commands_in_program62); commands1=commands(); state._fsp--; stream_commands.add(commands1.getTree()); } break; default : if ( cnt1 >= 1 ) break loop1; EarlyExitException eee = new EarlyExitException(1, input); throw eee; } cnt1++; } while (true); // AST REWRITE // elements: commands // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); // 22:21: -> ^( COMMANDS ( commands )+ ) { // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:22:24: ^( COMMANDS ( commands )+ ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot( (Object)adaptor.create(COMMANDS, "COMMANDS") , root_1); if ( !(stream_commands.hasNext()) ) { throw new RewriteEarlyExitException(); } while ( stream_commands.hasNext() ) { adaptor.addChild(root_1, stream_commands.nextTree()); } stream_commands.reset(); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "program" public static class commands_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "commands" // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:24:1: commands : ( STRINGS ^ idList | INTEGERS ^ idList | FUNCTION ^ id stack | MACRO ^ id '{' ! STRING '}' !| READ ^| EXECUTE ^ '{' ! function '}' !| ITERATE ^ '{' ! function '}' !| REVERSE ^ '{' ! function '}' !| ENTRY ^ idList0 idList0 idList0 | SORT ^); public final BstParser.commands_return commands() throws RecognitionException { BstParser.commands_return retval = new BstParser.commands_return(); retval.start = input.LT(1); Object root_0 = null; Token STRINGS2=null; Token INTEGERS4=null; Token FUNCTION6=null; Token MACRO9=null; Token char_literal11=null; Token STRING12=null; Token char_literal13=null; Token READ14=null; Token EXECUTE15=null; Token char_literal16=null; Token char_literal18=null; Token ITERATE19=null; Token char_literal20=null; Token char_literal22=null; Token REVERSE23=null; Token char_literal24=null; Token char_literal26=null; Token ENTRY27=null; Token SORT31=null; BstParser.idList_return idList3 =null; BstParser.idList_return idList5 =null; BstParser.id_return id7 =null; BstParser.stack_return stack8 =null; BstParser.id_return id10 =null; BstParser.function_return function17 =null; BstParser.function_return function21 =null; BstParser.function_return function25 =null; BstParser.idList0_return idList028 =null; BstParser.idList0_return idList029 =null; BstParser.idList0_return idList030 =null; Object STRINGS2_tree=null; Object INTEGERS4_tree=null; Object FUNCTION6_tree=null; Object MACRO9_tree=null; Object char_literal11_tree=null; Object STRING12_tree=null; Object char_literal13_tree=null; Object READ14_tree=null; Object EXECUTE15_tree=null; Object char_literal16_tree=null; Object char_literal18_tree=null; Object ITERATE19_tree=null; Object char_literal20_tree=null; Object char_literal22_tree=null; Object REVERSE23_tree=null; Object char_literal24_tree=null; Object char_literal26_tree=null; Object ENTRY27_tree=null; Object SORT31_tree=null; try { // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:25:2: ( STRINGS ^ idList | INTEGERS ^ idList | FUNCTION ^ id stack | MACRO ^ id '{' ! STRING '}' !| READ ^| EXECUTE ^ '{' ! function '}' !| ITERATE ^ '{' ! function '}' !| REVERSE ^ '{' ! function '}' !| ENTRY ^ idList0 idList0 idList0 | SORT ^) int alt2=10; switch ( input.LA(1) ) { case STRINGS: { alt2=1; } break; case INTEGERS: { alt2=2; } break; case FUNCTION: { alt2=3; } break; case MACRO: { alt2=4; } break; case READ: { alt2=5; } break; case EXECUTE: { alt2=6; } break; case ITERATE: { alt2=7; } break; case REVERSE: { alt2=8; } break; case ENTRY: { alt2=9; } break; case SORT: { alt2=10; } break; default: NoViableAltException nvae = new NoViableAltException("", 2, 0, input); throw nvae; } switch (alt2) { case 1 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:25:4: STRINGS ^ idList { root_0 = (Object)adaptor.nil(); STRINGS2=(Token)match(input,STRINGS,FOLLOW_STRINGS_in_commands82); STRINGS2_tree = (Object)adaptor.create(STRINGS2) ; root_0 = (Object)adaptor.becomeRoot(STRINGS2_tree, root_0); pushFollow(FOLLOW_idList_in_commands85); idList3=idList(); state._fsp--; adaptor.addChild(root_0, idList3.getTree()); } break; case 2 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:26:4: INTEGERS ^ idList { root_0 = (Object)adaptor.nil(); INTEGERS4=(Token)match(input,INTEGERS,FOLLOW_INTEGERS_in_commands90); INTEGERS4_tree = (Object)adaptor.create(INTEGERS4) ; root_0 = (Object)adaptor.becomeRoot(INTEGERS4_tree, root_0); pushFollow(FOLLOW_idList_in_commands93); idList5=idList(); state._fsp--; adaptor.addChild(root_0, idList5.getTree()); } break; case 3 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:27:4: FUNCTION ^ id stack { root_0 = (Object)adaptor.nil(); FUNCTION6=(Token)match(input,FUNCTION,FOLLOW_FUNCTION_in_commands98); FUNCTION6_tree = (Object)adaptor.create(FUNCTION6) ; root_0 = (Object)adaptor.becomeRoot(FUNCTION6_tree, root_0); pushFollow(FOLLOW_id_in_commands101); id7=id(); state._fsp--; adaptor.addChild(root_0, id7.getTree()); pushFollow(FOLLOW_stack_in_commands103); stack8=stack(); state._fsp--; adaptor.addChild(root_0, stack8.getTree()); } break; case 4 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:28:4: MACRO ^ id '{' ! STRING '}' ! { root_0 = (Object)adaptor.nil(); MACRO9=(Token)match(input,MACRO,FOLLOW_MACRO_in_commands108); MACRO9_tree = (Object)adaptor.create(MACRO9) ; root_0 = (Object)adaptor.becomeRoot(MACRO9_tree, root_0); pushFollow(FOLLOW_id_in_commands111); id10=id(); state._fsp--; adaptor.addChild(root_0, id10.getTree()); char_literal11=(Token)match(input,32,FOLLOW_32_in_commands113); STRING12=(Token)match(input,STRING,FOLLOW_STRING_in_commands116); STRING12_tree = (Object)adaptor.create(STRING12) ; adaptor.addChild(root_0, STRING12_tree); char_literal13=(Token)match(input,33,FOLLOW_33_in_commands118); } break; case 5 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:29:4: READ ^ { root_0 = (Object)adaptor.nil(); READ14=(Token)match(input,READ,FOLLOW_READ_in_commands124); READ14_tree = (Object)adaptor.create(READ14) ; root_0 = (Object)adaptor.becomeRoot(READ14_tree, root_0); } break; case 6 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:30:4: EXECUTE ^ '{' ! function '}' ! { root_0 = (Object)adaptor.nil(); EXECUTE15=(Token)match(input,EXECUTE,FOLLOW_EXECUTE_in_commands130); EXECUTE15_tree = (Object)adaptor.create(EXECUTE15) ; root_0 = (Object)adaptor.becomeRoot(EXECUTE15_tree, root_0); char_literal16=(Token)match(input,32,FOLLOW_32_in_commands133); pushFollow(FOLLOW_function_in_commands136); function17=function(); state._fsp--; adaptor.addChild(root_0, function17.getTree()); char_literal18=(Token)match(input,33,FOLLOW_33_in_commands138); } break; case 7 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:31:4: ITERATE ^ '{' ! function '}' ! { root_0 = (Object)adaptor.nil(); ITERATE19=(Token)match(input,ITERATE,FOLLOW_ITERATE_in_commands144); ITERATE19_tree = (Object)adaptor.create(ITERATE19) ; root_0 = (Object)adaptor.becomeRoot(ITERATE19_tree, root_0); char_literal20=(Token)match(input,32,FOLLOW_32_in_commands147); pushFollow(FOLLOW_function_in_commands150); function21=function(); state._fsp--; adaptor.addChild(root_0, function21.getTree()); char_literal22=(Token)match(input,33,FOLLOW_33_in_commands152); } break; case 8 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:32:4: REVERSE ^ '{' ! function '}' ! { root_0 = (Object)adaptor.nil(); REVERSE23=(Token)match(input,REVERSE,FOLLOW_REVERSE_in_commands158); REVERSE23_tree = (Object)adaptor.create(REVERSE23) ; root_0 = (Object)adaptor.becomeRoot(REVERSE23_tree, root_0); char_literal24=(Token)match(input,32,FOLLOW_32_in_commands161); pushFollow(FOLLOW_function_in_commands164); function25=function(); state._fsp--; adaptor.addChild(root_0, function25.getTree()); char_literal26=(Token)match(input,33,FOLLOW_33_in_commands166); } break; case 9 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:33:4: ENTRY ^ idList0 idList0 idList0 { root_0 = (Object)adaptor.nil(); ENTRY27=(Token)match(input,ENTRY,FOLLOW_ENTRY_in_commands172); ENTRY27_tree = (Object)adaptor.create(ENTRY27) ; root_0 = (Object)adaptor.becomeRoot(ENTRY27_tree, root_0); pushFollow(FOLLOW_idList0_in_commands175); idList028=idList0(); state._fsp--; adaptor.addChild(root_0, idList028.getTree()); pushFollow(FOLLOW_idList0_in_commands177); idList029=idList0(); state._fsp--; adaptor.addChild(root_0, idList029.getTree()); pushFollow(FOLLOW_idList0_in_commands179); idList030=idList0(); state._fsp--; adaptor.addChild(root_0, idList030.getTree()); } break; case 10 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:34:4: SORT ^ { root_0 = (Object)adaptor.nil(); SORT31=(Token)match(input,SORT,FOLLOW_SORT_in_commands184); SORT31_tree = (Object)adaptor.create(SORT31) ; root_0 = (Object)adaptor.becomeRoot(SORT31_tree, root_0); } break; } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "commands" public static class identifier_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "identifier" // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:36:1: identifier : IDENTIFIER ; public final BstParser.identifier_return identifier() throws RecognitionException { BstParser.identifier_return retval = new BstParser.identifier_return(); retval.start = input.LT(1); Object root_0 = null; Token IDENTIFIER32=null; Object IDENTIFIER32_tree=null; try { // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:37:2: ( IDENTIFIER ) // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:37:4: IDENTIFIER { root_0 = (Object)adaptor.nil(); IDENTIFIER32=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_identifier195); IDENTIFIER32_tree = (Object)adaptor.create(IDENTIFIER32) ; adaptor.addChild(root_0, IDENTIFIER32_tree); } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "identifier" public static class id_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "id" // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:39:1: id : '{' ! identifier '}' !; public final BstParser.id_return id() throws RecognitionException { BstParser.id_return retval = new BstParser.id_return(); retval.start = input.LT(1); Object root_0 = null; Token char_literal33=null; Token char_literal35=null; BstParser.identifier_return identifier34 =null; Object char_literal33_tree=null; Object char_literal35_tree=null; try { // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:40:2: ( '{' ! identifier '}' !) // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:40:4: '{' ! identifier '}' ! { root_0 = (Object)adaptor.nil(); char_literal33=(Token)match(input,32,FOLLOW_32_in_id205); pushFollow(FOLLOW_identifier_in_id208); identifier34=identifier(); state._fsp--; adaptor.addChild(root_0, identifier34.getTree()); char_literal35=(Token)match(input,33,FOLLOW_33_in_id210); } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "id" public static class idList_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "idList" // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:42:1: idList : '{' ( identifier )+ '}' -> ^( IDLIST ( identifier )+ ) ; public final BstParser.idList_return idList() throws RecognitionException { BstParser.idList_return retval = new BstParser.idList_return(); retval.start = input.LT(1); Object root_0 = null; Token char_literal36=null; Token char_literal38=null; BstParser.identifier_return identifier37 =null; Object char_literal36_tree=null; Object char_literal38_tree=null; RewriteRuleTokenStream stream_32=new RewriteRuleTokenStream(adaptor,"token 32"); RewriteRuleTokenStream stream_33=new RewriteRuleTokenStream(adaptor,"token 33"); RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier"); try { // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:43:2: ( '{' ( identifier )+ '}' -> ^( IDLIST ( identifier )+ ) ) // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:43:4: '{' ( identifier )+ '}' { char_literal36=(Token)match(input,32,FOLLOW_32_in_idList222); stream_32.add(char_literal36); // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:43:8: ( identifier )+ int cnt3=0; loop3: do { int alt3=2; int LA3_0 = input.LA(1); if ( (LA3_0==IDENTIFIER) ) { alt3=1; } switch (alt3) { case 1 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:43:8: identifier { pushFollow(FOLLOW_identifier_in_idList224); identifier37=identifier(); state._fsp--; stream_identifier.add(identifier37.getTree()); } break; default : if ( cnt3 >= 1 ) break loop3; EarlyExitException eee = new EarlyExitException(3, input); throw eee; } cnt3++; } while (true); char_literal38=(Token)match(input,33,FOLLOW_33_in_idList227); stream_33.add(char_literal38); // AST REWRITE // elements: identifier // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); // 43:24: -> ^( IDLIST ( identifier )+ ) { // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:43:27: ^( IDLIST ( identifier )+ ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot( (Object)adaptor.create(IDLIST, "IDLIST") , root_1); if ( !(stream_identifier.hasNext()) ) { throw new RewriteEarlyExitException(); } while ( stream_identifier.hasNext() ) { adaptor.addChild(root_1, stream_identifier.nextTree()); } stream_identifier.reset(); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "idList" public static class idList0_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "idList0" // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:45:1: idList0 : '{' ( identifier )* '}' -> ^( IDLIST ( identifier )* ) ; public final BstParser.idList0_return idList0() throws RecognitionException { BstParser.idList0_return retval = new BstParser.idList0_return(); retval.start = input.LT(1); Object root_0 = null; Token char_literal39=null; Token char_literal41=null; BstParser.identifier_return identifier40 =null; Object char_literal39_tree=null; Object char_literal41_tree=null; RewriteRuleTokenStream stream_32=new RewriteRuleTokenStream(adaptor,"token 32"); RewriteRuleTokenStream stream_33=new RewriteRuleTokenStream(adaptor,"token 33"); RewriteRuleSubtreeStream stream_identifier=new RewriteRuleSubtreeStream(adaptor,"rule identifier"); try { // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:46:2: ( '{' ( identifier )* '}' -> ^( IDLIST ( identifier )* ) ) // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:46:4: '{' ( identifier )* '}' { char_literal39=(Token)match(input,32,FOLLOW_32_in_idList0247); stream_32.add(char_literal39); // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:46:8: ( identifier )* loop4: do { int alt4=2; int LA4_0 = input.LA(1); if ( (LA4_0==IDENTIFIER) ) { alt4=1; } switch (alt4) { case 1 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:46:8: identifier { pushFollow(FOLLOW_identifier_in_idList0249); identifier40=identifier(); state._fsp--; stream_identifier.add(identifier40.getTree()); } break; default : break loop4; } } while (true); char_literal41=(Token)match(input,33,FOLLOW_33_in_idList0252); stream_33.add(char_literal41); // AST REWRITE // elements: identifier // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); // 46:24: -> ^( IDLIST ( identifier )* ) { // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:46:27: ^( IDLIST ( identifier )* ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot( (Object)adaptor.create(IDLIST, "IDLIST") , root_1); // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:46:36: ( identifier )* while ( stream_identifier.hasNext() ) { adaptor.addChild(root_1, stream_identifier.nextTree()); } stream_identifier.reset(); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "idList0" public static class function_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "function" // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:48:1: function : ( '<' | '>' | '=' | '+' | '-' | ':=' | '*' | identifier ); public final BstParser.function_return function() throws RecognitionException { BstParser.function_return retval = new BstParser.function_return(); retval.start = input.LT(1); Object root_0 = null; Token char_literal42=null; Token char_literal43=null; Token char_literal44=null; Token char_literal45=null; Token char_literal46=null; Token string_literal47=null; Token char_literal48=null; BstParser.identifier_return identifier49 =null; Object char_literal42_tree=null; Object char_literal43_tree=null; Object char_literal44_tree=null; Object char_literal45_tree=null; Object char_literal46_tree=null; Object string_literal47_tree=null; Object char_literal48_tree=null; try { // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:49:2: ( '<' | '>' | '=' | '+' | '-' | ':=' | '*' | identifier ) int alt5=8; switch ( input.LA(1) ) { case 29: { alt5=1; } break; case 31: { alt5=2; } break; case 30: { alt5=3; } break; case 26: { alt5=4; } break; case 27: { alt5=5; } break; case 28: { alt5=6; } break; case 25: { alt5=7; } break; case IDENTIFIER: { alt5=8; } break; default: NoViableAltException nvae = new NoViableAltException("", 5, 0, input); throw nvae; } switch (alt5) { case 1 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:49:4: '<' { root_0 = (Object)adaptor.nil(); char_literal42=(Token)match(input,29,FOLLOW_29_in_function271); char_literal42_tree = (Object)adaptor.create(char_literal42) ; adaptor.addChild(root_0, char_literal42_tree); } break; case 2 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:49:10: '>' { root_0 = (Object)adaptor.nil(); char_literal43=(Token)match(input,31,FOLLOW_31_in_function275); char_literal43_tree = (Object)adaptor.create(char_literal43) ; adaptor.addChild(root_0, char_literal43_tree); } break; case 3 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:49:16: '=' { root_0 = (Object)adaptor.nil(); char_literal44=(Token)match(input,30,FOLLOW_30_in_function279); char_literal44_tree = (Object)adaptor.create(char_literal44) ; adaptor.addChild(root_0, char_literal44_tree); } break; case 4 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:49:22: '+' { root_0 = (Object)adaptor.nil(); char_literal45=(Token)match(input,26,FOLLOW_26_in_function283); char_literal45_tree = (Object)adaptor.create(char_literal45) ; adaptor.addChild(root_0, char_literal45_tree); } break; case 5 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:49:28: '-' { root_0 = (Object)adaptor.nil(); char_literal46=(Token)match(input,27,FOLLOW_27_in_function287); char_literal46_tree = (Object)adaptor.create(char_literal46) ; adaptor.addChild(root_0, char_literal46_tree); } break; case 6 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:49:34: ':=' { root_0 = (Object)adaptor.nil(); string_literal47=(Token)match(input,28,FOLLOW_28_in_function291); string_literal47_tree = (Object)adaptor.create(string_literal47) ; adaptor.addChild(root_0, string_literal47_tree); } break; case 7 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:49:41: '*' { root_0 = (Object)adaptor.nil(); char_literal48=(Token)match(input,25,FOLLOW_25_in_function295); char_literal48_tree = (Object)adaptor.create(char_literal48) ; adaptor.addChild(root_0, char_literal48_tree); } break; case 8 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:49:47: identifier { root_0 = (Object)adaptor.nil(); pushFollow(FOLLOW_identifier_in_function299); identifier49=identifier(); state._fsp--; adaptor.addChild(root_0, identifier49.getTree()); } break; } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "function" public static class stack_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "stack" // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:51:1: stack : '{' ( stackitem )+ '}' -> ^( STACK ( stackitem )+ ) ; public final BstParser.stack_return stack() throws RecognitionException { BstParser.stack_return retval = new BstParser.stack_return(); retval.start = input.LT(1); Object root_0 = null; Token char_literal50=null; Token char_literal52=null; BstParser.stackitem_return stackitem51 =null; Object char_literal50_tree=null; Object char_literal52_tree=null; RewriteRuleTokenStream stream_32=new RewriteRuleTokenStream(adaptor,"token 32"); RewriteRuleTokenStream stream_33=new RewriteRuleTokenStream(adaptor,"token 33"); RewriteRuleSubtreeStream stream_stackitem=new RewriteRuleSubtreeStream(adaptor,"rule stackitem"); try { // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:52:2: ( '{' ( stackitem )+ '}' -> ^( STACK ( stackitem )+ ) ) // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:52:4: '{' ( stackitem )+ '}' { char_literal50=(Token)match(input,32,FOLLOW_32_in_stack310); stream_32.add(char_literal50); // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:52:8: ( stackitem )+ int cnt6=0; loop6: do { int alt6=2; int LA6_0 = input.LA(1); if ( (LA6_0==IDENTIFIER||LA6_0==INTEGER||LA6_0==QUOTED||LA6_0==STRING||(LA6_0 >= 25 && LA6_0 <= 32)) ) { alt6=1; } switch (alt6) { case 1 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:52:8: stackitem { pushFollow(FOLLOW_stackitem_in_stack312); stackitem51=stackitem(); state._fsp--; stream_stackitem.add(stackitem51.getTree()); } break; default : if ( cnt6 >= 1 ) break loop6; EarlyExitException eee = new EarlyExitException(6, input); throw eee; } cnt6++; } while (true); char_literal52=(Token)match(input,33,FOLLOW_33_in_stack315); stream_33.add(char_literal52); // AST REWRITE // elements: stackitem // token labels: // rule labels: retval // token list labels: // rule list labels: // wildcard labels: retval.tree = root_0; RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null); root_0 = (Object)adaptor.nil(); // 52:23: -> ^( STACK ( stackitem )+ ) { // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:52:26: ^( STACK ( stackitem )+ ) { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot( (Object)adaptor.create(STACK, "STACK") , root_1); if ( !(stream_stackitem.hasNext()) ) { throw new RewriteEarlyExitException(); } while ( stream_stackitem.hasNext() ) { adaptor.addChild(root_1, stream_stackitem.nextTree()); } stream_stackitem.reset(); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "stack" public static class stackitem_return extends ParserRuleReturnScope { Object tree; public Object getTree() { return tree; } }; // $ANTLR start "stackitem" // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:54:1: stackitem : ( function | STRING | INTEGER | QUOTED | stack ); public final BstParser.stackitem_return stackitem() throws RecognitionException { BstParser.stackitem_return retval = new BstParser.stackitem_return(); retval.start = input.LT(1); Object root_0 = null; Token STRING54=null; Token INTEGER55=null; Token QUOTED56=null; BstParser.function_return function53 =null; BstParser.stack_return stack57 =null; Object STRING54_tree=null; Object INTEGER55_tree=null; Object QUOTED56_tree=null; try { // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:55:2: ( function | STRING | INTEGER | QUOTED | stack ) int alt7=5; switch ( input.LA(1) ) { case IDENTIFIER: case 25: case 26: case 27: case 28: case 29: case 30: case 31: { alt7=1; } break; case STRING: { alt7=2; } break; case INTEGER: { alt7=3; } break; case QUOTED: { alt7=4; } break; case 32: { alt7=5; } break; default: NoViableAltException nvae = new NoViableAltException("", 7, 0, input); throw nvae; } switch (alt7) { case 1 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:55:4: function { root_0 = (Object)adaptor.nil(); pushFollow(FOLLOW_function_in_stackitem334); function53=function(); state._fsp--; adaptor.addChild(root_0, function53.getTree()); } break; case 2 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:56:4: STRING { root_0 = (Object)adaptor.nil(); STRING54=(Token)match(input,STRING,FOLLOW_STRING_in_stackitem339); STRING54_tree = (Object)adaptor.create(STRING54) ; adaptor.addChild(root_0, STRING54_tree); } break; case 3 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:57:4: INTEGER { root_0 = (Object)adaptor.nil(); INTEGER55=(Token)match(input,INTEGER,FOLLOW_INTEGER_in_stackitem345); INTEGER55_tree = (Object)adaptor.create(INTEGER55) ; adaptor.addChild(root_0, INTEGER55_tree); } break; case 4 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:58:4: QUOTED { root_0 = (Object)adaptor.nil(); QUOTED56=(Token)match(input,QUOTED,FOLLOW_QUOTED_in_stackitem351); QUOTED56_tree = (Object)adaptor.create(QUOTED56) ; adaptor.addChild(root_0, QUOTED56_tree); } break; case 5 : // C:\\git-repos\\jabref\\jabref\\src\\java\\net\\sf\\jabref\\bst\\Bst.g:59:4: stack { root_0 = (Object)adaptor.nil(); pushFollow(FOLLOW_stack_in_stackitem356); stack57=stack(); state._fsp--; adaptor.addChild(root_0, stack57.getTree()); } break; } retval.stop = input.LT(-1); retval.tree = (Object)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "stackitem" // Delegated rules public static final BitSet FOLLOW_commands_in_program62 = new BitSet(new long[]{0x00000000009C98E2L}); public static final BitSet FOLLOW_STRINGS_in_commands82 = new BitSet(new long[]{0x0000000100000000L}); public static final BitSet FOLLOW_idList_in_commands85 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_INTEGERS_in_commands90 = new BitSet(new long[]{0x0000000100000000L}); public static final BitSet FOLLOW_idList_in_commands93 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_FUNCTION_in_commands98 = new BitSet(new long[]{0x0000000100000000L}); public static final BitSet FOLLOW_id_in_commands101 = new BitSet(new long[]{0x0000000100000000L}); public static final BitSet FOLLOW_stack_in_commands103 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_MACRO_in_commands108 = new BitSet(new long[]{0x0000000100000000L}); public static final BitSet FOLLOW_id_in_commands111 = new BitSet(new long[]{0x0000000100000000L}); public static final BitSet FOLLOW_32_in_commands113 = new BitSet(new long[]{0x0000000000400000L}); public static final BitSet FOLLOW_STRING_in_commands116 = new BitSet(new long[]{0x0000000200000000L}); public static final BitSet FOLLOW_33_in_commands118 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_READ_in_commands124 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_EXECUTE_in_commands130 = new BitSet(new long[]{0x0000000100000000L}); public static final BitSet FOLLOW_32_in_commands133 = new BitSet(new long[]{0x00000000FE000100L}); public static final BitSet FOLLOW_function_in_commands136 = new BitSet(new long[]{0x0000000200000000L}); public static final BitSet FOLLOW_33_in_commands138 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_ITERATE_in_commands144 = new BitSet(new long[]{0x0000000100000000L}); public static final BitSet FOLLOW_32_in_commands147 = new BitSet(new long[]{0x00000000FE000100L}); public static final BitSet FOLLOW_function_in_commands150 = new BitSet(new long[]{0x0000000200000000L}); public static final BitSet FOLLOW_33_in_commands152 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_REVERSE_in_commands158 = new BitSet(new long[]{0x0000000100000000L}); public static final BitSet FOLLOW_32_in_commands161 = new BitSet(new long[]{0x00000000FE000100L}); public static final BitSet FOLLOW_function_in_commands164 = new BitSet(new long[]{0x0000000200000000L}); public static final BitSet FOLLOW_33_in_commands166 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_ENTRY_in_commands172 = new BitSet(new long[]{0x0000000100000000L}); public static final BitSet FOLLOW_idList0_in_commands175 = new BitSet(new long[]{0x0000000100000000L}); public static final BitSet FOLLOW_idList0_in_commands177 = new BitSet(new long[]{0x0000000100000000L}); public static final BitSet FOLLOW_idList0_in_commands179 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_SORT_in_commands184 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_IDENTIFIER_in_identifier195 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_32_in_id205 = new BitSet(new long[]{0x0000000000000100L}); public static final BitSet FOLLOW_identifier_in_id208 = new BitSet(new long[]{0x0000000200000000L}); public static final BitSet FOLLOW_33_in_id210 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_32_in_idList222 = new BitSet(new long[]{0x0000000000000100L}); public static final BitSet FOLLOW_identifier_in_idList224 = new BitSet(new long[]{0x0000000200000100L}); public static final BitSet FOLLOW_33_in_idList227 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_32_in_idList0247 = new BitSet(new long[]{0x0000000200000100L}); public static final BitSet FOLLOW_identifier_in_idList0249 = new BitSet(new long[]{0x0000000200000100L}); public static final BitSet FOLLOW_33_in_idList0252 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_29_in_function271 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_31_in_function275 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_30_in_function279 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_26_in_function283 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_27_in_function287 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_28_in_function291 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_25_in_function295 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_identifier_in_function299 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_32_in_stack310 = new BitSet(new long[]{0x00000001FE420500L}); public static final BitSet FOLLOW_stackitem_in_stack312 = new BitSet(new long[]{0x00000003FE420500L}); public static final BitSet FOLLOW_33_in_stack315 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_function_in_stackitem334 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_STRING_in_stackitem339 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_INTEGER_in_stackitem345 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_QUOTED_in_stackitem351 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_stack_in_stackitem356 = new BitSet(new long[]{0x0000000000000002L}); }