/* * Copyright 2011-2011 Gregory Shrago * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // $ANTLR 3.3 Nov 30, 2010 12:45:30 /Users/gregory/Projects/PEG/Grammar.g 2011-07-15 05:33:29 package peg; import org.antlr.runtime.*; import org.antlr.runtime.tree.*; public class GrammarParser extends Parser { public static final String[] tokenNames = new String[] { "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE", "ATTR", "SEQ", "CHOICE", "ATTRS", "MODIFIER", "ID", "COMMENT", "WS", "ESC", "STRING", "XDIGIT", "DIGIT", "NUMBER", "OR", "AND", "NOT", "OPT", "ONEMORE", "ZEROMORE", "'::='", "';'", "'private'", "'{'", "'}'", "'='", "'('", "')'" }; public static final int EOF=-1; public static final int T__24=24; 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 RULE=4; public static final int ATTR=5; public static final int SEQ=6; public static final int CHOICE=7; public static final int ATTRS=8; public static final int MODIFIER=9; public static final int ID=10; public static final int COMMENT=11; public static final int WS=12; public static final int ESC=13; public static final int STRING=14; public static final int XDIGIT=15; public static final int DIGIT=16; public static final int NUMBER=17; public static final int OR=18; public static final int AND=19; public static final int NOT=20; public static final int OPT=21; public static final int ONEMORE=22; public static final int ZEROMORE=23; // delegates // delegators public GrammarParser(TokenStream input) { this(input, new RecognizerSharedState()); } public GrammarParser(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 GrammarParser.tokenNames; } public String getGrammarFileName() { return "/Users/gregory/Projects/PEG/Grammar.g"; } // List<CommonTree> myRules = new ArrayList<CommonTree>(); public static class literal_return extends ParserRuleReturnScope { org.antlr.runtime.tree.CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "literal" // /Users/gregory/Projects/PEG/Grammar.g:81:1: literal : ( NUMBER | STRING ); public final GrammarParser.literal_return literal() throws RecognitionException { GrammarParser.literal_return retval = new GrammarParser.literal_return(); retval.start = input.LT(1); org.antlr.runtime.tree.CommonTree root_0 = null; Token set1=null; org.antlr.runtime.tree.CommonTree set1_tree=null; try { // /Users/gregory/Projects/PEG/Grammar.g:81:9: ( NUMBER | STRING ) // /Users/gregory/Projects/PEG/Grammar.g: { root_0 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); set1=(Token)input.LT(1); if ( input.LA(1)==STRING||input.LA(1)==NUMBER ) { input.consume(); adaptor.addChild(root_0, (org.antlr.runtime.tree.CommonTree)adaptor.create(set1)); state.errorRecovery=false; } else { MismatchedSetException mse = new MismatchedSetException(null,input); throw mse; } } retval.stop = input.LT(-1); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "literal" public static class file_return extends ParserRuleReturnScope { org.antlr.runtime.tree.CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "file" // /Users/gregory/Projects/PEG/Grammar.g:83:1: file : ( attrs | rule )+ ; public final GrammarParser.file_return file() throws RecognitionException { GrammarParser.file_return retval = new GrammarParser.file_return(); retval.start = input.LT(1); org.antlr.runtime.tree.CommonTree root_0 = null; GrammarParser.attrs_return attrs2 = null; GrammarParser.rule_return rule3 = null; try { // /Users/gregory/Projects/PEG/Grammar.g:83:6: ( ( attrs | rule )+ ) // /Users/gregory/Projects/PEG/Grammar.g:83:8: ( attrs | rule )+ { root_0 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); // /Users/gregory/Projects/PEG/Grammar.g:83:8: ( attrs | rule )+ int cnt1=0; loop1: do { int alt1=3; int LA1_0 = input.LA(1); if ( (LA1_0==27) ) { alt1=1; } else if ( (LA1_0==ID||LA1_0==26) ) { alt1=2; } switch (alt1) { case 1 : // /Users/gregory/Projects/PEG/Grammar.g:83:9: attrs { pushFollow(FOLLOW_attrs_in_file520); attrs2=attrs(); state._fsp--; adaptor.addChild(root_0, attrs2.getTree()); } break; case 2 : // /Users/gregory/Projects/PEG/Grammar.g:83:17: rule { pushFollow(FOLLOW_rule_in_file524); rule3=rule(); state._fsp--; adaptor.addChild(root_0, rule3.getTree()); } break; default : if ( cnt1 >= 1 ) break loop1; EarlyExitException eee = new EarlyExitException(1, input); throw eee; } cnt1++; } while (true); } retval.stop = input.LT(-1); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "file" public static class rule_return extends ParserRuleReturnScope { org.antlr.runtime.tree.CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "rule" // /Users/gregory/Projects/PEG/Grammar.g:85:1: rule : ( modifier )* ID '::=' choice ( attrs )? ( ';' )? -> ^( RULE ID ( modifier )* choice ( attrs )? ) ; public final GrammarParser.rule_return rule() throws RecognitionException { GrammarParser.rule_return retval = new GrammarParser.rule_return(); retval.start = input.LT(1); org.antlr.runtime.tree.CommonTree root_0 = null; Token ID5=null; Token string_literal6=null; Token char_literal9=null; GrammarParser.modifier_return modifier4 = null; GrammarParser.choice_return choice7 = null; GrammarParser.attrs_return attrs8 = null; org.antlr.runtime.tree.CommonTree ID5_tree=null; org.antlr.runtime.tree.CommonTree string_literal6_tree=null; org.antlr.runtime.tree.CommonTree char_literal9_tree=null; RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID"); RewriteRuleTokenStream stream_24=new RewriteRuleTokenStream(adaptor,"token 24"); RewriteRuleTokenStream stream_25=new RewriteRuleTokenStream(adaptor,"token 25"); RewriteRuleSubtreeStream stream_modifier=new RewriteRuleSubtreeStream(adaptor,"rule modifier"); RewriteRuleSubtreeStream stream_choice=new RewriteRuleSubtreeStream(adaptor,"rule choice"); RewriteRuleSubtreeStream stream_attrs=new RewriteRuleSubtreeStream(adaptor,"rule attrs"); try { // /Users/gregory/Projects/PEG/Grammar.g:86:3: ( ( modifier )* ID '::=' choice ( attrs )? ( ';' )? -> ^( RULE ID ( modifier )* choice ( attrs )? ) ) // /Users/gregory/Projects/PEG/Grammar.g:86:5: ( modifier )* ID '::=' choice ( attrs )? ( ';' )? { // /Users/gregory/Projects/PEG/Grammar.g:86:5: ( modifier )* loop2: do { int alt2=2; int LA2_0 = input.LA(1); if ( (LA2_0==26) ) { alt2=1; } switch (alt2) { case 1 : // /Users/gregory/Projects/PEG/Grammar.g:86:5: modifier { pushFollow(FOLLOW_modifier_in_rule537); modifier4=modifier(); state._fsp--; stream_modifier.add(modifier4.getTree()); } break; default : break loop2; } } while (true); ID5=(Token)match(input,ID,FOLLOW_ID_in_rule540); stream_ID.add(ID5); string_literal6=(Token)match(input,24,FOLLOW_24_in_rule542); stream_24.add(string_literal6); pushFollow(FOLLOW_choice_in_rule544); choice7=choice(); state._fsp--; stream_choice.add(choice7.getTree()); // /Users/gregory/Projects/PEG/Grammar.g:86:31: ( attrs )? int alt3=2; alt3 = dfa3.predict(input); switch (alt3) { case 1 : // /Users/gregory/Projects/PEG/Grammar.g:86:31: attrs { pushFollow(FOLLOW_attrs_in_rule546); attrs8=attrs(); state._fsp--; stream_attrs.add(attrs8.getTree()); } break; } // /Users/gregory/Projects/PEG/Grammar.g:86:38: ( ';' )? int alt4=2; int LA4_0 = input.LA(1); if ( (LA4_0==25) ) { alt4=1; } switch (alt4) { case 1 : // /Users/gregory/Projects/PEG/Grammar.g:86:38: ';' { char_literal9=(Token)match(input,25,FOLLOW_25_in_rule549); stream_25.add(char_literal9); } break; } // AST REWRITE // elements: ID, modifier, attrs, choice // 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 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); // 86:43: -> ^( RULE ID ( modifier )* choice ( attrs )? ) { // /Users/gregory/Projects/PEG/Grammar.g:86:46: ^( RULE ID ( modifier )* choice ( attrs )? ) { org.antlr.runtime.tree.CommonTree root_1 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); root_1 = (org.antlr.runtime.tree.CommonTree)adaptor.becomeRoot((org.antlr.runtime.tree.CommonTree)adaptor.create(RULE, "RULE"), root_1); adaptor.addChild(root_1, stream_ID.nextNode()); // /Users/gregory/Projects/PEG/Grammar.g:86:56: ( modifier )* while ( stream_modifier.hasNext() ) { adaptor.addChild(root_1, stream_modifier.nextTree()); } stream_modifier.reset(); adaptor.addChild(root_1, stream_choice.nextTree()); // /Users/gregory/Projects/PEG/Grammar.g:86:73: ( attrs )? if ( stream_attrs.hasNext() ) { adaptor.addChild(root_1, stream_attrs.nextTree()); } stream_attrs.reset(); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } retval.stop = input.LT(-1); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "rule" public static class modifier_return extends ParserRuleReturnScope { org.antlr.runtime.tree.CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "modifier" // /Users/gregory/Projects/PEG/Grammar.g:91:1: modifier : 'private' -> ^( MODIFIER[\"private\"] ) ; public final GrammarParser.modifier_return modifier() throws RecognitionException { GrammarParser.modifier_return retval = new GrammarParser.modifier_return(); retval.start = input.LT(1); org.antlr.runtime.tree.CommonTree root_0 = null; Token string_literal10=null; org.antlr.runtime.tree.CommonTree string_literal10_tree=null; RewriteRuleTokenStream stream_26=new RewriteRuleTokenStream(adaptor,"token 26"); try { // /Users/gregory/Projects/PEG/Grammar.g:91:10: ( 'private' -> ^( MODIFIER[\"private\"] ) ) // /Users/gregory/Projects/PEG/Grammar.g:91:12: 'private' { string_literal10=(Token)match(input,26,FOLLOW_26_in_modifier577); stream_26.add(string_literal10); // AST REWRITE // elements: // 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 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); // 91:22: -> ^( MODIFIER[\"private\"] ) { // /Users/gregory/Projects/PEG/Grammar.g:91:25: ^( MODIFIER[\"private\"] ) { org.antlr.runtime.tree.CommonTree root_1 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); root_1 = (org.antlr.runtime.tree.CommonTree)adaptor.becomeRoot((org.antlr.runtime.tree.CommonTree)adaptor.create(MODIFIER, "private"), root_1); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } retval.stop = input.LT(-1); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "modifier" public static class attrs_return extends ParserRuleReturnScope { org.antlr.runtime.tree.CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "attrs" // /Users/gregory/Projects/PEG/Grammar.g:94:1: attrs : '{' ( attr )* '}' -> ^( ATTRS ( attr )* ) ; public final GrammarParser.attrs_return attrs() throws RecognitionException { GrammarParser.attrs_return retval = new GrammarParser.attrs_return(); retval.start = input.LT(1); org.antlr.runtime.tree.CommonTree root_0 = null; Token char_literal11=null; Token char_literal13=null; GrammarParser.attr_return attr12 = null; org.antlr.runtime.tree.CommonTree char_literal11_tree=null; org.antlr.runtime.tree.CommonTree char_literal13_tree=null; RewriteRuleTokenStream stream_27=new RewriteRuleTokenStream(adaptor,"token 27"); RewriteRuleTokenStream stream_28=new RewriteRuleTokenStream(adaptor,"token 28"); RewriteRuleSubtreeStream stream_attr=new RewriteRuleSubtreeStream(adaptor,"rule attr"); try { // /Users/gregory/Projects/PEG/Grammar.g:94:8: ( '{' ( attr )* '}' -> ^( ATTRS ( attr )* ) ) // /Users/gregory/Projects/PEG/Grammar.g:95:9: '{' ( attr )* '}' { char_literal11=(Token)match(input,27,FOLLOW_27_in_attrs603); stream_27.add(char_literal11); // /Users/gregory/Projects/PEG/Grammar.g:95:13: ( attr )* loop5: do { int alt5=2; int LA5_0 = input.LA(1); if ( (LA5_0==ID) ) { alt5=1; } switch (alt5) { case 1 : // /Users/gregory/Projects/PEG/Grammar.g:95:13: attr { pushFollow(FOLLOW_attr_in_attrs605); attr12=attr(); state._fsp--; stream_attr.add(attr12.getTree()); } break; default : break loop5; } } while (true); char_literal13=(Token)match(input,28,FOLLOW_28_in_attrs608); stream_28.add(char_literal13); // AST REWRITE // elements: attr // 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 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); // 95:23: -> ^( ATTRS ( attr )* ) { // /Users/gregory/Projects/PEG/Grammar.g:95:26: ^( ATTRS ( attr )* ) { org.antlr.runtime.tree.CommonTree root_1 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); root_1 = (org.antlr.runtime.tree.CommonTree)adaptor.becomeRoot((org.antlr.runtime.tree.CommonTree)adaptor.create(ATTRS, "ATTRS"), root_1); // /Users/gregory/Projects/PEG/Grammar.g:95:34: ( attr )* while ( stream_attr.hasNext() ) { adaptor.addChild(root_1, stream_attr.nextTree()); } stream_attr.reset(); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } retval.stop = input.LT(-1); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "attrs" public static class attr_return extends ParserRuleReturnScope { org.antlr.runtime.tree.CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "attr" // /Users/gregory/Projects/PEG/Grammar.g:98:1: attr : ID '=' value ( ';' )? -> ^( ATTR ID value ) ; public final GrammarParser.attr_return attr() throws RecognitionException { GrammarParser.attr_return retval = new GrammarParser.attr_return(); retval.start = input.LT(1); org.antlr.runtime.tree.CommonTree root_0 = null; Token ID14=null; Token char_literal15=null; Token char_literal17=null; GrammarParser.value_return value16 = null; org.antlr.runtime.tree.CommonTree ID14_tree=null; org.antlr.runtime.tree.CommonTree char_literal15_tree=null; org.antlr.runtime.tree.CommonTree char_literal17_tree=null; RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID"); RewriteRuleTokenStream stream_25=new RewriteRuleTokenStream(adaptor,"token 25"); RewriteRuleTokenStream stream_29=new RewriteRuleTokenStream(adaptor,"token 29"); RewriteRuleSubtreeStream stream_value=new RewriteRuleSubtreeStream(adaptor,"rule value"); try { // /Users/gregory/Projects/PEG/Grammar.g:98:7: ( ID '=' value ( ';' )? -> ^( ATTR ID value ) ) // /Users/gregory/Projects/PEG/Grammar.g:98:9: ID '=' value ( ';' )? { ID14=(Token)match(input,ID,FOLLOW_ID_in_attr629); stream_ID.add(ID14); char_literal15=(Token)match(input,29,FOLLOW_29_in_attr631); stream_29.add(char_literal15); pushFollow(FOLLOW_value_in_attr633); value16=value(); state._fsp--; stream_value.add(value16.getTree()); // /Users/gregory/Projects/PEG/Grammar.g:98:22: ( ';' )? int alt6=2; int LA6_0 = input.LA(1); if ( (LA6_0==25) ) { alt6=1; } switch (alt6) { case 1 : // /Users/gregory/Projects/PEG/Grammar.g:98:22: ';' { char_literal17=(Token)match(input,25,FOLLOW_25_in_attr635); stream_25.add(char_literal17); } break; } // AST REWRITE // elements: value, ID // 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 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); // 98:27: -> ^( ATTR ID value ) { // /Users/gregory/Projects/PEG/Grammar.g:98:30: ^( ATTR ID value ) { org.antlr.runtime.tree.CommonTree root_1 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); root_1 = (org.antlr.runtime.tree.CommonTree)adaptor.becomeRoot((org.antlr.runtime.tree.CommonTree)adaptor.create(ATTR, "ATTR"), root_1); adaptor.addChild(root_1, stream_ID.nextNode()); adaptor.addChild(root_1, stream_value.nextTree()); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } retval.stop = input.LT(-1); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "attr" public static class value_return extends ParserRuleReturnScope { org.antlr.runtime.tree.CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "value" // /Users/gregory/Projects/PEG/Grammar.g:101:1: value : ( literal | ID ); public final GrammarParser.value_return value() throws RecognitionException { GrammarParser.value_return retval = new GrammarParser.value_return(); retval.start = input.LT(1); org.antlr.runtime.tree.CommonTree root_0 = null; Token ID19=null; GrammarParser.literal_return literal18 = null; org.antlr.runtime.tree.CommonTree ID19_tree=null; try { // /Users/gregory/Projects/PEG/Grammar.g:101:7: ( literal | ID ) int alt7=2; int LA7_0 = input.LA(1); if ( (LA7_0==STRING||LA7_0==NUMBER) ) { alt7=1; } else if ( (LA7_0==ID) ) { alt7=2; } else { NoViableAltException nvae = new NoViableAltException("", 7, 0, input); throw nvae; } switch (alt7) { case 1 : // /Users/gregory/Projects/PEG/Grammar.g:101:9: literal { root_0 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); pushFollow(FOLLOW_literal_in_value656); literal18=literal(); state._fsp--; adaptor.addChild(root_0, literal18.getTree()); } break; case 2 : // /Users/gregory/Projects/PEG/Grammar.g:101:19: ID { root_0 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); ID19=(Token)match(input,ID,FOLLOW_ID_in_value660); ID19_tree = (org.antlr.runtime.tree.CommonTree)adaptor.create(ID19); adaptor.addChild(root_0, ID19_tree); } break; } retval.stop = input.LT(-1); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "value" public static class choice_return extends ParserRuleReturnScope { org.antlr.runtime.tree.CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "choice" // /Users/gregory/Projects/PEG/Grammar.g:105:1: choice : sequence ( OR sequence )* -> ^( CHOICE ( sequence )+ ) ; public final GrammarParser.choice_return choice() throws RecognitionException { GrammarParser.choice_return retval = new GrammarParser.choice_return(); retval.start = input.LT(1); org.antlr.runtime.tree.CommonTree root_0 = null; Token OR21=null; GrammarParser.sequence_return sequence20 = null; GrammarParser.sequence_return sequence22 = null; org.antlr.runtime.tree.CommonTree OR21_tree=null; RewriteRuleTokenStream stream_OR=new RewriteRuleTokenStream(adaptor,"token OR"); RewriteRuleSubtreeStream stream_sequence=new RewriteRuleSubtreeStream(adaptor,"rule sequence"); try { // /Users/gregory/Projects/PEG/Grammar.g:106:2: ( sequence ( OR sequence )* -> ^( CHOICE ( sequence )+ ) ) // /Users/gregory/Projects/PEG/Grammar.g:106:4: sequence ( OR sequence )* { pushFollow(FOLLOW_sequence_in_choice673); sequence20=sequence(); state._fsp--; stream_sequence.add(sequence20.getTree()); // /Users/gregory/Projects/PEG/Grammar.g:106:13: ( OR sequence )* loop8: do { int alt8=2; int LA8_0 = input.LA(1); if ( (LA8_0==OR) ) { alt8=1; } switch (alt8) { case 1 : // /Users/gregory/Projects/PEG/Grammar.g:106:14: OR sequence { OR21=(Token)match(input,OR,FOLLOW_OR_in_choice676); stream_OR.add(OR21); pushFollow(FOLLOW_sequence_in_choice678); sequence22=sequence(); state._fsp--; stream_sequence.add(sequence22.getTree()); } break; default : break loop8; } } while (true); // AST REWRITE // elements: sequence // 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 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); // 106:28: -> ^( CHOICE ( sequence )+ ) { // /Users/gregory/Projects/PEG/Grammar.g:106:31: ^( CHOICE ( sequence )+ ) { org.antlr.runtime.tree.CommonTree root_1 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); root_1 = (org.antlr.runtime.tree.CommonTree)adaptor.becomeRoot((org.antlr.runtime.tree.CommonTree)adaptor.create(CHOICE, "CHOICE"), root_1); if ( !(stream_sequence.hasNext()) ) { throw new RewriteEarlyExitException(); } while ( stream_sequence.hasNext() ) { adaptor.addChild(root_1, stream_sequence.nextTree()); } stream_sequence.reset(); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } retval.stop = input.LT(-1); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "choice" public static class sequence_return extends ParserRuleReturnScope { org.antlr.runtime.tree.CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "sequence" // /Users/gregory/Projects/PEG/Grammar.g:108:1: sequence : ( option )* -> ^( SEQ ( option )* ) ; public final GrammarParser.sequence_return sequence() throws RecognitionException { GrammarParser.sequence_return retval = new GrammarParser.sequence_return(); retval.start = input.LT(1); org.antlr.runtime.tree.CommonTree root_0 = null; GrammarParser.option_return option23 = null; RewriteRuleSubtreeStream stream_option=new RewriteRuleSubtreeStream(adaptor,"rule option"); try { // /Users/gregory/Projects/PEG/Grammar.g:109:2: ( ( option )* -> ^( SEQ ( option )* ) ) // /Users/gregory/Projects/PEG/Grammar.g:109:4: ( option )* { // /Users/gregory/Projects/PEG/Grammar.g:109:4: ( option )* loop9: do { int alt9=2; int LA9_0 = input.LA(1); if ( (LA9_0==ID) ) { int LA9_2 = input.LA(2); if ( (LA9_2==EOF||LA9_2==ID||LA9_2==STRING||(LA9_2>=NUMBER && LA9_2<=ZEROMORE)||(LA9_2>=25 && LA9_2<=27)||(LA9_2>=30 && LA9_2<=31)) ) { alt9=1; } } else if ( (LA9_0==STRING||LA9_0==NUMBER||(LA9_0>=AND && LA9_0<=NOT)||LA9_0==30) ) { alt9=1; } switch (alt9) { case 1 : // /Users/gregory/Projects/PEG/Grammar.g:109:4: option { pushFollow(FOLLOW_option_in_sequence699); option23=option(); state._fsp--; stream_option.add(option23.getTree()); } break; default : break loop9; } } while (true); // AST REWRITE // elements: option // 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 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); // 109:12: -> ^( SEQ ( option )* ) { // /Users/gregory/Projects/PEG/Grammar.g:109:15: ^( SEQ ( option )* ) { org.antlr.runtime.tree.CommonTree root_1 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); root_1 = (org.antlr.runtime.tree.CommonTree)adaptor.becomeRoot((org.antlr.runtime.tree.CommonTree)adaptor.create(SEQ, "SEQ"), root_1); // /Users/gregory/Projects/PEG/Grammar.g:109:21: ( option )* while ( stream_option.hasNext() ) { adaptor.addChild(root_1, stream_option.nextTree()); } stream_option.reset(); adaptor.addChild(root_0, root_1); } } retval.tree = root_0; } retval.stop = input.LT(-1); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "sequence" public static class option_return extends ParserRuleReturnScope { org.antlr.runtime.tree.CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "option" // /Users/gregory/Projects/PEG/Grammar.g:111:1: option : ( simple ( quantifier )? | AND simple | NOT simple ); public final GrammarParser.option_return option() throws RecognitionException { GrammarParser.option_return retval = new GrammarParser.option_return(); retval.start = input.LT(1); org.antlr.runtime.tree.CommonTree root_0 = null; Token AND26=null; Token NOT28=null; GrammarParser.simple_return simple24 = null; GrammarParser.quantifier_return quantifier25 = null; GrammarParser.simple_return simple27 = null; GrammarParser.simple_return simple29 = null; org.antlr.runtime.tree.CommonTree AND26_tree=null; org.antlr.runtime.tree.CommonTree NOT28_tree=null; try { // /Users/gregory/Projects/PEG/Grammar.g:111:8: ( simple ( quantifier )? | AND simple | NOT simple ) int alt11=3; switch ( input.LA(1) ) { case ID: case STRING: case NUMBER: case 30: { alt11=1; } break; case AND: { alt11=2; } break; case NOT: { alt11=3; } break; default: NoViableAltException nvae = new NoViableAltException("", 11, 0, input); throw nvae; } switch (alt11) { case 1 : // /Users/gregory/Projects/PEG/Grammar.g:112:2: simple ( quantifier )? { root_0 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); pushFollow(FOLLOW_simple_in_option720); simple24=simple(); state._fsp--; adaptor.addChild(root_0, simple24.getTree()); // /Users/gregory/Projects/PEG/Grammar.g:112:19: ( quantifier )? int alt10=2; int LA10_0 = input.LA(1); if ( ((LA10_0>=OPT && LA10_0<=ZEROMORE)) ) { alt10=1; } switch (alt10) { case 1 : // /Users/gregory/Projects/PEG/Grammar.g:112:19: quantifier { pushFollow(FOLLOW_quantifier_in_option722); quantifier25=quantifier(); state._fsp--; root_0 = (org.antlr.runtime.tree.CommonTree)adaptor.becomeRoot(quantifier25.getTree(), root_0); } break; } } break; case 2 : // /Users/gregory/Projects/PEG/Grammar.g:113:4: AND simple { root_0 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); AND26=(Token)match(input,AND,FOLLOW_AND_in_option729); AND26_tree = (org.antlr.runtime.tree.CommonTree)adaptor.create(AND26); root_0 = (org.antlr.runtime.tree.CommonTree)adaptor.becomeRoot(AND26_tree, root_0); pushFollow(FOLLOW_simple_in_option732); simple27=simple(); state._fsp--; adaptor.addChild(root_0, simple27.getTree()); } break; case 3 : // /Users/gregory/Projects/PEG/Grammar.g:114:4: NOT simple { root_0 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); NOT28=(Token)match(input,NOT,FOLLOW_NOT_in_option737); NOT28_tree = (org.antlr.runtime.tree.CommonTree)adaptor.create(NOT28); root_0 = (org.antlr.runtime.tree.CommonTree)adaptor.becomeRoot(NOT28_tree, root_0); pushFollow(FOLLOW_simple_in_option740); simple29=simple(); state._fsp--; adaptor.addChild(root_0, simple29.getTree()); } break; } retval.stop = input.LT(-1); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "option" public static class quantifier_return extends ParserRuleReturnScope { org.antlr.runtime.tree.CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "quantifier" // /Users/gregory/Projects/PEG/Grammar.g:117:1: quantifier : ( OPT | ONEMORE | ZEROMORE ); public final GrammarParser.quantifier_return quantifier() throws RecognitionException { GrammarParser.quantifier_return retval = new GrammarParser.quantifier_return(); retval.start = input.LT(1); org.antlr.runtime.tree.CommonTree root_0 = null; Token set30=null; org.antlr.runtime.tree.CommonTree set30_tree=null; try { // /Users/gregory/Projects/PEG/Grammar.g:118:2: ( OPT | ONEMORE | ZEROMORE ) // /Users/gregory/Projects/PEG/Grammar.g: { root_0 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); set30=(Token)input.LT(1); if ( (input.LA(1)>=OPT && input.LA(1)<=ZEROMORE) ) { input.consume(); adaptor.addChild(root_0, (org.antlr.runtime.tree.CommonTree)adaptor.create(set30)); state.errorRecovery=false; } else { MismatchedSetException mse = new MismatchedSetException(null,input); throw mse; } } retval.stop = input.LT(-1); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "quantifier" public static class simple_return extends ParserRuleReturnScope { org.antlr.runtime.tree.CommonTree tree; public Object getTree() { return tree; } }; // $ANTLR start "simple" // /Users/gregory/Projects/PEG/Grammar.g:123:1: simple : ( ID | literal | '(' choice ')' -> choice ); public final GrammarParser.simple_return simple() throws RecognitionException { GrammarParser.simple_return retval = new GrammarParser.simple_return(); retval.start = input.LT(1); org.antlr.runtime.tree.CommonTree root_0 = null; Token ID31=null; Token char_literal33=null; Token char_literal35=null; GrammarParser.literal_return literal32 = null; GrammarParser.choice_return choice34 = null; org.antlr.runtime.tree.CommonTree ID31_tree=null; org.antlr.runtime.tree.CommonTree char_literal33_tree=null; org.antlr.runtime.tree.CommonTree char_literal35_tree=null; RewriteRuleTokenStream stream_30=new RewriteRuleTokenStream(adaptor,"token 30"); RewriteRuleTokenStream stream_31=new RewriteRuleTokenStream(adaptor,"token 31"); RewriteRuleSubtreeStream stream_choice=new RewriteRuleSubtreeStream(adaptor,"rule choice"); try { // /Users/gregory/Projects/PEG/Grammar.g:123:9: ( ID | literal | '(' choice ')' -> choice ) int alt12=3; switch ( input.LA(1) ) { case ID: { alt12=1; } break; case STRING: case NUMBER: { alt12=2; } break; case 30: { alt12=3; } break; default: NoViableAltException nvae = new NoViableAltException("", 12, 0, input); throw nvae; } switch (alt12) { case 1 : // /Users/gregory/Projects/PEG/Grammar.g:123:11: ID { root_0 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); ID31=(Token)match(input,ID,FOLLOW_ID_in_simple773); ID31_tree = (org.antlr.runtime.tree.CommonTree)adaptor.create(ID31); adaptor.addChild(root_0, ID31_tree); } break; case 2 : // /Users/gregory/Projects/PEG/Grammar.g:124:4: literal { root_0 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); pushFollow(FOLLOW_literal_in_simple778); literal32=literal(); state._fsp--; adaptor.addChild(root_0, literal32.getTree()); } break; case 3 : // /Users/gregory/Projects/PEG/Grammar.g:125:4: '(' choice ')' { char_literal33=(Token)match(input,30,FOLLOW_30_in_simple783); stream_30.add(char_literal33); pushFollow(FOLLOW_choice_in_simple785); choice34=choice(); state._fsp--; stream_choice.add(choice34.getTree()); char_literal35=(Token)match(input,31,FOLLOW_31_in_simple787); stream_31.add(char_literal35); // AST REWRITE // elements: choice // 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 = (org.antlr.runtime.tree.CommonTree)adaptor.nil(); // 125:19: -> choice { adaptor.addChild(root_0, stream_choice.nextTree()); } retval.tree = root_0; } break; } retval.stop = input.LT(-1); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.rulePostProcessing(root_0); adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop); } catch (RecognitionException re) { reportError(re); recover(input,re); retval.tree = (org.antlr.runtime.tree.CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re); } finally { } return retval; } // $ANTLR end "simple" // Delegated rules protected DFA3 dfa3 = new DFA3(this); static final String DFA3_eotS = "\11\uffff"; static final String DFA3_eofS = "\1\2\10\uffff"; static final String DFA3_minS = "\2\12\1\uffff\1\35\1\uffff\4\12"; static final String DFA3_maxS = "\1\33\1\34\1\uffff\1\35\1\uffff\1\21\3\34"; static final String DFA3_acceptS = "\2\uffff\1\2\1\uffff\1\1\4\uffff"; static final String DFA3_specialS = "\11\uffff}>"; static final String[] DFA3_transitionS = { "\1\2\16\uffff\2\2\1\1", "\1\3\21\uffff\1\4", "", "\1\5", "", "\1\7\3\uffff\1\6\2\uffff\1\6", "\1\3\16\uffff\1\10\2\uffff\1\4", "\1\3\16\uffff\1\10\2\uffff\1\4", "\1\3\21\uffff\1\4" }; static final short[] DFA3_eot = DFA.unpackEncodedString(DFA3_eotS); static final short[] DFA3_eof = DFA.unpackEncodedString(DFA3_eofS); static final char[] DFA3_min = DFA.unpackEncodedStringToUnsignedChars(DFA3_minS); static final char[] DFA3_max = DFA.unpackEncodedStringToUnsignedChars(DFA3_maxS); static final short[] DFA3_accept = DFA.unpackEncodedString(DFA3_acceptS); static final short[] DFA3_special = DFA.unpackEncodedString(DFA3_specialS); static final short[][] DFA3_transition; static { int numStates = DFA3_transitionS.length; DFA3_transition = new short[numStates][]; for (int i=0; i<numStates; i++) { DFA3_transition[i] = DFA.unpackEncodedString(DFA3_transitionS[i]); } } class DFA3 extends DFA { public DFA3(BaseRecognizer recognizer) { this.recognizer = recognizer; this.decisionNumber = 3; this.eot = DFA3_eot; this.eof = DFA3_eof; this.min = DFA3_min; this.max = DFA3_max; this.accept = DFA3_accept; this.special = DFA3_special; this.transition = DFA3_transition; } public String getDescription() { return "86:31: ( attrs )?"; } } public static final BitSet FOLLOW_set_in_literal0 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_attrs_in_file520 = new BitSet(new long[]{0x000000000C000402L}); public static final BitSet FOLLOW_rule_in_file524 = new BitSet(new long[]{0x000000000C000402L}); public static final BitSet FOLLOW_modifier_in_rule537 = new BitSet(new long[]{0x0000000004000400L}); public static final BitSet FOLLOW_ID_in_rule540 = new BitSet(new long[]{0x0000000001000000L}); public static final BitSet FOLLOW_24_in_rule542 = new BitSet(new long[]{0x00000000401E4400L}); public static final BitSet FOLLOW_choice_in_rule544 = new BitSet(new long[]{0x000000000A000002L}); public static final BitSet FOLLOW_attrs_in_rule546 = new BitSet(new long[]{0x0000000002000002L}); public static final BitSet FOLLOW_25_in_rule549 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_26_in_modifier577 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_27_in_attrs603 = new BitSet(new long[]{0x0000000010000400L}); public static final BitSet FOLLOW_attr_in_attrs605 = new BitSet(new long[]{0x0000000010000400L}); public static final BitSet FOLLOW_28_in_attrs608 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_ID_in_attr629 = new BitSet(new long[]{0x0000000020000000L}); public static final BitSet FOLLOW_29_in_attr631 = new BitSet(new long[]{0x0000000000024400L}); public static final BitSet FOLLOW_value_in_attr633 = new BitSet(new long[]{0x0000000002000002L}); public static final BitSet FOLLOW_25_in_attr635 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_literal_in_value656 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_ID_in_value660 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_sequence_in_choice673 = new BitSet(new long[]{0x0000000000040002L}); public static final BitSet FOLLOW_OR_in_choice676 = new BitSet(new long[]{0x00000000401E4400L}); public static final BitSet FOLLOW_sequence_in_choice678 = new BitSet(new long[]{0x0000000000040002L}); public static final BitSet FOLLOW_option_in_sequence699 = new BitSet(new long[]{0x00000000401A4402L}); public static final BitSet FOLLOW_simple_in_option720 = new BitSet(new long[]{0x0000000000E00002L}); public static final BitSet FOLLOW_quantifier_in_option722 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_AND_in_option729 = new BitSet(new long[]{0x0000000040024400L}); public static final BitSet FOLLOW_simple_in_option732 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_NOT_in_option737 = new BitSet(new long[]{0x0000000040024400L}); public static final BitSet FOLLOW_simple_in_option740 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_set_in_quantifier0 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_ID_in_simple773 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_literal_in_simple778 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_30_in_simple783 = new BitSet(new long[]{0x00000000401E4400L}); public static final BitSet FOLLOW_choice_in_simple785 = new BitSet(new long[]{0x0000000080000000L}); public static final BitSet FOLLOW_31_in_simple787 = new BitSet(new long[]{0x0000000000000002L}); }