source: default/v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnfParser.java @ 88

Last change on this file since 88 was 88, checked in by phdmakk, 9 years ago

+ generated resources

  • Property svn:mime-type set to text/plain
File size: 225.0 KB
Line 
1package de.ugoe.cs.swe.bnftools.parser.antlr.internal;
2
3import org.eclipse.xtext.*;
4import org.eclipse.xtext.parser.*;
5import org.eclipse.xtext.parser.impl.*;
6import org.eclipse.emf.ecore.util.EcoreUtil;
7import org.eclipse.emf.ecore.EObject;
8import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
9import org.eclipse.xtext.parser.antlr.XtextTokenStream;
10import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
11import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
12import de.ugoe.cs.swe.bnftools.services.EbnfGrammarAccess;
13
14
15
16import org.antlr.runtime.*;
17import java.util.Stack;
18import java.util.List;
19import java.util.ArrayList;
20
21@SuppressWarnings("all")
22public class InternalEbnfParser extends AbstractInternalAntlrParser {
23    public static final String[] tokenNames = new String[] {
24        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_SECTIONHEADER", "RULE_STRING", "RULE_INT", "RULE_LOGIC", "RULE_COLON", "RULE_WS", "RULE_SL_COMMENT", "RULE_ML_COMMENT", "'grammar'", "'/bnf'", "';'", "'/delta'", "'/merge'", "'import'", "'/'", "'core'", "'package'", "'update'", "'label:'", "'.'", "'::='", "'('", "')'", "'<-'", "']'", "'}'", "'|'", "'['", "'{'", "'*'", "'+'", "'global'", "'combinator:'", "'rule'", "'hook'"
25    };
26    public static final int RULE_STRING=6;
27    public static final int RULE_SL_COMMENT=11;
28    public static final int T__19=19;
29    public static final int RULE_SECTIONHEADER=5;
30    public static final int T__15=15;
31    public static final int T__37=37;
32    public static final int T__16=16;
33    public static final int T__38=38;
34    public static final int T__17=17;
35    public static final int T__39=39;
36    public static final int T__18=18;
37    public static final int T__33=33;
38    public static final int T__34=34;
39    public static final int T__13=13;
40    public static final int T__35=35;
41    public static final int T__14=14;
42    public static final int T__36=36;
43    public static final int EOF=-1;
44    public static final int T__30=30;
45    public static final int T__31=31;
46    public static final int T__32=32;
47    public static final int RULE_ID=4;
48    public static final int RULE_WS=10;
49    public static final int RULE_COLON=9;
50    public static final int RULE_LOGIC=8;
51    public static final int T__26=26;
52    public static final int T__27=27;
53    public static final int T__28=28;
54    public static final int RULE_INT=7;
55    public static final int T__29=29;
56    public static final int T__22=22;
57    public static final int RULE_ML_COMMENT=12;
58    public static final int T__23=23;
59    public static final int T__24=24;
60    public static final int T__25=25;
61    public static final int T__20=20;
62    public static final int T__21=21;
63
64    // delegates
65    // delegators
66
67
68        public InternalEbnfParser(TokenStream input) {
69            this(input, new RecognizerSharedState());
70        }
71        public InternalEbnfParser(TokenStream input, RecognizerSharedState state) {
72            super(input, state);
73             
74        }
75       
76
77    public String[] getTokenNames() { return InternalEbnfParser.tokenNames; }
78    public String getGrammarFileName() { return "../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g"; }
79
80
81
82        private EbnfGrammarAccess grammarAccess;
83       
84        public InternalEbnfParser(TokenStream input, EbnfGrammarAccess grammarAccess) {
85            this(input);
86            this.grammarAccess = grammarAccess;
87            registerRules(grammarAccess.getGrammar());
88        }
89       
90        @Override
91        protected String getFirstRuleName() {
92                return "EtsiBnf";       
93        }
94       
95        @Override
96        protected EbnfGrammarAccess getGrammarAccess() {
97                return grammarAccess;
98        }
99
100
101
102    // $ANTLR start "entryRuleEtsiBnf"
103    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:67:1: entryRuleEtsiBnf returns [EObject current=null] : iv_ruleEtsiBnf= ruleEtsiBnf EOF ;
104    public final EObject entryRuleEtsiBnf() throws RecognitionException {
105        EObject current = null;
106
107        EObject iv_ruleEtsiBnf = null;
108
109
110        try {
111            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:68:2: (iv_ruleEtsiBnf= ruleEtsiBnf EOF )
112            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:69:2: iv_ruleEtsiBnf= ruleEtsiBnf EOF
113            {
114             newCompositeNode(grammarAccess.getEtsiBnfRule());
115            pushFollow(FOLLOW_ruleEtsiBnf_in_entryRuleEtsiBnf75);
116            iv_ruleEtsiBnf=ruleEtsiBnf();
117
118            state._fsp--;
119
120             current =iv_ruleEtsiBnf;
121            match(input,EOF,FOLLOW_EOF_in_entryRuleEtsiBnf85);
122
123            }
124
125        }
126         
127            catch (RecognitionException re) {
128                recover(input,re);
129                appendSkippedTokens();
130            }
131        finally {
132        }
133        return current;
134    }
135    // $ANTLR end "entryRuleEtsiBnf"
136
137
138    // $ANTLR start "ruleEtsiBnf"
139    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:76:1: ruleEtsiBnf returns [EObject current=null] : ( (otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) ) | ( ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* ) | ( ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* ) ) ;
140    public final EObject ruleEtsiBnf() throws RecognitionException {
141        EObject current = null;
142
143        Token otherlv_0=null;
144        Token lv_name_1_0=null;
145        Token lv_type_2_0=null;
146        Token otherlv_3=null;
147        Token lv_type_6_0=null;
148        Token otherlv_7=null;
149        Token lv_type_10_0=null;
150        Token otherlv_11=null;
151        EObject lv_importSection_4_0 = null;
152
153        EObject lv_bnfEntry_5_0 = null;
154
155        EObject lv_importSection_8_0 = null;
156
157        EObject lv_deltaEntry_9_0 = null;
158
159        EObject lv_importSection_12_0 = null;
160
161        EObject lv_mergeEntry_13_0 = null;
162
163
164         enterRule();
165           
166        try {
167            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:79:28: ( ( (otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) ) | ( ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* ) | ( ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* ) ) )
168            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:80:1: ( (otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) ) | ( ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* ) | ( ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* ) )
169            {
170            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:80:1: ( (otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) ) | ( ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* ) | ( ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* ) )
171            int alt8=3;
172            switch ( input.LA(1) ) {
173            case 13:
174                {
175                alt8=1;
176                }
177                break;
178            case 16:
179                {
180                alt8=2;
181                }
182                break;
183            case 17:
184                {
185                alt8=3;
186                }
187                break;
188            default:
189                NoViableAltException nvae =
190                    new NoViableAltException("", 8, 0, input);
191
192                throw nvae;
193            }
194
195            switch (alt8) {
196                case 1 :
197                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:80:2: (otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) )
198                    {
199                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:80:2: (otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) )
200                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:80:4: otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ )
201                    {
202                    otherlv_0=(Token)match(input,13,FOLLOW_13_in_ruleEtsiBnf123);
203
204                                newLeafNode(otherlv_0, grammarAccess.getEtsiBnfAccess().getGrammarKeyword_0_0());
205                       
206                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:84:1: ( (lv_name_1_0= RULE_ID ) )
207                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:85:1: (lv_name_1_0= RULE_ID )
208                    {
209                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:85:1: (lv_name_1_0= RULE_ID )
210                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:86:3: lv_name_1_0= RULE_ID
211                    {
212                    lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEtsiBnf140);
213
214                                        newLeafNode(lv_name_1_0, grammarAccess.getEtsiBnfAccess().getNameIDTerminalRuleCall_0_1_0());
215                               
216
217                                if (current==null) {
218                                    current = createModelElement(grammarAccess.getEtsiBnfRule());
219                                }
220                                        setWithLastConsumed(
221                                                current,
222                                                "name",
223                                        lv_name_1_0,
224                                        "ID");
225                           
226
227                    }
228
229
230                    }
231
232                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:102:2: ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ )
233                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:102:3: ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+
234                    {
235                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:102:3: ( (lv_type_2_0= '/bnf' ) )?
236                    int alt1=2;
237                    int LA1_0 = input.LA(1);
238
239                    if ( (LA1_0==14) ) {
240                        alt1=1;
241                    }
242                    switch (alt1) {
243                        case 1 :
244                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:103:1: (lv_type_2_0= '/bnf' )
245                            {
246                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:103:1: (lv_type_2_0= '/bnf' )
247                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:104:3: lv_type_2_0= '/bnf'
248                            {
249                            lv_type_2_0=(Token)match(input,14,FOLLOW_14_in_ruleEtsiBnf164);
250
251                                    newLeafNode(lv_type_2_0, grammarAccess.getEtsiBnfAccess().getTypeBnfKeyword_0_2_0_0());
252                               
253
254                                        if (current==null) {
255                                            current = createModelElement(grammarAccess.getEtsiBnfRule());
256                                        }
257                                                setWithLastConsumed(current, "type", lv_type_2_0, "/bnf");
258                                   
259
260                            }
261
262
263                            }
264                            break;
265
266                    }
267
268                    otherlv_3=(Token)match(input,15,FOLLOW_15_in_ruleEtsiBnf190);
269
270                                newLeafNode(otherlv_3, grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_0_2_1());
271                       
272                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:121:1: ( (lv_importSection_4_0= ruleImportSection ) )?
273                    int alt2=2;
274                    int LA2_0 = input.LA(1);
275
276                    if ( (LA2_0==18) ) {
277                        alt2=1;
278                    }
279                    switch (alt2) {
280                        case 1 :
281                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:122:1: (lv_importSection_4_0= ruleImportSection )
282                            {
283                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:122:1: (lv_importSection_4_0= ruleImportSection )
284                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:123:3: lv_importSection_4_0= ruleImportSection
285                            {
286                             
287                                        newCompositeNode(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_0_2_2_0());
288                                   
289                            pushFollow(FOLLOW_ruleImportSection_in_ruleEtsiBnf211);
290                            lv_importSection_4_0=ruleImportSection();
291
292                            state._fsp--;
293
294
295                                        if (current==null) {
296                                            current = createModelElementForParent(grammarAccess.getEtsiBnfRule());
297                                        }
298                                                set(
299                                                        current,
300                                                        "importSection",
301                                                lv_importSection_4_0,
302                                                "ImportSection");
303                                        afterParserOrEnumRuleCall();
304                                   
305
306                            }
307
308
309                            }
310                            break;
311
312                    }
313
314                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:139:3: ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+
315                    int cnt3=0;
316                    loop3:
317                    do {
318                        int alt3=2;
319                        int LA3_0 = input.LA(1);
320
321                        if ( ((LA3_0>=RULE_ID && LA3_0<=RULE_SECTIONHEADER)||LA3_0==RULE_INT) ) {
322                            alt3=1;
323                        }
324
325
326                        switch (alt3) {
327                        case 1 :
328                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:140:1: (lv_bnfEntry_5_0= ruleBnfEntry )
329                            {
330                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:140:1: (lv_bnfEntry_5_0= ruleBnfEntry )
331                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:141:3: lv_bnfEntry_5_0= ruleBnfEntry
332                            {
333                             
334                                        newCompositeNode(grammarAccess.getEtsiBnfAccess().getBnfEntryBnfEntryParserRuleCall_0_2_3_0());
335                                   
336                            pushFollow(FOLLOW_ruleBnfEntry_in_ruleEtsiBnf233);
337                            lv_bnfEntry_5_0=ruleBnfEntry();
338
339                            state._fsp--;
340
341
342                                        if (current==null) {
343                                            current = createModelElementForParent(grammarAccess.getEtsiBnfRule());
344                                        }
345                                                add(
346                                                        current,
347                                                        "bnfEntry",
348                                                lv_bnfEntry_5_0,
349                                                "BnfEntry");
350                                        afterParserOrEnumRuleCall();
351                                   
352
353                            }
354
355
356                            }
357                            break;
358
359                        default :
360                            if ( cnt3 >= 1 ) break loop3;
361                                EarlyExitException eee =
362                                    new EarlyExitException(3, input);
363                                throw eee;
364                        }
365                        cnt3++;
366                    } while (true);
367
368
369                    }
370
371
372                    }
373
374
375                    }
376                    break;
377                case 2 :
378                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:158:6: ( ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* )
379                    {
380                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:158:6: ( ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* )
381                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:158:7: ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )*
382                    {
383                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:158:7: ( (lv_type_6_0= '/delta' ) )
384                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:159:1: (lv_type_6_0= '/delta' )
385                    {
386                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:159:1: (lv_type_6_0= '/delta' )
387                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:160:3: lv_type_6_0= '/delta'
388                    {
389                    lv_type_6_0=(Token)match(input,16,FOLLOW_16_in_ruleEtsiBnf261);
390
391                            newLeafNode(lv_type_6_0, grammarAccess.getEtsiBnfAccess().getTypeDeltaKeyword_1_0_0());
392                       
393
394                                if (current==null) {
395                                    current = createModelElement(grammarAccess.getEtsiBnfRule());
396                                }
397                                        setWithLastConsumed(current, "type", lv_type_6_0, "/delta");
398                           
399
400                    }
401
402
403                    }
404
405                    otherlv_7=(Token)match(input,15,FOLLOW_15_in_ruleEtsiBnf286);
406
407                                newLeafNode(otherlv_7, grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_1_1());
408                       
409                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:177:1: ( (lv_importSection_8_0= ruleImportSection ) )?
410                    int alt4=2;
411                    int LA4_0 = input.LA(1);
412
413                    if ( (LA4_0==18) ) {
414                        alt4=1;
415                    }
416                    switch (alt4) {
417                        case 1 :
418                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:178:1: (lv_importSection_8_0= ruleImportSection )
419                            {
420                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:178:1: (lv_importSection_8_0= ruleImportSection )
421                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:179:3: lv_importSection_8_0= ruleImportSection
422                            {
423                             
424                                        newCompositeNode(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_1_2_0());
425                                   
426                            pushFollow(FOLLOW_ruleImportSection_in_ruleEtsiBnf307);
427                            lv_importSection_8_0=ruleImportSection();
428
429                            state._fsp--;
430
431
432                                        if (current==null) {
433                                            current = createModelElementForParent(grammarAccess.getEtsiBnfRule());
434                                        }
435                                                set(
436                                                        current,
437                                                        "importSection",
438                                                lv_importSection_8_0,
439                                                "ImportSection");
440                                        afterParserOrEnumRuleCall();
441                                   
442
443                            }
444
445
446                            }
447                            break;
448
449                    }
450
451                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:195:3: ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )*
452                    loop5:
453                    do {
454                        int alt5=2;
455                        int LA5_0 = input.LA(1);
456
457                        if ( ((LA5_0>=RULE_ID && LA5_0<=RULE_SECTIONHEADER)||LA5_0==RULE_INT) ) {
458                            alt5=1;
459                        }
460
461
462                        switch (alt5) {
463                        case 1 :
464                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:196:1: (lv_deltaEntry_9_0= ruleDeltaEntry )
465                            {
466                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:196:1: (lv_deltaEntry_9_0= ruleDeltaEntry )
467                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:197:3: lv_deltaEntry_9_0= ruleDeltaEntry
468                            {
469                             
470                                        newCompositeNode(grammarAccess.getEtsiBnfAccess().getDeltaEntryDeltaEntryParserRuleCall_1_3_0());
471                                   
472                            pushFollow(FOLLOW_ruleDeltaEntry_in_ruleEtsiBnf329);
473                            lv_deltaEntry_9_0=ruleDeltaEntry();
474
475                            state._fsp--;
476
477
478                                        if (current==null) {
479                                            current = createModelElementForParent(grammarAccess.getEtsiBnfRule());
480                                        }
481                                                add(
482                                                        current,
483                                                        "deltaEntry",
484                                                lv_deltaEntry_9_0,
485                                                "DeltaEntry");
486                                        afterParserOrEnumRuleCall();
487                                   
488
489                            }
490
491
492                            }
493                            break;
494
495                        default :
496                            break loop5;
497                        }
498                    } while (true);
499
500
501                    }
502
503
504                    }
505                    break;
506                case 3 :
507                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:214:6: ( ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* )
508                    {
509                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:214:6: ( ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* )
510                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:214:7: ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )*
511                    {
512                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:214:7: ( (lv_type_10_0= '/merge' ) )
513                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:215:1: (lv_type_10_0= '/merge' )
514                    {
515                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:215:1: (lv_type_10_0= '/merge' )
516                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:216:3: lv_type_10_0= '/merge'
517                    {
518                    lv_type_10_0=(Token)match(input,17,FOLLOW_17_in_ruleEtsiBnf356);
519
520                            newLeafNode(lv_type_10_0, grammarAccess.getEtsiBnfAccess().getTypeMergeKeyword_2_0_0());
521                       
522
523                                if (current==null) {
524                                    current = createModelElement(grammarAccess.getEtsiBnfRule());
525                                }
526                                        setWithLastConsumed(current, "type", lv_type_10_0, "/merge");
527                           
528
529                    }
530
531
532                    }
533
534                    otherlv_11=(Token)match(input,15,FOLLOW_15_in_ruleEtsiBnf381);
535
536                                newLeafNode(otherlv_11, grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_2_1());
537                       
538                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:233:1: ( (lv_importSection_12_0= ruleImportSection ) )?
539                    int alt6=2;
540                    int LA6_0 = input.LA(1);
541
542                    if ( (LA6_0==18) ) {
543                        alt6=1;
544                    }
545                    switch (alt6) {
546                        case 1 :
547                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:234:1: (lv_importSection_12_0= ruleImportSection )
548                            {
549                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:234:1: (lv_importSection_12_0= ruleImportSection )
550                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:235:3: lv_importSection_12_0= ruleImportSection
551                            {
552                             
553                                        newCompositeNode(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_2_2_0());
554                                   
555                            pushFollow(FOLLOW_ruleImportSection_in_ruleEtsiBnf402);
556                            lv_importSection_12_0=ruleImportSection();
557
558                            state._fsp--;
559
560
561                                        if (current==null) {
562                                            current = createModelElementForParent(grammarAccess.getEtsiBnfRule());
563                                        }
564                                                set(
565                                                        current,
566                                                        "importSection",
567                                                lv_importSection_12_0,
568                                                "ImportSection");
569                                        afterParserOrEnumRuleCall();
570                                   
571
572                            }
573
574
575                            }
576                            break;
577
578                    }
579
580                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:251:3: ( (lv_mergeEntry_13_0= ruleMergeEntry ) )*
581                    loop7:
582                    do {
583                        int alt7=2;
584                        int LA7_0 = input.LA(1);
585
586                        if ( (LA7_0==RULE_SECTIONHEADER||LA7_0==36||(LA7_0>=38 && LA7_0<=39)) ) {
587                            alt7=1;
588                        }
589
590
591                        switch (alt7) {
592                        case 1 :
593                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:252:1: (lv_mergeEntry_13_0= ruleMergeEntry )
594                            {
595                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:252:1: (lv_mergeEntry_13_0= ruleMergeEntry )
596                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:253:3: lv_mergeEntry_13_0= ruleMergeEntry
597                            {
598                             
599                                        newCompositeNode(grammarAccess.getEtsiBnfAccess().getMergeEntryMergeEntryParserRuleCall_2_3_0());
600                                   
601                            pushFollow(FOLLOW_ruleMergeEntry_in_ruleEtsiBnf424);
602                            lv_mergeEntry_13_0=ruleMergeEntry();
603
604                            state._fsp--;
605
606
607                                        if (current==null) {
608                                            current = createModelElementForParent(grammarAccess.getEtsiBnfRule());
609                                        }
610                                                add(
611                                                        current,
612                                                        "mergeEntry",
613                                                lv_mergeEntry_13_0,
614                                                "MergeEntry");
615                                        afterParserOrEnumRuleCall();
616                                   
617
618                            }
619
620
621                            }
622                            break;
623
624                        default :
625                            break loop7;
626                        }
627                    } while (true);
628
629
630                    }
631
632
633                    }
634                    break;
635
636            }
637
638
639            }
640
641             leaveRule();
642        }
643         
644            catch (RecognitionException re) {
645                recover(input,re);
646                appendSkippedTokens();
647            }
648        finally {
649        }
650        return current;
651    }
652    // $ANTLR end "ruleEtsiBnf"
653
654
655    // $ANTLR start "entryRuleImportSection"
656    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:277:1: entryRuleImportSection returns [EObject current=null] : iv_ruleImportSection= ruleImportSection EOF ;
657    public final EObject entryRuleImportSection() throws RecognitionException {
658        EObject current = null;
659
660        EObject iv_ruleImportSection = null;
661
662
663        try {
664            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:278:2: (iv_ruleImportSection= ruleImportSection EOF )
665            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:279:2: iv_ruleImportSection= ruleImportSection EOF
666            {
667             newCompositeNode(grammarAccess.getImportSectionRule());
668            pushFollow(FOLLOW_ruleImportSection_in_entryRuleImportSection462);
669            iv_ruleImportSection=ruleImportSection();
670
671            state._fsp--;
672
673             current =iv_ruleImportSection;
674            match(input,EOF,FOLLOW_EOF_in_entryRuleImportSection472);
675
676            }
677
678        }
679         
680            catch (RecognitionException re) {
681                recover(input,re);
682                appendSkippedTokens();
683            }
684        finally {
685        }
686        return current;
687    }
688    // $ANTLR end "entryRuleImportSection"
689
690
691    // $ANTLR start "ruleImportSection"
692    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:286:1: ruleImportSection returns [EObject current=null] : ( (lv_imports_0_0= ruleImport ) )+ ;
693    public final EObject ruleImportSection() throws RecognitionException {
694        EObject current = null;
695
696        EObject lv_imports_0_0 = null;
697
698
699         enterRule();
700           
701        try {
702            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:289:28: ( ( (lv_imports_0_0= ruleImport ) )+ )
703            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:290:1: ( (lv_imports_0_0= ruleImport ) )+
704            {
705            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:290:1: ( (lv_imports_0_0= ruleImport ) )+
706            int cnt9=0;
707            loop9:
708            do {
709                int alt9=2;
710                int LA9_0 = input.LA(1);
711
712                if ( (LA9_0==18) ) {
713                    alt9=1;
714                }
715
716
717                switch (alt9) {
718                case 1 :
719                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:291:1: (lv_imports_0_0= ruleImport )
720                    {
721                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:291:1: (lv_imports_0_0= ruleImport )
722                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:292:3: lv_imports_0_0= ruleImport
723                    {
724                     
725                                newCompositeNode(grammarAccess.getImportSectionAccess().getImportsImportParserRuleCall_0());
726                           
727                    pushFollow(FOLLOW_ruleImport_in_ruleImportSection517);
728                    lv_imports_0_0=ruleImport();
729
730                    state._fsp--;
731
732
733                                if (current==null) {
734                                    current = createModelElementForParent(grammarAccess.getImportSectionRule());
735                                }
736                                        add(
737                                                current,
738                                                "imports",
739                                        lv_imports_0_0,
740                                        "Import");
741                                afterParserOrEnumRuleCall();
742                           
743
744                    }
745
746
747                    }
748                    break;
749
750                default :
751                    if ( cnt9 >= 1 ) break loop9;
752                        EarlyExitException eee =
753                            new EarlyExitException(9, input);
754                        throw eee;
755                }
756                cnt9++;
757            } while (true);
758
759
760            }
761
762             leaveRule();
763        }
764         
765            catch (RecognitionException re) {
766                recover(input,re);
767                appendSkippedTokens();
768            }
769        finally {
770        }
771        return current;
772    }
773    // $ANTLR end "ruleImportSection"
774
775
776    // $ANTLR start "entryRuleBnfEntry"
777    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:316:1: entryRuleBnfEntry returns [EObject current=null] : iv_ruleBnfEntry= ruleBnfEntry EOF ;
778    public final EObject entryRuleBnfEntry() throws RecognitionException {
779        EObject current = null;
780
781        EObject iv_ruleBnfEntry = null;
782
783
784        try {
785            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:317:2: (iv_ruleBnfEntry= ruleBnfEntry EOF )
786            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:318:2: iv_ruleBnfEntry= ruleBnfEntry EOF
787            {
788             newCompositeNode(grammarAccess.getBnfEntryRule());
789            pushFollow(FOLLOW_ruleBnfEntry_in_entryRuleBnfEntry553);
790            iv_ruleBnfEntry=ruleBnfEntry();
791
792            state._fsp--;
793
794             current =iv_ruleBnfEntry;
795            match(input,EOF,FOLLOW_EOF_in_entryRuleBnfEntry563);
796
797            }
798
799        }
800         
801            catch (RecognitionException re) {
802                recover(input,re);
803                appendSkippedTokens();
804            }
805        finally {
806        }
807        return current;
808    }
809    // $ANTLR end "entryRuleBnfEntry"
810
811
812    // $ANTLR start "ruleBnfEntry"
813    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:325:1: ruleBnfEntry returns [EObject current=null] : ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_rule_1_0= ruleRule ) ) ) ;
814    public final EObject ruleBnfEntry() throws RecognitionException {
815        EObject current = null;
816
817        EObject lv_sectionheader_0_0 = null;
818
819        EObject lv_rule_1_0 = null;
820
821
822         enterRule();
823           
824        try {
825            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:328:28: ( ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_rule_1_0= ruleRule ) ) ) )
826            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:329:1: ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_rule_1_0= ruleRule ) ) )
827            {
828            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:329:1: ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_rule_1_0= ruleRule ) ) )
829            int alt10=2;
830            int LA10_0 = input.LA(1);
831
832            if ( (LA10_0==RULE_SECTIONHEADER) ) {
833                alt10=1;
834            }
835            else if ( (LA10_0==RULE_ID||LA10_0==RULE_INT) ) {
836                alt10=2;
837            }
838            else {
839                NoViableAltException nvae =
840                    new NoViableAltException("", 10, 0, input);
841
842                throw nvae;
843            }
844            switch (alt10) {
845                case 1 :
846                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:329:2: ( (lv_sectionheader_0_0= ruleSectionHeading ) )
847                    {
848                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:329:2: ( (lv_sectionheader_0_0= ruleSectionHeading ) )
849                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:330:1: (lv_sectionheader_0_0= ruleSectionHeading )
850                    {
851                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:330:1: (lv_sectionheader_0_0= ruleSectionHeading )
852                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:331:3: lv_sectionheader_0_0= ruleSectionHeading
853                    {
854                     
855                                newCompositeNode(grammarAccess.getBnfEntryAccess().getSectionheaderSectionHeadingParserRuleCall_0_0());
856                           
857                    pushFollow(FOLLOW_ruleSectionHeading_in_ruleBnfEntry609);
858                    lv_sectionheader_0_0=ruleSectionHeading();
859
860                    state._fsp--;
861
862
863                                if (current==null) {
864                                    current = createModelElementForParent(grammarAccess.getBnfEntryRule());
865                                }
866                                        set(
867                                                current,
868                                                "sectionheader",
869                                        lv_sectionheader_0_0,
870                                        "SectionHeading");
871                                afterParserOrEnumRuleCall();
872                           
873
874                    }
875
876
877                    }
878
879
880                    }
881                    break;
882                case 2 :
883                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:348:6: ( (lv_rule_1_0= ruleRule ) )
884                    {
885                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:348:6: ( (lv_rule_1_0= ruleRule ) )
886                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:349:1: (lv_rule_1_0= ruleRule )
887                    {
888                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:349:1: (lv_rule_1_0= ruleRule )
889                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:350:3: lv_rule_1_0= ruleRule
890                    {
891                     
892                                newCompositeNode(grammarAccess.getBnfEntryAccess().getRuleRuleParserRuleCall_1_0());
893                           
894                    pushFollow(FOLLOW_ruleRule_in_ruleBnfEntry636);
895                    lv_rule_1_0=ruleRule();
896
897                    state._fsp--;
898
899
900                                if (current==null) {
901                                    current = createModelElementForParent(grammarAccess.getBnfEntryRule());
902                                }
903                                        set(
904                                                current,
905                                                "rule",
906                                        lv_rule_1_0,
907                                        "Rule");
908                                afterParserOrEnumRuleCall();
909                           
910
911                    }
912
913
914                    }
915
916
917                    }
918                    break;
919
920            }
921
922
923            }
924
925             leaveRule();
926        }
927         
928            catch (RecognitionException re) {
929                recover(input,re);
930                appendSkippedTokens();
931            }
932        finally {
933        }
934        return current;
935    }
936    // $ANTLR end "ruleBnfEntry"
937
938
939    // $ANTLR start "entryRuleDeltaEntry"
940    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:374:1: entryRuleDeltaEntry returns [EObject current=null] : iv_ruleDeltaEntry= ruleDeltaEntry EOF ;
941    public final EObject entryRuleDeltaEntry() throws RecognitionException {
942        EObject current = null;
943
944        EObject iv_ruleDeltaEntry = null;
945
946
947        try {
948            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:375:2: (iv_ruleDeltaEntry= ruleDeltaEntry EOF )
949            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:376:2: iv_ruleDeltaEntry= ruleDeltaEntry EOF
950            {
951             newCompositeNode(grammarAccess.getDeltaEntryRule());
952            pushFollow(FOLLOW_ruleDeltaEntry_in_entryRuleDeltaEntry672);
953            iv_ruleDeltaEntry=ruleDeltaEntry();
954
955            state._fsp--;
956
957             current =iv_ruleDeltaEntry;
958            match(input,EOF,FOLLOW_EOF_in_entryRuleDeltaEntry682);
959
960            }
961
962        }
963         
964            catch (RecognitionException re) {
965                recover(input,re);
966                appendSkippedTokens();
967            }
968        finally {
969        }
970        return current;
971    }
972    // $ANTLR end "entryRuleDeltaEntry"
973
974
975    // $ANTLR start "ruleDeltaEntry"
976    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:383:1: ruleDeltaEntry returns [EObject current=null] : ( ( (lv_rule_0_0= ruleRule ) ) | ( (lv_sectionheader_1_0= ruleSectionHeading ) ) | ( (lv_extRule_2_0= ruleExtRule ) ) ) ;
977    public final EObject ruleDeltaEntry() throws RecognitionException {
978        EObject current = null;
979
980        EObject lv_rule_0_0 = null;
981
982        EObject lv_sectionheader_1_0 = null;
983
984        EObject lv_extRule_2_0 = null;
985
986
987         enterRule();
988           
989        try {
990            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:386:28: ( ( ( (lv_rule_0_0= ruleRule ) ) | ( (lv_sectionheader_1_0= ruleSectionHeading ) ) | ( (lv_extRule_2_0= ruleExtRule ) ) ) )
991            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:387:1: ( ( (lv_rule_0_0= ruleRule ) ) | ( (lv_sectionheader_1_0= ruleSectionHeading ) ) | ( (lv_extRule_2_0= ruleExtRule ) ) )
992            {
993            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:387:1: ( ( (lv_rule_0_0= ruleRule ) ) | ( (lv_sectionheader_1_0= ruleSectionHeading ) ) | ( (lv_extRule_2_0= ruleExtRule ) ) )
994            int alt11=3;
995            switch ( input.LA(1) ) {
996            case RULE_INT:
997                {
998                int LA11_1 = input.LA(2);
999
1000                if ( (LA11_1==RULE_ID) ) {
1001                    int LA11_4 = input.LA(3);
1002
1003                    if ( (LA11_4==24) ) {
1004                        int LA11_5 = input.LA(4);
1005
1006                        if ( (LA11_5==RULE_ID) ) {
1007                            int LA11_2 = input.LA(5);
1008
1009                            if ( (LA11_2==26) ) {
1010                                alt11=3;
1011                            }
1012                            else if ( (LA11_2==25) ) {
1013                                alt11=1;
1014                            }
1015                            else {
1016                                NoViableAltException nvae =
1017                                    new NoViableAltException("", 11, 2, input);
1018
1019                                throw nvae;
1020                            }
1021                        }
1022                        else {
1023                            NoViableAltException nvae =
1024                                new NoViableAltException("", 11, 5, input);
1025
1026                            throw nvae;
1027                        }
1028                    }
1029                    else {
1030                        NoViableAltException nvae =
1031                            new NoViableAltException("", 11, 4, input);
1032
1033                        throw nvae;
1034                    }
1035                }
1036                else if ( (LA11_1==24) ) {
1037                    int LA11_5 = input.LA(3);
1038
1039                    if ( (LA11_5==RULE_ID) ) {
1040                        int LA11_2 = input.LA(4);
1041
1042                        if ( (LA11_2==26) ) {
1043                            alt11=3;
1044                        }
1045                        else if ( (LA11_2==25) ) {
1046                            alt11=1;
1047                        }
1048                        else {
1049                            NoViableAltException nvae =
1050                                new NoViableAltException("", 11, 2, input);
1051
1052                            throw nvae;
1053                        }
1054                    }
1055                    else {
1056                        NoViableAltException nvae =
1057                            new NoViableAltException("", 11, 5, input);
1058
1059                        throw nvae;
1060                    }
1061                }
1062                else {
1063                    NoViableAltException nvae =
1064                        new NoViableAltException("", 11, 1, input);
1065
1066                    throw nvae;
1067                }
1068                }
1069                break;
1070            case RULE_ID:
1071                {
1072                int LA11_2 = input.LA(2);
1073
1074                if ( (LA11_2==26) ) {
1075                    alt11=3;
1076                }
1077                else if ( (LA11_2==25) ) {
1078                    alt11=1;
1079                }
1080                else {
1081                    NoViableAltException nvae =
1082                        new NoViableAltException("", 11, 2, input);
1083
1084                    throw nvae;
1085                }
1086                }
1087                break;
1088            case RULE_SECTIONHEADER:
1089                {
1090                alt11=2;
1091                }
1092                break;
1093            default:
1094                NoViableAltException nvae =
1095                    new NoViableAltException("", 11, 0, input);
1096
1097                throw nvae;
1098            }
1099
1100            switch (alt11) {
1101                case 1 :
1102                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:387:2: ( (lv_rule_0_0= ruleRule ) )
1103                    {
1104                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:387:2: ( (lv_rule_0_0= ruleRule ) )
1105                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:388:1: (lv_rule_0_0= ruleRule )
1106                    {
1107                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:388:1: (lv_rule_0_0= ruleRule )
1108                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:389:3: lv_rule_0_0= ruleRule
1109                    {
1110                     
1111                                newCompositeNode(grammarAccess.getDeltaEntryAccess().getRuleRuleParserRuleCall_0_0());
1112                           
1113                    pushFollow(FOLLOW_ruleRule_in_ruleDeltaEntry728);
1114                    lv_rule_0_0=ruleRule();
1115
1116                    state._fsp--;
1117
1118
1119                                if (current==null) {
1120                                    current = createModelElementForParent(grammarAccess.getDeltaEntryRule());
1121                                }
1122                                        set(
1123                                                current,
1124                                                "rule",
1125                                        lv_rule_0_0,
1126                                        "Rule");
1127                                afterParserOrEnumRuleCall();
1128                           
1129
1130                    }
1131
1132
1133                    }
1134
1135
1136                    }
1137                    break;
1138                case 2 :
1139                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:406:6: ( (lv_sectionheader_1_0= ruleSectionHeading ) )
1140                    {
1141                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:406:6: ( (lv_sectionheader_1_0= ruleSectionHeading ) )
1142                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:407:1: (lv_sectionheader_1_0= ruleSectionHeading )
1143                    {
1144                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:407:1: (lv_sectionheader_1_0= ruleSectionHeading )
1145                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:408:3: lv_sectionheader_1_0= ruleSectionHeading
1146                    {
1147                     
1148                                newCompositeNode(grammarAccess.getDeltaEntryAccess().getSectionheaderSectionHeadingParserRuleCall_1_0());
1149                           
1150                    pushFollow(FOLLOW_ruleSectionHeading_in_ruleDeltaEntry755);
1151                    lv_sectionheader_1_0=ruleSectionHeading();
1152
1153                    state._fsp--;
1154
1155
1156                                if (current==null) {
1157                                    current = createModelElementForParent(grammarAccess.getDeltaEntryRule());
1158                                }
1159                                        set(
1160                                                current,
1161                                                "sectionheader",
1162                                        lv_sectionheader_1_0,
1163                                        "SectionHeading");
1164                                afterParserOrEnumRuleCall();
1165                           
1166
1167                    }
1168
1169
1170                    }
1171
1172
1173                    }
1174                    break;
1175                case 3 :
1176                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:425:6: ( (lv_extRule_2_0= ruleExtRule ) )
1177                    {
1178                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:425:6: ( (lv_extRule_2_0= ruleExtRule ) )
1179                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:426:1: (lv_extRule_2_0= ruleExtRule )
1180                    {
1181                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:426:1: (lv_extRule_2_0= ruleExtRule )
1182                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:427:3: lv_extRule_2_0= ruleExtRule
1183                    {
1184                     
1185                                newCompositeNode(grammarAccess.getDeltaEntryAccess().getExtRuleExtRuleParserRuleCall_2_0());
1186                           
1187                    pushFollow(FOLLOW_ruleExtRule_in_ruleDeltaEntry782);
1188                    lv_extRule_2_0=ruleExtRule();
1189
1190                    state._fsp--;
1191
1192
1193                                if (current==null) {
1194                                    current = createModelElementForParent(grammarAccess.getDeltaEntryRule());
1195                                }
1196                                        set(
1197                                                current,
1198                                                "extRule",
1199                                        lv_extRule_2_0,
1200                                        "ExtRule");
1201                                afterParserOrEnumRuleCall();
1202                           
1203
1204                    }
1205
1206
1207                    }
1208
1209
1210                    }
1211                    break;
1212
1213            }
1214
1215
1216            }
1217
1218             leaveRule();
1219        }
1220         
1221            catch (RecognitionException re) {
1222                recover(input,re);
1223                appendSkippedTokens();
1224            }
1225        finally {
1226        }
1227        return current;
1228    }
1229    // $ANTLR end "ruleDeltaEntry"
1230
1231
1232    // $ANTLR start "entryRuleMergeEntry"
1233    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:451:1: entryRuleMergeEntry returns [EObject current=null] : iv_ruleMergeEntry= ruleMergeEntry EOF ;
1234    public final EObject entryRuleMergeEntry() throws RecognitionException {
1235        EObject current = null;
1236
1237        EObject iv_ruleMergeEntry = null;
1238
1239
1240        try {
1241            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:452:2: (iv_ruleMergeEntry= ruleMergeEntry EOF )
1242            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:453:2: iv_ruleMergeEntry= ruleMergeEntry EOF
1243            {
1244             newCompositeNode(grammarAccess.getMergeEntryRule());
1245            pushFollow(FOLLOW_ruleMergeEntry_in_entryRuleMergeEntry818);
1246            iv_ruleMergeEntry=ruleMergeEntry();
1247
1248            state._fsp--;
1249
1250             current =iv_ruleMergeEntry;
1251            match(input,EOF,FOLLOW_EOF_in_entryRuleMergeEntry828);
1252
1253            }
1254
1255        }
1256         
1257            catch (RecognitionException re) {
1258                recover(input,re);
1259                appendSkippedTokens();
1260            }
1261        finally {
1262        }
1263        return current;
1264    }
1265    // $ANTLR end "entryRuleMergeEntry"
1266
1267
1268    // $ANTLR start "ruleMergeEntry"
1269    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:460:1: ruleMergeEntry returns [EObject current=null] : ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_mergeRule_1_0= ruleMergeRule ) ) ) ;
1270    public final EObject ruleMergeEntry() throws RecognitionException {
1271        EObject current = null;
1272
1273        EObject lv_sectionheader_0_0 = null;
1274
1275        EObject lv_mergeRule_1_0 = null;
1276
1277
1278         enterRule();
1279           
1280        try {
1281            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:463:28: ( ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_mergeRule_1_0= ruleMergeRule ) ) ) )
1282            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:464:1: ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_mergeRule_1_0= ruleMergeRule ) ) )
1283            {
1284            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:464:1: ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_mergeRule_1_0= ruleMergeRule ) ) )
1285            int alt12=2;
1286            int LA12_0 = input.LA(1);
1287
1288            if ( (LA12_0==RULE_SECTIONHEADER) ) {
1289                alt12=1;
1290            }
1291            else if ( (LA12_0==36||(LA12_0>=38 && LA12_0<=39)) ) {
1292                alt12=2;
1293            }
1294            else {
1295                NoViableAltException nvae =
1296                    new NoViableAltException("", 12, 0, input);
1297
1298                throw nvae;
1299            }
1300            switch (alt12) {
1301                case 1 :
1302                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:464:2: ( (lv_sectionheader_0_0= ruleSectionHeading ) )
1303                    {
1304                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:464:2: ( (lv_sectionheader_0_0= ruleSectionHeading ) )
1305                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:465:1: (lv_sectionheader_0_0= ruleSectionHeading )
1306                    {
1307                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:465:1: (lv_sectionheader_0_0= ruleSectionHeading )
1308                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:466:3: lv_sectionheader_0_0= ruleSectionHeading
1309                    {
1310                     
1311                                newCompositeNode(grammarAccess.getMergeEntryAccess().getSectionheaderSectionHeadingParserRuleCall_0_0());
1312                           
1313                    pushFollow(FOLLOW_ruleSectionHeading_in_ruleMergeEntry874);
1314                    lv_sectionheader_0_0=ruleSectionHeading();
1315
1316                    state._fsp--;
1317
1318
1319                                if (current==null) {
1320                                    current = createModelElementForParent(grammarAccess.getMergeEntryRule());
1321                                }
1322                                        set(
1323                                                current,
1324                                                "sectionheader",
1325                                        lv_sectionheader_0_0,
1326                                        "SectionHeading");
1327                                afterParserOrEnumRuleCall();
1328                           
1329
1330                    }
1331
1332
1333                    }
1334
1335
1336                    }
1337                    break;
1338                case 2 :
1339                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:483:6: ( (lv_mergeRule_1_0= ruleMergeRule ) )
1340                    {
1341                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:483:6: ( (lv_mergeRule_1_0= ruleMergeRule ) )
1342                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:484:1: (lv_mergeRule_1_0= ruleMergeRule )
1343                    {
1344                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:484:1: (lv_mergeRule_1_0= ruleMergeRule )
1345                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:485:3: lv_mergeRule_1_0= ruleMergeRule
1346                    {
1347                     
1348                                newCompositeNode(grammarAccess.getMergeEntryAccess().getMergeRuleMergeRuleParserRuleCall_1_0());
1349                           
1350                    pushFollow(FOLLOW_ruleMergeRule_in_ruleMergeEntry901);
1351                    lv_mergeRule_1_0=ruleMergeRule();
1352
1353                    state._fsp--;
1354
1355
1356                                if (current==null) {
1357                                    current = createModelElementForParent(grammarAccess.getMergeEntryRule());
1358                                }
1359                                        set(
1360                                                current,
1361                                                "mergeRule",
1362                                        lv_mergeRule_1_0,
1363                                        "MergeRule");
1364                                afterParserOrEnumRuleCall();
1365                           
1366
1367                    }
1368
1369
1370                    }
1371
1372
1373                    }
1374                    break;
1375
1376            }
1377
1378
1379            }
1380
1381             leaveRule();
1382        }
1383         
1384            catch (RecognitionException re) {
1385                recover(input,re);
1386                appendSkippedTokens();
1387            }
1388        finally {
1389        }
1390        return current;
1391    }
1392    // $ANTLR end "ruleMergeEntry"
1393
1394
1395    // $ANTLR start "entryRuleSectionHeading"
1396    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:509:1: entryRuleSectionHeading returns [EObject current=null] : iv_ruleSectionHeading= ruleSectionHeading EOF ;
1397    public final EObject entryRuleSectionHeading() throws RecognitionException {
1398        EObject current = null;
1399
1400        EObject iv_ruleSectionHeading = null;
1401
1402
1403        try {
1404            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:510:2: (iv_ruleSectionHeading= ruleSectionHeading EOF )
1405            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:511:2: iv_ruleSectionHeading= ruleSectionHeading EOF
1406            {
1407             newCompositeNode(grammarAccess.getSectionHeadingRule());
1408            pushFollow(FOLLOW_ruleSectionHeading_in_entryRuleSectionHeading937);
1409            iv_ruleSectionHeading=ruleSectionHeading();
1410
1411            state._fsp--;
1412
1413             current =iv_ruleSectionHeading;
1414            match(input,EOF,FOLLOW_EOF_in_entryRuleSectionHeading947);
1415
1416            }
1417
1418        }
1419         
1420            catch (RecognitionException re) {
1421                recover(input,re);
1422                appendSkippedTokens();
1423            }
1424        finally {
1425        }
1426        return current;
1427    }
1428    // $ANTLR end "entryRuleSectionHeading"
1429
1430
1431    // $ANTLR start "ruleSectionHeading"
1432    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:518:1: ruleSectionHeading returns [EObject current=null] : ( () ( (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) ) ) ;
1433    public final EObject ruleSectionHeading() throws RecognitionException {
1434        EObject current = null;
1435
1436        Token lv_sectionHeader_1_0=null;
1437
1438         enterRule();
1439           
1440        try {
1441            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:521:28: ( ( () ( (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) ) ) )
1442            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:522:1: ( () ( (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) ) )
1443            {
1444            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:522:1: ( () ( (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) ) )
1445            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:522:2: () ( (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) )
1446            {
1447            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:522:2: ()
1448            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:523:5:
1449            {
1450
1451                    current = forceCreateModelElement(
1452                        grammarAccess.getSectionHeadingAccess().getSectionHeadingAction_0(),
1453                        current);
1454               
1455
1456            }
1457
1458            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:528:2: ( (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) )
1459            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:529:1: (lv_sectionHeader_1_0= RULE_SECTIONHEADER )
1460            {
1461            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:529:1: (lv_sectionHeader_1_0= RULE_SECTIONHEADER )
1462            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:530:3: lv_sectionHeader_1_0= RULE_SECTIONHEADER
1463            {
1464            lv_sectionHeader_1_0=(Token)match(input,RULE_SECTIONHEADER,FOLLOW_RULE_SECTIONHEADER_in_ruleSectionHeading998);
1465
1466                                newLeafNode(lv_sectionHeader_1_0, grammarAccess.getSectionHeadingAccess().getSectionHeaderSECTIONHEADERTerminalRuleCall_1_0());
1467                       
1468
1469                        if (current==null) {
1470                            current = createModelElement(grammarAccess.getSectionHeadingRule());
1471                        }
1472                                setWithLastConsumed(
1473                                        current,
1474                                        "sectionHeader",
1475                                lv_sectionHeader_1_0,
1476                                "SECTIONHEADER");
1477                   
1478
1479            }
1480
1481
1482            }
1483
1484
1485            }
1486
1487
1488            }
1489
1490             leaveRule();
1491        }
1492         
1493            catch (RecognitionException re) {
1494                recover(input,re);
1495                appendSkippedTokens();
1496            }
1497        finally {
1498        }
1499        return current;
1500    }
1501    // $ANTLR end "ruleSectionHeading"
1502
1503
1504    // $ANTLR start "entryRuleImport"
1505    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:554:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ;
1506    public final EObject entryRuleImport() throws RecognitionException {
1507        EObject current = null;
1508
1509        EObject iv_ruleImport = null;
1510
1511
1512        try {
1513            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:555:2: (iv_ruleImport= ruleImport EOF )
1514            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:556:2: iv_ruleImport= ruleImport EOF
1515            {
1516             newCompositeNode(grammarAccess.getImportRule());
1517            pushFollow(FOLLOW_ruleImport_in_entryRuleImport1039);
1518            iv_ruleImport=ruleImport();
1519
1520            state._fsp--;
1521
1522             current =iv_ruleImport;
1523            match(input,EOF,FOLLOW_EOF_in_entryRuleImport1049);
1524
1525            }
1526
1527        }
1528         
1529            catch (RecognitionException re) {
1530                recover(input,re);
1531                appendSkippedTokens();
1532            }
1533        finally {
1534        }
1535        return current;
1536    }
1537    // $ANTLR end "entryRuleImport"
1538
1539
1540    // $ANTLR start "ruleImport"
1541    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:563:1: ruleImport returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) ) (otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) )? (otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) )? otherlv_8= ';' ) ;
1542    public final EObject ruleImport() throws RecognitionException {
1543        EObject current = null;
1544
1545        Token otherlv_0=null;
1546        Token lv_importURI_1_0=null;
1547        Token otherlv_2=null;
1548        Token lv_grammarType_3_0=null;
1549        Token lv_grammarType_4_0=null;
1550        Token lv_grammarType_5_0=null;
1551        Token otherlv_6=null;
1552        Token lv_label_7_0=null;
1553        Token otherlv_8=null;
1554
1555         enterRule();
1556           
1557        try {
1558            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:566:28: ( (otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) ) (otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) )? (otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) )? otherlv_8= ';' ) )
1559            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:567:1: (otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) ) (otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) )? (otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) )? otherlv_8= ';' )
1560            {
1561            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:567:1: (otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) ) (otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) )? (otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) )? otherlv_8= ';' )
1562            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:567:3: otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) ) (otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) )? (otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) )? otherlv_8= ';'
1563            {
1564            otherlv_0=(Token)match(input,18,FOLLOW_18_in_ruleImport1086);
1565
1566                        newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0());
1567               
1568            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:571:1: ( (lv_importURI_1_0= RULE_STRING ) )
1569            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:572:1: (lv_importURI_1_0= RULE_STRING )
1570            {
1571            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:572:1: (lv_importURI_1_0= RULE_STRING )
1572            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:573:3: lv_importURI_1_0= RULE_STRING
1573            {
1574            lv_importURI_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleImport1103);
1575
1576                                newLeafNode(lv_importURI_1_0, grammarAccess.getImportAccess().getImportURISTRINGTerminalRuleCall_1_0());
1577                       
1578
1579                        if (current==null) {
1580                            current = createModelElement(grammarAccess.getImportRule());
1581                        }
1582                                setWithLastConsumed(
1583                                        current,
1584                                        "importURI",
1585                                lv_importURI_1_0,
1586                                "STRING");
1587                   
1588
1589            }
1590
1591
1592            }
1593
1594            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:589:2: (otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) )?
1595            int alt14=2;
1596            int LA14_0 = input.LA(1);
1597
1598            if ( (LA14_0==19) ) {
1599                alt14=1;
1600            }
1601            switch (alt14) {
1602                case 1 :
1603                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:589:4: otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) )
1604                    {
1605                    otherlv_2=(Token)match(input,19,FOLLOW_19_in_ruleImport1121);
1606
1607                                newLeafNode(otherlv_2, grammarAccess.getImportAccess().getSolidusKeyword_2_0());
1608                       
1609                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:593:1: ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) )
1610                    int alt13=3;
1611                    switch ( input.LA(1) ) {
1612                    case 20:
1613                        {
1614                        alt13=1;
1615                        }
1616                        break;
1617                    case 21:
1618                        {
1619                        alt13=2;
1620                        }
1621                        break;
1622                    case 22:
1623                        {
1624                        alt13=3;
1625                        }
1626                        break;
1627                    default:
1628                        NoViableAltException nvae =
1629                            new NoViableAltException("", 13, 0, input);
1630
1631                        throw nvae;
1632                    }
1633
1634                    switch (alt13) {
1635                        case 1 :
1636                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:593:2: ( (lv_grammarType_3_0= 'core' ) )
1637                            {
1638                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:593:2: ( (lv_grammarType_3_0= 'core' ) )
1639                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:594:1: (lv_grammarType_3_0= 'core' )
1640                            {
1641                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:594:1: (lv_grammarType_3_0= 'core' )
1642                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:595:3: lv_grammarType_3_0= 'core'
1643                            {
1644                            lv_grammarType_3_0=(Token)match(input,20,FOLLOW_20_in_ruleImport1140);
1645
1646                                    newLeafNode(lv_grammarType_3_0, grammarAccess.getImportAccess().getGrammarTypeCoreKeyword_2_1_0_0());
1647                               
1648
1649                                        if (current==null) {
1650                                            current = createModelElement(grammarAccess.getImportRule());
1651                                        }
1652                                                setWithLastConsumed(current, "grammarType", lv_grammarType_3_0, "core");
1653                                   
1654
1655                            }
1656
1657
1658                            }
1659
1660
1661                            }
1662                            break;
1663                        case 2 :
1664                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:609:6: ( (lv_grammarType_4_0= 'package' ) )
1665                            {
1666                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:609:6: ( (lv_grammarType_4_0= 'package' ) )
1667                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:610:1: (lv_grammarType_4_0= 'package' )
1668                            {
1669                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:610:1: (lv_grammarType_4_0= 'package' )
1670                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:611:3: lv_grammarType_4_0= 'package'
1671                            {
1672                            lv_grammarType_4_0=(Token)match(input,21,FOLLOW_21_in_ruleImport1177);
1673
1674                                    newLeafNode(lv_grammarType_4_0, grammarAccess.getImportAccess().getGrammarTypePackageKeyword_2_1_1_0());
1675                               
1676
1677                                        if (current==null) {
1678                                            current = createModelElement(grammarAccess.getImportRule());
1679                                        }
1680                                                setWithLastConsumed(current, "grammarType", lv_grammarType_4_0, "package");
1681                                   
1682
1683                            }
1684
1685
1686                            }
1687
1688
1689                            }
1690                            break;
1691                        case 3 :
1692                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:625:6: ( (lv_grammarType_5_0= 'update' ) )
1693                            {
1694                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:625:6: ( (lv_grammarType_5_0= 'update' ) )
1695                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:626:1: (lv_grammarType_5_0= 'update' )
1696                            {
1697                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:626:1: (lv_grammarType_5_0= 'update' )
1698                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:627:3: lv_grammarType_5_0= 'update'
1699                            {
1700                            lv_grammarType_5_0=(Token)match(input,22,FOLLOW_22_in_ruleImport1214);
1701
1702                                    newLeafNode(lv_grammarType_5_0, grammarAccess.getImportAccess().getGrammarTypeUpdateKeyword_2_1_2_0());
1703                               
1704
1705                                        if (current==null) {
1706                                            current = createModelElement(grammarAccess.getImportRule());
1707                                        }
1708                                                setWithLastConsumed(current, "grammarType", lv_grammarType_5_0, "update");
1709                                   
1710
1711                            }
1712
1713
1714                            }
1715
1716
1717                            }
1718                            break;
1719
1720                    }
1721
1722
1723                    }
1724                    break;
1725
1726            }
1727
1728            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:640:5: (otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) )?
1729            int alt15=2;
1730            int LA15_0 = input.LA(1);
1731
1732            if ( (LA15_0==23) ) {
1733                alt15=1;
1734            }
1735            switch (alt15) {
1736                case 1 :
1737                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:640:7: otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) )
1738                    {
1739                    otherlv_6=(Token)match(input,23,FOLLOW_23_in_ruleImport1243);
1740
1741                                newLeafNode(otherlv_6, grammarAccess.getImportAccess().getLabelKeyword_3_0());
1742                       
1743                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:644:1: ( (lv_label_7_0= RULE_ID ) )
1744                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:645:1: (lv_label_7_0= RULE_ID )
1745                    {
1746                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:645:1: (lv_label_7_0= RULE_ID )
1747                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:646:3: lv_label_7_0= RULE_ID
1748                    {
1749                    lv_label_7_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleImport1260);
1750
1751                                        newLeafNode(lv_label_7_0, grammarAccess.getImportAccess().getLabelIDTerminalRuleCall_3_1_0());
1752                               
1753
1754                                if (current==null) {
1755                                    current = createModelElement(grammarAccess.getImportRule());
1756                                }
1757                                        setWithLastConsumed(
1758                                                current,
1759                                                "label",
1760                                        lv_label_7_0,
1761                                        "ID");
1762                           
1763
1764                    }
1765
1766
1767                    }
1768
1769
1770                    }
1771                    break;
1772
1773            }
1774
1775            otherlv_8=(Token)match(input,15,FOLLOW_15_in_ruleImport1279);
1776
1777                        newLeafNode(otherlv_8, grammarAccess.getImportAccess().getSemicolonKeyword_4());
1778               
1779
1780            }
1781
1782
1783            }
1784
1785             leaveRule();
1786        }
1787         
1788            catch (RecognitionException re) {
1789                recover(input,re);
1790                appendSkippedTokens();
1791            }
1792        finally {
1793        }
1794        return current;
1795    }
1796    // $ANTLR end "ruleImport"
1797
1798
1799    // $ANTLR start "entryRuleRule"
1800    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:674:1: entryRuleRule returns [EObject current=null] : iv_ruleRule= ruleRule EOF ;
1801    public final EObject entryRuleRule() throws RecognitionException {
1802        EObject current = null;
1803
1804        EObject iv_ruleRule = null;
1805
1806
1807        try {
1808            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:675:2: (iv_ruleRule= ruleRule EOF )
1809            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:676:2: iv_ruleRule= ruleRule EOF
1810            {
1811             newCompositeNode(grammarAccess.getRuleRule());
1812            pushFollow(FOLLOW_ruleRule_in_entryRuleRule1315);
1813            iv_ruleRule=ruleRule();
1814
1815            state._fsp--;
1816
1817             current =iv_ruleRule;
1818            match(input,EOF,FOLLOW_EOF_in_entryRuleRule1325);
1819
1820            }
1821
1822        }
1823         
1824            catch (RecognitionException re) {
1825                recover(input,re);
1826                appendSkippedTokens();
1827            }
1828        finally {
1829        }
1830        return current;
1831    }
1832    // $ANTLR end "entryRuleRule"
1833
1834
1835    // $ANTLR start "ruleRule"
1836    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:683:1: ruleRule returns [EObject current=null] : ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '::=' ( (lv_definitionList_5_0= ruleDefinitionList ) )? (otherlv_6= ';' )? ) ;
1837    public final EObject ruleRule() throws RecognitionException {
1838        EObject current = null;
1839
1840        Token lv_rulenumber_0_0=null;
1841        Token lv_rulevariant_1_0=null;
1842        Token otherlv_2=null;
1843        Token lv_name_3_0=null;
1844        Token otherlv_4=null;
1845        Token otherlv_6=null;
1846        EObject lv_definitionList_5_0 = null;
1847
1848
1849         enterRule();
1850           
1851        try {
1852            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:686:28: ( ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '::=' ( (lv_definitionList_5_0= ruleDefinitionList ) )? (otherlv_6= ';' )? ) )
1853            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:687:1: ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '::=' ( (lv_definitionList_5_0= ruleDefinitionList ) )? (otherlv_6= ';' )? )
1854            {
1855            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:687:1: ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '::=' ( (lv_definitionList_5_0= ruleDefinitionList ) )? (otherlv_6= ';' )? )
1856            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:687:2: ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '::=' ( (lv_definitionList_5_0= ruleDefinitionList ) )? (otherlv_6= ';' )?
1857            {
1858            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:687:2: ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )?
1859            int alt17=2;
1860            int LA17_0 = input.LA(1);
1861
1862            if ( (LA17_0==RULE_INT) ) {
1863                alt17=1;
1864            }
1865            switch (alt17) {
1866                case 1 :
1867                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:687:3: ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.'
1868                    {
1869                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:687:3: ( (lv_rulenumber_0_0= RULE_INT ) )
1870                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:688:1: (lv_rulenumber_0_0= RULE_INT )
1871                    {
1872                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:688:1: (lv_rulenumber_0_0= RULE_INT )
1873                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:689:3: lv_rulenumber_0_0= RULE_INT
1874                    {
1875                    lv_rulenumber_0_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleRule1368);
1876
1877                                        newLeafNode(lv_rulenumber_0_0, grammarAccess.getRuleAccess().getRulenumberINTTerminalRuleCall_0_0_0());
1878                               
1879
1880                                if (current==null) {
1881                                    current = createModelElement(grammarAccess.getRuleRule());
1882                                }
1883                                        setWithLastConsumed(
1884                                                current,
1885                                                "rulenumber",
1886                                        lv_rulenumber_0_0,
1887                                        "INT");
1888                           
1889
1890                    }
1891
1892
1893                    }
1894
1895                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:705:2: ( (lv_rulevariant_1_0= RULE_ID ) )?
1896                    int alt16=2;
1897                    int LA16_0 = input.LA(1);
1898
1899                    if ( (LA16_0==RULE_ID) ) {
1900                        alt16=1;
1901                    }
1902                    switch (alt16) {
1903                        case 1 :
1904                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:706:1: (lv_rulevariant_1_0= RULE_ID )
1905                            {
1906                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:706:1: (lv_rulevariant_1_0= RULE_ID )
1907                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:707:3: lv_rulevariant_1_0= RULE_ID
1908                            {
1909                            lv_rulevariant_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRule1390);
1910
1911                                                newLeafNode(lv_rulevariant_1_0, grammarAccess.getRuleAccess().getRulevariantIDTerminalRuleCall_0_1_0());
1912                                       
1913
1914                                        if (current==null) {
1915                                            current = createModelElement(grammarAccess.getRuleRule());
1916                                        }
1917                                                setWithLastConsumed(
1918                                                        current,
1919                                                        "rulevariant",
1920                                                lv_rulevariant_1_0,
1921                                                "ID");
1922                                   
1923
1924                            }
1925
1926
1927                            }
1928                            break;
1929
1930                    }
1931
1932                    otherlv_2=(Token)match(input,24,FOLLOW_24_in_ruleRule1408);
1933
1934                                newLeafNode(otherlv_2, grammarAccess.getRuleAccess().getFullStopKeyword_0_2());
1935                       
1936
1937                    }
1938                    break;
1939
1940            }
1941
1942            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:727:3: ( (lv_name_3_0= RULE_ID ) )
1943            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:728:1: (lv_name_3_0= RULE_ID )
1944            {
1945            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:728:1: (lv_name_3_0= RULE_ID )
1946            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:729:3: lv_name_3_0= RULE_ID
1947            {
1948            lv_name_3_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRule1427);
1949
1950                                newLeafNode(lv_name_3_0, grammarAccess.getRuleAccess().getNameIDTerminalRuleCall_1_0());
1951                       
1952
1953                        if (current==null) {
1954                            current = createModelElement(grammarAccess.getRuleRule());
1955                        }
1956                                setWithLastConsumed(
1957                                        current,
1958                                        "name",
1959                                lv_name_3_0,
1960                                "ID");
1961                   
1962
1963            }
1964
1965
1966            }
1967
1968            otherlv_4=(Token)match(input,25,FOLLOW_25_in_ruleRule1444);
1969
1970                        newLeafNode(otherlv_4, grammarAccess.getRuleAccess().getColonColonEqualsSignKeyword_2());
1971               
1972            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:749:1: ( (lv_definitionList_5_0= ruleDefinitionList ) )?
1973            int alt18=2;
1974            int LA18_0 = input.LA(1);
1975
1976            if ( (LA18_0==RULE_STRING||LA18_0==RULE_COLON||LA18_0==26||(LA18_0>=32 && LA18_0<=33)) ) {
1977                alt18=1;
1978            }
1979            else if ( (LA18_0==RULE_ID) ) {
1980                int LA18_2 = input.LA(2);
1981
1982                if ( (LA18_2==26) ) {
1983                    int LA18_4 = input.LA(3);
1984
1985                    if ( (LA18_4==RULE_ID||LA18_4==RULE_STRING||LA18_4==RULE_COLON||LA18_4==26||(LA18_4>=32 && LA18_4<=33)) ) {
1986                        alt18=1;
1987                    }
1988                }
1989                else if ( (LA18_2==EOF||(LA18_2>=RULE_ID && LA18_2<=RULE_INT)||LA18_2==RULE_COLON||LA18_2==15||(LA18_2>=31 && LA18_2<=33)) ) {
1990                    alt18=1;
1991                }
1992            }
1993            switch (alt18) {
1994                case 1 :
1995                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:750:1: (lv_definitionList_5_0= ruleDefinitionList )
1996                    {
1997                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:750:1: (lv_definitionList_5_0= ruleDefinitionList )
1998                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:751:3: lv_definitionList_5_0= ruleDefinitionList
1999                    {
2000                     
2001                                newCompositeNode(grammarAccess.getRuleAccess().getDefinitionListDefinitionListParserRuleCall_3_0());
2002                           
2003                    pushFollow(FOLLOW_ruleDefinitionList_in_ruleRule1465);
2004                    lv_definitionList_5_0=ruleDefinitionList();
2005
2006                    state._fsp--;
2007
2008
2009                                if (current==null) {
2010                                    current = createModelElementForParent(grammarAccess.getRuleRule());
2011                                }
2012                                        set(
2013                                                current,
2014                                                "definitionList",
2015                                        lv_definitionList_5_0,
2016                                        "DefinitionList");
2017                                afterParserOrEnumRuleCall();
2018                           
2019
2020                    }
2021
2022
2023                    }
2024                    break;
2025
2026            }
2027
2028            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:767:3: (otherlv_6= ';' )?
2029            int alt19=2;
2030            int LA19_0 = input.LA(1);
2031
2032            if ( (LA19_0==15) ) {
2033                alt19=1;
2034            }
2035            switch (alt19) {
2036                case 1 :
2037                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:767:5: otherlv_6= ';'
2038                    {
2039                    otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleRule1479);
2040
2041                                newLeafNode(otherlv_6, grammarAccess.getRuleAccess().getSemicolonKeyword_4());
2042                       
2043
2044                    }
2045                    break;
2046
2047            }
2048
2049
2050            }
2051
2052
2053            }
2054
2055             leaveRule();
2056        }
2057         
2058            catch (RecognitionException re) {
2059                recover(input,re);
2060                appendSkippedTokens();
2061            }
2062        finally {
2063        }
2064        return current;
2065    }
2066    // $ANTLR end "ruleRule"
2067
2068
2069    // $ANTLR start "entryRuleExtRule"
2070    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:779:1: entryRuleExtRule returns [EObject current=null] : iv_ruleExtRule= ruleExtRule EOF ;
2071    public final EObject entryRuleExtRule() throws RecognitionException {
2072        EObject current = null;
2073
2074        EObject iv_ruleExtRule = null;
2075
2076
2077        try {
2078            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:780:2: (iv_ruleExtRule= ruleExtRule EOF )
2079            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:781:2: iv_ruleExtRule= ruleExtRule EOF
2080            {
2081             newCompositeNode(grammarAccess.getExtRuleRule());
2082            pushFollow(FOLLOW_ruleExtRule_in_entryRuleExtRule1517);
2083            iv_ruleExtRule=ruleExtRule();
2084
2085            state._fsp--;
2086
2087             current =iv_ruleExtRule;
2088            match(input,EOF,FOLLOW_EOF_in_entryRuleExtRule1527);
2089
2090            }
2091
2092        }
2093         
2094            catch (RecognitionException re) {
2095                recover(input,re);
2096                appendSkippedTokens();
2097            }
2098        finally {
2099        }
2100        return current;
2101    }
2102    // $ANTLR end "entryRuleExtRule"
2103
2104
2105    // $ANTLR start "ruleExtRule"
2106    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:788:1: ruleExtRule returns [EObject current=null] : ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' ) otherlv_7= '<-' ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )* (otherlv_18= ';' )? ) ;
2107    public final EObject ruleExtRule() throws RecognitionException {
2108        EObject current = null;
2109
2110        Token lv_rulenumber_0_0=null;
2111        Token lv_rulevariant_1_0=null;
2112        Token otherlv_2=null;
2113        Token lv_name_3_0=null;
2114        Token otherlv_4=null;
2115        Token lv_ruleext_5_0=null;
2116        Token otherlv_6=null;
2117        Token otherlv_7=null;
2118        Token otherlv_9=null;
2119        Token otherlv_10=null;
2120        Token otherlv_11=null;
2121        Token otherlv_12=null;
2122        Token otherlv_13=null;
2123        Token otherlv_14=null;
2124        Token otherlv_15=null;
2125        Token otherlv_16=null;
2126        Token otherlv_17=null;
2127        Token otherlv_18=null;
2128        EObject lv_elements_8_0 = null;
2129
2130
2131         enterRule();
2132           
2133        try {
2134            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:791:28: ( ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' ) otherlv_7= '<-' ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )* (otherlv_18= ';' )? ) )
2135            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:792:1: ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' ) otherlv_7= '<-' ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )* (otherlv_18= ';' )? )
2136            {
2137            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:792:1: ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' ) otherlv_7= '<-' ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )* (otherlv_18= ';' )? )
2138            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:792:2: ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' ) otherlv_7= '<-' ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )* (otherlv_18= ';' )?
2139            {
2140            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:792:2: ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )?
2141            int alt21=2;
2142            int LA21_0 = input.LA(1);
2143
2144            if ( (LA21_0==RULE_INT) ) {
2145                alt21=1;
2146            }
2147            switch (alt21) {
2148                case 1 :
2149                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:792:3: ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.'
2150                    {
2151                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:792:3: ( (lv_rulenumber_0_0= RULE_INT ) )
2152                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:793:1: (lv_rulenumber_0_0= RULE_INT )
2153                    {
2154                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:793:1: (lv_rulenumber_0_0= RULE_INT )
2155                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:794:3: lv_rulenumber_0_0= RULE_INT
2156                    {
2157                    lv_rulenumber_0_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleExtRule1570);
2158
2159                                        newLeafNode(lv_rulenumber_0_0, grammarAccess.getExtRuleAccess().getRulenumberINTTerminalRuleCall_0_0_0());
2160                               
2161
2162                                if (current==null) {
2163                                    current = createModelElement(grammarAccess.getExtRuleRule());
2164                                }
2165                                        setWithLastConsumed(
2166                                                current,
2167                                                "rulenumber",
2168                                        lv_rulenumber_0_0,
2169                                        "INT");
2170                           
2171
2172                    }
2173
2174
2175                    }
2176
2177                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:810:2: ( (lv_rulevariant_1_0= RULE_ID ) )?
2178                    int alt20=2;
2179                    int LA20_0 = input.LA(1);
2180
2181                    if ( (LA20_0==RULE_ID) ) {
2182                        alt20=1;
2183                    }
2184                    switch (alt20) {
2185                        case 1 :
2186                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:811:1: (lv_rulevariant_1_0= RULE_ID )
2187                            {
2188                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:811:1: (lv_rulevariant_1_0= RULE_ID )
2189                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:812:3: lv_rulevariant_1_0= RULE_ID
2190                            {
2191                            lv_rulevariant_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleExtRule1592);
2192
2193                                                newLeafNode(lv_rulevariant_1_0, grammarAccess.getExtRuleAccess().getRulevariantIDTerminalRuleCall_0_1_0());
2194                                       
2195
2196                                        if (current==null) {
2197                                            current = createModelElement(grammarAccess.getExtRuleRule());
2198                                        }
2199                                                setWithLastConsumed(
2200                                                        current,
2201                                                        "rulevariant",
2202                                                lv_rulevariant_1_0,
2203                                                "ID");
2204                                   
2205
2206                            }
2207
2208
2209                            }
2210                            break;
2211
2212                    }
2213
2214                    otherlv_2=(Token)match(input,24,FOLLOW_24_in_ruleExtRule1610);
2215
2216                                newLeafNode(otherlv_2, grammarAccess.getExtRuleAccess().getFullStopKeyword_0_2());
2217                       
2218
2219                    }
2220                    break;
2221
2222            }
2223
2224            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:832:3: ( (lv_name_3_0= RULE_ID ) )
2225            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:833:1: (lv_name_3_0= RULE_ID )
2226            {
2227            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:833:1: (lv_name_3_0= RULE_ID )
2228            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:834:3: lv_name_3_0= RULE_ID
2229            {
2230            lv_name_3_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleExtRule1629);
2231
2232                                newLeafNode(lv_name_3_0, grammarAccess.getExtRuleAccess().getNameIDTerminalRuleCall_1_0());
2233                       
2234
2235                        if (current==null) {
2236                            current = createModelElement(grammarAccess.getExtRuleRule());
2237                        }
2238                                setWithLastConsumed(
2239                                        current,
2240                                        "name",
2241                                lv_name_3_0,
2242                                "ID");
2243                   
2244
2245            }
2246
2247
2248            }
2249
2250            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:850:2: (otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' )
2251            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:850:4: otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')'
2252            {
2253            otherlv_4=(Token)match(input,26,FOLLOW_26_in_ruleExtRule1647);
2254
2255                        newLeafNode(otherlv_4, grammarAccess.getExtRuleAccess().getLeftParenthesisKeyword_2_0());
2256               
2257            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:854:1: ( (lv_ruleext_5_0= RULE_INT ) )
2258            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:855:1: (lv_ruleext_5_0= RULE_INT )
2259            {
2260            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:855:1: (lv_ruleext_5_0= RULE_INT )
2261            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:856:3: lv_ruleext_5_0= RULE_INT
2262            {
2263            lv_ruleext_5_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleExtRule1664);
2264
2265                                newLeafNode(lv_ruleext_5_0, grammarAccess.getExtRuleAccess().getRuleextINTTerminalRuleCall_2_1_0());
2266                       
2267
2268                        if (current==null) {
2269                            current = createModelElement(grammarAccess.getExtRuleRule());
2270                        }
2271                                setWithLastConsumed(
2272                                        current,
2273                                        "ruleext",
2274                                lv_ruleext_5_0,
2275                                "INT");
2276                   
2277
2278            }
2279
2280
2281            }
2282
2283            otherlv_6=(Token)match(input,27,FOLLOW_27_in_ruleExtRule1681);
2284
2285                        newLeafNode(otherlv_6, grammarAccess.getExtRuleAccess().getRightParenthesisKeyword_2_2());
2286               
2287
2288            }
2289
2290            otherlv_7=(Token)match(input,28,FOLLOW_28_in_ruleExtRule1694);
2291
2292                        newLeafNode(otherlv_7, grammarAccess.getExtRuleAccess().getLessThanSignHyphenMinusKeyword_3());
2293               
2294            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:880:1: ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )*
2295            loop22:
2296            do {
2297                int alt22=11;
2298                alt22 = dfa22.predict(input);
2299                switch (alt22) {
2300                case 1 :
2301                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:880:2: ( (lv_elements_8_0= ruleAtom ) )
2302                    {
2303                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:880:2: ( (lv_elements_8_0= ruleAtom ) )
2304                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:881:1: (lv_elements_8_0= ruleAtom )
2305                    {
2306                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:881:1: (lv_elements_8_0= ruleAtom )
2307                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:882:3: lv_elements_8_0= ruleAtom
2308                    {
2309                     
2310                                newCompositeNode(grammarAccess.getExtRuleAccess().getElementsAtomParserRuleCall_4_0_0());
2311                           
2312                    pushFollow(FOLLOW_ruleAtom_in_ruleExtRule1716);
2313                    lv_elements_8_0=ruleAtom();
2314
2315                    state._fsp--;
2316
2317
2318                                if (current==null) {
2319                                    current = createModelElementForParent(grammarAccess.getExtRuleRule());
2320                                }
2321                                        add(
2322                                                current,
2323                                                "elements",
2324                                        lv_elements_8_0,
2325                                        "Atom");
2326                                afterParserOrEnumRuleCall();
2327                           
2328
2329                    }
2330
2331
2332                    }
2333
2334
2335                    }
2336                    break;
2337                case 2 :
2338                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:899:7: otherlv_9= ')'
2339                    {
2340                    otherlv_9=(Token)match(input,27,FOLLOW_27_in_ruleExtRule1734);
2341
2342                                newLeafNode(otherlv_9, grammarAccess.getExtRuleAccess().getRightParenthesisKeyword_4_1());
2343                       
2344
2345                    }
2346                    break;
2347                case 3 :
2348                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:904:7: otherlv_10= ']'
2349                    {
2350                    otherlv_10=(Token)match(input,29,FOLLOW_29_in_ruleExtRule1752);
2351
2352                                newLeafNode(otherlv_10, grammarAccess.getExtRuleAccess().getRightSquareBracketKeyword_4_2());
2353                       
2354
2355                    }
2356                    break;
2357                case 4 :
2358                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:909:7: otherlv_11= '}'
2359                    {
2360                    otherlv_11=(Token)match(input,30,FOLLOW_30_in_ruleExtRule1770);
2361
2362                                newLeafNode(otherlv_11, grammarAccess.getExtRuleAccess().getRightCurlyBracketKeyword_4_3());
2363                       
2364
2365                    }
2366                    break;
2367                case 5 :
2368                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:914:7: otherlv_12= '|'
2369                    {
2370                    otherlv_12=(Token)match(input,31,FOLLOW_31_in_ruleExtRule1788);
2371
2372                                newLeafNode(otherlv_12, grammarAccess.getExtRuleAccess().getVerticalLineKeyword_4_4());
2373                       
2374
2375                    }
2376                    break;
2377                case 6 :
2378                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:919:7: otherlv_13= '('
2379                    {
2380                    otherlv_13=(Token)match(input,26,FOLLOW_26_in_ruleExtRule1806);
2381
2382                                newLeafNode(otherlv_13, grammarAccess.getExtRuleAccess().getLeftParenthesisKeyword_4_5());
2383                       
2384
2385                    }
2386                    break;
2387                case 7 :
2388                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:924:7: otherlv_14= '['
2389                    {
2390                    otherlv_14=(Token)match(input,32,FOLLOW_32_in_ruleExtRule1824);
2391
2392                                newLeafNode(otherlv_14, grammarAccess.getExtRuleAccess().getLeftSquareBracketKeyword_4_6());
2393                       
2394
2395                    }
2396                    break;
2397                case 8 :
2398                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:929:7: otherlv_15= '{'
2399                    {
2400                    otherlv_15=(Token)match(input,33,FOLLOW_33_in_ruleExtRule1842);
2401
2402                                newLeafNode(otherlv_15, grammarAccess.getExtRuleAccess().getLeftCurlyBracketKeyword_4_7());
2403                       
2404
2405                    }
2406                    break;
2407                case 9 :
2408                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:934:7: otherlv_16= '*'
2409                    {
2410                    otherlv_16=(Token)match(input,34,FOLLOW_34_in_ruleExtRule1860);
2411
2412                                newLeafNode(otherlv_16, grammarAccess.getExtRuleAccess().getAsteriskKeyword_4_8());
2413                       
2414
2415                    }
2416                    break;
2417                case 10 :
2418                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:939:7: otherlv_17= '+'
2419                    {
2420                    otherlv_17=(Token)match(input,35,FOLLOW_35_in_ruleExtRule1878);
2421
2422                                newLeafNode(otherlv_17, grammarAccess.getExtRuleAccess().getPlusSignKeyword_4_9());
2423                       
2424
2425                    }
2426                    break;
2427
2428                default :
2429                    break loop22;
2430                }
2431            } while (true);
2432
2433            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:943:3: (otherlv_18= ';' )?
2434            int alt23=2;
2435            int LA23_0 = input.LA(1);
2436
2437            if ( (LA23_0==15) ) {
2438                alt23=1;
2439            }
2440            switch (alt23) {
2441                case 1 :
2442                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:943:5: otherlv_18= ';'
2443                    {
2444                    otherlv_18=(Token)match(input,15,FOLLOW_15_in_ruleExtRule1893);
2445
2446                                newLeafNode(otherlv_18, grammarAccess.getExtRuleAccess().getSemicolonKeyword_5());
2447                       
2448
2449                    }
2450                    break;
2451
2452            }
2453
2454
2455            }
2456
2457
2458            }
2459
2460             leaveRule();
2461        }
2462         
2463            catch (RecognitionException re) {
2464                recover(input,re);
2465                appendSkippedTokens();
2466            }
2467        finally {
2468        }
2469        return current;
2470    }
2471    // $ANTLR end "ruleExtRule"
2472
2473
2474    // $ANTLR start "entryRuleMergeRule"
2475    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:955:1: entryRuleMergeRule returns [EObject current=null] : iv_ruleMergeRule= ruleMergeRule EOF ;
2476    public final EObject entryRuleMergeRule() throws RecognitionException {
2477        EObject current = null;
2478
2479        EObject iv_ruleMergeRule = null;
2480
2481
2482        try {
2483            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:956:2: (iv_ruleMergeRule= ruleMergeRule EOF )
2484            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:957:2: iv_ruleMergeRule= ruleMergeRule EOF
2485            {
2486             newCompositeNode(grammarAccess.getMergeRuleRule());
2487            pushFollow(FOLLOW_ruleMergeRule_in_entryRuleMergeRule1931);
2488            iv_ruleMergeRule=ruleMergeRule();
2489
2490            state._fsp--;
2491
2492             current =iv_ruleMergeRule;
2493            match(input,EOF,FOLLOW_EOF_in_entryRuleMergeRule1941);
2494
2495            }
2496
2497        }
2498         
2499            catch (RecognitionException re) {
2500                recover(input,re);
2501                appendSkippedTokens();
2502            }
2503        finally {
2504        }
2505        return current;
2506    }
2507    // $ANTLR end "entryRuleMergeRule"
2508
2509
2510    // $ANTLR start "ruleMergeRule"
2511    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:964:1: ruleMergeRule returns [EObject current=null] : (this_GlobalCombinator_0= ruleGlobalCombinator | this_RuleCombinator_1= ruleRuleCombinator | this_HookCombinator_2= ruleHookCombinator ) ;
2512    public final EObject ruleMergeRule() throws RecognitionException {
2513        EObject current = null;
2514
2515        EObject this_GlobalCombinator_0 = null;
2516
2517        EObject this_RuleCombinator_1 = null;
2518
2519        EObject this_HookCombinator_2 = null;
2520
2521
2522         enterRule();
2523           
2524        try {
2525            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:967:28: ( (this_GlobalCombinator_0= ruleGlobalCombinator | this_RuleCombinator_1= ruleRuleCombinator | this_HookCombinator_2= ruleHookCombinator ) )
2526            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:968:1: (this_GlobalCombinator_0= ruleGlobalCombinator | this_RuleCombinator_1= ruleRuleCombinator | this_HookCombinator_2= ruleHookCombinator )
2527            {
2528            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:968:1: (this_GlobalCombinator_0= ruleGlobalCombinator | this_RuleCombinator_1= ruleRuleCombinator | this_HookCombinator_2= ruleHookCombinator )
2529            int alt24=3;
2530            switch ( input.LA(1) ) {
2531            case 36:
2532                {
2533                alt24=1;
2534                }
2535                break;
2536            case 38:
2537                {
2538                alt24=2;
2539                }
2540                break;
2541            case 39:
2542                {
2543                alt24=3;
2544                }
2545                break;
2546            default:
2547                NoViableAltException nvae =
2548                    new NoViableAltException("", 24, 0, input);
2549
2550                throw nvae;
2551            }
2552
2553            switch (alt24) {
2554                case 1 :
2555                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:969:5: this_GlobalCombinator_0= ruleGlobalCombinator
2556                    {
2557                     
2558                            newCompositeNode(grammarAccess.getMergeRuleAccess().getGlobalCombinatorParserRuleCall_0());
2559                       
2560                    pushFollow(FOLLOW_ruleGlobalCombinator_in_ruleMergeRule1988);
2561                    this_GlobalCombinator_0=ruleGlobalCombinator();
2562
2563                    state._fsp--;
2564
2565                     
2566                            current = this_GlobalCombinator_0;
2567                            afterParserOrEnumRuleCall();
2568                       
2569
2570                    }
2571                    break;
2572                case 2 :
2573                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:979:5: this_RuleCombinator_1= ruleRuleCombinator
2574                    {
2575                     
2576                            newCompositeNode(grammarAccess.getMergeRuleAccess().getRuleCombinatorParserRuleCall_1());
2577                       
2578                    pushFollow(FOLLOW_ruleRuleCombinator_in_ruleMergeRule2015);
2579                    this_RuleCombinator_1=ruleRuleCombinator();
2580
2581                    state._fsp--;
2582
2583                     
2584                            current = this_RuleCombinator_1;
2585                            afterParserOrEnumRuleCall();
2586                       
2587
2588                    }
2589                    break;
2590                case 3 :
2591                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:989:5: this_HookCombinator_2= ruleHookCombinator
2592                    {
2593                     
2594                            newCompositeNode(grammarAccess.getMergeRuleAccess().getHookCombinatorParserRuleCall_2());
2595                       
2596                    pushFollow(FOLLOW_ruleHookCombinator_in_ruleMergeRule2042);
2597                    this_HookCombinator_2=ruleHookCombinator();
2598
2599                    state._fsp--;
2600
2601                     
2602                            current = this_HookCombinator_2;
2603                            afterParserOrEnumRuleCall();
2604                       
2605
2606                    }
2607                    break;
2608
2609            }
2610
2611
2612            }
2613
2614             leaveRule();
2615        }
2616         
2617            catch (RecognitionException re) {
2618                recover(input,re);
2619                appendSkippedTokens();
2620            }
2621        finally {
2622        }
2623        return current;
2624    }
2625    // $ANTLR end "ruleMergeRule"
2626
2627
2628    // $ANTLR start "entryRuleGlobalCombinator"
2629    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1005:1: entryRuleGlobalCombinator returns [EObject current=null] : iv_ruleGlobalCombinator= ruleGlobalCombinator EOF ;
2630    public final EObject entryRuleGlobalCombinator() throws RecognitionException {
2631        EObject current = null;
2632
2633        EObject iv_ruleGlobalCombinator = null;
2634
2635
2636        try {
2637            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1006:2: (iv_ruleGlobalCombinator= ruleGlobalCombinator EOF )
2638            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1007:2: iv_ruleGlobalCombinator= ruleGlobalCombinator EOF
2639            {
2640             newCompositeNode(grammarAccess.getGlobalCombinatorRule());
2641            pushFollow(FOLLOW_ruleGlobalCombinator_in_entryRuleGlobalCombinator2077);
2642            iv_ruleGlobalCombinator=ruleGlobalCombinator();
2643
2644            state._fsp--;
2645
2646             current =iv_ruleGlobalCombinator;
2647            match(input,EOF,FOLLOW_EOF_in_entryRuleGlobalCombinator2087);
2648
2649            }
2650
2651        }
2652         
2653            catch (RecognitionException re) {
2654                recover(input,re);
2655                appendSkippedTokens();
2656            }
2657        finally {
2658        }
2659        return current;
2660    }
2661    // $ANTLR end "entryRuleGlobalCombinator"
2662
2663
2664    // $ANTLR start "ruleGlobalCombinator"
2665    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1014:1: ruleGlobalCombinator returns [EObject current=null] : ( (otherlv_0= 'global' otherlv_1= 'combinator:' ) ( (lv_logic_2_0= RULE_LOGIC ) ) (otherlv_3= ';' )? ) ;
2666    public final EObject ruleGlobalCombinator() throws RecognitionException {
2667        EObject current = null;
2668
2669        Token otherlv_0=null;
2670        Token otherlv_1=null;
2671        Token lv_logic_2_0=null;
2672        Token otherlv_3=null;
2673
2674         enterRule();
2675           
2676        try {
2677            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1017:28: ( ( (otherlv_0= 'global' otherlv_1= 'combinator:' ) ( (lv_logic_2_0= RULE_LOGIC ) ) (otherlv_3= ';' )? ) )
2678            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1018:1: ( (otherlv_0= 'global' otherlv_1= 'combinator:' ) ( (lv_logic_2_0= RULE_LOGIC ) ) (otherlv_3= ';' )? )
2679            {
2680            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1018:1: ( (otherlv_0= 'global' otherlv_1= 'combinator:' ) ( (lv_logic_2_0= RULE_LOGIC ) ) (otherlv_3= ';' )? )
2681            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1018:2: (otherlv_0= 'global' otherlv_1= 'combinator:' ) ( (lv_logic_2_0= RULE_LOGIC ) ) (otherlv_3= ';' )?
2682            {
2683            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1018:2: (otherlv_0= 'global' otherlv_1= 'combinator:' )
2684            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1018:4: otherlv_0= 'global' otherlv_1= 'combinator:'
2685            {
2686            otherlv_0=(Token)match(input,36,FOLLOW_36_in_ruleGlobalCombinator2125);
2687
2688                        newLeafNode(otherlv_0, grammarAccess.getGlobalCombinatorAccess().getGlobalKeyword_0_0());
2689               
2690            otherlv_1=(Token)match(input,37,FOLLOW_37_in_ruleGlobalCombinator2137);
2691
2692                        newLeafNode(otherlv_1, grammarAccess.getGlobalCombinatorAccess().getCombinatorKeyword_0_1());
2693               
2694
2695            }
2696
2697            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1026:2: ( (lv_logic_2_0= RULE_LOGIC ) )
2698            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1027:1: (lv_logic_2_0= RULE_LOGIC )
2699            {
2700            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1027:1: (lv_logic_2_0= RULE_LOGIC )
2701            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1028:3: lv_logic_2_0= RULE_LOGIC
2702            {
2703            lv_logic_2_0=(Token)match(input,RULE_LOGIC,FOLLOW_RULE_LOGIC_in_ruleGlobalCombinator2155);
2704
2705                                newLeafNode(lv_logic_2_0, grammarAccess.getGlobalCombinatorAccess().getLogicLOGICTerminalRuleCall_1_0());
2706                       
2707
2708                        if (current==null) {
2709                            current = createModelElement(grammarAccess.getGlobalCombinatorRule());
2710                        }
2711                                setWithLastConsumed(
2712                                        current,
2713                                        "logic",
2714                                lv_logic_2_0,
2715                                "LOGIC");
2716                   
2717
2718            }
2719
2720
2721            }
2722
2723            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1044:2: (otherlv_3= ';' )?
2724            int alt25=2;
2725            int LA25_0 = input.LA(1);
2726
2727            if ( (LA25_0==15) ) {
2728                alt25=1;
2729            }
2730            switch (alt25) {
2731                case 1 :
2732                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1044:4: otherlv_3= ';'
2733                    {
2734                    otherlv_3=(Token)match(input,15,FOLLOW_15_in_ruleGlobalCombinator2173);
2735
2736                                newLeafNode(otherlv_3, grammarAccess.getGlobalCombinatorAccess().getSemicolonKeyword_2());
2737                       
2738
2739                    }
2740                    break;
2741
2742            }
2743
2744
2745            }
2746
2747
2748            }
2749
2750             leaveRule();
2751        }
2752         
2753            catch (RecognitionException re) {
2754                recover(input,re);
2755                appendSkippedTokens();
2756            }
2757        finally {
2758        }
2759        return current;
2760    }
2761    // $ANTLR end "ruleGlobalCombinator"
2762
2763
2764    // $ANTLR start "entryRuleRuleCombinator"
2765    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1056:1: entryRuleRuleCombinator returns [EObject current=null] : iv_ruleRuleCombinator= ruleRuleCombinator EOF ;
2766    public final EObject entryRuleRuleCombinator() throws RecognitionException {
2767        EObject current = null;
2768
2769        EObject iv_ruleRuleCombinator = null;
2770
2771
2772        try {
2773            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1057:2: (iv_ruleRuleCombinator= ruleRuleCombinator EOF )
2774            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1058:2: iv_ruleRuleCombinator= ruleRuleCombinator EOF
2775            {
2776             newCompositeNode(grammarAccess.getRuleCombinatorRule());
2777            pushFollow(FOLLOW_ruleRuleCombinator_in_entryRuleRuleCombinator2211);
2778            iv_ruleRuleCombinator=ruleRuleCombinator();
2779
2780            state._fsp--;
2781
2782             current =iv_ruleRuleCombinator;
2783            match(input,EOF,FOLLOW_EOF_in_entryRuleRuleCombinator2221);
2784
2785            }
2786
2787        }
2788         
2789            catch (RecognitionException re) {
2790                recover(input,re);
2791                appendSkippedTokens();
2792            }
2793        finally {
2794        }
2795        return current;
2796    }
2797    // $ANTLR end "entryRuleRuleCombinator"
2798
2799
2800    // $ANTLR start "ruleRuleCombinator"
2801    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1065:1: ruleRuleCombinator returns [EObject current=null] : ( (otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) ) ( (lv_logic_3_0= RULE_LOGIC ) ) (otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' )* (otherlv_7= ';' )? ) ;
2802    public final EObject ruleRuleCombinator() throws RecognitionException {
2803        EObject current = null;
2804
2805        Token otherlv_0=null;
2806        Token otherlv_1=null;
2807        Token lv_name_2_0=null;
2808        Token lv_logic_3_0=null;
2809        Token otherlv_4=null;
2810        Token lv_LABEL_5_0=null;
2811        Token otherlv_6=null;
2812        Token otherlv_7=null;
2813
2814         enterRule();
2815           
2816        try {
2817            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1068:28: ( ( (otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) ) ( (lv_logic_3_0= RULE_LOGIC ) ) (otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' )* (otherlv_7= ';' )? ) )
2818            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1069:1: ( (otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) ) ( (lv_logic_3_0= RULE_LOGIC ) ) (otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' )* (otherlv_7= ';' )? )
2819            {
2820            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1069:1: ( (otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) ) ( (lv_logic_3_0= RULE_LOGIC ) ) (otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' )* (otherlv_7= ';' )? )
2821            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1069:2: (otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) ) ( (lv_logic_3_0= RULE_LOGIC ) ) (otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' )* (otherlv_7= ';' )?
2822            {
2823            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1069:2: (otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) )
2824            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1069:4: otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) )
2825            {
2826            otherlv_0=(Token)match(input,38,FOLLOW_38_in_ruleRuleCombinator2259);
2827
2828                        newLeafNode(otherlv_0, grammarAccess.getRuleCombinatorAccess().getRuleKeyword_0_0());
2829               
2830            otherlv_1=(Token)match(input,37,FOLLOW_37_in_ruleRuleCombinator2271);
2831
2832                        newLeafNode(otherlv_1, grammarAccess.getRuleCombinatorAccess().getCombinatorKeyword_0_1());
2833               
2834            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1077:1: ( (lv_name_2_0= RULE_ID ) )
2835            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1078:1: (lv_name_2_0= RULE_ID )
2836            {
2837            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1078:1: (lv_name_2_0= RULE_ID )
2838            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1079:3: lv_name_2_0= RULE_ID
2839            {
2840            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRuleCombinator2288);
2841
2842                                newLeafNode(lv_name_2_0, grammarAccess.getRuleCombinatorAccess().getNameIDTerminalRuleCall_0_2_0());
2843                       
2844
2845                        if (current==null) {
2846                            current = createModelElement(grammarAccess.getRuleCombinatorRule());
2847                        }
2848                                setWithLastConsumed(
2849                                        current,
2850                                        "name",
2851                                lv_name_2_0,
2852                                "ID");
2853                   
2854
2855            }
2856
2857
2858            }
2859
2860
2861            }
2862
2863            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1095:3: ( (lv_logic_3_0= RULE_LOGIC ) )
2864            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1096:1: (lv_logic_3_0= RULE_LOGIC )
2865            {
2866            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1096:1: (lv_logic_3_0= RULE_LOGIC )
2867            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1097:3: lv_logic_3_0= RULE_LOGIC
2868            {
2869            lv_logic_3_0=(Token)match(input,RULE_LOGIC,FOLLOW_RULE_LOGIC_in_ruleRuleCombinator2311);
2870
2871                                newLeafNode(lv_logic_3_0, grammarAccess.getRuleCombinatorAccess().getLogicLOGICTerminalRuleCall_1_0());
2872                       
2873
2874                        if (current==null) {
2875                            current = createModelElement(grammarAccess.getRuleCombinatorRule());
2876                        }
2877                                setWithLastConsumed(
2878                                        current,
2879                                        "logic",
2880                                lv_logic_3_0,
2881                                "LOGIC");
2882                   
2883
2884            }
2885
2886
2887            }
2888
2889            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1113:2: (otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' )*
2890            loop26:
2891            do {
2892                int alt26=2;
2893                int LA26_0 = input.LA(1);
2894
2895                if ( (LA26_0==26) ) {
2896                    alt26=1;
2897                }
2898
2899
2900                switch (alt26) {
2901                case 1 :
2902                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1113:4: otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')'
2903                    {
2904                    otherlv_4=(Token)match(input,26,FOLLOW_26_in_ruleRuleCombinator2329);
2905
2906                                newLeafNode(otherlv_4, grammarAccess.getRuleCombinatorAccess().getLeftParenthesisKeyword_2_0());
2907                       
2908                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1117:1: ( (lv_LABEL_5_0= RULE_STRING ) )
2909                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1118:1: (lv_LABEL_5_0= RULE_STRING )
2910                    {
2911                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1118:1: (lv_LABEL_5_0= RULE_STRING )
2912                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1119:3: lv_LABEL_5_0= RULE_STRING
2913                    {
2914                    lv_LABEL_5_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleRuleCombinator2346);
2915
2916                                        newLeafNode(lv_LABEL_5_0, grammarAccess.getRuleCombinatorAccess().getLABELSTRINGTerminalRuleCall_2_1_0());
2917                               
2918
2919                                if (current==null) {
2920                                    current = createModelElement(grammarAccess.getRuleCombinatorRule());
2921                                }
2922                                        addWithLastConsumed(
2923                                                current,
2924                                                "LABEL",
2925                                        lv_LABEL_5_0,
2926                                        "STRING");
2927                           
2928
2929                    }
2930
2931
2932                    }
2933
2934                    otherlv_6=(Token)match(input,27,FOLLOW_27_in_ruleRuleCombinator2363);
2935
2936                                newLeafNode(otherlv_6, grammarAccess.getRuleCombinatorAccess().getRightParenthesisKeyword_2_2());
2937                       
2938
2939                    }
2940                    break;
2941
2942                default :
2943                    break loop26;
2944                }
2945            } while (true);
2946
2947            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1139:3: (otherlv_7= ';' )?
2948            int alt27=2;
2949            int LA27_0 = input.LA(1);
2950
2951            if ( (LA27_0==15) ) {
2952                alt27=1;
2953            }
2954            switch (alt27) {
2955                case 1 :
2956                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1139:5: otherlv_7= ';'
2957                    {
2958                    otherlv_7=(Token)match(input,15,FOLLOW_15_in_ruleRuleCombinator2378);
2959
2960                                newLeafNode(otherlv_7, grammarAccess.getRuleCombinatorAccess().getSemicolonKeyword_3());
2961                       
2962
2963                    }
2964                    break;
2965
2966            }
2967
2968
2969            }
2970
2971
2972            }
2973
2974             leaveRule();
2975        }
2976         
2977            catch (RecognitionException re) {
2978                recover(input,re);
2979                appendSkippedTokens();
2980            }
2981        finally {
2982        }
2983        return current;
2984    }
2985    // $ANTLR end "ruleRuleCombinator"
2986
2987
2988    // $ANTLR start "entryRuleHookCombinator"
2989    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1151:1: entryRuleHookCombinator returns [EObject current=null] : iv_ruleHookCombinator= ruleHookCombinator EOF ;
2990    public final EObject entryRuleHookCombinator() throws RecognitionException {
2991        EObject current = null;
2992
2993        EObject iv_ruleHookCombinator = null;
2994
2995
2996        try {
2997            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1152:2: (iv_ruleHookCombinator= ruleHookCombinator EOF )
2998            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1153:2: iv_ruleHookCombinator= ruleHookCombinator EOF
2999            {
3000             newCompositeNode(grammarAccess.getHookCombinatorRule());
3001            pushFollow(FOLLOW_ruleHookCombinator_in_entryRuleHookCombinator2416);
3002            iv_ruleHookCombinator=ruleHookCombinator();
3003
3004            state._fsp--;
3005
3006             current =iv_ruleHookCombinator;
3007            match(input,EOF,FOLLOW_EOF_in_entryRuleHookCombinator2426);
3008
3009            }
3010
3011        }
3012         
3013            catch (RecognitionException re) {
3014                recover(input,re);
3015                appendSkippedTokens();
3016            }
3017        finally {
3018        }
3019        return current;
3020    }
3021    // $ANTLR end "entryRuleHookCombinator"
3022
3023
3024    // $ANTLR start "ruleHookCombinator"
3025    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1160:1: ruleHookCombinator returns [EObject current=null] : (otherlv_0= 'hook' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_ruleext_4_0= RULE_INT ) ) otherlv_5= ')' ( (lv_logic_6_0= RULE_LOGIC ) )? (otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' )+ (otherlv_10= ';' )? ) ;
3026    public final EObject ruleHookCombinator() throws RecognitionException {
3027        EObject current = null;
3028
3029        Token otherlv_0=null;
3030        Token otherlv_1=null;
3031        Token lv_name_2_0=null;
3032        Token otherlv_3=null;
3033        Token lv_ruleext_4_0=null;
3034        Token otherlv_5=null;
3035        Token lv_logic_6_0=null;
3036        Token otherlv_7=null;
3037        Token lv_LABEL_8_0=null;
3038        Token otherlv_9=null;
3039        Token otherlv_10=null;
3040
3041         enterRule();
3042           
3043        try {
3044            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1163:28: ( (otherlv_0= 'hook' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_ruleext_4_0= RULE_INT ) ) otherlv_5= ')' ( (lv_logic_6_0= RULE_LOGIC ) )? (otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' )+ (otherlv_10= ';' )? ) )
3045            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1164:1: (otherlv_0= 'hook' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_ruleext_4_0= RULE_INT ) ) otherlv_5= ')' ( (lv_logic_6_0= RULE_LOGIC ) )? (otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' )+ (otherlv_10= ';' )? )
3046            {
3047            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1164:1: (otherlv_0= 'hook' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_ruleext_4_0= RULE_INT ) ) otherlv_5= ')' ( (lv_logic_6_0= RULE_LOGIC ) )? (otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' )+ (otherlv_10= ';' )? )
3048            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1164:3: otherlv_0= 'hook' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_ruleext_4_0= RULE_INT ) ) otherlv_5= ')' ( (lv_logic_6_0= RULE_LOGIC ) )? (otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' )+ (otherlv_10= ';' )?
3049            {
3050            otherlv_0=(Token)match(input,39,FOLLOW_39_in_ruleHookCombinator2463);
3051
3052                        newLeafNode(otherlv_0, grammarAccess.getHookCombinatorAccess().getHookKeyword_0());
3053               
3054            otherlv_1=(Token)match(input,37,FOLLOW_37_in_ruleHookCombinator2475);
3055
3056                        newLeafNode(otherlv_1, grammarAccess.getHookCombinatorAccess().getCombinatorKeyword_1());
3057               
3058            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1172:1: ( (lv_name_2_0= RULE_ID ) )
3059            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1173:1: (lv_name_2_0= RULE_ID )
3060            {
3061            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1173:1: (lv_name_2_0= RULE_ID )
3062            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1174:3: lv_name_2_0= RULE_ID
3063            {
3064            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleHookCombinator2492);
3065
3066                                newLeafNode(lv_name_2_0, grammarAccess.getHookCombinatorAccess().getNameIDTerminalRuleCall_2_0());
3067                       
3068
3069                        if (current==null) {
3070                            current = createModelElement(grammarAccess.getHookCombinatorRule());
3071                        }
3072                                setWithLastConsumed(
3073                                        current,
3074                                        "name",
3075                                lv_name_2_0,
3076                                "ID");
3077                   
3078
3079            }
3080
3081
3082            }
3083
3084            otherlv_3=(Token)match(input,26,FOLLOW_26_in_ruleHookCombinator2509);
3085
3086                        newLeafNode(otherlv_3, grammarAccess.getHookCombinatorAccess().getLeftParenthesisKeyword_3());
3087               
3088            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1194:1: ( (lv_ruleext_4_0= RULE_INT ) )
3089            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1195:1: (lv_ruleext_4_0= RULE_INT )
3090            {
3091            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1195:1: (lv_ruleext_4_0= RULE_INT )
3092            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1196:3: lv_ruleext_4_0= RULE_INT
3093            {
3094            lv_ruleext_4_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleHookCombinator2526);
3095
3096                                newLeafNode(lv_ruleext_4_0, grammarAccess.getHookCombinatorAccess().getRuleextINTTerminalRuleCall_4_0());
3097                       
3098
3099                        if (current==null) {
3100                            current = createModelElement(grammarAccess.getHookCombinatorRule());
3101                        }
3102                                setWithLastConsumed(
3103                                        current,
3104                                        "ruleext",
3105                                lv_ruleext_4_0,
3106                                "INT");
3107                   
3108
3109            }
3110
3111
3112            }
3113
3114            otherlv_5=(Token)match(input,27,FOLLOW_27_in_ruleHookCombinator2543);
3115
3116                        newLeafNode(otherlv_5, grammarAccess.getHookCombinatorAccess().getRightParenthesisKeyword_5());
3117               
3118            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1216:1: ( (lv_logic_6_0= RULE_LOGIC ) )?
3119            int alt28=2;
3120            int LA28_0 = input.LA(1);
3121
3122            if ( (LA28_0==RULE_LOGIC) ) {
3123                alt28=1;
3124            }
3125            switch (alt28) {
3126                case 1 :
3127                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1217:1: (lv_logic_6_0= RULE_LOGIC )
3128                    {
3129                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1217:1: (lv_logic_6_0= RULE_LOGIC )
3130                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1218:3: lv_logic_6_0= RULE_LOGIC
3131                    {
3132                    lv_logic_6_0=(Token)match(input,RULE_LOGIC,FOLLOW_RULE_LOGIC_in_ruleHookCombinator2560);
3133
3134                                        newLeafNode(lv_logic_6_0, grammarAccess.getHookCombinatorAccess().getLogicLOGICTerminalRuleCall_6_0());
3135                               
3136
3137                                if (current==null) {
3138                                    current = createModelElement(grammarAccess.getHookCombinatorRule());
3139                                }
3140                                        setWithLastConsumed(
3141                                                current,
3142                                                "logic",
3143                                        lv_logic_6_0,
3144                                        "LOGIC");
3145                           
3146
3147                    }
3148
3149
3150                    }
3151                    break;
3152
3153            }
3154
3155            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1234:3: (otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' )+
3156            int cnt29=0;
3157            loop29:
3158            do {
3159                int alt29=2;
3160                int LA29_0 = input.LA(1);
3161
3162                if ( (LA29_0==26) ) {
3163                    alt29=1;
3164                }
3165
3166
3167                switch (alt29) {
3168                case 1 :
3169                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1234:5: otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')'
3170                    {
3171                    otherlv_7=(Token)match(input,26,FOLLOW_26_in_ruleHookCombinator2579);
3172
3173                                newLeafNode(otherlv_7, grammarAccess.getHookCombinatorAccess().getLeftParenthesisKeyword_7_0());
3174                       
3175                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1238:1: ( (lv_LABEL_8_0= RULE_STRING ) )
3176                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1239:1: (lv_LABEL_8_0= RULE_STRING )
3177                    {
3178                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1239:1: (lv_LABEL_8_0= RULE_STRING )
3179                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1240:3: lv_LABEL_8_0= RULE_STRING
3180                    {
3181                    lv_LABEL_8_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleHookCombinator2596);
3182
3183                                        newLeafNode(lv_LABEL_8_0, grammarAccess.getHookCombinatorAccess().getLABELSTRINGTerminalRuleCall_7_1_0());
3184                               
3185
3186                                if (current==null) {
3187                                    current = createModelElement(grammarAccess.getHookCombinatorRule());
3188                                }
3189                                        addWithLastConsumed(
3190                                                current,
3191                                                "LABEL",
3192                                        lv_LABEL_8_0,
3193                                        "STRING");
3194                           
3195
3196                    }
3197
3198
3199                    }
3200
3201                    otherlv_9=(Token)match(input,27,FOLLOW_27_in_ruleHookCombinator2613);
3202
3203                                newLeafNode(otherlv_9, grammarAccess.getHookCombinatorAccess().getRightParenthesisKeyword_7_2());
3204                       
3205
3206                    }
3207                    break;
3208
3209                default :
3210                    if ( cnt29 >= 1 ) break loop29;
3211                        EarlyExitException eee =
3212                            new EarlyExitException(29, input);
3213                        throw eee;
3214                }
3215                cnt29++;
3216            } while (true);
3217
3218            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1260:3: (otherlv_10= ';' )?
3219            int alt30=2;
3220            int LA30_0 = input.LA(1);
3221
3222            if ( (LA30_0==15) ) {
3223                alt30=1;
3224            }
3225            switch (alt30) {
3226                case 1 :
3227                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1260:5: otherlv_10= ';'
3228                    {
3229                    otherlv_10=(Token)match(input,15,FOLLOW_15_in_ruleHookCombinator2628);
3230
3231                                newLeafNode(otherlv_10, grammarAccess.getHookCombinatorAccess().getSemicolonKeyword_8());
3232                       
3233
3234                    }
3235                    break;
3236
3237            }
3238
3239
3240            }
3241
3242
3243            }
3244
3245             leaveRule();
3246        }
3247         
3248            catch (RecognitionException re) {
3249                recover(input,re);
3250                appendSkippedTokens();
3251            }
3252        finally {
3253        }
3254        return current;
3255    }
3256    // $ANTLR end "ruleHookCombinator"
3257
3258
3259    // $ANTLR start "entryRuleDefinitionList"
3260    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1272:1: entryRuleDefinitionList returns [EObject current=null] : iv_ruleDefinitionList= ruleDefinitionList EOF ;
3261    public final EObject entryRuleDefinitionList() throws RecognitionException {
3262        EObject current = null;
3263
3264        EObject iv_ruleDefinitionList = null;
3265
3266
3267        try {
3268            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1273:2: (iv_ruleDefinitionList= ruleDefinitionList EOF )
3269            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1274:2: iv_ruleDefinitionList= ruleDefinitionList EOF
3270            {
3271             newCompositeNode(grammarAccess.getDefinitionListRule());
3272            pushFollow(FOLLOW_ruleDefinitionList_in_entryRuleDefinitionList2666);
3273            iv_ruleDefinitionList=ruleDefinitionList();
3274
3275            state._fsp--;
3276
3277             current =iv_ruleDefinitionList;
3278            match(input,EOF,FOLLOW_EOF_in_entryRuleDefinitionList2676);
3279
3280            }
3281
3282        }
3283         
3284            catch (RecognitionException re) {
3285                recover(input,re);
3286                appendSkippedTokens();
3287            }
3288        finally {
3289        }
3290        return current;
3291    }
3292    // $ANTLR end "entryRuleDefinitionList"
3293
3294
3295    // $ANTLR start "ruleDefinitionList"
3296    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1281:1: ruleDefinitionList returns [EObject current=null] : ( ( (lv_singleDefinition_0_0= ruleSingleDefinition ) ) (otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) )* ) ;
3297    public final EObject ruleDefinitionList() throws RecognitionException {
3298        EObject current = null;
3299
3300        Token otherlv_1=null;
3301        EObject lv_singleDefinition_0_0 = null;
3302
3303        EObject lv_singleDefinition_2_0 = null;
3304
3305
3306         enterRule();
3307           
3308        try {
3309            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1284:28: ( ( ( (lv_singleDefinition_0_0= ruleSingleDefinition ) ) (otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) )* ) )
3310            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1285:1: ( ( (lv_singleDefinition_0_0= ruleSingleDefinition ) ) (otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) )* )
3311            {
3312            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1285:1: ( ( (lv_singleDefinition_0_0= ruleSingleDefinition ) ) (otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) )* )
3313            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1285:2: ( (lv_singleDefinition_0_0= ruleSingleDefinition ) ) (otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) )*
3314            {
3315            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1285:2: ( (lv_singleDefinition_0_0= ruleSingleDefinition ) )
3316            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1286:1: (lv_singleDefinition_0_0= ruleSingleDefinition )
3317            {
3318            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1286:1: (lv_singleDefinition_0_0= ruleSingleDefinition )
3319            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1287:3: lv_singleDefinition_0_0= ruleSingleDefinition
3320            {
3321             
3322                        newCompositeNode(grammarAccess.getDefinitionListAccess().getSingleDefinitionSingleDefinitionParserRuleCall_0_0());
3323                   
3324            pushFollow(FOLLOW_ruleSingleDefinition_in_ruleDefinitionList2722);
3325            lv_singleDefinition_0_0=ruleSingleDefinition();
3326
3327            state._fsp--;
3328
3329
3330                        if (current==null) {
3331                            current = createModelElementForParent(grammarAccess.getDefinitionListRule());
3332                        }
3333                                add(
3334                                        current,
3335                                        "singleDefinition",
3336                                lv_singleDefinition_0_0,
3337                                "SingleDefinition");
3338                        afterParserOrEnumRuleCall();
3339                   
3340
3341            }
3342
3343
3344            }
3345
3346            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1303:2: (otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) )*
3347            loop31:
3348            do {
3349                int alt31=2;
3350                int LA31_0 = input.LA(1);
3351
3352                if ( (LA31_0==31) ) {
3353                    alt31=1;
3354                }
3355
3356
3357                switch (alt31) {
3358                case 1 :
3359                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1303:4: otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) )
3360                    {
3361                    otherlv_1=(Token)match(input,31,FOLLOW_31_in_ruleDefinitionList2735);
3362
3363                                newLeafNode(otherlv_1, grammarAccess.getDefinitionListAccess().getVerticalLineKeyword_1_0());
3364                       
3365                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1307:1: ( (lv_singleDefinition_2_0= ruleSingleDefinition ) )
3366                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1308:1: (lv_singleDefinition_2_0= ruleSingleDefinition )
3367                    {
3368                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1308:1: (lv_singleDefinition_2_0= ruleSingleDefinition )
3369                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1309:3: lv_singleDefinition_2_0= ruleSingleDefinition
3370                    {
3371                     
3372                                newCompositeNode(grammarAccess.getDefinitionListAccess().getSingleDefinitionSingleDefinitionParserRuleCall_1_1_0());
3373                           
3374                    pushFollow(FOLLOW_ruleSingleDefinition_in_ruleDefinitionList2756);
3375                    lv_singleDefinition_2_0=ruleSingleDefinition();
3376
3377                    state._fsp--;
3378
3379
3380                                if (current==null) {
3381                                    current = createModelElementForParent(grammarAccess.getDefinitionListRule());
3382                                }
3383                                        add(
3384                                                current,
3385                                                "singleDefinition",
3386                                        lv_singleDefinition_2_0,
3387                                        "SingleDefinition");
3388                                afterParserOrEnumRuleCall();
3389                           
3390
3391                    }
3392
3393
3394                    }
3395
3396
3397                    }
3398                    break;
3399
3400                default :
3401                    break loop31;
3402                }
3403            } while (true);
3404
3405
3406            }
3407
3408
3409            }
3410
3411             leaveRule();
3412        }
3413         
3414            catch (RecognitionException re) {
3415                recover(input,re);
3416                appendSkippedTokens();
3417            }
3418        finally {
3419        }
3420        return current;
3421    }
3422    // $ANTLR end "ruleDefinitionList"
3423
3424
3425    // $ANTLR start "entryRuleSingleDefinition"
3426    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1333:1: entryRuleSingleDefinition returns [EObject current=null] : iv_ruleSingleDefinition= ruleSingleDefinition EOF ;
3427    public final EObject entryRuleSingleDefinition() throws RecognitionException {
3428        EObject current = null;
3429
3430        EObject iv_ruleSingleDefinition = null;
3431
3432
3433        try {
3434            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1334:2: (iv_ruleSingleDefinition= ruleSingleDefinition EOF )
3435            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1335:2: iv_ruleSingleDefinition= ruleSingleDefinition EOF
3436            {
3437             newCompositeNode(grammarAccess.getSingleDefinitionRule());
3438            pushFollow(FOLLOW_ruleSingleDefinition_in_entryRuleSingleDefinition2794);
3439            iv_ruleSingleDefinition=ruleSingleDefinition();
3440
3441            state._fsp--;
3442
3443             current =iv_ruleSingleDefinition;
3444            match(input,EOF,FOLLOW_EOF_in_entryRuleSingleDefinition2804);
3445
3446            }
3447
3448        }
3449         
3450            catch (RecognitionException re) {
3451                recover(input,re);
3452                appendSkippedTokens();
3453            }
3454        finally {
3455        }
3456        return current;
3457    }
3458    // $ANTLR end "entryRuleSingleDefinition"
3459
3460
3461    // $ANTLR start "ruleSingleDefinition"
3462    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1342:1: ruleSingleDefinition returns [EObject current=null] : ( (lv_terms_0_0= ruleTerm ) )+ ;
3463    public final EObject ruleSingleDefinition() throws RecognitionException {
3464        EObject current = null;
3465
3466        EObject lv_terms_0_0 = null;
3467
3468
3469         enterRule();
3470           
3471        try {
3472            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1345:28: ( ( (lv_terms_0_0= ruleTerm ) )+ )
3473            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1346:1: ( (lv_terms_0_0= ruleTerm ) )+
3474            {
3475            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1346:1: ( (lv_terms_0_0= ruleTerm ) )+
3476            int cnt32=0;
3477            loop32:
3478            do {
3479                int alt32=2;
3480                int LA32_0 = input.LA(1);
3481
3482                if ( (LA32_0==RULE_ID) ) {
3483                    int LA32_2 = input.LA(2);
3484
3485                    if ( (LA32_2==EOF||(LA32_2>=RULE_ID && LA32_2<=RULE_INT)||LA32_2==RULE_COLON||LA32_2==15||LA32_2==27||(LA32_2>=29 && LA32_2<=33)) ) {
3486                        alt32=1;
3487                    }
3488                    else if ( (LA32_2==26) ) {
3489                        int LA32_4 = input.LA(3);
3490
3491                        if ( (LA32_4==RULE_ID||LA32_4==RULE_STRING||LA32_4==RULE_COLON||LA32_4==26||(LA32_4>=32 && LA32_4<=33)) ) {
3492                            alt32=1;
3493                        }
3494
3495
3496                    }
3497
3498
3499                }
3500                else if ( (LA32_0==RULE_STRING||LA32_0==RULE_COLON||LA32_0==26||(LA32_0>=32 && LA32_0<=33)) ) {
3501                    alt32=1;
3502                }
3503
3504
3505                switch (alt32) {
3506                case 1 :
3507                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1347:1: (lv_terms_0_0= ruleTerm )
3508                    {
3509                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1347:1: (lv_terms_0_0= ruleTerm )
3510                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1348:3: lv_terms_0_0= ruleTerm
3511                    {
3512                     
3513                                newCompositeNode(grammarAccess.getSingleDefinitionAccess().getTermsTermParserRuleCall_0());
3514                           
3515                    pushFollow(FOLLOW_ruleTerm_in_ruleSingleDefinition2849);
3516                    lv_terms_0_0=ruleTerm();
3517
3518                    state._fsp--;
3519
3520
3521                                if (current==null) {
3522                                    current = createModelElementForParent(grammarAccess.getSingleDefinitionRule());
3523                                }
3524                                        add(
3525                                                current,
3526                                                "terms",
3527                                        lv_terms_0_0,
3528                                        "Term");
3529                                afterParserOrEnumRuleCall();
3530                           
3531
3532                    }
3533
3534
3535                    }
3536                    break;
3537
3538                default :
3539                    if ( cnt32 >= 1 ) break loop32;
3540                        EarlyExitException eee =
3541                            new EarlyExitException(32, input);
3542                        throw eee;
3543                }
3544                cnt32++;
3545            } while (true);
3546
3547
3548            }
3549
3550             leaveRule();
3551        }
3552         
3553            catch (RecognitionException re) {
3554                recover(input,re);
3555                appendSkippedTokens();
3556            }
3557        finally {
3558        }
3559        return current;
3560    }
3561    // $ANTLR end "ruleSingleDefinition"
3562
3563
3564    // $ANTLR start "entryRuleTerm"
3565    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1372:1: entryRuleTerm returns [EObject current=null] : iv_ruleTerm= ruleTerm EOF ;
3566    public final EObject entryRuleTerm() throws RecognitionException {
3567        EObject current = null;
3568
3569        EObject iv_ruleTerm = null;
3570
3571
3572        try {
3573            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1373:2: (iv_ruleTerm= ruleTerm EOF )
3574            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1374:2: iv_ruleTerm= ruleTerm EOF
3575            {
3576             newCompositeNode(grammarAccess.getTermRule());
3577            pushFollow(FOLLOW_ruleTerm_in_entryRuleTerm2885);
3578            iv_ruleTerm=ruleTerm();
3579
3580            state._fsp--;
3581
3582             current =iv_ruleTerm;
3583            match(input,EOF,FOLLOW_EOF_in_entryRuleTerm2895);
3584
3585            }
3586
3587        }
3588         
3589            catch (RecognitionException re) {
3590                recover(input,re);
3591                appendSkippedTokens();
3592            }
3593        finally {
3594        }
3595        return current;
3596    }
3597    // $ANTLR end "entryRuleTerm"
3598
3599
3600    // $ANTLR start "ruleTerm"
3601    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1381:1: ruleTerm returns [EObject current=null] : ( ( (lv_termAtom_0_0= ruleAtom ) ) | ( (lv_termGroupedSequence_1_0= ruleGroupedSequence ) ) | ( (lv_termOptionalSequence_2_0= ruleOptionalSequence ) ) | ( (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) ) ) ;
3602    public final EObject ruleTerm() throws RecognitionException {
3603        EObject current = null;
3604
3605        EObject lv_termAtom_0_0 = null;
3606
3607        EObject lv_termGroupedSequence_1_0 = null;
3608
3609        EObject lv_termOptionalSequence_2_0 = null;
3610
3611        EObject lv_termRepeatedSequence_3_0 = null;
3612
3613
3614         enterRule();
3615           
3616        try {
3617            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1384:28: ( ( ( (lv_termAtom_0_0= ruleAtom ) ) | ( (lv_termGroupedSequence_1_0= ruleGroupedSequence ) ) | ( (lv_termOptionalSequence_2_0= ruleOptionalSequence ) ) | ( (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) ) ) )
3618            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1385:1: ( ( (lv_termAtom_0_0= ruleAtom ) ) | ( (lv_termGroupedSequence_1_0= ruleGroupedSequence ) ) | ( (lv_termOptionalSequence_2_0= ruleOptionalSequence ) ) | ( (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) ) )
3619            {
3620            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1385:1: ( ( (lv_termAtom_0_0= ruleAtom ) ) | ( (lv_termGroupedSequence_1_0= ruleGroupedSequence ) ) | ( (lv_termOptionalSequence_2_0= ruleOptionalSequence ) ) | ( (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) ) )
3621            int alt33=4;
3622            switch ( input.LA(1) ) {
3623            case RULE_ID:
3624            case RULE_STRING:
3625            case RULE_COLON:
3626                {
3627                alt33=1;
3628                }
3629                break;
3630            case 26:
3631                {
3632                alt33=2;
3633                }
3634                break;
3635            case 32:
3636                {
3637                alt33=3;
3638                }
3639                break;
3640            case 33:
3641                {
3642                alt33=4;
3643                }
3644                break;
3645            default:
3646                NoViableAltException nvae =
3647                    new NoViableAltException("", 33, 0, input);
3648
3649                throw nvae;
3650            }
3651
3652            switch (alt33) {
3653                case 1 :
3654                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1385:2: ( (lv_termAtom_0_0= ruleAtom ) )
3655                    {
3656                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1385:2: ( (lv_termAtom_0_0= ruleAtom ) )
3657                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1386:1: (lv_termAtom_0_0= ruleAtom )
3658                    {
3659                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1386:1: (lv_termAtom_0_0= ruleAtom )
3660                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1387:3: lv_termAtom_0_0= ruleAtom
3661                    {
3662                     
3663                                newCompositeNode(grammarAccess.getTermAccess().getTermAtomAtomParserRuleCall_0_0());
3664                           
3665                    pushFollow(FOLLOW_ruleAtom_in_ruleTerm2941);
3666                    lv_termAtom_0_0=ruleAtom();
3667
3668                    state._fsp--;
3669
3670
3671                                if (current==null) {
3672                                    current = createModelElementForParent(grammarAccess.getTermRule());
3673                                }
3674                                        set(
3675                                                current,
3676                                                "termAtom",
3677                                        lv_termAtom_0_0,
3678                                        "Atom");
3679                                afterParserOrEnumRuleCall();
3680                           
3681
3682                    }
3683
3684
3685                    }
3686
3687
3688                    }
3689                    break;
3690                case 2 :
3691                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1404:6: ( (lv_termGroupedSequence_1_0= ruleGroupedSequence ) )
3692                    {
3693                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1404:6: ( (lv_termGroupedSequence_1_0= ruleGroupedSequence ) )
3694                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1405:1: (lv_termGroupedSequence_1_0= ruleGroupedSequence )
3695                    {
3696                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1405:1: (lv_termGroupedSequence_1_0= ruleGroupedSequence )
3697                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1406:3: lv_termGroupedSequence_1_0= ruleGroupedSequence
3698                    {
3699                     
3700                                newCompositeNode(grammarAccess.getTermAccess().getTermGroupedSequenceGroupedSequenceParserRuleCall_1_0());
3701                           
3702                    pushFollow(FOLLOW_ruleGroupedSequence_in_ruleTerm2968);
3703                    lv_termGroupedSequence_1_0=ruleGroupedSequence();
3704
3705                    state._fsp--;
3706
3707
3708                                if (current==null) {
3709                                    current = createModelElementForParent(grammarAccess.getTermRule());
3710                                }
3711                                        set(
3712                                                current,
3713                                                "termGroupedSequence",
3714                                        lv_termGroupedSequence_1_0,
3715                                        "GroupedSequence");
3716                                afterParserOrEnumRuleCall();
3717                           
3718
3719                    }
3720
3721
3722                    }
3723
3724
3725                    }
3726                    break;
3727                case 3 :
3728                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1423:6: ( (lv_termOptionalSequence_2_0= ruleOptionalSequence ) )
3729                    {
3730                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1423:6: ( (lv_termOptionalSequence_2_0= ruleOptionalSequence ) )
3731                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1424:1: (lv_termOptionalSequence_2_0= ruleOptionalSequence )
3732                    {
3733                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1424:1: (lv_termOptionalSequence_2_0= ruleOptionalSequence )
3734                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1425:3: lv_termOptionalSequence_2_0= ruleOptionalSequence
3735                    {
3736                     
3737                                newCompositeNode(grammarAccess.getTermAccess().getTermOptionalSequenceOptionalSequenceParserRuleCall_2_0());
3738                           
3739                    pushFollow(FOLLOW_ruleOptionalSequence_in_ruleTerm2995);
3740                    lv_termOptionalSequence_2_0=ruleOptionalSequence();
3741
3742                    state._fsp--;
3743
3744
3745                                if (current==null) {
3746                                    current = createModelElementForParent(grammarAccess.getTermRule());
3747                                }
3748                                        set(
3749                                                current,
3750                                                "termOptionalSequence",
3751                                        lv_termOptionalSequence_2_0,
3752                                        "OptionalSequence");
3753                                afterParserOrEnumRuleCall();
3754                           
3755
3756                    }
3757
3758
3759                    }
3760
3761
3762                    }
3763                    break;
3764                case 4 :
3765                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1442:6: ( (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) )
3766                    {
3767                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1442:6: ( (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) )
3768                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1443:1: (lv_termRepeatedSequence_3_0= ruleRepeatedSequence )
3769                    {
3770                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1443:1: (lv_termRepeatedSequence_3_0= ruleRepeatedSequence )
3771                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1444:3: lv_termRepeatedSequence_3_0= ruleRepeatedSequence
3772                    {
3773                     
3774                                newCompositeNode(grammarAccess.getTermAccess().getTermRepeatedSequenceRepeatedSequenceParserRuleCall_3_0());
3775                           
3776                    pushFollow(FOLLOW_ruleRepeatedSequence_in_ruleTerm3022);
3777                    lv_termRepeatedSequence_3_0=ruleRepeatedSequence();
3778
3779                    state._fsp--;
3780
3781
3782                                if (current==null) {
3783                                    current = createModelElementForParent(grammarAccess.getTermRule());
3784                                }
3785                                        set(
3786                                                current,
3787                                                "termRepeatedSequence",
3788                                        lv_termRepeatedSequence_3_0,
3789                                        "RepeatedSequence");
3790                                afterParserOrEnumRuleCall();
3791                           
3792
3793                    }
3794
3795
3796                    }
3797
3798
3799                    }
3800                    break;
3801
3802            }
3803
3804
3805            }
3806
3807             leaveRule();
3808        }
3809         
3810            catch (RecognitionException re) {
3811                recover(input,re);
3812                appendSkippedTokens();
3813            }
3814        finally {
3815        }
3816        return current;
3817    }
3818    // $ANTLR end "ruleTerm"
3819
3820
3821    // $ANTLR start "entryRuleAtom"
3822    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1468:1: entryRuleAtom returns [EObject current=null] : iv_ruleAtom= ruleAtom EOF ;
3823    public final EObject entryRuleAtom() throws RecognitionException {
3824        EObject current = null;
3825
3826        EObject iv_ruleAtom = null;
3827
3828
3829        try {
3830            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1469:2: (iv_ruleAtom= ruleAtom EOF )
3831            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1470:2: iv_ruleAtom= ruleAtom EOF
3832            {
3833             newCompositeNode(grammarAccess.getAtomRule());
3834            pushFollow(FOLLOW_ruleAtom_in_entryRuleAtom3058);
3835            iv_ruleAtom=ruleAtom();
3836
3837            state._fsp--;
3838
3839             current =iv_ruleAtom;
3840            match(input,EOF,FOLLOW_EOF_in_entryRuleAtom3068);
3841
3842            }
3843
3844        }
3845         
3846            catch (RecognitionException re) {
3847                recover(input,re);
3848                appendSkippedTokens();
3849            }
3850        finally {
3851        }
3852        return current;
3853    }
3854    // $ANTLR end "entryRuleAtom"
3855
3856
3857    // $ANTLR start "ruleAtom"
3858    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1477:1: ruleAtom returns [EObject current=null] : ( ( (lv_atomStringRule_0_0= ruleStringRule ) ) | ( (lv_atomRuleReference_1_0= ruleRuleReference ) ) ) ;
3859    public final EObject ruleAtom() throws RecognitionException {
3860        EObject current = null;
3861
3862        EObject lv_atomStringRule_0_0 = null;
3863
3864        EObject lv_atomRuleReference_1_0 = null;
3865
3866
3867         enterRule();
3868           
3869        try {
3870            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1480:28: ( ( ( (lv_atomStringRule_0_0= ruleStringRule ) ) | ( (lv_atomRuleReference_1_0= ruleRuleReference ) ) ) )
3871            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1481:1: ( ( (lv_atomStringRule_0_0= ruleStringRule ) ) | ( (lv_atomRuleReference_1_0= ruleRuleReference ) ) )
3872            {
3873            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1481:1: ( ( (lv_atomStringRule_0_0= ruleStringRule ) ) | ( (lv_atomRuleReference_1_0= ruleRuleReference ) ) )
3874            int alt34=2;
3875            int LA34_0 = input.LA(1);
3876
3877            if ( (LA34_0==RULE_STRING||LA34_0==RULE_COLON) ) {
3878                alt34=1;
3879            }
3880            else if ( (LA34_0==RULE_ID) ) {
3881                alt34=2;
3882            }
3883            else {
3884                NoViableAltException nvae =
3885                    new NoViableAltException("", 34, 0, input);
3886
3887                throw nvae;
3888            }
3889            switch (alt34) {
3890                case 1 :
3891                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1481:2: ( (lv_atomStringRule_0_0= ruleStringRule ) )
3892                    {
3893                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1481:2: ( (lv_atomStringRule_0_0= ruleStringRule ) )
3894                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1482:1: (lv_atomStringRule_0_0= ruleStringRule )
3895                    {
3896                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1482:1: (lv_atomStringRule_0_0= ruleStringRule )
3897                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1483:3: lv_atomStringRule_0_0= ruleStringRule
3898                    {
3899                     
3900                                newCompositeNode(grammarAccess.getAtomAccess().getAtomStringRuleStringRuleParserRuleCall_0_0());
3901                           
3902                    pushFollow(FOLLOW_ruleStringRule_in_ruleAtom3114);
3903                    lv_atomStringRule_0_0=ruleStringRule();
3904
3905                    state._fsp--;
3906
3907
3908                                if (current==null) {
3909                                    current = createModelElementForParent(grammarAccess.getAtomRule());
3910                                }
3911                                        set(
3912                                                current,
3913                                                "atomStringRule",
3914                                        lv_atomStringRule_0_0,
3915                                        "StringRule");
3916                                afterParserOrEnumRuleCall();
3917                           
3918
3919                    }
3920
3921
3922                    }
3923
3924
3925                    }
3926                    break;
3927                case 2 :
3928                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1500:6: ( (lv_atomRuleReference_1_0= ruleRuleReference ) )
3929                    {
3930                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1500:6: ( (lv_atomRuleReference_1_0= ruleRuleReference ) )
3931                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1501:1: (lv_atomRuleReference_1_0= ruleRuleReference )
3932                    {
3933                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1501:1: (lv_atomRuleReference_1_0= ruleRuleReference )
3934                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1502:3: lv_atomRuleReference_1_0= ruleRuleReference
3935                    {
3936                     
3937                                newCompositeNode(grammarAccess.getAtomAccess().getAtomRuleReferenceRuleReferenceParserRuleCall_1_0());
3938                           
3939                    pushFollow(FOLLOW_ruleRuleReference_in_ruleAtom3141);
3940                    lv_atomRuleReference_1_0=ruleRuleReference();
3941
3942                    state._fsp--;
3943
3944
3945                                if (current==null) {
3946                                    current = createModelElementForParent(grammarAccess.getAtomRule());
3947                                }
3948                                        set(
3949                                                current,
3950                                                "atomRuleReference",
3951                                        lv_atomRuleReference_1_0,
3952                                        "RuleReference");
3953                                afterParserOrEnumRuleCall();
3954                           
3955
3956                    }
3957
3958
3959                    }
3960
3961
3962                    }
3963                    break;
3964
3965            }
3966
3967
3968            }
3969
3970             leaveRule();
3971        }
3972         
3973            catch (RecognitionException re) {
3974                recover(input,re);
3975                appendSkippedTokens();
3976            }
3977        finally {
3978        }
3979        return current;
3980    }
3981    // $ANTLR end "ruleAtom"
3982
3983
3984    // $ANTLR start "entryRuleRuleReference"
3985    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1526:1: entryRuleRuleReference returns [EObject current=null] : iv_ruleRuleReference= ruleRuleReference EOF ;
3986    public final EObject entryRuleRuleReference() throws RecognitionException {
3987        EObject current = null;
3988
3989        EObject iv_ruleRuleReference = null;
3990
3991
3992        try {
3993            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1527:2: (iv_ruleRuleReference= ruleRuleReference EOF )
3994            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1528:2: iv_ruleRuleReference= ruleRuleReference EOF
3995            {
3996             newCompositeNode(grammarAccess.getRuleReferenceRule());
3997            pushFollow(FOLLOW_ruleRuleReference_in_entryRuleRuleReference3177);
3998            iv_ruleRuleReference=ruleRuleReference();
3999
4000            state._fsp--;
4001
4002             current =iv_ruleRuleReference;
4003            match(input,EOF,FOLLOW_EOF_in_entryRuleRuleReference3187);
4004
4005            }
4006
4007        }
4008         
4009            catch (RecognitionException re) {
4010                recover(input,re);
4011                appendSkippedTokens();
4012            }
4013        finally {
4014        }
4015        return current;
4016    }
4017    // $ANTLR end "entryRuleRuleReference"
4018
4019
4020    // $ANTLR start "ruleRuleReference"
4021    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1535:1: ruleRuleReference returns [EObject current=null] : ( (otherlv_0= RULE_ID ) ) ;
4022    public final EObject ruleRuleReference() throws RecognitionException {
4023        EObject current = null;
4024
4025        Token otherlv_0=null;
4026
4027         enterRule();
4028           
4029        try {
4030            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1538:28: ( ( (otherlv_0= RULE_ID ) ) )
4031            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1539:1: ( (otherlv_0= RULE_ID ) )
4032            {
4033            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1539:1: ( (otherlv_0= RULE_ID ) )
4034            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1540:1: (otherlv_0= RULE_ID )
4035            {
4036            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1540:1: (otherlv_0= RULE_ID )
4037            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1541:3: otherlv_0= RULE_ID
4038            {
4039
4040                                if (current==null) {
4041                            current = createModelElement(grammarAccess.getRuleReferenceRule());
4042                        }
4043                   
4044            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRuleReference3231);
4045
4046                        newLeafNode(otherlv_0, grammarAccess.getRuleReferenceAccess().getRulerefRuleCrossReference_0());
4047               
4048
4049            }
4050
4051
4052            }
4053
4054
4055            }
4056
4057             leaveRule();
4058        }
4059         
4060            catch (RecognitionException re) {
4061                recover(input,re);
4062                appendSkippedTokens();
4063            }
4064        finally {
4065        }
4066        return current;
4067    }
4068    // $ANTLR end "ruleRuleReference"
4069
4070
4071    // $ANTLR start "entryRuleStringRule"
4072    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1560:1: entryRuleStringRule returns [EObject current=null] : iv_ruleStringRule= ruleStringRule EOF ;
4073    public final EObject entryRuleStringRule() throws RecognitionException {
4074        EObject current = null;
4075
4076        EObject iv_ruleStringRule = null;
4077
4078
4079        try {
4080            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1561:2: (iv_ruleStringRule= ruleStringRule EOF )
4081            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1562:2: iv_ruleStringRule= ruleStringRule EOF
4082            {
4083             newCompositeNode(grammarAccess.getStringRuleRule());
4084            pushFollow(FOLLOW_ruleStringRule_in_entryRuleStringRule3266);
4085            iv_ruleStringRule=ruleStringRule();
4086
4087            state._fsp--;
4088
4089             current =iv_ruleStringRule;
4090            match(input,EOF,FOLLOW_EOF_in_entryRuleStringRule3276);
4091
4092            }
4093
4094        }
4095         
4096            catch (RecognitionException re) {
4097                recover(input,re);
4098                appendSkippedTokens();
4099            }
4100        finally {
4101        }
4102        return current;
4103    }
4104    // $ANTLR end "entryRuleStringRule"
4105
4106
4107    // $ANTLR start "ruleStringRule"
4108    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1569:1: ruleStringRule returns [EObject current=null] : ( ( (lv_literal_0_0= RULE_STRING ) ) | ( (lv_colon_1_0= RULE_COLON ) ) ) ;
4109    public final EObject ruleStringRule() throws RecognitionException {
4110        EObject current = null;
4111
4112        Token lv_literal_0_0=null;
4113        Token lv_colon_1_0=null;
4114
4115         enterRule();
4116           
4117        try {
4118            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1572:28: ( ( ( (lv_literal_0_0= RULE_STRING ) ) | ( (lv_colon_1_0= RULE_COLON ) ) ) )
4119            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1573:1: ( ( (lv_literal_0_0= RULE_STRING ) ) | ( (lv_colon_1_0= RULE_COLON ) ) )
4120            {
4121            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1573:1: ( ( (lv_literal_0_0= RULE_STRING ) ) | ( (lv_colon_1_0= RULE_COLON ) ) )
4122            int alt35=2;
4123            int LA35_0 = input.LA(1);
4124
4125            if ( (LA35_0==RULE_STRING) ) {
4126                alt35=1;
4127            }
4128            else if ( (LA35_0==RULE_COLON) ) {
4129                alt35=2;
4130            }
4131            else {
4132                NoViableAltException nvae =
4133                    new NoViableAltException("", 35, 0, input);
4134
4135                throw nvae;
4136            }
4137            switch (alt35) {
4138                case 1 :
4139                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1573:2: ( (lv_literal_0_0= RULE_STRING ) )
4140                    {
4141                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1573:2: ( (lv_literal_0_0= RULE_STRING ) )
4142                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1574:1: (lv_literal_0_0= RULE_STRING )
4143                    {
4144                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1574:1: (lv_literal_0_0= RULE_STRING )
4145                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1575:3: lv_literal_0_0= RULE_STRING
4146                    {
4147                    lv_literal_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleStringRule3318);
4148
4149                                        newLeafNode(lv_literal_0_0, grammarAccess.getStringRuleAccess().getLiteralSTRINGTerminalRuleCall_0_0());
4150                               
4151
4152                                if (current==null) {
4153                                    current = createModelElement(grammarAccess.getStringRuleRule());
4154                                }
4155                                        setWithLastConsumed(
4156                                                current,
4157                                                "literal",
4158                                        lv_literal_0_0,
4159                                        "STRING");
4160                           
4161
4162                    }
4163
4164
4165                    }
4166
4167
4168                    }
4169                    break;
4170                case 2 :
4171                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1592:6: ( (lv_colon_1_0= RULE_COLON ) )
4172                    {
4173                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1592:6: ( (lv_colon_1_0= RULE_COLON ) )
4174                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1593:1: (lv_colon_1_0= RULE_COLON )
4175                    {
4176                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1593:1: (lv_colon_1_0= RULE_COLON )
4177                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1594:3: lv_colon_1_0= RULE_COLON
4178                    {
4179                    lv_colon_1_0=(Token)match(input,RULE_COLON,FOLLOW_RULE_COLON_in_ruleStringRule3346);
4180
4181                                        newLeafNode(lv_colon_1_0, grammarAccess.getStringRuleAccess().getColonCOLONTerminalRuleCall_1_0());
4182                               
4183
4184                                if (current==null) {
4185                                    current = createModelElement(grammarAccess.getStringRuleRule());
4186                                }
4187                                        setWithLastConsumed(
4188                                                current,
4189                                                "colon",
4190                                        lv_colon_1_0,
4191                                        "COLON");
4192                           
4193
4194                    }
4195
4196
4197                    }
4198
4199
4200                    }
4201                    break;
4202
4203            }
4204
4205
4206            }
4207
4208             leaveRule();
4209        }
4210         
4211            catch (RecognitionException re) {
4212                recover(input,re);
4213                appendSkippedTokens();
4214            }
4215        finally {
4216        }
4217        return current;
4218    }
4219    // $ANTLR end "ruleStringRule"
4220
4221
4222    // $ANTLR start "entryRuleGroupedSequence"
4223    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1618:1: entryRuleGroupedSequence returns [EObject current=null] : iv_ruleGroupedSequence= ruleGroupedSequence EOF ;
4224    public final EObject entryRuleGroupedSequence() throws RecognitionException {
4225        EObject current = null;
4226
4227        EObject iv_ruleGroupedSequence = null;
4228
4229
4230        try {
4231            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1619:2: (iv_ruleGroupedSequence= ruleGroupedSequence EOF )
4232            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1620:2: iv_ruleGroupedSequence= ruleGroupedSequence EOF
4233            {
4234             newCompositeNode(grammarAccess.getGroupedSequenceRule());
4235            pushFollow(FOLLOW_ruleGroupedSequence_in_entryRuleGroupedSequence3387);
4236            iv_ruleGroupedSequence=ruleGroupedSequence();
4237
4238            state._fsp--;
4239
4240             current =iv_ruleGroupedSequence;
4241            match(input,EOF,FOLLOW_EOF_in_entryRuleGroupedSequence3397);
4242
4243            }
4244
4245        }
4246         
4247            catch (RecognitionException re) {
4248                recover(input,re);
4249                appendSkippedTokens();
4250            }
4251        finally {
4252        }
4253        return current;
4254    }
4255    // $ANTLR end "entryRuleGroupedSequence"
4256
4257
4258    // $ANTLR start "ruleGroupedSequence"
4259    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1627:1: ruleGroupedSequence returns [EObject current=null] : (otherlv_0= '(' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ')' ) ;
4260    public final EObject ruleGroupedSequence() throws RecognitionException {
4261        EObject current = null;
4262
4263        Token otherlv_0=null;
4264        Token otherlv_2=null;
4265        EObject lv_definitionList_1_0 = null;
4266
4267
4268         enterRule();
4269           
4270        try {
4271            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1630:28: ( (otherlv_0= '(' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ')' ) )
4272            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1631:1: (otherlv_0= '(' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ')' )
4273            {
4274            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1631:1: (otherlv_0= '(' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ')' )
4275            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1631:3: otherlv_0= '(' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ')'
4276            {
4277            otherlv_0=(Token)match(input,26,FOLLOW_26_in_ruleGroupedSequence3434);
4278
4279                        newLeafNode(otherlv_0, grammarAccess.getGroupedSequenceAccess().getLeftParenthesisKeyword_0());
4280               
4281            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1635:1: ( (lv_definitionList_1_0= ruleDefinitionList ) )
4282            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1636:1: (lv_definitionList_1_0= ruleDefinitionList )
4283            {
4284            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1636:1: (lv_definitionList_1_0= ruleDefinitionList )
4285            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1637:3: lv_definitionList_1_0= ruleDefinitionList
4286            {
4287             
4288                        newCompositeNode(grammarAccess.getGroupedSequenceAccess().getDefinitionListDefinitionListParserRuleCall_1_0());
4289                   
4290            pushFollow(FOLLOW_ruleDefinitionList_in_ruleGroupedSequence3455);
4291            lv_definitionList_1_0=ruleDefinitionList();
4292
4293            state._fsp--;
4294
4295
4296                        if (current==null) {
4297                            current = createModelElementForParent(grammarAccess.getGroupedSequenceRule());
4298                        }
4299                                add(
4300                                        current,
4301                                        "definitionList",
4302                                lv_definitionList_1_0,
4303                                "DefinitionList");
4304                        afterParserOrEnumRuleCall();
4305                   
4306
4307            }
4308
4309
4310            }
4311
4312            otherlv_2=(Token)match(input,27,FOLLOW_27_in_ruleGroupedSequence3467);
4313
4314                        newLeafNode(otherlv_2, grammarAccess.getGroupedSequenceAccess().getRightParenthesisKeyword_2());
4315               
4316
4317            }
4318
4319
4320            }
4321
4322             leaveRule();
4323        }
4324         
4325            catch (RecognitionException re) {
4326                recover(input,re);
4327                appendSkippedTokens();
4328            }
4329        finally {
4330        }
4331        return current;
4332    }
4333    // $ANTLR end "ruleGroupedSequence"
4334
4335
4336    // $ANTLR start "entryRuleOptionalSequence"
4337    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1665:1: entryRuleOptionalSequence returns [EObject current=null] : iv_ruleOptionalSequence= ruleOptionalSequence EOF ;
4338    public final EObject entryRuleOptionalSequence() throws RecognitionException {
4339        EObject current = null;
4340
4341        EObject iv_ruleOptionalSequence = null;
4342
4343
4344        try {
4345            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1666:2: (iv_ruleOptionalSequence= ruleOptionalSequence EOF )
4346            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1667:2: iv_ruleOptionalSequence= ruleOptionalSequence EOF
4347            {
4348             newCompositeNode(grammarAccess.getOptionalSequenceRule());
4349            pushFollow(FOLLOW_ruleOptionalSequence_in_entryRuleOptionalSequence3503);
4350            iv_ruleOptionalSequence=ruleOptionalSequence();
4351
4352            state._fsp--;
4353
4354             current =iv_ruleOptionalSequence;
4355            match(input,EOF,FOLLOW_EOF_in_entryRuleOptionalSequence3513);
4356
4357            }
4358
4359        }
4360         
4361            catch (RecognitionException re) {
4362                recover(input,re);
4363                appendSkippedTokens();
4364            }
4365        finally {
4366        }
4367        return current;
4368    }
4369    // $ANTLR end "entryRuleOptionalSequence"
4370
4371
4372    // $ANTLR start "ruleOptionalSequence"
4373    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1674:1: ruleOptionalSequence returns [EObject current=null] : (otherlv_0= '[' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ']' ) ;
4374    public final EObject ruleOptionalSequence() throws RecognitionException {
4375        EObject current = null;
4376
4377        Token otherlv_0=null;
4378        Token otherlv_2=null;
4379        EObject lv_definitionList_1_0 = null;
4380
4381
4382         enterRule();
4383           
4384        try {
4385            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1677:28: ( (otherlv_0= '[' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ']' ) )
4386            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1678:1: (otherlv_0= '[' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ']' )
4387            {
4388            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1678:1: (otherlv_0= '[' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ']' )
4389            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1678:3: otherlv_0= '[' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ']'
4390            {
4391            otherlv_0=(Token)match(input,32,FOLLOW_32_in_ruleOptionalSequence3550);
4392
4393                        newLeafNode(otherlv_0, grammarAccess.getOptionalSequenceAccess().getLeftSquareBracketKeyword_0());
4394               
4395            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1682:1: ( (lv_definitionList_1_0= ruleDefinitionList ) )
4396            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1683:1: (lv_definitionList_1_0= ruleDefinitionList )
4397            {
4398            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1683:1: (lv_definitionList_1_0= ruleDefinitionList )
4399            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1684:3: lv_definitionList_1_0= ruleDefinitionList
4400            {
4401             
4402                        newCompositeNode(grammarAccess.getOptionalSequenceAccess().getDefinitionListDefinitionListParserRuleCall_1_0());
4403                   
4404            pushFollow(FOLLOW_ruleDefinitionList_in_ruleOptionalSequence3571);
4405            lv_definitionList_1_0=ruleDefinitionList();
4406
4407            state._fsp--;
4408
4409
4410                        if (current==null) {
4411                            current = createModelElementForParent(grammarAccess.getOptionalSequenceRule());
4412                        }
4413                                add(
4414                                        current,
4415                                        "definitionList",
4416                                lv_definitionList_1_0,
4417                                "DefinitionList");
4418                        afterParserOrEnumRuleCall();
4419                   
4420
4421            }
4422
4423
4424            }
4425
4426            otherlv_2=(Token)match(input,29,FOLLOW_29_in_ruleOptionalSequence3583);
4427
4428                        newLeafNode(otherlv_2, grammarAccess.getOptionalSequenceAccess().getRightSquareBracketKeyword_2());
4429               
4430
4431            }
4432
4433
4434            }
4435
4436             leaveRule();
4437        }
4438         
4439            catch (RecognitionException re) {
4440                recover(input,re);
4441                appendSkippedTokens();
4442            }
4443        finally {
4444        }
4445        return current;
4446    }
4447    // $ANTLR end "ruleOptionalSequence"
4448
4449
4450    // $ANTLR start "entryRuleRepeatedSequence"
4451    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1712:1: entryRuleRepeatedSequence returns [EObject current=null] : iv_ruleRepeatedSequence= ruleRepeatedSequence EOF ;
4452    public final EObject entryRuleRepeatedSequence() throws RecognitionException {
4453        EObject current = null;
4454
4455        EObject iv_ruleRepeatedSequence = null;
4456
4457
4458        try {
4459            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1713:2: (iv_ruleRepeatedSequence= ruleRepeatedSequence EOF )
4460            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1714:2: iv_ruleRepeatedSequence= ruleRepeatedSequence EOF
4461            {
4462             newCompositeNode(grammarAccess.getRepeatedSequenceRule());
4463            pushFollow(FOLLOW_ruleRepeatedSequence_in_entryRuleRepeatedSequence3619);
4464            iv_ruleRepeatedSequence=ruleRepeatedSequence();
4465
4466            state._fsp--;
4467
4468             current =iv_ruleRepeatedSequence;
4469            match(input,EOF,FOLLOW_EOF_in_entryRuleRepeatedSequence3629);
4470
4471            }
4472
4473        }
4474         
4475            catch (RecognitionException re) {
4476                recover(input,re);
4477                appendSkippedTokens();
4478            }
4479        finally {
4480        }
4481        return current;
4482    }
4483    // $ANTLR end "entryRuleRepeatedSequence"
4484
4485
4486    // $ANTLR start "ruleRepeatedSequence"
4487    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1721:1: ruleRepeatedSequence returns [EObject current=null] : (otherlv_0= '{' ( (lv_definitions_1_0= ruleDefinitionList ) ) otherlv_2= '}' ( (lv_morethanonce_3_0= '+' ) )? ) ;
4488    public final EObject ruleRepeatedSequence() throws RecognitionException {
4489        EObject current = null;
4490
4491        Token otherlv_0=null;
4492        Token otherlv_2=null;
4493        Token lv_morethanonce_3_0=null;
4494        EObject lv_definitions_1_0 = null;
4495
4496
4497         enterRule();
4498           
4499        try {
4500            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1724:28: ( (otherlv_0= '{' ( (lv_definitions_1_0= ruleDefinitionList ) ) otherlv_2= '}' ( (lv_morethanonce_3_0= '+' ) )? ) )
4501            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1725:1: (otherlv_0= '{' ( (lv_definitions_1_0= ruleDefinitionList ) ) otherlv_2= '}' ( (lv_morethanonce_3_0= '+' ) )? )
4502            {
4503            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1725:1: (otherlv_0= '{' ( (lv_definitions_1_0= ruleDefinitionList ) ) otherlv_2= '}' ( (lv_morethanonce_3_0= '+' ) )? )
4504            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1725:3: otherlv_0= '{' ( (lv_definitions_1_0= ruleDefinitionList ) ) otherlv_2= '}' ( (lv_morethanonce_3_0= '+' ) )?
4505            {
4506            otherlv_0=(Token)match(input,33,FOLLOW_33_in_ruleRepeatedSequence3666);
4507
4508                        newLeafNode(otherlv_0, grammarAccess.getRepeatedSequenceAccess().getLeftCurlyBracketKeyword_0());
4509               
4510            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1729:1: ( (lv_definitions_1_0= ruleDefinitionList ) )
4511            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1730:1: (lv_definitions_1_0= ruleDefinitionList )
4512            {
4513            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1730:1: (lv_definitions_1_0= ruleDefinitionList )
4514            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1731:3: lv_definitions_1_0= ruleDefinitionList
4515            {
4516             
4517                        newCompositeNode(grammarAccess.getRepeatedSequenceAccess().getDefinitionsDefinitionListParserRuleCall_1_0());
4518                   
4519            pushFollow(FOLLOW_ruleDefinitionList_in_ruleRepeatedSequence3687);
4520            lv_definitions_1_0=ruleDefinitionList();
4521
4522            state._fsp--;
4523
4524
4525                        if (current==null) {
4526                            current = createModelElementForParent(grammarAccess.getRepeatedSequenceRule());
4527                        }
4528                                add(
4529                                        current,
4530                                        "definitions",
4531                                lv_definitions_1_0,
4532                                "DefinitionList");
4533                        afterParserOrEnumRuleCall();
4534                   
4535
4536            }
4537
4538
4539            }
4540
4541            otherlv_2=(Token)match(input,30,FOLLOW_30_in_ruleRepeatedSequence3699);
4542
4543                        newLeafNode(otherlv_2, grammarAccess.getRepeatedSequenceAccess().getRightCurlyBracketKeyword_2());
4544               
4545            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1751:1: ( (lv_morethanonce_3_0= '+' ) )?
4546            int alt36=2;
4547            int LA36_0 = input.LA(1);
4548
4549            if ( (LA36_0==35) ) {
4550                alt36=1;
4551            }
4552            switch (alt36) {
4553                case 1 :
4554                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1752:1: (lv_morethanonce_3_0= '+' )
4555                    {
4556                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1752:1: (lv_morethanonce_3_0= '+' )
4557                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1753:3: lv_morethanonce_3_0= '+'
4558                    {
4559                    lv_morethanonce_3_0=(Token)match(input,35,FOLLOW_35_in_ruleRepeatedSequence3717);
4560
4561                            newLeafNode(lv_morethanonce_3_0, grammarAccess.getRepeatedSequenceAccess().getMorethanoncePlusSignKeyword_3_0());
4562                       
4563
4564                                if (current==null) {
4565                                    current = createModelElement(grammarAccess.getRepeatedSequenceRule());
4566                                }
4567                                        setWithLastConsumed(current, "morethanonce", true, "+");
4568                           
4569
4570                    }
4571
4572
4573                    }
4574                    break;
4575
4576            }
4577
4578
4579            }
4580
4581
4582            }
4583
4584             leaveRule();
4585        }
4586         
4587            catch (RecognitionException re) {
4588                recover(input,re);
4589                appendSkippedTokens();
4590            }
4591        finally {
4592        }
4593        return current;
4594    }
4595    // $ANTLR end "ruleRepeatedSequence"
4596
4597    // Delegated rules
4598
4599
4600    protected DFA22 dfa22 = new DFA22(this);
4601    static final String DFA22_eotS =
4602        "\17\uffff";
4603    static final String DFA22_eofS =
4604        "\1\1\1\uffff\1\3\12\uffff\1\3\1\uffff";
4605    static final String DFA22_minS =
4606        "\1\4\1\uffff\1\4\12\uffff\2\4";
4607    static final String DFA22_maxS =
4608        "\1\43\1\uffff\1\43\12\uffff\1\43\1\33";
4609    static final String DFA22_acceptS =
4610        "\1\uffff\1\13\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12"+
4611        "\2\uffff";
4612    static final String DFA22_specialS =
4613        "\17\uffff}>";
4614    static final String[] DFA22_transitionS = {
4615            "\1\2\1\1\1\3\1\1\1\uffff\1\3\5\uffff\1\1\12\uffff\1\10\1\4\1"+
4616            "\uffff\1\5\1\6\1\7\1\11\1\12\1\13\1\14",
4617            "",
4618            "\4\3\1\uffff\1\3\5\uffff\1\3\11\uffff\1\1\1\15\1\3\1\uffff"+
4619            "\7\3",
4620            "",
4621            "",
4622            "",
4623            "",
4624            "",
4625            "",
4626            "",
4627            "",
4628            "",
4629            "",
4630            "\3\3\1\16\1\uffff\1\3\5\uffff\1\3\12\uffff\2\3\1\uffff\7\3",
4631            "\1\3\23\uffff\1\3\2\uffff\1\1"
4632    };
4633
4634    static final short[] DFA22_eot = DFA.unpackEncodedString(DFA22_eotS);
4635    static final short[] DFA22_eof = DFA.unpackEncodedString(DFA22_eofS);
4636    static final char[] DFA22_min = DFA.unpackEncodedStringToUnsignedChars(DFA22_minS);
4637    static final char[] DFA22_max = DFA.unpackEncodedStringToUnsignedChars(DFA22_maxS);
4638    static final short[] DFA22_accept = DFA.unpackEncodedString(DFA22_acceptS);
4639    static final short[] DFA22_special = DFA.unpackEncodedString(DFA22_specialS);
4640    static final short[][] DFA22_transition;
4641
4642    static {
4643        int numStates = DFA22_transitionS.length;
4644        DFA22_transition = new short[numStates][];
4645        for (int i=0; i<numStates; i++) {
4646            DFA22_transition[i] = DFA.unpackEncodedString(DFA22_transitionS[i]);
4647        }
4648    }
4649
4650    class DFA22 extends DFA {
4651
4652        public DFA22(BaseRecognizer recognizer) {
4653            this.recognizer = recognizer;
4654            this.decisionNumber = 22;
4655            this.eot = DFA22_eot;
4656            this.eof = DFA22_eof;
4657            this.min = DFA22_min;
4658            this.max = DFA22_max;
4659            this.accept = DFA22_accept;
4660            this.special = DFA22_special;
4661            this.transition = DFA22_transition;
4662        }
4663        public String getDescription() {
4664            return "()* loopback of 880:1: ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )*";
4665        }
4666    }
4667 
4668
4669    public static final BitSet FOLLOW_ruleEtsiBnf_in_entryRuleEtsiBnf75 = new BitSet(new long[]{0x0000000000000000L});
4670    public static final BitSet FOLLOW_EOF_in_entryRuleEtsiBnf85 = new BitSet(new long[]{0x0000000000000002L});
4671    public static final BitSet FOLLOW_13_in_ruleEtsiBnf123 = new BitSet(new long[]{0x0000000000000010L});
4672    public static final BitSet FOLLOW_RULE_ID_in_ruleEtsiBnf140 = new BitSet(new long[]{0x000000000000C000L});
4673    public static final BitSet FOLLOW_14_in_ruleEtsiBnf164 = new BitSet(new long[]{0x0000000000008000L});
4674    public static final BitSet FOLLOW_15_in_ruleEtsiBnf190 = new BitSet(new long[]{0x00000000000400B0L});
4675    public static final BitSet FOLLOW_ruleImportSection_in_ruleEtsiBnf211 = new BitSet(new long[]{0x00000000000400B0L});
4676    public static final BitSet FOLLOW_ruleBnfEntry_in_ruleEtsiBnf233 = new BitSet(new long[]{0x00000000000400B2L});
4677    public static final BitSet FOLLOW_16_in_ruleEtsiBnf261 = new BitSet(new long[]{0x0000000000008000L});
4678    public static final BitSet FOLLOW_15_in_ruleEtsiBnf286 = new BitSet(new long[]{0x00000000000400B2L});
4679    public static final BitSet FOLLOW_ruleImportSection_in_ruleEtsiBnf307 = new BitSet(new long[]{0x00000000000400B2L});
4680    public static final BitSet FOLLOW_ruleDeltaEntry_in_ruleEtsiBnf329 = new BitSet(new long[]{0x00000000000400B2L});
4681    public static final BitSet FOLLOW_17_in_ruleEtsiBnf356 = new BitSet(new long[]{0x0000000000008000L});
4682    public static final BitSet FOLLOW_15_in_ruleEtsiBnf381 = new BitSet(new long[]{0x000000D000040022L});
4683    public static final BitSet FOLLOW_ruleImportSection_in_ruleEtsiBnf402 = new BitSet(new long[]{0x000000D000000022L});
4684    public static final BitSet FOLLOW_ruleMergeEntry_in_ruleEtsiBnf424 = new BitSet(new long[]{0x000000D000000022L});
4685    public static final BitSet FOLLOW_ruleImportSection_in_entryRuleImportSection462 = new BitSet(new long[]{0x0000000000000000L});
4686    public static final BitSet FOLLOW_EOF_in_entryRuleImportSection472 = new BitSet(new long[]{0x0000000000000002L});
4687    public static final BitSet FOLLOW_ruleImport_in_ruleImportSection517 = new BitSet(new long[]{0x0000000000040002L});
4688    public static final BitSet FOLLOW_ruleBnfEntry_in_entryRuleBnfEntry553 = new BitSet(new long[]{0x0000000000000000L});
4689    public static final BitSet FOLLOW_EOF_in_entryRuleBnfEntry563 = new BitSet(new long[]{0x0000000000000002L});
4690    public static final BitSet FOLLOW_ruleSectionHeading_in_ruleBnfEntry609 = new BitSet(new long[]{0x0000000000000002L});
4691    public static final BitSet FOLLOW_ruleRule_in_ruleBnfEntry636 = new BitSet(new long[]{0x0000000000000002L});
4692    public static final BitSet FOLLOW_ruleDeltaEntry_in_entryRuleDeltaEntry672 = new BitSet(new long[]{0x0000000000000000L});
4693    public static final BitSet FOLLOW_EOF_in_entryRuleDeltaEntry682 = new BitSet(new long[]{0x0000000000000002L});
4694    public static final BitSet FOLLOW_ruleRule_in_ruleDeltaEntry728 = new BitSet(new long[]{0x0000000000000002L});
4695    public static final BitSet FOLLOW_ruleSectionHeading_in_ruleDeltaEntry755 = new BitSet(new long[]{0x0000000000000002L});
4696    public static final BitSet FOLLOW_ruleExtRule_in_ruleDeltaEntry782 = new BitSet(new long[]{0x0000000000000002L});
4697    public static final BitSet FOLLOW_ruleMergeEntry_in_entryRuleMergeEntry818 = new BitSet(new long[]{0x0000000000000000L});
4698    public static final BitSet FOLLOW_EOF_in_entryRuleMergeEntry828 = new BitSet(new long[]{0x0000000000000002L});
4699    public static final BitSet FOLLOW_ruleSectionHeading_in_ruleMergeEntry874 = new BitSet(new long[]{0x0000000000000002L});
4700    public static final BitSet FOLLOW_ruleMergeRule_in_ruleMergeEntry901 = new BitSet(new long[]{0x0000000000000002L});
4701    public static final BitSet FOLLOW_ruleSectionHeading_in_entryRuleSectionHeading937 = new BitSet(new long[]{0x0000000000000000L});
4702    public static final BitSet FOLLOW_EOF_in_entryRuleSectionHeading947 = new BitSet(new long[]{0x0000000000000002L});
4703    public static final BitSet FOLLOW_RULE_SECTIONHEADER_in_ruleSectionHeading998 = new BitSet(new long[]{0x0000000000000002L});
4704    public static final BitSet FOLLOW_ruleImport_in_entryRuleImport1039 = new BitSet(new long[]{0x0000000000000000L});
4705    public static final BitSet FOLLOW_EOF_in_entryRuleImport1049 = new BitSet(new long[]{0x0000000000000002L});
4706    public static final BitSet FOLLOW_18_in_ruleImport1086 = new BitSet(new long[]{0x0000000000000040L});
4707    public static final BitSet FOLLOW_RULE_STRING_in_ruleImport1103 = new BitSet(new long[]{0x0000000000888000L});
4708    public static final BitSet FOLLOW_19_in_ruleImport1121 = new BitSet(new long[]{0x0000000000700000L});
4709    public static final BitSet FOLLOW_20_in_ruleImport1140 = new BitSet(new long[]{0x0000000000808000L});
4710    public static final BitSet FOLLOW_21_in_ruleImport1177 = new BitSet(new long[]{0x0000000000808000L});
4711    public static final BitSet FOLLOW_22_in_ruleImport1214 = new BitSet(new long[]{0x0000000000808000L});
4712    public static final BitSet FOLLOW_23_in_ruleImport1243 = new BitSet(new long[]{0x0000000000000010L});
4713    public static final BitSet FOLLOW_RULE_ID_in_ruleImport1260 = new BitSet(new long[]{0x0000000000008000L});
4714    public static final BitSet FOLLOW_15_in_ruleImport1279 = new BitSet(new long[]{0x0000000000000002L});
4715    public static final BitSet FOLLOW_ruleRule_in_entryRuleRule1315 = new BitSet(new long[]{0x0000000000000000L});
4716    public static final BitSet FOLLOW_EOF_in_entryRuleRule1325 = new BitSet(new long[]{0x0000000000000002L});
4717    public static final BitSet FOLLOW_RULE_INT_in_ruleRule1368 = new BitSet(new long[]{0x0000000001000010L});
4718    public static final BitSet FOLLOW_RULE_ID_in_ruleRule1390 = new BitSet(new long[]{0x0000000001000000L});
4719    public static final BitSet FOLLOW_24_in_ruleRule1408 = new BitSet(new long[]{0x0000000000000010L});
4720    public static final BitSet FOLLOW_RULE_ID_in_ruleRule1427 = new BitSet(new long[]{0x0000000002000000L});
4721    public static final BitSet FOLLOW_25_in_ruleRule1444 = new BitSet(new long[]{0x0000000304008252L});
4722    public static final BitSet FOLLOW_ruleDefinitionList_in_ruleRule1465 = new BitSet(new long[]{0x0000000000008002L});
4723    public static final BitSet FOLLOW_15_in_ruleRule1479 = new BitSet(new long[]{0x0000000000000002L});
4724    public static final BitSet FOLLOW_ruleExtRule_in_entryRuleExtRule1517 = new BitSet(new long[]{0x0000000000000000L});
4725    public static final BitSet FOLLOW_EOF_in_entryRuleExtRule1527 = new BitSet(new long[]{0x0000000000000002L});
4726    public static final BitSet FOLLOW_RULE_INT_in_ruleExtRule1570 = new BitSet(new long[]{0x0000000001000010L});
4727    public static final BitSet FOLLOW_RULE_ID_in_ruleExtRule1592 = new BitSet(new long[]{0x0000000001000000L});
4728    public static final BitSet FOLLOW_24_in_ruleExtRule1610 = new BitSet(new long[]{0x0000000000000010L});
4729    public static final BitSet FOLLOW_RULE_ID_in_ruleExtRule1629 = new BitSet(new long[]{0x0000000004000000L});
4730    public static final BitSet FOLLOW_26_in_ruleExtRule1647 = new BitSet(new long[]{0x0000000000000080L});
4731    public static final BitSet FOLLOW_RULE_INT_in_ruleExtRule1664 = new BitSet(new long[]{0x0000000008000000L});
4732    public static final BitSet FOLLOW_27_in_ruleExtRule1681 = new BitSet(new long[]{0x0000000010000000L});
4733    public static final BitSet FOLLOW_28_in_ruleExtRule1694 = new BitSet(new long[]{0x0000000FEC008252L});
4734    public static final BitSet FOLLOW_ruleAtom_in_ruleExtRule1716 = new BitSet(new long[]{0x0000000FEC008252L});
4735    public static final BitSet FOLLOW_27_in_ruleExtRule1734 = new BitSet(new long[]{0x0000000FEC008252L});
4736    public static final BitSet FOLLOW_29_in_ruleExtRule1752 = new BitSet(new long[]{0x0000000FEC008252L});
4737    public static final BitSet FOLLOW_30_in_ruleExtRule1770 = new BitSet(new long[]{0x0000000FEC008252L});
4738    public static final BitSet FOLLOW_31_in_ruleExtRule1788 = new BitSet(new long[]{0x0000000FEC008252L});
4739    public static final BitSet FOLLOW_26_in_ruleExtRule1806 = new BitSet(new long[]{0x0000000FEC008252L});
4740    public static final BitSet FOLLOW_32_in_ruleExtRule1824 = new BitSet(new long[]{0x0000000FEC008252L});
4741    public static final BitSet FOLLOW_33_in_ruleExtRule1842 = new BitSet(new long[]{0x0000000FEC008252L});
4742    public static final BitSet FOLLOW_34_in_ruleExtRule1860 = new BitSet(new long[]{0x0000000FEC008252L});
4743    public static final BitSet FOLLOW_35_in_ruleExtRule1878 = new BitSet(new long[]{0x0000000FEC008252L});
4744    public static final BitSet FOLLOW_15_in_ruleExtRule1893 = new BitSet(new long[]{0x0000000000000002L});
4745    public static final BitSet FOLLOW_ruleMergeRule_in_entryRuleMergeRule1931 = new BitSet(new long[]{0x0000000000000000L});
4746    public static final BitSet FOLLOW_EOF_in_entryRuleMergeRule1941 = new BitSet(new long[]{0x0000000000000002L});
4747    public static final BitSet FOLLOW_ruleGlobalCombinator_in_ruleMergeRule1988 = new BitSet(new long[]{0x0000000000000002L});
4748    public static final BitSet FOLLOW_ruleRuleCombinator_in_ruleMergeRule2015 = new BitSet(new long[]{0x0000000000000002L});
4749    public static final BitSet FOLLOW_ruleHookCombinator_in_ruleMergeRule2042 = new BitSet(new long[]{0x0000000000000002L});
4750    public static final BitSet FOLLOW_ruleGlobalCombinator_in_entryRuleGlobalCombinator2077 = new BitSet(new long[]{0x0000000000000000L});
4751    public static final BitSet FOLLOW_EOF_in_entryRuleGlobalCombinator2087 = new BitSet(new long[]{0x0000000000000002L});
4752    public static final BitSet FOLLOW_36_in_ruleGlobalCombinator2125 = new BitSet(new long[]{0x0000002000000000L});
4753    public static final BitSet FOLLOW_37_in_ruleGlobalCombinator2137 = new BitSet(new long[]{0x0000000000000100L});
4754    public static final BitSet FOLLOW_RULE_LOGIC_in_ruleGlobalCombinator2155 = new BitSet(new long[]{0x0000000000008002L});
4755    public static final BitSet FOLLOW_15_in_ruleGlobalCombinator2173 = new BitSet(new long[]{0x0000000000000002L});
4756    public static final BitSet FOLLOW_ruleRuleCombinator_in_entryRuleRuleCombinator2211 = new BitSet(new long[]{0x0000000000000000L});
4757    public static final BitSet FOLLOW_EOF_in_entryRuleRuleCombinator2221 = new BitSet(new long[]{0x0000000000000002L});
4758    public static final BitSet FOLLOW_38_in_ruleRuleCombinator2259 = new BitSet(new long[]{0x0000002000000000L});
4759    public static final BitSet FOLLOW_37_in_ruleRuleCombinator2271 = new BitSet(new long[]{0x0000000000000010L});
4760    public static final BitSet FOLLOW_RULE_ID_in_ruleRuleCombinator2288 = new BitSet(new long[]{0x0000000000000100L});
4761    public static final BitSet FOLLOW_RULE_LOGIC_in_ruleRuleCombinator2311 = new BitSet(new long[]{0x0000000004008002L});
4762    public static final BitSet FOLLOW_26_in_ruleRuleCombinator2329 = new BitSet(new long[]{0x0000000000000040L});
4763    public static final BitSet FOLLOW_RULE_STRING_in_ruleRuleCombinator2346 = new BitSet(new long[]{0x0000000008000000L});
4764    public static final BitSet FOLLOW_27_in_ruleRuleCombinator2363 = new BitSet(new long[]{0x0000000004008002L});
4765    public static final BitSet FOLLOW_15_in_ruleRuleCombinator2378 = new BitSet(new long[]{0x0000000000000002L});
4766    public static final BitSet FOLLOW_ruleHookCombinator_in_entryRuleHookCombinator2416 = new BitSet(new long[]{0x0000000000000000L});
4767    public static final BitSet FOLLOW_EOF_in_entryRuleHookCombinator2426 = new BitSet(new long[]{0x0000000000000002L});
4768    public static final BitSet FOLLOW_39_in_ruleHookCombinator2463 = new BitSet(new long[]{0x0000002000000000L});
4769    public static final BitSet FOLLOW_37_in_ruleHookCombinator2475 = new BitSet(new long[]{0x0000000000000010L});
4770    public static final BitSet FOLLOW_RULE_ID_in_ruleHookCombinator2492 = new BitSet(new long[]{0x0000000004000000L});
4771    public static final BitSet FOLLOW_26_in_ruleHookCombinator2509 = new BitSet(new long[]{0x0000000000000080L});
4772    public static final BitSet FOLLOW_RULE_INT_in_ruleHookCombinator2526 = new BitSet(new long[]{0x0000000008000000L});
4773    public static final BitSet FOLLOW_27_in_ruleHookCombinator2543 = new BitSet(new long[]{0x0000000004000100L});
4774    public static final BitSet FOLLOW_RULE_LOGIC_in_ruleHookCombinator2560 = new BitSet(new long[]{0x0000000004000000L});
4775    public static final BitSet FOLLOW_26_in_ruleHookCombinator2579 = new BitSet(new long[]{0x0000000000000040L});
4776    public static final BitSet FOLLOW_RULE_STRING_in_ruleHookCombinator2596 = new BitSet(new long[]{0x0000000008000000L});
4777    public static final BitSet FOLLOW_27_in_ruleHookCombinator2613 = new BitSet(new long[]{0x0000000004008002L});
4778    public static final BitSet FOLLOW_15_in_ruleHookCombinator2628 = new BitSet(new long[]{0x0000000000000002L});
4779    public static final BitSet FOLLOW_ruleDefinitionList_in_entryRuleDefinitionList2666 = new BitSet(new long[]{0x0000000000000000L});
4780    public static final BitSet FOLLOW_EOF_in_entryRuleDefinitionList2676 = new BitSet(new long[]{0x0000000000000002L});
4781    public static final BitSet FOLLOW_ruleSingleDefinition_in_ruleDefinitionList2722 = new BitSet(new long[]{0x0000000080000002L});
4782    public static final BitSet FOLLOW_31_in_ruleDefinitionList2735 = new BitSet(new long[]{0x0000000304000250L});
4783    public static final BitSet FOLLOW_ruleSingleDefinition_in_ruleDefinitionList2756 = new BitSet(new long[]{0x0000000080000002L});
4784    public static final BitSet FOLLOW_ruleSingleDefinition_in_entryRuleSingleDefinition2794 = new BitSet(new long[]{0x0000000000000000L});
4785    public static final BitSet FOLLOW_EOF_in_entryRuleSingleDefinition2804 = new BitSet(new long[]{0x0000000000000002L});
4786    public static final BitSet FOLLOW_ruleTerm_in_ruleSingleDefinition2849 = new BitSet(new long[]{0x0000000304000252L});
4787    public static final BitSet FOLLOW_ruleTerm_in_entryRuleTerm2885 = new BitSet(new long[]{0x0000000000000000L});
4788    public static final BitSet FOLLOW_EOF_in_entryRuleTerm2895 = new BitSet(new long[]{0x0000000000000002L});
4789    public static final BitSet FOLLOW_ruleAtom_in_ruleTerm2941 = new BitSet(new long[]{0x0000000000000002L});
4790    public static final BitSet FOLLOW_ruleGroupedSequence_in_ruleTerm2968 = new BitSet(new long[]{0x0000000000000002L});
4791    public static final BitSet FOLLOW_ruleOptionalSequence_in_ruleTerm2995 = new BitSet(new long[]{0x0000000000000002L});
4792    public static final BitSet FOLLOW_ruleRepeatedSequence_in_ruleTerm3022 = new BitSet(new long[]{0x0000000000000002L});
4793    public static final BitSet FOLLOW_ruleAtom_in_entryRuleAtom3058 = new BitSet(new long[]{0x0000000000000000L});
4794    public static final BitSet FOLLOW_EOF_in_entryRuleAtom3068 = new BitSet(new long[]{0x0000000000000002L});
4795    public static final BitSet FOLLOW_ruleStringRule_in_ruleAtom3114 = new BitSet(new long[]{0x0000000000000002L});
4796    public static final BitSet FOLLOW_ruleRuleReference_in_ruleAtom3141 = new BitSet(new long[]{0x0000000000000002L});
4797    public static final BitSet FOLLOW_ruleRuleReference_in_entryRuleRuleReference3177 = new BitSet(new long[]{0x0000000000000000L});
4798    public static final BitSet FOLLOW_EOF_in_entryRuleRuleReference3187 = new BitSet(new long[]{0x0000000000000002L});
4799    public static final BitSet FOLLOW_RULE_ID_in_ruleRuleReference3231 = new BitSet(new long[]{0x0000000000000002L});
4800    public static final BitSet FOLLOW_ruleStringRule_in_entryRuleStringRule3266 = new BitSet(new long[]{0x0000000000000000L});
4801    public static final BitSet FOLLOW_EOF_in_entryRuleStringRule3276 = new BitSet(new long[]{0x0000000000000002L});
4802    public static final BitSet FOLLOW_RULE_STRING_in_ruleStringRule3318 = new BitSet(new long[]{0x0000000000000002L});
4803    public static final BitSet FOLLOW_RULE_COLON_in_ruleStringRule3346 = new BitSet(new long[]{0x0000000000000002L});
4804    public static final BitSet FOLLOW_ruleGroupedSequence_in_entryRuleGroupedSequence3387 = new BitSet(new long[]{0x0000000000000000L});
4805    public static final BitSet FOLLOW_EOF_in_entryRuleGroupedSequence3397 = new BitSet(new long[]{0x0000000000000002L});
4806    public static final BitSet FOLLOW_26_in_ruleGroupedSequence3434 = new BitSet(new long[]{0x0000000304000250L});
4807    public static final BitSet FOLLOW_ruleDefinitionList_in_ruleGroupedSequence3455 = new BitSet(new long[]{0x0000000008000000L});
4808    public static final BitSet FOLLOW_27_in_ruleGroupedSequence3467 = new BitSet(new long[]{0x0000000000000002L});
4809    public static final BitSet FOLLOW_ruleOptionalSequence_in_entryRuleOptionalSequence3503 = new BitSet(new long[]{0x0000000000000000L});
4810    public static final BitSet FOLLOW_EOF_in_entryRuleOptionalSequence3513 = new BitSet(new long[]{0x0000000000000002L});
4811    public static final BitSet FOLLOW_32_in_ruleOptionalSequence3550 = new BitSet(new long[]{0x0000000304000250L});
4812    public static final BitSet FOLLOW_ruleDefinitionList_in_ruleOptionalSequence3571 = new BitSet(new long[]{0x0000000020000000L});
4813    public static final BitSet FOLLOW_29_in_ruleOptionalSequence3583 = new BitSet(new long[]{0x0000000000000002L});
4814    public static final BitSet FOLLOW_ruleRepeatedSequence_in_entryRuleRepeatedSequence3619 = new BitSet(new long[]{0x0000000000000000L});
4815    public static final BitSet FOLLOW_EOF_in_entryRuleRepeatedSequence3629 = new BitSet(new long[]{0x0000000000000002L});
4816    public static final BitSet FOLLOW_33_in_ruleRepeatedSequence3666 = new BitSet(new long[]{0x0000000304000250L});
4817    public static final BitSet FOLLOW_ruleDefinitionList_in_ruleRepeatedSequence3687 = new BitSet(new long[]{0x0000000040000000L});
4818    public static final BitSet FOLLOW_30_in_ruleRepeatedSequence3699 = new BitSet(new long[]{0x0000000800000002L});
4819    public static final BitSet FOLLOW_35_in_ruleRepeatedSequence3717 = new BitSet(new long[]{0x0000000000000002L});
4820
4821}
Note: See TracBrowser for help on using the repository browser.