OSDN Git Service

imported from subversion repository
[xerial/xerial-core.git] / src / main / java / org / xerial / util / xml / dtd / impl / DTDParser.java
1 // $ANTLR 3.1.3 Mar 17, 2009 19:23:44 DTD.g 2009-10-21 09:39:48\r
2 \r
3 //--------------------------------------------------\r
4 // Xerial -- Transactional XML Database System      \r
5 // \r
6 // DTDParser.g\r
7 // Since  2007/07/25 11:40:17\r
8 // \r
9 //--------------------------------------------------\r
10 package org.xerial.util.xml.dtd.impl;\r
11 //import org.xerial.util.log.Logger;\r
12 \r
13 \r
14 import org.antlr.runtime.*;\r
15 import java.util.Stack;\r
16 import java.util.List;\r
17 import java.util.ArrayList;\r
18 import java.util.Map;\r
19 import java.util.HashMap;\r
20 \r
21 import org.antlr.runtime.tree.*;\r
22 \r
23 public class DTDParser extends Parser {\r
24     public static final String[] tokenNames = new String[] {\r
25         "<invalid>", "<EOR>", "<DOWN>", "<UP>", "DTD", "STRINGTYPE", "TOKENIZEDTYPE", "ENUMTYPE", "NAME", "ATTRIBUTE", "ATTLIST", "DECL", "TYPE", "ELEMENT", "COMPONENT", "OCCURRENCE", "CONTENTSPEC", "ENTITY", "ENTITY_REF", "VALUE", "ML_COMMENT", "At", "Colon", "Comma", "Apos", "Quot", "Dot", "SemiColon", "LParen", "RParen", "Letter", "Digit", "Digits", "NameChar", "WhiteSpaceChar", "String", "Name", "Reference", "AttValue", "EntityRef", "CharRef", "DefaultDecl", "Element", "'>'", "'EMPTY'", "'ANY'", "'?'", "'*'", "'+'", "'|'", "'#PCDATA'", "'<!ATTLIST'", "'NOTATION'", "'CDATA'", "'ID'", "'IDREF'", "'IDREFS'", "'ENTITY'", "'ENTITIES'", "'NMTOKEN'", "'NMTOKENS'", "'<!ENTITY'", "'%'"\r
26     };\r
27     public static final int TYPE=12;\r
28     public static final int CONTENTSPEC=16;\r
29     public static final int ELEMENT=13;\r
30     public static final int DefaultDecl=41;\r
31     public static final int ENTITY_REF=18;\r
32     public static final int Digit=31;\r
33     public static final int Apos=24;\r
34     public static final int T__57=57;\r
35     public static final int SemiColon=27;\r
36     public static final int T__51=51;\r
37     public static final int T__47=47;\r
38     public static final int T__50=50;\r
39     public static final int ENTITY=17;\r
40     public static final int ATTLIST=10;\r
41     public static final int TOKENIZEDTYPE=6;\r
42     public static final int VALUE=19;\r
43     public static final int AttValue=38;\r
44     public static final int Letter=30;\r
45     public static final int T__52=52;\r
46     public static final int T__46=46;\r
47     public static final int Comma=23;\r
48     public static final int Dot=26;\r
49     public static final int T__62=62;\r
50     public static final int T__49=49;\r
51     public static final int T__61=61;\r
52     public static final int T__59=59;\r
53     public static final int DECL=11;\r
54     public static final int ML_COMMENT=20;\r
55     public static final int T__54=54;\r
56     public static final int T__48=48;\r
57     public static final int EntityRef=39;\r
58     public static final int Colon=22;\r
59     public static final int T__56=56;\r
60     public static final int At=21;\r
61     public static final int STRINGTYPE=5;\r
62     public static final int NameChar=33;\r
63     public static final int DTD=4;\r
64     public static final int T__58=58;\r
65     public static final int T__44=44;\r
66     public static final int RParen=29;\r
67     public static final int Name=36;\r
68     public static final int T__55=55;\r
69     public static final int T__45=45;\r
70     public static final int LParen=28;\r
71     public static final int String=35;\r
72     public static final int CharRef=40;\r
73     public static final int OCCURRENCE=15;\r
74     public static final int T__43=43;\r
75     public static final int WhiteSpaceChar=34;\r
76     public static final int EOF=-1;\r
77     public static final int Reference=37;\r
78     public static final int T__53=53;\r
79     public static final int COMPONENT=14;\r
80     public static final int Quot=25;\r
81     public static final int ATTRIBUTE=9;\r
82     public static final int T__60=60;\r
83     public static final int NAME=8;\r
84     public static final int Digits=32;\r
85     public static final int Element=42;\r
86     public static final int ENUMTYPE=7;\r
87 \r
88     // delegates\r
89     // delegators\r
90 \r
91 \r
92         public DTDParser(TokenStream input) {\r
93             this(input, new RecognizerSharedState());\r
94         }\r
95         public DTDParser(TokenStream input, RecognizerSharedState state) {\r
96             super(input, state);\r
97              \r
98         }\r
99         \r
100     protected TreeAdaptor adaptor = new CommonTreeAdaptor();\r
101 \r
102     public void setTreeAdaptor(TreeAdaptor adaptor) {\r
103         this.adaptor = adaptor;\r
104     }\r
105     public TreeAdaptor getTreeAdaptor() {\r
106         return adaptor;\r
107     }\r
108 \r
109     public String[] getTokenNames() { return DTDParser.tokenNames; }\r
110     public String getGrammarFileName() { return "DTD.g"; }\r
111 \r
112 \r
113     public static class dtd_return extends ParserRuleReturnScope {\r
114         Object tree;\r
115         public Object getTree() { return tree; }\r
116     };\r
117 \r
118     // $ANTLR start "dtd"\r
119     // DTD.g:152:1: dtd : ( markupdecl )* -> ^( DTD ( markupdecl )* ) ;\r
120     public final DTDParser.dtd_return dtd() throws RecognitionException {\r
121         DTDParser.dtd_return retval = new DTDParser.dtd_return();\r
122         retval.start = input.LT(1);\r
123 \r
124         Object root_0 = null;\r
125 \r
126         DTDParser.markupdecl_return markupdecl1 = null;\r
127 \r
128 \r
129         RewriteRuleSubtreeStream stream_markupdecl=new RewriteRuleSubtreeStream(adaptor,"rule markupdecl");\r
130         try {\r
131             // DTD.g:152:4: ( ( markupdecl )* -> ^( DTD ( markupdecl )* ) )\r
132             // DTD.g:152:6: ( markupdecl )*\r
133             {\r
134             // DTD.g:152:6: ( markupdecl )*\r
135             loop1:\r
136             do {\r
137                 int alt1=2;\r
138                 int LA1_0 = input.LA(1);\r
139 \r
140                 if ( (LA1_0==Element||LA1_0==51||LA1_0==61) ) {\r
141                     alt1=1;\r
142                 }\r
143 \r
144 \r
145                 switch (alt1) {\r
146                 case 1 :\r
147                     // DTD.g:152:6: markupdecl\r
148                     {\r
149                     pushFollow(FOLLOW_markupdecl_in_dtd552);\r
150                     markupdecl1=markupdecl();\r
151 \r
152                     state._fsp--;\r
153                     if (state.failed) return retval;\r
154                     if ( state.backtracking==0 ) stream_markupdecl.add(markupdecl1.getTree());\r
155 \r
156                     }\r
157                     break;\r
158 \r
159                 default :\r
160                     break loop1;\r
161                 }\r
162             } while (true);\r
163 \r
164 \r
165 \r
166             // AST REWRITE\r
167             // elements: markupdecl\r
168             // token labels: \r
169             // rule labels: retval\r
170             // token list labels: \r
171             // rule list labels: \r
172             // wildcard labels: \r
173             if ( state.backtracking==0 ) {\r
174             retval.tree = root_0;\r
175             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
176 \r
177             root_0 = (Object)adaptor.nil();\r
178             // 153:3: -> ^( DTD ( markupdecl )* )\r
179             {\r
180                 // DTD.g:153:6: ^( DTD ( markupdecl )* )\r
181                 {\r
182                 Object root_1 = (Object)adaptor.nil();\r
183                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DTD, "DTD"), root_1);\r
184 \r
185                 // DTD.g:153:12: ( markupdecl )*\r
186                 while ( stream_markupdecl.hasNext() ) {\r
187                     adaptor.addChild(root_1, stream_markupdecl.nextTree());\r
188 \r
189                 }\r
190                 stream_markupdecl.reset();\r
191 \r
192                 adaptor.addChild(root_0, root_1);\r
193                 }\r
194 \r
195             }\r
196 \r
197             retval.tree = root_0;}\r
198             }\r
199 \r
200             retval.stop = input.LT(-1);\r
201 \r
202             if ( state.backtracking==0 ) {\r
203 \r
204             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
205             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
206             }\r
207         }\r
208         catch (RecognitionException re) {\r
209             reportError(re);\r
210             recover(input,re);\r
211         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
212 \r
213         }\r
214         finally {\r
215         }\r
216         return retval;\r
217     }\r
218     // $ANTLR end "dtd"\r
219 \r
220     public static class markupdecl_return extends ParserRuleReturnScope {\r
221         Object tree;\r
222         public Object getTree() { return tree; }\r
223     };\r
224 \r
225     // $ANTLR start "markupdecl"\r
226     // DTD.g:156:1: fragment markupdecl : ( elementDecl | attlistDecl | entityDecl );\r
227     public final DTDParser.markupdecl_return markupdecl() throws RecognitionException {\r
228         DTDParser.markupdecl_return retval = new DTDParser.markupdecl_return();\r
229         retval.start = input.LT(1);\r
230 \r
231         Object root_0 = null;\r
232 \r
233         DTDParser.elementDecl_return elementDecl2 = null;\r
234 \r
235         DTDParser.attlistDecl_return attlistDecl3 = null;\r
236 \r
237         DTDParser.entityDecl_return entityDecl4 = null;\r
238 \r
239 \r
240 \r
241         try {\r
242             // DTD.g:157:11: ( elementDecl | attlistDecl | entityDecl )\r
243             int alt2=3;\r
244             switch ( input.LA(1) ) {\r
245             case Element:\r
246                 {\r
247                 alt2=1;\r
248                 }\r
249                 break;\r
250             case 51:\r
251                 {\r
252                 alt2=2;\r
253                 }\r
254                 break;\r
255             case 61:\r
256                 {\r
257                 alt2=3;\r
258                 }\r
259                 break;\r
260             default:\r
261                 if (state.backtracking>0) {state.failed=true; return retval;}\r
262                 NoViableAltException nvae =\r
263                     new NoViableAltException("", 2, 0, input);\r
264 \r
265                 throw nvae;\r
266             }\r
267 \r
268             switch (alt2) {\r
269                 case 1 :\r
270                     // DTD.g:157:13: elementDecl\r
271                     {\r
272                     root_0 = (Object)adaptor.nil();\r
273 \r
274                     pushFollow(FOLLOW_elementDecl_in_markupdecl574);\r
275                     elementDecl2=elementDecl();\r
276 \r
277                     state._fsp--;\r
278                     if (state.failed) return retval;\r
279                     if ( state.backtracking==0 ) adaptor.addChild(root_0, elementDecl2.getTree());\r
280 \r
281                     }\r
282                     break;\r
283                 case 2 :\r
284                     // DTD.g:157:27: attlistDecl\r
285                     {\r
286                     root_0 = (Object)adaptor.nil();\r
287 \r
288                     pushFollow(FOLLOW_attlistDecl_in_markupdecl578);\r
289                     attlistDecl3=attlistDecl();\r
290 \r
291                     state._fsp--;\r
292                     if (state.failed) return retval;\r
293                     if ( state.backtracking==0 ) adaptor.addChild(root_0, attlistDecl3.getTree());\r
294 \r
295                     }\r
296                     break;\r
297                 case 3 :\r
298                     // DTD.g:157:41: entityDecl\r
299                     {\r
300                     root_0 = (Object)adaptor.nil();\r
301 \r
302                     pushFollow(FOLLOW_entityDecl_in_markupdecl582);\r
303                     entityDecl4=entityDecl();\r
304 \r
305                     state._fsp--;\r
306                     if (state.failed) return retval;\r
307                     if ( state.backtracking==0 ) adaptor.addChild(root_0, entityDecl4.getTree());\r
308 \r
309                     }\r
310                     break;\r
311 \r
312             }\r
313             retval.stop = input.LT(-1);\r
314 \r
315             if ( state.backtracking==0 ) {\r
316 \r
317             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
318             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
319             }\r
320         }\r
321         catch (RecognitionException re) {\r
322             reportError(re);\r
323             recover(input,re);\r
324         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
325 \r
326         }\r
327         finally {\r
328         }\r
329         return retval;\r
330     }\r
331     // $ANTLR end "markupdecl"\r
332 \r
333     public static class elementDecl_return extends ParserRuleReturnScope {\r
334         Object tree;\r
335         public Object getTree() { return tree; }\r
336     };\r
337 \r
338     // $ANTLR start "elementDecl"\r
339     // DTD.g:159:1: elementDecl : Element Name contentSpec '>' -> ^( ELEMENT NAME[$Name.text] contentSpec ) ;\r
340     public final DTDParser.elementDecl_return elementDecl() throws RecognitionException {\r
341         DTDParser.elementDecl_return retval = new DTDParser.elementDecl_return();\r
342         retval.start = input.LT(1);\r
343 \r
344         Object root_0 = null;\r
345 \r
346         Token Element5=null;\r
347         Token Name6=null;\r
348         Token char_literal8=null;\r
349         DTDParser.contentSpec_return contentSpec7 = null;\r
350 \r
351 \r
352         Object Element5_tree=null;\r
353         Object Name6_tree=null;\r
354         Object char_literal8_tree=null;\r
355         RewriteRuleTokenStream stream_43=new RewriteRuleTokenStream(adaptor,"token 43");\r
356         RewriteRuleTokenStream stream_Element=new RewriteRuleTokenStream(adaptor,"token Element");\r
357         RewriteRuleTokenStream stream_Name=new RewriteRuleTokenStream(adaptor,"token Name");\r
358         RewriteRuleSubtreeStream stream_contentSpec=new RewriteRuleSubtreeStream(adaptor,"rule contentSpec");\r
359         try {\r
360             // DTD.g:159:12: ( Element Name contentSpec '>' -> ^( ELEMENT NAME[$Name.text] contentSpec ) )\r
361             // DTD.g:159:14: Element Name contentSpec '>'\r
362             {\r
363             Element5=(Token)match(input,Element,FOLLOW_Element_in_elementDecl590); if (state.failed) return retval; \r
364             if ( state.backtracking==0 ) stream_Element.add(Element5);\r
365 \r
366             Name6=(Token)match(input,Name,FOLLOW_Name_in_elementDecl592); if (state.failed) return retval; \r
367             if ( state.backtracking==0 ) stream_Name.add(Name6);\r
368 \r
369             pushFollow(FOLLOW_contentSpec_in_elementDecl594);\r
370             contentSpec7=contentSpec();\r
371 \r
372             state._fsp--;\r
373             if (state.failed) return retval;\r
374             if ( state.backtracking==0 ) stream_contentSpec.add(contentSpec7.getTree());\r
375             char_literal8=(Token)match(input,43,FOLLOW_43_in_elementDecl596); if (state.failed) return retval; \r
376             if ( state.backtracking==0 ) stream_43.add(char_literal8);\r
377 \r
378 \r
379 \r
380             // AST REWRITE\r
381             // elements: contentSpec\r
382             // token labels: \r
383             // rule labels: retval\r
384             // token list labels: \r
385             // rule list labels: \r
386             // wildcard labels: \r
387             if ( state.backtracking==0 ) {\r
388             retval.tree = root_0;\r
389             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
390 \r
391             root_0 = (Object)adaptor.nil();\r
392             // 160:3: -> ^( ELEMENT NAME[$Name.text] contentSpec )\r
393             {\r
394                 // DTD.g:160:6: ^( ELEMENT NAME[$Name.text] contentSpec )\r
395                 {\r
396                 Object root_1 = (Object)adaptor.nil();\r
397                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ELEMENT, "ELEMENT"), root_1);\r
398 \r
399                 adaptor.addChild(root_1, (Object)adaptor.create(NAME, (Name6!=null?Name6.getText():null)));\r
400                 adaptor.addChild(root_1, stream_contentSpec.nextTree());\r
401 \r
402                 adaptor.addChild(root_0, root_1);\r
403                 }\r
404 \r
405             }\r
406 \r
407             retval.tree = root_0;}\r
408             }\r
409 \r
410             retval.stop = input.LT(-1);\r
411 \r
412             if ( state.backtracking==0 ) {\r
413 \r
414             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
415             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
416             }\r
417         }\r
418         catch (RecognitionException re) {\r
419             reportError(re);\r
420             recover(input,re);\r
421         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
422 \r
423         }\r
424         finally {\r
425         }\r
426         return retval;\r
427     }\r
428     // $ANTLR end "elementDecl"\r
429 \r
430     public static class contentSpec_return extends ParserRuleReturnScope {\r
431         Object tree;\r
432         public Object getTree() { return tree; }\r
433     };\r
434 \r
435     // $ANTLR start "contentSpec"\r
436     // DTD.g:163:1: fragment contentSpec : ( 'EMPTY' -> CONTENTSPEC[\"EMPTY\"] | 'ANY' -> CONTENTSPEC[\"ANY\"] | mixed | children );\r
437     public final DTDParser.contentSpec_return contentSpec() throws RecognitionException {\r
438         DTDParser.contentSpec_return retval = new DTDParser.contentSpec_return();\r
439         retval.start = input.LT(1);\r
440 \r
441         Object root_0 = null;\r
442 \r
443         Token string_literal9=null;\r
444         Token string_literal10=null;\r
445         DTDParser.mixed_return mixed11 = null;\r
446 \r
447         DTDParser.children_return children12 = null;\r
448 \r
449 \r
450         Object string_literal9_tree=null;\r
451         Object string_literal10_tree=null;\r
452         RewriteRuleTokenStream stream_44=new RewriteRuleTokenStream(adaptor,"token 44");\r
453         RewriteRuleTokenStream stream_45=new RewriteRuleTokenStream(adaptor,"token 45");\r
454 \r
455         try {\r
456             // DTD.g:165:3: ( 'EMPTY' -> CONTENTSPEC[\"EMPTY\"] | 'ANY' -> CONTENTSPEC[\"ANY\"] | mixed | children )\r
457             int alt3=4;\r
458             switch ( input.LA(1) ) {\r
459             case 44:\r
460                 {\r
461                 alt3=1;\r
462                 }\r
463                 break;\r
464             case 45:\r
465                 {\r
466                 alt3=2;\r
467                 }\r
468                 break;\r
469             case LParen:\r
470                 {\r
471                 int LA3_3 = input.LA(2);\r
472 \r
473                 if ( (LA3_3==50) ) {\r
474                     alt3=3;\r
475                 }\r
476                 else if ( (LA3_3==LParen||LA3_3==Name) ) {\r
477                     alt3=4;\r
478                 }\r
479                 else {\r
480                     if (state.backtracking>0) {state.failed=true; return retval;}\r
481                     NoViableAltException nvae =\r
482                         new NoViableAltException("", 3, 3, input);\r
483 \r
484                     throw nvae;\r
485                 }\r
486                 }\r
487                 break;\r
488             default:\r
489                 if (state.backtracking>0) {state.failed=true; return retval;}\r
490                 NoViableAltException nvae =\r
491                     new NoViableAltException("", 3, 0, input);\r
492 \r
493                 throw nvae;\r
494             }\r
495 \r
496             switch (alt3) {\r
497                 case 1 :\r
498                     // DTD.g:165:5: 'EMPTY'\r
499                     {\r
500                     string_literal9=(Token)match(input,44,FOLLOW_44_in_contentSpec624); if (state.failed) return retval; \r
501                     if ( state.backtracking==0 ) stream_44.add(string_literal9);\r
502 \r
503 \r
504 \r
505                     // AST REWRITE\r
506                     // elements: \r
507                     // token labels: \r
508                     // rule labels: retval\r
509                     // token list labels: \r
510                     // rule list labels: \r
511                     // wildcard labels: \r
512                     if ( state.backtracking==0 ) {\r
513                     retval.tree = root_0;\r
514                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
515 \r
516                     root_0 = (Object)adaptor.nil();\r
517                     // 165:13: -> CONTENTSPEC[\"EMPTY\"]\r
518                     {\r
519                         adaptor.addChild(root_0, (Object)adaptor.create(CONTENTSPEC, "EMPTY"));\r
520 \r
521                     }\r
522 \r
523                     retval.tree = root_0;}\r
524                     }\r
525                     break;\r
526                 case 2 :\r
527                     // DTD.g:166:5: 'ANY'\r
528                     {\r
529                     string_literal10=(Token)match(input,45,FOLLOW_45_in_contentSpec635); if (state.failed) return retval; \r
530                     if ( state.backtracking==0 ) stream_45.add(string_literal10);\r
531 \r
532 \r
533 \r
534                     // AST REWRITE\r
535                     // elements: \r
536                     // token labels: \r
537                     // rule labels: retval\r
538                     // token list labels: \r
539                     // rule list labels: \r
540                     // wildcard labels: \r
541                     if ( state.backtracking==0 ) {\r
542                     retval.tree = root_0;\r
543                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
544 \r
545                     root_0 = (Object)adaptor.nil();\r
546                     // 166:13: -> CONTENTSPEC[\"ANY\"]\r
547                     {\r
548                         adaptor.addChild(root_0, (Object)adaptor.create(CONTENTSPEC, "ANY"));\r
549 \r
550                     }\r
551 \r
552                     retval.tree = root_0;}\r
553                     }\r
554                     break;\r
555                 case 3 :\r
556                     // DTD.g:167:5: mixed\r
557                     {\r
558                     root_0 = (Object)adaptor.nil();\r
559 \r
560                     pushFollow(FOLLOW_mixed_in_contentSpec648);\r
561                     mixed11=mixed();\r
562 \r
563                     state._fsp--;\r
564                     if (state.failed) return retval;\r
565                     if ( state.backtracking==0 ) adaptor.addChild(root_0, mixed11.getTree());\r
566 \r
567                     }\r
568                     break;\r
569                 case 4 :\r
570                     // DTD.g:168:5: children\r
571                     {\r
572                     root_0 = (Object)adaptor.nil();\r
573 \r
574                     pushFollow(FOLLOW_children_in_contentSpec655);\r
575                     children12=children();\r
576 \r
577                     state._fsp--;\r
578                     if (state.failed) return retval;\r
579                     if ( state.backtracking==0 ) adaptor.addChild(root_0, children12.getTree());\r
580 \r
581                     }\r
582                     break;\r
583 \r
584             }\r
585             retval.stop = input.LT(-1);\r
586 \r
587             if ( state.backtracking==0 ) {\r
588 \r
589             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
590             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
591             }\r
592         }\r
593         catch (RecognitionException re) {\r
594             reportError(re);\r
595             recover(input,re);\r
596         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
597 \r
598         }\r
599         finally {\r
600         }\r
601         return retval;\r
602     }\r
603     // $ANTLR end "contentSpec"\r
604 \r
605     public static class children_return extends ParserRuleReturnScope {\r
606         Object tree;\r
607         public Object getTree() { return tree; }\r
608     };\r
609 \r
610     // $ANTLR start "children"\r
611     // DTD.g:171:1: fragment children : ( ( choice )=> choice ( plural )? -> ^( COMPONENT TYPE[\"choice\"] choice ( plural )? ) | ( seq )=> seq ( plural )? -> ^( COMPONENT TYPE[\"seq\"] seq ( plural )? ) );\r
612     public final DTDParser.children_return children() throws RecognitionException {\r
613         DTDParser.children_return retval = new DTDParser.children_return();\r
614         retval.start = input.LT(1);\r
615 \r
616         Object root_0 = null;\r
617 \r
618         DTDParser.choice_return choice13 = null;\r
619 \r
620         DTDParser.plural_return plural14 = null;\r
621 \r
622         DTDParser.seq_return seq15 = null;\r
623 \r
624         DTDParser.plural_return plural16 = null;\r
625 \r
626 \r
627         RewriteRuleSubtreeStream stream_seq=new RewriteRuleSubtreeStream(adaptor,"rule seq");\r
628         RewriteRuleSubtreeStream stream_choice=new RewriteRuleSubtreeStream(adaptor,"rule choice");\r
629         RewriteRuleSubtreeStream stream_plural=new RewriteRuleSubtreeStream(adaptor,"rule plural");\r
630         try {\r
631             // DTD.g:173:1: ( ( choice )=> choice ( plural )? -> ^( COMPONENT TYPE[\"choice\"] choice ( plural )? ) | ( seq )=> seq ( plural )? -> ^( COMPONENT TYPE[\"seq\"] seq ( plural )? ) )\r
632             int alt6=2;\r
633             int LA6_0 = input.LA(1);\r
634 \r
635             if ( (LA6_0==LParen) ) {\r
636                 int LA6_1 = input.LA(2);\r
637 \r
638                 if ( (synpred1_DTD()) ) {\r
639                     alt6=1;\r
640                 }\r
641                 else if ( (synpred2_DTD()) ) {\r
642                     alt6=2;\r
643                 }\r
644                 else {\r
645                     if (state.backtracking>0) {state.failed=true; return retval;}\r
646                     NoViableAltException nvae =\r
647                         new NoViableAltException("", 6, 1, input);\r
648 \r
649                     throw nvae;\r
650                 }\r
651             }\r
652             else {\r
653                 if (state.backtracking>0) {state.failed=true; return retval;}\r
654                 NoViableAltException nvae =\r
655                     new NoViableAltException("", 6, 0, input);\r
656 \r
657                 throw nvae;\r
658             }\r
659             switch (alt6) {\r
660                 case 1 :\r
661                     // DTD.g:173:3: ( choice )=> choice ( plural )?\r
662                     {\r
663                     pushFollow(FOLLOW_choice_in_children678);\r
664                     choice13=choice();\r
665 \r
666                     state._fsp--;\r
667                     if (state.failed) return retval;\r
668                     if ( state.backtracking==0 ) stream_choice.add(choice13.getTree());\r
669                     // DTD.g:173:23: ( plural )?\r
670                     int alt4=2;\r
671                     int LA4_0 = input.LA(1);\r
672 \r
673                     if ( ((LA4_0>=46 && LA4_0<=48)) ) {\r
674                         alt4=1;\r
675                     }\r
676                     switch (alt4) {\r
677                         case 1 :\r
678                             // DTD.g:173:23: plural\r
679                             {\r
680                             pushFollow(FOLLOW_plural_in_children681);\r
681                             plural14=plural();\r
682 \r
683                             state._fsp--;\r
684                             if (state.failed) return retval;\r
685                             if ( state.backtracking==0 ) stream_plural.add(plural14.getTree());\r
686 \r
687                             }\r
688                             break;\r
689 \r
690                     }\r
691 \r
692 \r
693 \r
694                     // AST REWRITE\r
695                     // elements: plural, choice\r
696                     // token labels: \r
697                     // rule labels: retval\r
698                     // token list labels: \r
699                     // rule list labels: \r
700                     // wildcard labels: \r
701                     if ( state.backtracking==0 ) {\r
702                     retval.tree = root_0;\r
703                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
704 \r
705                     root_0 = (Object)adaptor.nil();\r
706                     // 173:31: -> ^( COMPONENT TYPE[\"choice\"] choice ( plural )? )\r
707                     {\r
708                         // DTD.g:173:34: ^( COMPONENT TYPE[\"choice\"] choice ( plural )? )\r
709                         {\r
710                         Object root_1 = (Object)adaptor.nil();\r
711                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COMPONENT, "COMPONENT"), root_1);\r
712 \r
713                         adaptor.addChild(root_1, (Object)adaptor.create(TYPE, "choice"));\r
714                         adaptor.addChild(root_1, stream_choice.nextTree());\r
715                         // DTD.g:173:69: ( plural )?\r
716                         if ( stream_plural.hasNext() ) {\r
717                             adaptor.addChild(root_1, stream_plural.nextTree());\r
718 \r
719                         }\r
720                         stream_plural.reset();\r
721 \r
722                         adaptor.addChild(root_0, root_1);\r
723                         }\r
724 \r
725                     }\r
726 \r
727                     retval.tree = root_0;}\r
728                     }\r
729                     break;\r
730                 case 2 :\r
731                     // DTD.g:174:3: ( seq )=> seq ( plural )?\r
732                     {\r
733                     pushFollow(FOLLOW_seq_in_children707);\r
734                     seq15=seq();\r
735 \r
736                     state._fsp--;\r
737                     if (state.failed) return retval;\r
738                     if ( state.backtracking==0 ) stream_seq.add(seq15.getTree());\r
739                     // DTD.g:174:16: ( plural )?\r
740                     int alt5=2;\r
741                     int LA5_0 = input.LA(1);\r
742 \r
743                     if ( ((LA5_0>=46 && LA5_0<=48)) ) {\r
744                         alt5=1;\r
745                     }\r
746                     switch (alt5) {\r
747                         case 1 :\r
748                             // DTD.g:174:16: plural\r
749                             {\r
750                             pushFollow(FOLLOW_plural_in_children709);\r
751                             plural16=plural();\r
752 \r
753                             state._fsp--;\r
754                             if (state.failed) return retval;\r
755                             if ( state.backtracking==0 ) stream_plural.add(plural16.getTree());\r
756 \r
757                             }\r
758                             break;\r
759 \r
760                     }\r
761 \r
762 \r
763 \r
764                     // AST REWRITE\r
765                     // elements: seq, plural\r
766                     // token labels: \r
767                     // rule labels: retval\r
768                     // token list labels: \r
769                     // rule list labels: \r
770                     // wildcard labels: \r
771                     if ( state.backtracking==0 ) {\r
772                     retval.tree = root_0;\r
773                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
774 \r
775                     root_0 = (Object)adaptor.nil();\r
776                     // 174:24: -> ^( COMPONENT TYPE[\"seq\"] seq ( plural )? )\r
777                     {\r
778                         // DTD.g:174:27: ^( COMPONENT TYPE[\"seq\"] seq ( plural )? )\r
779                         {\r
780                         Object root_1 = (Object)adaptor.nil();\r
781                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COMPONENT, "COMPONENT"), root_1);\r
782 \r
783                         adaptor.addChild(root_1, (Object)adaptor.create(TYPE, "seq"));\r
784                         adaptor.addChild(root_1, stream_seq.nextTree());\r
785                         // DTD.g:174:55: ( plural )?\r
786                         if ( stream_plural.hasNext() ) {\r
787                             adaptor.addChild(root_1, stream_plural.nextTree());\r
788 \r
789                         }\r
790                         stream_plural.reset();\r
791 \r
792                         adaptor.addChild(root_0, root_1);\r
793                         }\r
794 \r
795                     }\r
796 \r
797                     retval.tree = root_0;}\r
798                     }\r
799                     break;\r
800 \r
801             }\r
802             retval.stop = input.LT(-1);\r
803 \r
804             if ( state.backtracking==0 ) {\r
805 \r
806             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
807             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
808             }\r
809         }\r
810         catch (RecognitionException re) {\r
811             reportError(re);\r
812             recover(input,re);\r
813         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
814 \r
815         }\r
816         finally {\r
817         }\r
818         return retval;\r
819     }\r
820     // $ANTLR end "children"\r
821 \r
822     public static class cp_return extends ParserRuleReturnScope {\r
823         Object tree;\r
824         public Object getTree() { return tree; }\r
825     };\r
826 \r
827     // $ANTLR start "cp"\r
828     // DTD.g:177:1: fragment cp : ( ( Name )=> Name ( plural )? -> ^( COMPONENT NAME[$Name.text] ( plural )? ) | ( choice )=> choice ( plural )? -> ^( COMPONENT TYPE[\"choice\"] choice ( plural )? ) | ( seq )=> seq ( plural )? -> ^( COMPONENT TYPE[\"seq\"] seq ( plural )? ) );\r
829     public final DTDParser.cp_return cp() throws RecognitionException {\r
830         DTDParser.cp_return retval = new DTDParser.cp_return();\r
831         retval.start = input.LT(1);\r
832 \r
833         Object root_0 = null;\r
834 \r
835         Token Name17=null;\r
836         DTDParser.plural_return plural18 = null;\r
837 \r
838         DTDParser.choice_return choice19 = null;\r
839 \r
840         DTDParser.plural_return plural20 = null;\r
841 \r
842         DTDParser.seq_return seq21 = null;\r
843 \r
844         DTDParser.plural_return plural22 = null;\r
845 \r
846 \r
847         Object Name17_tree=null;\r
848         RewriteRuleTokenStream stream_Name=new RewriteRuleTokenStream(adaptor,"token Name");\r
849         RewriteRuleSubtreeStream stream_seq=new RewriteRuleSubtreeStream(adaptor,"rule seq");\r
850         RewriteRuleSubtreeStream stream_choice=new RewriteRuleSubtreeStream(adaptor,"rule choice");\r
851         RewriteRuleSubtreeStream stream_plural=new RewriteRuleSubtreeStream(adaptor,"rule plural");\r
852         try {\r
853             // DTD.g:179:1: ( ( Name )=> Name ( plural )? -> ^( COMPONENT NAME[$Name.text] ( plural )? ) | ( choice )=> choice ( plural )? -> ^( COMPONENT TYPE[\"choice\"] choice ( plural )? ) | ( seq )=> seq ( plural )? -> ^( COMPONENT TYPE[\"seq\"] seq ( plural )? ) )\r
854             int alt10=3;\r
855             int LA10_0 = input.LA(1);\r
856 \r
857             if ( (LA10_0==Name) && (synpred3_DTD())) {\r
858                 alt10=1;\r
859             }\r
860             else if ( (LA10_0==LParen) ) {\r
861                 int LA10_2 = input.LA(2);\r
862 \r
863                 if ( (synpred4_DTD()) ) {\r
864                     alt10=2;\r
865                 }\r
866                 else if ( (synpred5_DTD()) ) {\r
867                     alt10=3;\r
868                 }\r
869                 else {\r
870                     if (state.backtracking>0) {state.failed=true; return retval;}\r
871                     NoViableAltException nvae =\r
872                         new NoViableAltException("", 10, 2, input);\r
873 \r
874                     throw nvae;\r
875                 }\r
876             }\r
877             else {\r
878                 if (state.backtracking>0) {state.failed=true; return retval;}\r
879                 NoViableAltException nvae =\r
880                     new NoViableAltException("", 10, 0, input);\r
881 \r
882                 throw nvae;\r
883             }\r
884             switch (alt10) {\r
885                 case 1 :\r
886                     // DTD.g:179:3: ( Name )=> Name ( plural )?\r
887                     {\r
888                     Name17=(Token)match(input,Name,FOLLOW_Name_in_cp743); if (state.failed) return retval; \r
889                     if ( state.backtracking==0 ) stream_Name.add(Name17);\r
890 \r
891                     // DTD.g:179:19: ( plural )?\r
892                     int alt7=2;\r
893                     int LA7_0 = input.LA(1);\r
894 \r
895                     if ( ((LA7_0>=46 && LA7_0<=48)) ) {\r
896                         alt7=1;\r
897                     }\r
898                     switch (alt7) {\r
899                         case 1 :\r
900                             // DTD.g:179:19: plural\r
901                             {\r
902                             pushFollow(FOLLOW_plural_in_cp746);\r
903                             plural18=plural();\r
904 \r
905                             state._fsp--;\r
906                             if (state.failed) return retval;\r
907                             if ( state.backtracking==0 ) stream_plural.add(plural18.getTree());\r
908 \r
909                             }\r
910                             break;\r
911 \r
912                     }\r
913 \r
914 \r
915 \r
916                     // AST REWRITE\r
917                     // elements: plural\r
918                     // token labels: \r
919                     // rule labels: retval\r
920                     // token list labels: \r
921                     // rule list labels: \r
922                     // wildcard labels: \r
923                     if ( state.backtracking==0 ) {\r
924                     retval.tree = root_0;\r
925                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
926 \r
927                     root_0 = (Object)adaptor.nil();\r
928                     // 179:27: -> ^( COMPONENT NAME[$Name.text] ( plural )? )\r
929                     {\r
930                         // DTD.g:179:30: ^( COMPONENT NAME[$Name.text] ( plural )? )\r
931                         {\r
932                         Object root_1 = (Object)adaptor.nil();\r
933                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COMPONENT, "COMPONENT"), root_1);\r
934 \r
935                         adaptor.addChild(root_1, (Object)adaptor.create(NAME, (Name17!=null?Name17.getText():null)));\r
936                         // DTD.g:179:59: ( plural )?\r
937                         if ( stream_plural.hasNext() ) {\r
938                             adaptor.addChild(root_1, stream_plural.nextTree());\r
939 \r
940                         }\r
941                         stream_plural.reset();\r
942 \r
943                         adaptor.addChild(root_0, root_1);\r
944                         }\r
945 \r
946                     }\r
947 \r
948                     retval.tree = root_0;}\r
949                     }\r
950                     break;\r
951                 case 2 :\r
952                     // DTD.g:180:4: ( choice )=> choice ( plural )?\r
953                     {\r
954                     pushFollow(FOLLOW_choice_in_cp770);\r
955                     choice19=choice();\r
956 \r
957                     state._fsp--;\r
958                     if (state.failed) return retval;\r
959                     if ( state.backtracking==0 ) stream_choice.add(choice19.getTree());\r
960                     // DTD.g:180:24: ( plural )?\r
961                     int alt8=2;\r
962                     int LA8_0 = input.LA(1);\r
963 \r
964                     if ( ((LA8_0>=46 && LA8_0<=48)) ) {\r
965                         alt8=1;\r
966                     }\r
967                     switch (alt8) {\r
968                         case 1 :\r
969                             // DTD.g:180:24: plural\r
970                             {\r
971                             pushFollow(FOLLOW_plural_in_cp773);\r
972                             plural20=plural();\r
973 \r
974                             state._fsp--;\r
975                             if (state.failed) return retval;\r
976                             if ( state.backtracking==0 ) stream_plural.add(plural20.getTree());\r
977 \r
978                             }\r
979                             break;\r
980 \r
981                     }\r
982 \r
983 \r
984 \r
985                     // AST REWRITE\r
986                     // elements: choice, plural\r
987                     // token labels: \r
988                     // rule labels: retval\r
989                     // token list labels: \r
990                     // rule list labels: \r
991                     // wildcard labels: \r
992                     if ( state.backtracking==0 ) {\r
993                     retval.tree = root_0;\r
994                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
995 \r
996                     root_0 = (Object)adaptor.nil();\r
997                     // 180:32: -> ^( COMPONENT TYPE[\"choice\"] choice ( plural )? )\r
998                     {\r
999                         // DTD.g:180:35: ^( COMPONENT TYPE[\"choice\"] choice ( plural )? )\r
1000                         {\r
1001                         Object root_1 = (Object)adaptor.nil();\r
1002                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COMPONENT, "COMPONENT"), root_1);\r
1003 \r
1004                         adaptor.addChild(root_1, (Object)adaptor.create(TYPE, "choice"));\r
1005                         adaptor.addChild(root_1, stream_choice.nextTree());\r
1006                         // DTD.g:180:69: ( plural )?\r
1007                         if ( stream_plural.hasNext() ) {\r
1008                             adaptor.addChild(root_1, stream_plural.nextTree());\r
1009 \r
1010                         }\r
1011                         stream_plural.reset();\r
1012 \r
1013                         adaptor.addChild(root_0, root_1);\r
1014                         }\r
1015 \r
1016                     }\r
1017 \r
1018                     retval.tree = root_0;}\r
1019                     }\r
1020                     break;\r
1021                 case 3 :\r
1022                     // DTD.g:181:4: ( seq )=> seq ( plural )?\r
1023                     {\r
1024                     pushFollow(FOLLOW_seq_in_cp799);\r
1025                     seq21=seq();\r
1026 \r
1027                     state._fsp--;\r
1028                     if (state.failed) return retval;\r
1029                     if ( state.backtracking==0 ) stream_seq.add(seq21.getTree());\r
1030                     // DTD.g:181:18: ( plural )?\r
1031                     int alt9=2;\r
1032                     int LA9_0 = input.LA(1);\r
1033 \r
1034                     if ( ((LA9_0>=46 && LA9_0<=48)) ) {\r
1035                         alt9=1;\r
1036                     }\r
1037                     switch (alt9) {\r
1038                         case 1 :\r
1039                             // DTD.g:181:18: plural\r
1040                             {\r
1041                             pushFollow(FOLLOW_plural_in_cp802);\r
1042                             plural22=plural();\r
1043 \r
1044                             state._fsp--;\r
1045                             if (state.failed) return retval;\r
1046                             if ( state.backtracking==0 ) stream_plural.add(plural22.getTree());\r
1047 \r
1048                             }\r
1049                             break;\r
1050 \r
1051                     }\r
1052 \r
1053 \r
1054 \r
1055                     // AST REWRITE\r
1056                     // elements: seq, plural\r
1057                     // token labels: \r
1058                     // rule labels: retval\r
1059                     // token list labels: \r
1060                     // rule list labels: \r
1061                     // wildcard labels: \r
1062                     if ( state.backtracking==0 ) {\r
1063                     retval.tree = root_0;\r
1064                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
1065 \r
1066                     root_0 = (Object)adaptor.nil();\r
1067                     // 181:26: -> ^( COMPONENT TYPE[\"seq\"] seq ( plural )? )\r
1068                     {\r
1069                         // DTD.g:181:29: ^( COMPONENT TYPE[\"seq\"] seq ( plural )? )\r
1070                         {\r
1071                         Object root_1 = (Object)adaptor.nil();\r
1072                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COMPONENT, "COMPONENT"), root_1);\r
1073 \r
1074                         adaptor.addChild(root_1, (Object)adaptor.create(TYPE, "seq"));\r
1075                         adaptor.addChild(root_1, stream_seq.nextTree());\r
1076                         // DTD.g:181:57: ( plural )?\r
1077                         if ( stream_plural.hasNext() ) {\r
1078                             adaptor.addChild(root_1, stream_plural.nextTree());\r
1079 \r
1080                         }\r
1081                         stream_plural.reset();\r
1082 \r
1083                         adaptor.addChild(root_0, root_1);\r
1084                         }\r
1085 \r
1086                     }\r
1087 \r
1088                     retval.tree = root_0;}\r
1089                     }\r
1090                     break;\r
1091 \r
1092             }\r
1093             retval.stop = input.LT(-1);\r
1094 \r
1095             if ( state.backtracking==0 ) {\r
1096 \r
1097             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
1098             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
1099             }\r
1100         }\r
1101         catch (RecognitionException re) {\r
1102             reportError(re);\r
1103             recover(input,re);\r
1104         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
1105 \r
1106         }\r
1107         finally {\r
1108         }\r
1109         return retval;\r
1110     }\r
1111     // $ANTLR end "cp"\r
1112 \r
1113     public static class plural_return extends ParserRuleReturnScope {\r
1114         Object tree;\r
1115         public Object getTree() { return tree; }\r
1116     };\r
1117 \r
1118     // $ANTLR start "plural"\r
1119     // DTD.g:184:1: fragment plural : ( '?' -> OCCURRENCE[\"ZERO_OR_ONE\"] | '*' -> OCCURRENCE[\"ZERO_OR_MORE\"] | '+' -> OCCURRENCE[\"ONE_OR_MORE\"] );\r
1120     public final DTDParser.plural_return plural() throws RecognitionException {\r
1121         DTDParser.plural_return retval = new DTDParser.plural_return();\r
1122         retval.start = input.LT(1);\r
1123 \r
1124         Object root_0 = null;\r
1125 \r
1126         Token char_literal23=null;\r
1127         Token char_literal24=null;\r
1128         Token char_literal25=null;\r
1129 \r
1130         Object char_literal23_tree=null;\r
1131         Object char_literal24_tree=null;\r
1132         Object char_literal25_tree=null;\r
1133         RewriteRuleTokenStream stream_48=new RewriteRuleTokenStream(adaptor,"token 48");\r
1134         RewriteRuleTokenStream stream_46=new RewriteRuleTokenStream(adaptor,"token 46");\r
1135         RewriteRuleTokenStream stream_47=new RewriteRuleTokenStream(adaptor,"token 47");\r
1136 \r
1137         try {\r
1138             // DTD.g:186:3: ( '?' -> OCCURRENCE[\"ZERO_OR_ONE\"] | '*' -> OCCURRENCE[\"ZERO_OR_MORE\"] | '+' -> OCCURRENCE[\"ONE_OR_MORE\"] )\r
1139             int alt11=3;\r
1140             switch ( input.LA(1) ) {\r
1141             case 46:\r
1142                 {\r
1143                 alt11=1;\r
1144                 }\r
1145                 break;\r
1146             case 47:\r
1147                 {\r
1148                 alt11=2;\r
1149                 }\r
1150                 break;\r
1151             case 48:\r
1152                 {\r
1153                 alt11=3;\r
1154                 }\r
1155                 break;\r
1156             default:\r
1157                 if (state.backtracking>0) {state.failed=true; return retval;}\r
1158                 NoViableAltException nvae =\r
1159                     new NoViableAltException("", 11, 0, input);\r
1160 \r
1161                 throw nvae;\r
1162             }\r
1163 \r
1164             switch (alt11) {\r
1165                 case 1 :\r
1166                     // DTD.g:186:5: '?'\r
1167                     {\r
1168                     char_literal23=(Token)match(input,46,FOLLOW_46_in_plural830); if (state.failed) return retval; \r
1169                     if ( state.backtracking==0 ) stream_46.add(char_literal23);\r
1170 \r
1171 \r
1172 \r
1173                     // AST REWRITE\r
1174                     // elements: \r
1175                     // token labels: \r
1176                     // rule labels: retval\r
1177                     // token list labels: \r
1178                     // rule list labels: \r
1179                     // wildcard labels: \r
1180                     if ( state.backtracking==0 ) {\r
1181                     retval.tree = root_0;\r
1182                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
1183 \r
1184                     root_0 = (Object)adaptor.nil();\r
1185                     // 186:9: -> OCCURRENCE[\"ZERO_OR_ONE\"]\r
1186                     {\r
1187                         adaptor.addChild(root_0, (Object)adaptor.create(OCCURRENCE, "ZERO_OR_ONE"));\r
1188 \r
1189                     }\r
1190 \r
1191                     retval.tree = root_0;}\r
1192                     }\r
1193                     break;\r
1194                 case 2 :\r
1195                     // DTD.g:187:5: '*'\r
1196                     {\r
1197                     char_literal24=(Token)match(input,47,FOLLOW_47_in_plural841); if (state.failed) return retval; \r
1198                     if ( state.backtracking==0 ) stream_47.add(char_literal24);\r
1199 \r
1200 \r
1201 \r
1202                     // AST REWRITE\r
1203                     // elements: \r
1204                     // token labels: \r
1205                     // rule labels: retval\r
1206                     // token list labels: \r
1207                     // rule list labels: \r
1208                     // wildcard labels: \r
1209                     if ( state.backtracking==0 ) {\r
1210                     retval.tree = root_0;\r
1211                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
1212 \r
1213                     root_0 = (Object)adaptor.nil();\r
1214                     // 187:9: -> OCCURRENCE[\"ZERO_OR_MORE\"]\r
1215                     {\r
1216                         adaptor.addChild(root_0, (Object)adaptor.create(OCCURRENCE, "ZERO_OR_MORE"));\r
1217 \r
1218                     }\r
1219 \r
1220                     retval.tree = root_0;}\r
1221                     }\r
1222                     break;\r
1223                 case 3 :\r
1224                     // DTD.g:188:5: '+'\r
1225                     {\r
1226                     char_literal25=(Token)match(input,48,FOLLOW_48_in_plural852); if (state.failed) return retval; \r
1227                     if ( state.backtracking==0 ) stream_48.add(char_literal25);\r
1228 \r
1229 \r
1230 \r
1231                     // AST REWRITE\r
1232                     // elements: \r
1233                     // token labels: \r
1234                     // rule labels: retval\r
1235                     // token list labels: \r
1236                     // rule list labels: \r
1237                     // wildcard labels: \r
1238                     if ( state.backtracking==0 ) {\r
1239                     retval.tree = root_0;\r
1240                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
1241 \r
1242                     root_0 = (Object)adaptor.nil();\r
1243                     // 188:9: -> OCCURRENCE[\"ONE_OR_MORE\"]\r
1244                     {\r
1245                         adaptor.addChild(root_0, (Object)adaptor.create(OCCURRENCE, "ONE_OR_MORE"));\r
1246 \r
1247                     }\r
1248 \r
1249                     retval.tree = root_0;}\r
1250                     }\r
1251                     break;\r
1252 \r
1253             }\r
1254             retval.stop = input.LT(-1);\r
1255 \r
1256             if ( state.backtracking==0 ) {\r
1257 \r
1258             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
1259             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
1260             }\r
1261         }\r
1262         catch (RecognitionException re) {\r
1263             reportError(re);\r
1264             recover(input,re);\r
1265         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
1266 \r
1267         }\r
1268         finally {\r
1269         }\r
1270         return retval;\r
1271     }\r
1272     // $ANTLR end "plural"\r
1273 \r
1274     public static class choice_return extends ParserRuleReturnScope {\r
1275         Object tree;\r
1276         public Object getTree() { return tree; }\r
1277     };\r
1278 \r
1279     // $ANTLR start "choice"\r
1280     // DTD.g:192:1: fragment choice : LParen cp ( '|' cp )* RParen -> ( cp )+ ;\r
1281     public final DTDParser.choice_return choice() throws RecognitionException {\r
1282         DTDParser.choice_return retval = new DTDParser.choice_return();\r
1283         retval.start = input.LT(1);\r
1284 \r
1285         Object root_0 = null;\r
1286 \r
1287         Token LParen26=null;\r
1288         Token char_literal28=null;\r
1289         Token RParen30=null;\r
1290         DTDParser.cp_return cp27 = null;\r
1291 \r
1292         DTDParser.cp_return cp29 = null;\r
1293 \r
1294 \r
1295         Object LParen26_tree=null;\r
1296         Object char_literal28_tree=null;\r
1297         Object RParen30_tree=null;\r
1298         RewriteRuleTokenStream stream_RParen=new RewriteRuleTokenStream(adaptor,"token RParen");\r
1299         RewriteRuleTokenStream stream_49=new RewriteRuleTokenStream(adaptor,"token 49");\r
1300         RewriteRuleTokenStream stream_LParen=new RewriteRuleTokenStream(adaptor,"token LParen");\r
1301         RewriteRuleSubtreeStream stream_cp=new RewriteRuleSubtreeStream(adaptor,"rule cp");\r
1302         try {\r
1303             // DTD.g:193:7: ( LParen cp ( '|' cp )* RParen -> ( cp )+ )\r
1304             // DTD.g:193:9: LParen cp ( '|' cp )* RParen\r
1305             {\r
1306             LParen26=(Token)match(input,LParen,FOLLOW_LParen_in_choice872); if (state.failed) return retval; \r
1307             if ( state.backtracking==0 ) stream_LParen.add(LParen26);\r
1308 \r
1309             pushFollow(FOLLOW_cp_in_choice874);\r
1310             cp27=cp();\r
1311 \r
1312             state._fsp--;\r
1313             if (state.failed) return retval;\r
1314             if ( state.backtracking==0 ) stream_cp.add(cp27.getTree());\r
1315             // DTD.g:193:19: ( '|' cp )*\r
1316             loop12:\r
1317             do {\r
1318                 int alt12=2;\r
1319                 int LA12_0 = input.LA(1);\r
1320 \r
1321                 if ( (LA12_0==49) ) {\r
1322                     alt12=1;\r
1323                 }\r
1324 \r
1325 \r
1326                 switch (alt12) {\r
1327                 case 1 :\r
1328                     // DTD.g:193:20: '|' cp\r
1329                     {\r
1330                     char_literal28=(Token)match(input,49,FOLLOW_49_in_choice877); if (state.failed) return retval; \r
1331                     if ( state.backtracking==0 ) stream_49.add(char_literal28);\r
1332 \r
1333                     pushFollow(FOLLOW_cp_in_choice879);\r
1334                     cp29=cp();\r
1335 \r
1336                     state._fsp--;\r
1337                     if (state.failed) return retval;\r
1338                     if ( state.backtracking==0 ) stream_cp.add(cp29.getTree());\r
1339 \r
1340                     }\r
1341                     break;\r
1342 \r
1343                 default :\r
1344                     break loop12;\r
1345                 }\r
1346             } while (true);\r
1347 \r
1348             RParen30=(Token)match(input,RParen,FOLLOW_RParen_in_choice883); if (state.failed) return retval; \r
1349             if ( state.backtracking==0 ) stream_RParen.add(RParen30);\r
1350 \r
1351 \r
1352 \r
1353             // AST REWRITE\r
1354             // elements: cp\r
1355             // token labels: \r
1356             // rule labels: retval\r
1357             // token list labels: \r
1358             // rule list labels: \r
1359             // wildcard labels: \r
1360             if ( state.backtracking==0 ) {\r
1361             retval.tree = root_0;\r
1362             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
1363 \r
1364             root_0 = (Object)adaptor.nil();\r
1365             // 194:3: -> ( cp )+\r
1366             {\r
1367                 if ( !(stream_cp.hasNext()) ) {\r
1368                     throw new RewriteEarlyExitException();\r
1369                 }\r
1370                 while ( stream_cp.hasNext() ) {\r
1371                     adaptor.addChild(root_0, stream_cp.nextTree());\r
1372 \r
1373                 }\r
1374                 stream_cp.reset();\r
1375 \r
1376             }\r
1377 \r
1378             retval.tree = root_0;}\r
1379             }\r
1380 \r
1381             retval.stop = input.LT(-1);\r
1382 \r
1383             if ( state.backtracking==0 ) {\r
1384 \r
1385             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
1386             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
1387             }\r
1388         }\r
1389         catch (RecognitionException re) {\r
1390             reportError(re);\r
1391             recover(input,re);\r
1392         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
1393 \r
1394         }\r
1395         finally {\r
1396         }\r
1397         return retval;\r
1398     }\r
1399     // $ANTLR end "choice"\r
1400 \r
1401     public static class seq_return extends ParserRuleReturnScope {\r
1402         Object tree;\r
1403         public Object getTree() { return tree; }\r
1404     };\r
1405 \r
1406     // $ANTLR start "seq"\r
1407     // DTD.g:197:1: fragment seq : ( LParen cp Comma )=> LParen cp ( Comma cp )+ RParen -> ( cp )+ ;\r
1408     public final DTDParser.seq_return seq() throws RecognitionException {\r
1409         DTDParser.seq_return retval = new DTDParser.seq_return();\r
1410         retval.start = input.LT(1);\r
1411 \r
1412         Object root_0 = null;\r
1413 \r
1414         Token LParen31=null;\r
1415         Token Comma33=null;\r
1416         Token RParen35=null;\r
1417         DTDParser.cp_return cp32 = null;\r
1418 \r
1419         DTDParser.cp_return cp34 = null;\r
1420 \r
1421 \r
1422         Object LParen31_tree=null;\r
1423         Object Comma33_tree=null;\r
1424         Object RParen35_tree=null;\r
1425         RewriteRuleTokenStream stream_Comma=new RewriteRuleTokenStream(adaptor,"token Comma");\r
1426         RewriteRuleTokenStream stream_RParen=new RewriteRuleTokenStream(adaptor,"token RParen");\r
1427         RewriteRuleTokenStream stream_LParen=new RewriteRuleTokenStream(adaptor,"token LParen");\r
1428         RewriteRuleSubtreeStream stream_cp=new RewriteRuleSubtreeStream(adaptor,"rule cp");\r
1429         try {\r
1430             // DTD.g:198:4: ( ( LParen cp Comma )=> LParen cp ( Comma cp )+ RParen -> ( cp )+ )\r
1431             // DTD.g:198:6: ( LParen cp Comma )=> LParen cp ( Comma cp )+ RParen\r
1432             {\r
1433             LParen31=(Token)match(input,LParen,FOLLOW_LParen_in_seq912); if (state.failed) return retval; \r
1434             if ( state.backtracking==0 ) stream_LParen.add(LParen31);\r
1435 \r
1436             pushFollow(FOLLOW_cp_in_seq914);\r
1437             cp32=cp();\r
1438 \r
1439             state._fsp--;\r
1440             if (state.failed) return retval;\r
1441             if ( state.backtracking==0 ) stream_cp.add(cp32.getTree());\r
1442             // DTD.g:198:37: ( Comma cp )+\r
1443             int cnt13=0;\r
1444             loop13:\r
1445             do {\r
1446                 int alt13=2;\r
1447                 int LA13_0 = input.LA(1);\r
1448 \r
1449                 if ( (LA13_0==Comma) ) {\r
1450                     alt13=1;\r
1451                 }\r
1452 \r
1453 \r
1454                 switch (alt13) {\r
1455                 case 1 :\r
1456                     // DTD.g:198:38: Comma cp\r
1457                     {\r
1458                     Comma33=(Token)match(input,Comma,FOLLOW_Comma_in_seq917); if (state.failed) return retval; \r
1459                     if ( state.backtracking==0 ) stream_Comma.add(Comma33);\r
1460 \r
1461                     pushFollow(FOLLOW_cp_in_seq919);\r
1462                     cp34=cp();\r
1463 \r
1464                     state._fsp--;\r
1465                     if (state.failed) return retval;\r
1466                     if ( state.backtracking==0 ) stream_cp.add(cp34.getTree());\r
1467 \r
1468                     }\r
1469                     break;\r
1470 \r
1471                 default :\r
1472                     if ( cnt13 >= 1 ) break loop13;\r
1473                     if (state.backtracking>0) {state.failed=true; return retval;}\r
1474                         EarlyExitException eee =\r
1475                             new EarlyExitException(13, input);\r
1476                         throw eee;\r
1477                 }\r
1478                 cnt13++;\r
1479             } while (true);\r
1480 \r
1481             RParen35=(Token)match(input,RParen,FOLLOW_RParen_in_seq923); if (state.failed) return retval; \r
1482             if ( state.backtracking==0 ) stream_RParen.add(RParen35);\r
1483 \r
1484 \r
1485 \r
1486             // AST REWRITE\r
1487             // elements: cp\r
1488             // token labels: \r
1489             // rule labels: retval\r
1490             // token list labels: \r
1491             // rule list labels: \r
1492             // wildcard labels: \r
1493             if ( state.backtracking==0 ) {\r
1494             retval.tree = root_0;\r
1495             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
1496 \r
1497             root_0 = (Object)adaptor.nil();\r
1498             // 199:3: -> ( cp )+\r
1499             {\r
1500                 if ( !(stream_cp.hasNext()) ) {\r
1501                     throw new RewriteEarlyExitException();\r
1502                 }\r
1503                 while ( stream_cp.hasNext() ) {\r
1504                     adaptor.addChild(root_0, stream_cp.nextTree());\r
1505 \r
1506                 }\r
1507                 stream_cp.reset();\r
1508 \r
1509             }\r
1510 \r
1511             retval.tree = root_0;}\r
1512             }\r
1513 \r
1514             retval.stop = input.LT(-1);\r
1515 \r
1516             if ( state.backtracking==0 ) {\r
1517 \r
1518             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
1519             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
1520             }\r
1521         }\r
1522         catch (RecognitionException re) {\r
1523             reportError(re);\r
1524             recover(input,re);\r
1525         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
1526 \r
1527         }\r
1528         finally {\r
1529         }\r
1530         return retval;\r
1531     }\r
1532     // $ANTLR end "seq"\r
1533 \r
1534     public static class mixed_return extends ParserRuleReturnScope {\r
1535         Object tree;\r
1536         public Object getTree() { return tree; }\r
1537     };\r
1538 \r
1539     // $ANTLR start "mixed"\r
1540     // DTD.g:202:1: fragment mixed : ( LParen '#PCDATA' ( '|' mixed_i )* RParen '*' -> ^( COMPONENT TYPE[\"mixed\"] ( mixed_i )* ) | LParen '#PCDATA' RParen -> ^( COMPONENT TYPE[\"pcdata\"] ) );\r
1541     public final DTDParser.mixed_return mixed() throws RecognitionException {\r
1542         DTDParser.mixed_return retval = new DTDParser.mixed_return();\r
1543         retval.start = input.LT(1);\r
1544 \r
1545         Object root_0 = null;\r
1546 \r
1547         Token LParen36=null;\r
1548         Token string_literal37=null;\r
1549         Token char_literal38=null;\r
1550         Token RParen40=null;\r
1551         Token char_literal41=null;\r
1552         Token LParen42=null;\r
1553         Token string_literal43=null;\r
1554         Token RParen44=null;\r
1555         DTDParser.mixed_i_return mixed_i39 = null;\r
1556 \r
1557 \r
1558         Object LParen36_tree=null;\r
1559         Object string_literal37_tree=null;\r
1560         Object char_literal38_tree=null;\r
1561         Object RParen40_tree=null;\r
1562         Object char_literal41_tree=null;\r
1563         Object LParen42_tree=null;\r
1564         Object string_literal43_tree=null;\r
1565         Object RParen44_tree=null;\r
1566         RewriteRuleTokenStream stream_RParen=new RewriteRuleTokenStream(adaptor,"token RParen");\r
1567         RewriteRuleTokenStream stream_50=new RewriteRuleTokenStream(adaptor,"token 50");\r
1568         RewriteRuleTokenStream stream_47=new RewriteRuleTokenStream(adaptor,"token 47");\r
1569         RewriteRuleTokenStream stream_49=new RewriteRuleTokenStream(adaptor,"token 49");\r
1570         RewriteRuleTokenStream stream_LParen=new RewriteRuleTokenStream(adaptor,"token LParen");\r
1571         RewriteRuleSubtreeStream stream_mixed_i=new RewriteRuleSubtreeStream(adaptor,"rule mixed_i");\r
1572         try {\r
1573             // DTD.g:204:3: ( LParen '#PCDATA' ( '|' mixed_i )* RParen '*' -> ^( COMPONENT TYPE[\"mixed\"] ( mixed_i )* ) | LParen '#PCDATA' RParen -> ^( COMPONENT TYPE[\"pcdata\"] ) )\r
1574             int alt15=2;\r
1575             int LA15_0 = input.LA(1);\r
1576 \r
1577             if ( (LA15_0==LParen) ) {\r
1578                 int LA15_1 = input.LA(2);\r
1579 \r
1580                 if ( (LA15_1==50) ) {\r
1581                     int LA15_2 = input.LA(3);\r
1582 \r
1583                     if ( (LA15_2==RParen) ) {\r
1584                         int LA15_3 = input.LA(4);\r
1585 \r
1586                         if ( (LA15_3==47) ) {\r
1587                             alt15=1;\r
1588                         }\r
1589                         else if ( (LA15_3==43) ) {\r
1590                             alt15=2;\r
1591                         }\r
1592                         else {\r
1593                             if (state.backtracking>0) {state.failed=true; return retval;}\r
1594                             NoViableAltException nvae =\r
1595                                 new NoViableAltException("", 15, 3, input);\r
1596 \r
1597                             throw nvae;\r
1598                         }\r
1599                     }\r
1600                     else if ( (LA15_2==49) ) {\r
1601                         alt15=1;\r
1602                     }\r
1603                     else {\r
1604                         if (state.backtracking>0) {state.failed=true; return retval;}\r
1605                         NoViableAltException nvae =\r
1606                             new NoViableAltException("", 15, 2, input);\r
1607 \r
1608                         throw nvae;\r
1609                     }\r
1610                 }\r
1611                 else {\r
1612                     if (state.backtracking>0) {state.failed=true; return retval;}\r
1613                     NoViableAltException nvae =\r
1614                         new NoViableAltException("", 15, 1, input);\r
1615 \r
1616                     throw nvae;\r
1617                 }\r
1618             }\r
1619             else {\r
1620                 if (state.backtracking>0) {state.failed=true; return retval;}\r
1621                 NoViableAltException nvae =\r
1622                     new NoViableAltException("", 15, 0, input);\r
1623 \r
1624                 throw nvae;\r
1625             }\r
1626             switch (alt15) {\r
1627                 case 1 :\r
1628                     // DTD.g:204:5: LParen '#PCDATA' ( '|' mixed_i )* RParen '*'\r
1629                     {\r
1630                     LParen36=(Token)match(input,LParen,FOLLOW_LParen_in_mixed945); if (state.failed) return retval; \r
1631                     if ( state.backtracking==0 ) stream_LParen.add(LParen36);\r
1632 \r
1633                     string_literal37=(Token)match(input,50,FOLLOW_50_in_mixed947); if (state.failed) return retval; \r
1634                     if ( state.backtracking==0 ) stream_50.add(string_literal37);\r
1635 \r
1636                     // DTD.g:204:22: ( '|' mixed_i )*\r
1637                     loop14:\r
1638                     do {\r
1639                         int alt14=2;\r
1640                         int LA14_0 = input.LA(1);\r
1641 \r
1642                         if ( (LA14_0==49) ) {\r
1643                             alt14=1;\r
1644                         }\r
1645 \r
1646 \r
1647                         switch (alt14) {\r
1648                         case 1 :\r
1649                             // DTD.g:204:23: '|' mixed_i\r
1650                             {\r
1651                             char_literal38=(Token)match(input,49,FOLLOW_49_in_mixed950); if (state.failed) return retval; \r
1652                             if ( state.backtracking==0 ) stream_49.add(char_literal38);\r
1653 \r
1654                             pushFollow(FOLLOW_mixed_i_in_mixed952);\r
1655                             mixed_i39=mixed_i();\r
1656 \r
1657                             state._fsp--;\r
1658                             if (state.failed) return retval;\r
1659                             if ( state.backtracking==0 ) stream_mixed_i.add(mixed_i39.getTree());\r
1660 \r
1661                             }\r
1662                             break;\r
1663 \r
1664                         default :\r
1665                             break loop14;\r
1666                         }\r
1667                     } while (true);\r
1668 \r
1669                     RParen40=(Token)match(input,RParen,FOLLOW_RParen_in_mixed956); if (state.failed) return retval; \r
1670                     if ( state.backtracking==0 ) stream_RParen.add(RParen40);\r
1671 \r
1672                     char_literal41=(Token)match(input,47,FOLLOW_47_in_mixed958); if (state.failed) return retval; \r
1673                     if ( state.backtracking==0 ) stream_47.add(char_literal41);\r
1674 \r
1675 \r
1676 \r
1677                     // AST REWRITE\r
1678                     // elements: mixed_i\r
1679                     // token labels: \r
1680                     // rule labels: retval\r
1681                     // token list labels: \r
1682                     // rule list labels: \r
1683                     // wildcard labels: \r
1684                     if ( state.backtracking==0 ) {\r
1685                     retval.tree = root_0;\r
1686                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
1687 \r
1688                     root_0 = (Object)adaptor.nil();\r
1689                     // 205:5: -> ^( COMPONENT TYPE[\"mixed\"] ( mixed_i )* )\r
1690                     {\r
1691                         // DTD.g:205:8: ^( COMPONENT TYPE[\"mixed\"] ( mixed_i )* )\r
1692                         {\r
1693                         Object root_1 = (Object)adaptor.nil();\r
1694                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COMPONENT, "COMPONENT"), root_1);\r
1695 \r
1696                         adaptor.addChild(root_1, (Object)adaptor.create(TYPE, "mixed"));\r
1697                         // DTD.g:205:34: ( mixed_i )*\r
1698                         while ( stream_mixed_i.hasNext() ) {\r
1699                             adaptor.addChild(root_1, stream_mixed_i.nextTree());\r
1700 \r
1701                         }\r
1702                         stream_mixed_i.reset();\r
1703 \r
1704                         adaptor.addChild(root_0, root_1);\r
1705                         }\r
1706 \r
1707                     }\r
1708 \r
1709                     retval.tree = root_0;}\r
1710                     }\r
1711                     break;\r
1712                 case 2 :\r
1713                     // DTD.g:206:5: LParen '#PCDATA' RParen\r
1714                     {\r
1715                     LParen42=(Token)match(input,LParen,FOLLOW_LParen_in_mixed980); if (state.failed) return retval; \r
1716                     if ( state.backtracking==0 ) stream_LParen.add(LParen42);\r
1717 \r
1718                     string_literal43=(Token)match(input,50,FOLLOW_50_in_mixed982); if (state.failed) return retval; \r
1719                     if ( state.backtracking==0 ) stream_50.add(string_literal43);\r
1720 \r
1721                     RParen44=(Token)match(input,RParen,FOLLOW_RParen_in_mixed984); if (state.failed) return retval; \r
1722                     if ( state.backtracking==0 ) stream_RParen.add(RParen44);\r
1723 \r
1724 \r
1725 \r
1726                     // AST REWRITE\r
1727                     // elements: \r
1728                     // token labels: \r
1729                     // rule labels: retval\r
1730                     // token list labels: \r
1731                     // rule list labels: \r
1732                     // wildcard labels: \r
1733                     if ( state.backtracking==0 ) {\r
1734                     retval.tree = root_0;\r
1735                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
1736 \r
1737                     root_0 = (Object)adaptor.nil();\r
1738                     // 207:5: -> ^( COMPONENT TYPE[\"pcdata\"] )\r
1739                     {\r
1740                         // DTD.g:207:8: ^( COMPONENT TYPE[\"pcdata\"] )\r
1741                         {\r
1742                         Object root_1 = (Object)adaptor.nil();\r
1743                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COMPONENT, "COMPONENT"), root_1);\r
1744 \r
1745                         adaptor.addChild(root_1, (Object)adaptor.create(TYPE, "pcdata"));\r
1746 \r
1747                         adaptor.addChild(root_0, root_1);\r
1748                         }\r
1749 \r
1750                     }\r
1751 \r
1752                     retval.tree = root_0;}\r
1753                     }\r
1754                     break;\r
1755 \r
1756             }\r
1757             retval.stop = input.LT(-1);\r
1758 \r
1759             if ( state.backtracking==0 ) {\r
1760 \r
1761             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
1762             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
1763             }\r
1764         }\r
1765         catch (RecognitionException re) {\r
1766             reportError(re);\r
1767             recover(input,re);\r
1768         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
1769 \r
1770         }\r
1771         finally {\r
1772         }\r
1773         return retval;\r
1774     }\r
1775     // $ANTLR end "mixed"\r
1776 \r
1777     public static class mixed_i_return extends ParserRuleReturnScope {\r
1778         Object tree;\r
1779         public Object getTree() { return tree; }\r
1780     };\r
1781 \r
1782     // $ANTLR start "mixed_i"\r
1783     // DTD.g:210:1: mixed_i : Name -> NAME[$Name.text] ;\r
1784     public final DTDParser.mixed_i_return mixed_i() throws RecognitionException {\r
1785         DTDParser.mixed_i_return retval = new DTDParser.mixed_i_return();\r
1786         retval.start = input.LT(1);\r
1787 \r
1788         Object root_0 = null;\r
1789 \r
1790         Token Name45=null;\r
1791 \r
1792         Object Name45_tree=null;\r
1793         RewriteRuleTokenStream stream_Name=new RewriteRuleTokenStream(adaptor,"token Name");\r
1794 \r
1795         try {\r
1796             // DTD.g:211:3: ( Name -> NAME[$Name.text] )\r
1797             // DTD.g:211:5: Name\r
1798             {\r
1799             Name45=(Token)match(input,Name,FOLLOW_Name_in_mixed_i1013); if (state.failed) return retval; \r
1800             if ( state.backtracking==0 ) stream_Name.add(Name45);\r
1801 \r
1802 \r
1803 \r
1804             // AST REWRITE\r
1805             // elements: \r
1806             // token labels: \r
1807             // rule labels: retval\r
1808             // token list labels: \r
1809             // rule list labels: \r
1810             // wildcard labels: \r
1811             if ( state.backtracking==0 ) {\r
1812             retval.tree = root_0;\r
1813             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
1814 \r
1815             root_0 = (Object)adaptor.nil();\r
1816             // 211:10: -> NAME[$Name.text]\r
1817             {\r
1818                 adaptor.addChild(root_0, (Object)adaptor.create(NAME, (Name45!=null?Name45.getText():null)));\r
1819 \r
1820             }\r
1821 \r
1822             retval.tree = root_0;}\r
1823             }\r
1824 \r
1825             retval.stop = input.LT(-1);\r
1826 \r
1827             if ( state.backtracking==0 ) {\r
1828 \r
1829             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
1830             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
1831             }\r
1832         }\r
1833         catch (RecognitionException re) {\r
1834             reportError(re);\r
1835             recover(input,re);\r
1836         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
1837 \r
1838         }\r
1839         finally {\r
1840         }\r
1841         return retval;\r
1842     }\r
1843     // $ANTLR end "mixed_i"\r
1844 \r
1845     public static class attlistDecl_return extends ParserRuleReturnScope {\r
1846         Object tree;\r
1847         public Object getTree() { return tree; }\r
1848     };\r
1849 \r
1850     // $ANTLR start "attlistDecl"\r
1851     // DTD.g:214:1: attlistDecl : '<!ATTLIST' Name ( attDef )* '>' -> ^( ATTLIST NAME[$Name.text] ( attDef )* ) ;\r
1852     public final DTDParser.attlistDecl_return attlistDecl() throws RecognitionException {\r
1853         DTDParser.attlistDecl_return retval = new DTDParser.attlistDecl_return();\r
1854         retval.start = input.LT(1);\r
1855 \r
1856         Object root_0 = null;\r
1857 \r
1858         Token string_literal46=null;\r
1859         Token Name47=null;\r
1860         Token char_literal49=null;\r
1861         DTDParser.attDef_return attDef48 = null;\r
1862 \r
1863 \r
1864         Object string_literal46_tree=null;\r
1865         Object Name47_tree=null;\r
1866         Object char_literal49_tree=null;\r
1867         RewriteRuleTokenStream stream_43=new RewriteRuleTokenStream(adaptor,"token 43");\r
1868         RewriteRuleTokenStream stream_Name=new RewriteRuleTokenStream(adaptor,"token Name");\r
1869         RewriteRuleTokenStream stream_51=new RewriteRuleTokenStream(adaptor,"token 51");\r
1870         RewriteRuleSubtreeStream stream_attDef=new RewriteRuleSubtreeStream(adaptor,"rule attDef");\r
1871         try {\r
1872             // DTD.g:214:12: ( '<!ATTLIST' Name ( attDef )* '>' -> ^( ATTLIST NAME[$Name.text] ( attDef )* ) )\r
1873             // DTD.g:214:14: '<!ATTLIST' Name ( attDef )* '>'\r
1874             {\r
1875             string_literal46=(Token)match(input,51,FOLLOW_51_in_attlistDecl1034); if (state.failed) return retval; \r
1876             if ( state.backtracking==0 ) stream_51.add(string_literal46);\r
1877 \r
1878             Name47=(Token)match(input,Name,FOLLOW_Name_in_attlistDecl1036); if (state.failed) return retval; \r
1879             if ( state.backtracking==0 ) stream_Name.add(Name47);\r
1880 \r
1881             // DTD.g:214:31: ( attDef )*\r
1882             loop16:\r
1883             do {\r
1884                 int alt16=2;\r
1885                 int LA16_0 = input.LA(1);\r
1886 \r
1887                 if ( (LA16_0==Name) ) {\r
1888                     alt16=1;\r
1889                 }\r
1890 \r
1891 \r
1892                 switch (alt16) {\r
1893                 case 1 :\r
1894                     // DTD.g:214:31: attDef\r
1895                     {\r
1896                     pushFollow(FOLLOW_attDef_in_attlistDecl1038);\r
1897                     attDef48=attDef();\r
1898 \r
1899                     state._fsp--;\r
1900                     if (state.failed) return retval;\r
1901                     if ( state.backtracking==0 ) stream_attDef.add(attDef48.getTree());\r
1902 \r
1903                     }\r
1904                     break;\r
1905 \r
1906                 default :\r
1907                     break loop16;\r
1908                 }\r
1909             } while (true);\r
1910 \r
1911             char_literal49=(Token)match(input,43,FOLLOW_43_in_attlistDecl1041); if (state.failed) return retval; \r
1912             if ( state.backtracking==0 ) stream_43.add(char_literal49);\r
1913 \r
1914 \r
1915 \r
1916             // AST REWRITE\r
1917             // elements: attDef\r
1918             // token labels: \r
1919             // rule labels: retval\r
1920             // token list labels: \r
1921             // rule list labels: \r
1922             // wildcard labels: \r
1923             if ( state.backtracking==0 ) {\r
1924             retval.tree = root_0;\r
1925             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
1926 \r
1927             root_0 = (Object)adaptor.nil();\r
1928             // 215:3: -> ^( ATTLIST NAME[$Name.text] ( attDef )* )\r
1929             {\r
1930                 // DTD.g:215:6: ^( ATTLIST NAME[$Name.text] ( attDef )* )\r
1931                 {\r
1932                 Object root_1 = (Object)adaptor.nil();\r
1933                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ATTLIST, "ATTLIST"), root_1);\r
1934 \r
1935                 adaptor.addChild(root_1, (Object)adaptor.create(NAME, (Name47!=null?Name47.getText():null)));\r
1936                 // DTD.g:215:33: ( attDef )*\r
1937                 while ( stream_attDef.hasNext() ) {\r
1938                     adaptor.addChild(root_1, stream_attDef.nextTree());\r
1939 \r
1940                 }\r
1941                 stream_attDef.reset();\r
1942 \r
1943                 adaptor.addChild(root_0, root_1);\r
1944                 }\r
1945 \r
1946             }\r
1947 \r
1948             retval.tree = root_0;}\r
1949             }\r
1950 \r
1951             retval.stop = input.LT(-1);\r
1952 \r
1953             if ( state.backtracking==0 ) {\r
1954 \r
1955             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
1956             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
1957             }\r
1958         }\r
1959         catch (RecognitionException re) {\r
1960             reportError(re);\r
1961             recover(input,re);\r
1962         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
1963 \r
1964         }\r
1965         finally {\r
1966         }\r
1967         return retval;\r
1968     }\r
1969     // $ANTLR end "attlistDecl"\r
1970 \r
1971     public static class attDef_return extends ParserRuleReturnScope {\r
1972         Object tree;\r
1973         public Object getTree() { return tree; }\r
1974     };\r
1975 \r
1976     // $ANTLR start "attDef"\r
1977     // DTD.g:218:1: fragment attDef : Name attType DefaultDecl -> ^( ATTRIBUTE NAME[$Name.text] attType DECL[$DefaultDecl.text] ) ;\r
1978     public final DTDParser.attDef_return attDef() throws RecognitionException {\r
1979         DTDParser.attDef_return retval = new DTDParser.attDef_return();\r
1980         retval.start = input.LT(1);\r
1981 \r
1982         Object root_0 = null;\r
1983 \r
1984         Token Name50=null;\r
1985         Token DefaultDecl52=null;\r
1986         DTDParser.attType_return attType51 = null;\r
1987 \r
1988 \r
1989         Object Name50_tree=null;\r
1990         Object DefaultDecl52_tree=null;\r
1991         RewriteRuleTokenStream stream_DefaultDecl=new RewriteRuleTokenStream(adaptor,"token DefaultDecl");\r
1992         RewriteRuleTokenStream stream_Name=new RewriteRuleTokenStream(adaptor,"token Name");\r
1993         RewriteRuleSubtreeStream stream_attType=new RewriteRuleSubtreeStream(adaptor,"rule attType");\r
1994         try {\r
1995             // DTD.g:219:7: ( Name attType DefaultDecl -> ^( ATTRIBUTE NAME[$Name.text] attType DECL[$DefaultDecl.text] ) )\r
1996             // DTD.g:219:9: Name attType DefaultDecl\r
1997             {\r
1998             Name50=(Token)match(input,Name,FOLLOW_Name_in_attDef1067); if (state.failed) return retval; \r
1999             if ( state.backtracking==0 ) stream_Name.add(Name50);\r
2000 \r
2001             pushFollow(FOLLOW_attType_in_attDef1069);\r
2002             attType51=attType();\r
2003 \r
2004             state._fsp--;\r
2005             if (state.failed) return retval;\r
2006             if ( state.backtracking==0 ) stream_attType.add(attType51.getTree());\r
2007             DefaultDecl52=(Token)match(input,DefaultDecl,FOLLOW_DefaultDecl_in_attDef1071); if (state.failed) return retval; \r
2008             if ( state.backtracking==0 ) stream_DefaultDecl.add(DefaultDecl52);\r
2009 \r
2010 \r
2011 \r
2012             // AST REWRITE\r
2013             // elements: attType\r
2014             // token labels: \r
2015             // rule labels: retval\r
2016             // token list labels: \r
2017             // rule list labels: \r
2018             // wildcard labels: \r
2019             if ( state.backtracking==0 ) {\r
2020             retval.tree = root_0;\r
2021             RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
2022 \r
2023             root_0 = (Object)adaptor.nil();\r
2024             // 220:3: -> ^( ATTRIBUTE NAME[$Name.text] attType DECL[$DefaultDecl.text] )\r
2025             {\r
2026                 // DTD.g:220:6: ^( ATTRIBUTE NAME[$Name.text] attType DECL[$DefaultDecl.text] )\r
2027                 {\r
2028                 Object root_1 = (Object)adaptor.nil();\r
2029                 root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ATTRIBUTE, "ATTRIBUTE"), root_1);\r
2030 \r
2031                 adaptor.addChild(root_1, (Object)adaptor.create(NAME, (Name50!=null?Name50.getText():null)));\r
2032                 adaptor.addChild(root_1, stream_attType.nextTree());\r
2033                 adaptor.addChild(root_1, (Object)adaptor.create(DECL, (DefaultDecl52!=null?DefaultDecl52.getText():null)));\r
2034 \r
2035                 adaptor.addChild(root_0, root_1);\r
2036                 }\r
2037 \r
2038             }\r
2039 \r
2040             retval.tree = root_0;}\r
2041             }\r
2042 \r
2043             retval.stop = input.LT(-1);\r
2044 \r
2045             if ( state.backtracking==0 ) {\r
2046 \r
2047             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
2048             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
2049             }\r
2050         }\r
2051         catch (RecognitionException re) {\r
2052             reportError(re);\r
2053             recover(input,re);\r
2054         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
2055 \r
2056         }\r
2057         finally {\r
2058         }\r
2059         return retval;\r
2060     }\r
2061     // $ANTLR end "attDef"\r
2062 \r
2063     public static class attType_return extends ParserRuleReturnScope {\r
2064         Object tree;\r
2065         public Object getTree() { return tree; }\r
2066     };\r
2067 \r
2068     // $ANTLR start "attType"\r
2069     // DTD.g:223:1: fragment attType : ( stringType -> STRINGTYPE[$stringType.text] | tokenizedType -> TOKENIZEDTYPE[$tokenizedType.text] | enumeratedType -> ENUMTYPE[$enumeratedType.text] );\r
2070     public final DTDParser.attType_return attType() throws RecognitionException {\r
2071         DTDParser.attType_return retval = new DTDParser.attType_return();\r
2072         retval.start = input.LT(1);\r
2073 \r
2074         Object root_0 = null;\r
2075 \r
2076         DTDParser.stringType_return stringType53 = null;\r
2077 \r
2078         DTDParser.tokenizedType_return tokenizedType54 = null;\r
2079 \r
2080         DTDParser.enumeratedType_return enumeratedType55 = null;\r
2081 \r
2082 \r
2083         RewriteRuleSubtreeStream stream_enumeratedType=new RewriteRuleSubtreeStream(adaptor,"rule enumeratedType");\r
2084         RewriteRuleSubtreeStream stream_tokenizedType=new RewriteRuleSubtreeStream(adaptor,"rule tokenizedType");\r
2085         RewriteRuleSubtreeStream stream_stringType=new RewriteRuleSubtreeStream(adaptor,"rule stringType");\r
2086         try {\r
2087             // DTD.g:225:3: ( stringType -> STRINGTYPE[$stringType.text] | tokenizedType -> TOKENIZEDTYPE[$tokenizedType.text] | enumeratedType -> ENUMTYPE[$enumeratedType.text] )\r
2088             int alt17=3;\r
2089             switch ( input.LA(1) ) {\r
2090             case 53:\r
2091                 {\r
2092                 alt17=1;\r
2093                 }\r
2094                 break;\r
2095             case 54:\r
2096             case 55:\r
2097             case 56:\r
2098             case 57:\r
2099             case 58:\r
2100             case 59:\r
2101             case 60:\r
2102                 {\r
2103                 alt17=2;\r
2104                 }\r
2105                 break;\r
2106             case LParen:\r
2107             case 52:\r
2108                 {\r
2109                 alt17=3;\r
2110                 }\r
2111                 break;\r
2112             default:\r
2113                 if (state.backtracking>0) {state.failed=true; return retval;}\r
2114                 NoViableAltException nvae =\r
2115                     new NoViableAltException("", 17, 0, input);\r
2116 \r
2117                 throw nvae;\r
2118             }\r
2119 \r
2120             switch (alt17) {\r
2121                 case 1 :\r
2122                     // DTD.g:225:5: stringType\r
2123                     {\r
2124                     pushFollow(FOLLOW_stringType_in_attType1103);\r
2125                     stringType53=stringType();\r
2126 \r
2127                     state._fsp--;\r
2128                     if (state.failed) return retval;\r
2129                     if ( state.backtracking==0 ) stream_stringType.add(stringType53.getTree());\r
2130 \r
2131 \r
2132                     // AST REWRITE\r
2133                     // elements: \r
2134                     // token labels: \r
2135                     // rule labels: retval\r
2136                     // token list labels: \r
2137                     // rule list labels: \r
2138                     // wildcard labels: \r
2139                     if ( state.backtracking==0 ) {\r
2140                     retval.tree = root_0;\r
2141                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
2142 \r
2143                     root_0 = (Object)adaptor.nil();\r
2144                     // 225:16: -> STRINGTYPE[$stringType.text]\r
2145                     {\r
2146                         adaptor.addChild(root_0, (Object)adaptor.create(STRINGTYPE, (stringType53!=null?input.toString(stringType53.start,stringType53.stop):null)));\r
2147 \r
2148                     }\r
2149 \r
2150                     retval.tree = root_0;}\r
2151                     }\r
2152                     break;\r
2153                 case 2 :\r
2154                     // DTD.g:226:5: tokenizedType\r
2155                     {\r
2156                     pushFollow(FOLLOW_tokenizedType_in_attType1115);\r
2157                     tokenizedType54=tokenizedType();\r
2158 \r
2159                     state._fsp--;\r
2160                     if (state.failed) return retval;\r
2161                     if ( state.backtracking==0 ) stream_tokenizedType.add(tokenizedType54.getTree());\r
2162 \r
2163 \r
2164                     // AST REWRITE\r
2165                     // elements: \r
2166                     // token labels: \r
2167                     // rule labels: retval\r
2168                     // token list labels: \r
2169                     // rule list labels: \r
2170                     // wildcard labels: \r
2171                     if ( state.backtracking==0 ) {\r
2172                     retval.tree = root_0;\r
2173                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
2174 \r
2175                     root_0 = (Object)adaptor.nil();\r
2176                     // 226:19: -> TOKENIZEDTYPE[$tokenizedType.text]\r
2177                     {\r
2178                         adaptor.addChild(root_0, (Object)adaptor.create(TOKENIZEDTYPE, (tokenizedType54!=null?input.toString(tokenizedType54.start,tokenizedType54.stop):null)));\r
2179 \r
2180                     }\r
2181 \r
2182                     retval.tree = root_0;}\r
2183                     }\r
2184                     break;\r
2185                 case 3 :\r
2186                     // DTD.g:227:5: enumeratedType\r
2187                     {\r
2188                     pushFollow(FOLLOW_enumeratedType_in_attType1127);\r
2189                     enumeratedType55=enumeratedType();\r
2190 \r
2191                     state._fsp--;\r
2192                     if (state.failed) return retval;\r
2193                     if ( state.backtracking==0 ) stream_enumeratedType.add(enumeratedType55.getTree());\r
2194 \r
2195 \r
2196                     // AST REWRITE\r
2197                     // elements: \r
2198                     // token labels: \r
2199                     // rule labels: retval\r
2200                     // token list labels: \r
2201                     // rule list labels: \r
2202                     // wildcard labels: \r
2203                     if ( state.backtracking==0 ) {\r
2204                     retval.tree = root_0;\r
2205                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
2206 \r
2207                     root_0 = (Object)adaptor.nil();\r
2208                     // 227:20: -> ENUMTYPE[$enumeratedType.text]\r
2209                     {\r
2210                         adaptor.addChild(root_0, (Object)adaptor.create(ENUMTYPE, (enumeratedType55!=null?input.toString(enumeratedType55.start,enumeratedType55.stop):null)));\r
2211 \r
2212                     }\r
2213 \r
2214                     retval.tree = root_0;}\r
2215                     }\r
2216                     break;\r
2217 \r
2218             }\r
2219             retval.stop = input.LT(-1);\r
2220 \r
2221             if ( state.backtracking==0 ) {\r
2222 \r
2223             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
2224             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
2225             }\r
2226         }\r
2227         catch (RecognitionException re) {\r
2228             reportError(re);\r
2229             recover(input,re);\r
2230         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
2231 \r
2232         }\r
2233         finally {\r
2234         }\r
2235         return retval;\r
2236     }\r
2237     // $ANTLR end "attType"\r
2238 \r
2239     public static class enumeration_return extends ParserRuleReturnScope {\r
2240         Object tree;\r
2241         public Object getTree() { return tree; }\r
2242     };\r
2243 \r
2244     // $ANTLR start "enumeration"\r
2245     // DTD.g:230:1: fragment enumeration : LParen Name ( '|' Name )* RParen ;\r
2246     public final DTDParser.enumeration_return enumeration() throws RecognitionException {\r
2247         DTDParser.enumeration_return retval = new DTDParser.enumeration_return();\r
2248         retval.start = input.LT(1);\r
2249 \r
2250         Object root_0 = null;\r
2251 \r
2252         Token LParen56=null;\r
2253         Token Name57=null;\r
2254         Token char_literal58=null;\r
2255         Token Name59=null;\r
2256         Token RParen60=null;\r
2257 \r
2258         Object LParen56_tree=null;\r
2259         Object Name57_tree=null;\r
2260         Object char_literal58_tree=null;\r
2261         Object Name59_tree=null;\r
2262         Object RParen60_tree=null;\r
2263 \r
2264         try {\r
2265             // DTD.g:231:12: ( LParen Name ( '|' Name )* RParen )\r
2266             // DTD.g:231:14: LParen Name ( '|' Name )* RParen\r
2267             {\r
2268             root_0 = (Object)adaptor.nil();\r
2269 \r
2270             LParen56=(Token)match(input,LParen,FOLLOW_LParen_in_enumeration1144); if (state.failed) return retval;\r
2271             if ( state.backtracking==0 ) {\r
2272             LParen56_tree = (Object)adaptor.create(LParen56);\r
2273             adaptor.addChild(root_0, LParen56_tree);\r
2274             }\r
2275             Name57=(Token)match(input,Name,FOLLOW_Name_in_enumeration1146); if (state.failed) return retval;\r
2276             if ( state.backtracking==0 ) {\r
2277             Name57_tree = (Object)adaptor.create(Name57);\r
2278             adaptor.addChild(root_0, Name57_tree);\r
2279             }\r
2280             // DTD.g:231:26: ( '|' Name )*\r
2281             loop18:\r
2282             do {\r
2283                 int alt18=2;\r
2284                 int LA18_0 = input.LA(1);\r
2285 \r
2286                 if ( (LA18_0==49) ) {\r
2287                     alt18=1;\r
2288                 }\r
2289 \r
2290 \r
2291                 switch (alt18) {\r
2292                 case 1 :\r
2293                     // DTD.g:231:27: '|' Name\r
2294                     {\r
2295                     char_literal58=(Token)match(input,49,FOLLOW_49_in_enumeration1149); if (state.failed) return retval;\r
2296                     if ( state.backtracking==0 ) {\r
2297                     char_literal58_tree = (Object)adaptor.create(char_literal58);\r
2298                     adaptor.addChild(root_0, char_literal58_tree);\r
2299                     }\r
2300                     Name59=(Token)match(input,Name,FOLLOW_Name_in_enumeration1151); if (state.failed) return retval;\r
2301                     if ( state.backtracking==0 ) {\r
2302                     Name59_tree = (Object)adaptor.create(Name59);\r
2303                     adaptor.addChild(root_0, Name59_tree);\r
2304                     }\r
2305 \r
2306                     }\r
2307                     break;\r
2308 \r
2309                 default :\r
2310                     break loop18;\r
2311                 }\r
2312             } while (true);\r
2313 \r
2314             RParen60=(Token)match(input,RParen,FOLLOW_RParen_in_enumeration1155); if (state.failed) return retval;\r
2315             if ( state.backtracking==0 ) {\r
2316             RParen60_tree = (Object)adaptor.create(RParen60);\r
2317             adaptor.addChild(root_0, RParen60_tree);\r
2318             }\r
2319 \r
2320             }\r
2321 \r
2322             retval.stop = input.LT(-1);\r
2323 \r
2324             if ( state.backtracking==0 ) {\r
2325 \r
2326             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
2327             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
2328             }\r
2329         }\r
2330         catch (RecognitionException re) {\r
2331             reportError(re);\r
2332             recover(input,re);\r
2333         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
2334 \r
2335         }\r
2336         finally {\r
2337         }\r
2338         return retval;\r
2339     }\r
2340     // $ANTLR end "enumeration"\r
2341 \r
2342     public static class enumeratedType_return extends ParserRuleReturnScope {\r
2343         Object tree;\r
2344         public Object getTree() { return tree; }\r
2345     };\r
2346 \r
2347     // $ANTLR start "enumeratedType"\r
2348     // DTD.g:232:1: fragment enumeratedType : ( notationType | enumeration );\r
2349     public final DTDParser.enumeratedType_return enumeratedType() throws RecognitionException {\r
2350         DTDParser.enumeratedType_return retval = new DTDParser.enumeratedType_return();\r
2351         retval.start = input.LT(1);\r
2352 \r
2353         Object root_0 = null;\r
2354 \r
2355         DTDParser.notationType_return notationType61 = null;\r
2356 \r
2357         DTDParser.enumeration_return enumeration62 = null;\r
2358 \r
2359 \r
2360 \r
2361         try {\r
2362             // DTD.g:233:15: ( notationType | enumeration )\r
2363             int alt19=2;\r
2364             int LA19_0 = input.LA(1);\r
2365 \r
2366             if ( (LA19_0==52) ) {\r
2367                 alt19=1;\r
2368             }\r
2369             else if ( (LA19_0==LParen) ) {\r
2370                 alt19=2;\r
2371             }\r
2372             else {\r
2373                 if (state.backtracking>0) {state.failed=true; return retval;}\r
2374                 NoViableAltException nvae =\r
2375                     new NoViableAltException("", 19, 0, input);\r
2376 \r
2377                 throw nvae;\r
2378             }\r
2379             switch (alt19) {\r
2380                 case 1 :\r
2381                     // DTD.g:233:17: notationType\r
2382                     {\r
2383                     root_0 = (Object)adaptor.nil();\r
2384 \r
2385                     pushFollow(FOLLOW_notationType_in_enumeratedType1163);\r
2386                     notationType61=notationType();\r
2387 \r
2388                     state._fsp--;\r
2389                     if (state.failed) return retval;\r
2390                     if ( state.backtracking==0 ) adaptor.addChild(root_0, notationType61.getTree());\r
2391 \r
2392                     }\r
2393                     break;\r
2394                 case 2 :\r
2395                     // DTD.g:233:32: enumeration\r
2396                     {\r
2397                     root_0 = (Object)adaptor.nil();\r
2398 \r
2399                     pushFollow(FOLLOW_enumeration_in_enumeratedType1167);\r
2400                     enumeration62=enumeration();\r
2401 \r
2402                     state._fsp--;\r
2403                     if (state.failed) return retval;\r
2404                     if ( state.backtracking==0 ) adaptor.addChild(root_0, enumeration62.getTree());\r
2405 \r
2406                     }\r
2407                     break;\r
2408 \r
2409             }\r
2410             retval.stop = input.LT(-1);\r
2411 \r
2412             if ( state.backtracking==0 ) {\r
2413 \r
2414             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
2415             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
2416             }\r
2417         }\r
2418         catch (RecognitionException re) {\r
2419             reportError(re);\r
2420             recover(input,re);\r
2421         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
2422 \r
2423         }\r
2424         finally {\r
2425         }\r
2426         return retval;\r
2427     }\r
2428     // $ANTLR end "enumeratedType"\r
2429 \r
2430     public static class notationType_return extends ParserRuleReturnScope {\r
2431         Object tree;\r
2432         public Object getTree() { return tree; }\r
2433     };\r
2434 \r
2435     // $ANTLR start "notationType"\r
2436     // DTD.g:234:1: fragment notationType : 'NOTATION' LParen Name ( '|' Name )* RParen ;\r
2437     public final DTDParser.notationType_return notationType() throws RecognitionException {\r
2438         DTDParser.notationType_return retval = new DTDParser.notationType_return();\r
2439         retval.start = input.LT(1);\r
2440 \r
2441         Object root_0 = null;\r
2442 \r
2443         Token string_literal63=null;\r
2444         Token LParen64=null;\r
2445         Token Name65=null;\r
2446         Token char_literal66=null;\r
2447         Token Name67=null;\r
2448         Token RParen68=null;\r
2449 \r
2450         Object string_literal63_tree=null;\r
2451         Object LParen64_tree=null;\r
2452         Object Name65_tree=null;\r
2453         Object char_literal66_tree=null;\r
2454         Object Name67_tree=null;\r
2455         Object RParen68_tree=null;\r
2456 \r
2457         try {\r
2458             // DTD.g:235:13: ( 'NOTATION' LParen Name ( '|' Name )* RParen )\r
2459             // DTD.g:235:15: 'NOTATION' LParen Name ( '|' Name )* RParen\r
2460             {\r
2461             root_0 = (Object)adaptor.nil();\r
2462 \r
2463             string_literal63=(Token)match(input,52,FOLLOW_52_in_notationType1175); if (state.failed) return retval;\r
2464             if ( state.backtracking==0 ) {\r
2465             string_literal63_tree = (Object)adaptor.create(string_literal63);\r
2466             adaptor.addChild(root_0, string_literal63_tree);\r
2467             }\r
2468             LParen64=(Token)match(input,LParen,FOLLOW_LParen_in_notationType1177); if (state.failed) return retval;\r
2469             if ( state.backtracking==0 ) {\r
2470             LParen64_tree = (Object)adaptor.create(LParen64);\r
2471             adaptor.addChild(root_0, LParen64_tree);\r
2472             }\r
2473             Name65=(Token)match(input,Name,FOLLOW_Name_in_notationType1179); if (state.failed) return retval;\r
2474             if ( state.backtracking==0 ) {\r
2475             Name65_tree = (Object)adaptor.create(Name65);\r
2476             adaptor.addChild(root_0, Name65_tree);\r
2477             }\r
2478             // DTD.g:235:38: ( '|' Name )*\r
2479             loop20:\r
2480             do {\r
2481                 int alt20=2;\r
2482                 int LA20_0 = input.LA(1);\r
2483 \r
2484                 if ( (LA20_0==49) ) {\r
2485                     alt20=1;\r
2486                 }\r
2487 \r
2488 \r
2489                 switch (alt20) {\r
2490                 case 1 :\r
2491                     // DTD.g:235:39: '|' Name\r
2492                     {\r
2493                     char_literal66=(Token)match(input,49,FOLLOW_49_in_notationType1182); if (state.failed) return retval;\r
2494                     if ( state.backtracking==0 ) {\r
2495                     char_literal66_tree = (Object)adaptor.create(char_literal66);\r
2496                     adaptor.addChild(root_0, char_literal66_tree);\r
2497                     }\r
2498                     Name67=(Token)match(input,Name,FOLLOW_Name_in_notationType1184); if (state.failed) return retval;\r
2499                     if ( state.backtracking==0 ) {\r
2500                     Name67_tree = (Object)adaptor.create(Name67);\r
2501                     adaptor.addChild(root_0, Name67_tree);\r
2502                     }\r
2503 \r
2504                     }\r
2505                     break;\r
2506 \r
2507                 default :\r
2508                     break loop20;\r
2509                 }\r
2510             } while (true);\r
2511 \r
2512             RParen68=(Token)match(input,RParen,FOLLOW_RParen_in_notationType1188); if (state.failed) return retval;\r
2513             if ( state.backtracking==0 ) {\r
2514             RParen68_tree = (Object)adaptor.create(RParen68);\r
2515             adaptor.addChild(root_0, RParen68_tree);\r
2516             }\r
2517 \r
2518             }\r
2519 \r
2520             retval.stop = input.LT(-1);\r
2521 \r
2522             if ( state.backtracking==0 ) {\r
2523 \r
2524             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
2525             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
2526             }\r
2527         }\r
2528         catch (RecognitionException re) {\r
2529             reportError(re);\r
2530             recover(input,re);\r
2531         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
2532 \r
2533         }\r
2534         finally {\r
2535         }\r
2536         return retval;\r
2537     }\r
2538     // $ANTLR end "notationType"\r
2539 \r
2540     public static class stringType_return extends ParserRuleReturnScope {\r
2541         Object tree;\r
2542         public Object getTree() { return tree; }\r
2543     };\r
2544 \r
2545     // $ANTLR start "stringType"\r
2546     // DTD.g:237:1: fragment stringType : 'CDATA' ;\r
2547     public final DTDParser.stringType_return stringType() throws RecognitionException {\r
2548         DTDParser.stringType_return retval = new DTDParser.stringType_return();\r
2549         retval.start = input.LT(1);\r
2550 \r
2551         Object root_0 = null;\r
2552 \r
2553         Token string_literal69=null;\r
2554 \r
2555         Object string_literal69_tree=null;\r
2556 \r
2557         try {\r
2558             // DTD.g:238:11: ( 'CDATA' )\r
2559             // DTD.g:238:13: 'CDATA'\r
2560             {\r
2561             root_0 = (Object)adaptor.nil();\r
2562 \r
2563             string_literal69=(Token)match(input,53,FOLLOW_53_in_stringType1197); if (state.failed) return retval;\r
2564             if ( state.backtracking==0 ) {\r
2565             string_literal69_tree = (Object)adaptor.create(string_literal69);\r
2566             adaptor.addChild(root_0, string_literal69_tree);\r
2567             }\r
2568 \r
2569             }\r
2570 \r
2571             retval.stop = input.LT(-1);\r
2572 \r
2573             if ( state.backtracking==0 ) {\r
2574 \r
2575             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
2576             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
2577             }\r
2578         }\r
2579         catch (RecognitionException re) {\r
2580             reportError(re);\r
2581             recover(input,re);\r
2582         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
2583 \r
2584         }\r
2585         finally {\r
2586         }\r
2587         return retval;\r
2588     }\r
2589     // $ANTLR end "stringType"\r
2590 \r
2591     public static class tokenizedType_return extends ParserRuleReturnScope {\r
2592         Object tree;\r
2593         public Object getTree() { return tree; }\r
2594     };\r
2595 \r
2596     // $ANTLR start "tokenizedType"\r
2597     // DTD.g:241:1: fragment tokenizedType : ( 'ID' | 'IDREF' | 'IDREFS' | 'ENTITY' | 'ENTITIES' | 'NMTOKEN' | 'NMTOKENS' );\r
2598     public final DTDParser.tokenizedType_return tokenizedType() throws RecognitionException {\r
2599         DTDParser.tokenizedType_return retval = new DTDParser.tokenizedType_return();\r
2600         retval.start = input.LT(1);\r
2601 \r
2602         Object root_0 = null;\r
2603 \r
2604         Token set70=null;\r
2605 \r
2606         Object set70_tree=null;\r
2607 \r
2608         try {\r
2609             // DTD.g:243:3: ( 'ID' | 'IDREF' | 'IDREFS' | 'ENTITY' | 'ENTITIES' | 'NMTOKEN' | 'NMTOKENS' )\r
2610             // DTD.g:\r
2611             {\r
2612             root_0 = (Object)adaptor.nil();\r
2613 \r
2614             set70=(Token)input.LT(1);\r
2615             if ( (input.LA(1)>=54 && input.LA(1)<=60) ) {\r
2616                 input.consume();\r
2617                 if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set70));\r
2618                 state.errorRecovery=false;state.failed=false;\r
2619             }\r
2620             else {\r
2621                 if (state.backtracking>0) {state.failed=true; return retval;}\r
2622                 MismatchedSetException mse = new MismatchedSetException(null,input);\r
2623                 throw mse;\r
2624             }\r
2625 \r
2626 \r
2627             }\r
2628 \r
2629             retval.stop = input.LT(-1);\r
2630 \r
2631             if ( state.backtracking==0 ) {\r
2632 \r
2633             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
2634             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
2635             }\r
2636         }\r
2637         catch (RecognitionException re) {\r
2638             reportError(re);\r
2639             recover(input,re);\r
2640         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
2641 \r
2642         }\r
2643         finally {\r
2644         }\r
2645         return retval;\r
2646     }\r
2647     // $ANTLR end "tokenizedType"\r
2648 \r
2649     public static class entityDecl_return extends ParserRuleReturnScope {\r
2650         Object tree;\r
2651         public Object getTree() { return tree; }\r
2652     };\r
2653 \r
2654     // $ANTLR start "entityDecl"\r
2655     // DTD.g:247:1: entityDecl : ( '<!ENTITY' Name String '>' -> ^( ENTITY NAME[$Name.text] VALUE[$String.text] ) | '<!ENTITY' '%' Name String '>' -> ^( ENTITY_REF NAME[$Name.text] VALUE[$String.text] ) );\r
2656     public final DTDParser.entityDecl_return entityDecl() throws RecognitionException {\r
2657         DTDParser.entityDecl_return retval = new DTDParser.entityDecl_return();\r
2658         retval.start = input.LT(1);\r
2659 \r
2660         Object root_0 = null;\r
2661 \r
2662         Token string_literal71=null;\r
2663         Token Name72=null;\r
2664         Token String73=null;\r
2665         Token char_literal74=null;\r
2666         Token string_literal75=null;\r
2667         Token char_literal76=null;\r
2668         Token Name77=null;\r
2669         Token String78=null;\r
2670         Token char_literal79=null;\r
2671 \r
2672         Object string_literal71_tree=null;\r
2673         Object Name72_tree=null;\r
2674         Object String73_tree=null;\r
2675         Object char_literal74_tree=null;\r
2676         Object string_literal75_tree=null;\r
2677         Object char_literal76_tree=null;\r
2678         Object Name77_tree=null;\r
2679         Object String78_tree=null;\r
2680         Object char_literal79_tree=null;\r
2681         RewriteRuleTokenStream stream_String=new RewriteRuleTokenStream(adaptor,"token String");\r
2682         RewriteRuleTokenStream stream_43=new RewriteRuleTokenStream(adaptor,"token 43");\r
2683         RewriteRuleTokenStream stream_61=new RewriteRuleTokenStream(adaptor,"token 61");\r
2684         RewriteRuleTokenStream stream_62=new RewriteRuleTokenStream(adaptor,"token 62");\r
2685         RewriteRuleTokenStream stream_Name=new RewriteRuleTokenStream(adaptor,"token Name");\r
2686 \r
2687         try {\r
2688             // DTD.g:248:3: ( '<!ENTITY' Name String '>' -> ^( ENTITY NAME[$Name.text] VALUE[$String.text] ) | '<!ENTITY' '%' Name String '>' -> ^( ENTITY_REF NAME[$Name.text] VALUE[$String.text] ) )\r
2689             int alt21=2;\r
2690             int LA21_0 = input.LA(1);\r
2691 \r
2692             if ( (LA21_0==61) ) {\r
2693                 int LA21_1 = input.LA(2);\r
2694 \r
2695                 if ( (LA21_1==Name) ) {\r
2696                     alt21=1;\r
2697                 }\r
2698                 else if ( (LA21_1==62) ) {\r
2699                     alt21=2;\r
2700                 }\r
2701                 else {\r
2702                     if (state.backtracking>0) {state.failed=true; return retval;}\r
2703                     NoViableAltException nvae =\r
2704                         new NoViableAltException("", 21, 1, input);\r
2705 \r
2706                     throw nvae;\r
2707                 }\r
2708             }\r
2709             else {\r
2710                 if (state.backtracking>0) {state.failed=true; return retval;}\r
2711                 NoViableAltException nvae =\r
2712                     new NoViableAltException("", 21, 0, input);\r
2713 \r
2714                 throw nvae;\r
2715             }\r
2716             switch (alt21) {\r
2717                 case 1 :\r
2718                     // DTD.g:248:5: '<!ENTITY' Name String '>'\r
2719                     {\r
2720                     string_literal71=(Token)match(input,61,FOLLOW_61_in_entityDecl1249); if (state.failed) return retval; \r
2721                     if ( state.backtracking==0 ) stream_61.add(string_literal71);\r
2722 \r
2723                     Name72=(Token)match(input,Name,FOLLOW_Name_in_entityDecl1251); if (state.failed) return retval; \r
2724                     if ( state.backtracking==0 ) stream_Name.add(Name72);\r
2725 \r
2726                     String73=(Token)match(input,String,FOLLOW_String_in_entityDecl1253); if (state.failed) return retval; \r
2727                     if ( state.backtracking==0 ) stream_String.add(String73);\r
2728 \r
2729                     char_literal74=(Token)match(input,43,FOLLOW_43_in_entityDecl1255); if (state.failed) return retval; \r
2730                     if ( state.backtracking==0 ) stream_43.add(char_literal74);\r
2731 \r
2732 \r
2733 \r
2734                     // AST REWRITE\r
2735                     // elements: \r
2736                     // token labels: \r
2737                     // rule labels: retval\r
2738                     // token list labels: \r
2739                     // rule list labels: \r
2740                     // wildcard labels: \r
2741                     if ( state.backtracking==0 ) {\r
2742                     retval.tree = root_0;\r
2743                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
2744 \r
2745                     root_0 = (Object)adaptor.nil();\r
2746                     // 248:32: -> ^( ENTITY NAME[$Name.text] VALUE[$String.text] )\r
2747                     {\r
2748                         // DTD.g:248:35: ^( ENTITY NAME[$Name.text] VALUE[$String.text] )\r
2749                         {\r
2750                         Object root_1 = (Object)adaptor.nil();\r
2751                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ENTITY, "ENTITY"), root_1);\r
2752 \r
2753                         adaptor.addChild(root_1, (Object)adaptor.create(NAME, (Name72!=null?Name72.getText():null)));\r
2754                         adaptor.addChild(root_1, (Object)adaptor.create(VALUE, (String73!=null?String73.getText():null)));\r
2755 \r
2756                         adaptor.addChild(root_0, root_1);\r
2757                         }\r
2758 \r
2759                     }\r
2760 \r
2761                     retval.tree = root_0;}\r
2762                     }\r
2763                     break;\r
2764                 case 2 :\r
2765                     // DTD.g:249:5: '<!ENTITY' '%' Name String '>'\r
2766                     {\r
2767                     string_literal75=(Token)match(input,61,FOLLOW_61_in_entityDecl1273); if (state.failed) return retval; \r
2768                     if ( state.backtracking==0 ) stream_61.add(string_literal75);\r
2769 \r
2770                     char_literal76=(Token)match(input,62,FOLLOW_62_in_entityDecl1275); if (state.failed) return retval; \r
2771                     if ( state.backtracking==0 ) stream_62.add(char_literal76);\r
2772 \r
2773                     Name77=(Token)match(input,Name,FOLLOW_Name_in_entityDecl1277); if (state.failed) return retval; \r
2774                     if ( state.backtracking==0 ) stream_Name.add(Name77);\r
2775 \r
2776                     String78=(Token)match(input,String,FOLLOW_String_in_entityDecl1279); if (state.failed) return retval; \r
2777                     if ( state.backtracking==0 ) stream_String.add(String78);\r
2778 \r
2779                     char_literal79=(Token)match(input,43,FOLLOW_43_in_entityDecl1281); if (state.failed) return retval; \r
2780                     if ( state.backtracking==0 ) stream_43.add(char_literal79);\r
2781 \r
2782 \r
2783 \r
2784                     // AST REWRITE\r
2785                     // elements: \r
2786                     // token labels: \r
2787                     // rule labels: retval\r
2788                     // token list labels: \r
2789                     // rule list labels: \r
2790                     // wildcard labels: \r
2791                     if ( state.backtracking==0 ) {\r
2792                     retval.tree = root_0;\r
2793                     RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);\r
2794 \r
2795                     root_0 = (Object)adaptor.nil();\r
2796                     // 249:36: -> ^( ENTITY_REF NAME[$Name.text] VALUE[$String.text] )\r
2797                     {\r
2798                         // DTD.g:249:39: ^( ENTITY_REF NAME[$Name.text] VALUE[$String.text] )\r
2799                         {\r
2800                         Object root_1 = (Object)adaptor.nil();\r
2801                         root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ENTITY_REF, "ENTITY_REF"), root_1);\r
2802 \r
2803                         adaptor.addChild(root_1, (Object)adaptor.create(NAME, (Name77!=null?Name77.getText():null)));\r
2804                         adaptor.addChild(root_1, (Object)adaptor.create(VALUE, (String78!=null?String78.getText():null)));\r
2805 \r
2806                         adaptor.addChild(root_0, root_1);\r
2807                         }\r
2808 \r
2809                     }\r
2810 \r
2811                     retval.tree = root_0;}\r
2812                     }\r
2813                     break;\r
2814 \r
2815             }\r
2816             retval.stop = input.LT(-1);\r
2817 \r
2818             if ( state.backtracking==0 ) {\r
2819 \r
2820             retval.tree = (Object)adaptor.rulePostProcessing(root_0);\r
2821             adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);\r
2822             }\r
2823         }\r
2824         catch (RecognitionException re) {\r
2825             reportError(re);\r
2826             recover(input,re);\r
2827         retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);\r
2828 \r
2829         }\r
2830         finally {\r
2831         }\r
2832         return retval;\r
2833     }\r
2834     // $ANTLR end "entityDecl"\r
2835 \r
2836     // $ANTLR start synpred1_DTD\r
2837     public final void synpred1_DTD_fragment() throws RecognitionException {   \r
2838         // DTD.g:173:3: ( choice )\r
2839         // DTD.g:173:4: choice\r
2840         {\r
2841         pushFollow(FOLLOW_choice_in_synpred1_DTD673);\r
2842         choice();\r
2843 \r
2844         state._fsp--;\r
2845         if (state.failed) return ;\r
2846 \r
2847         }\r
2848     }\r
2849     // $ANTLR end synpred1_DTD\r
2850 \r
2851     // $ANTLR start synpred2_DTD\r
2852     public final void synpred2_DTD_fragment() throws RecognitionException {   \r
2853         // DTD.g:174:3: ( seq )\r
2854         // DTD.g:174:4: seq\r
2855         {\r
2856         pushFollow(FOLLOW_seq_in_synpred2_DTD702);\r
2857         seq();\r
2858 \r
2859         state._fsp--;\r
2860         if (state.failed) return ;\r
2861 \r
2862         }\r
2863     }\r
2864     // $ANTLR end synpred2_DTD\r
2865 \r
2866     // $ANTLR start synpred3_DTD\r
2867     public final void synpred3_DTD_fragment() throws RecognitionException {   \r
2868         // DTD.g:179:3: ( Name )\r
2869         // DTD.g:179:4: Name\r
2870         {\r
2871         match(input,Name,FOLLOW_Name_in_synpred3_DTD738); if (state.failed) return ;\r
2872 \r
2873         }\r
2874     }\r
2875     // $ANTLR end synpred3_DTD\r
2876 \r
2877     // $ANTLR start synpred4_DTD\r
2878     public final void synpred4_DTD_fragment() throws RecognitionException {   \r
2879         // DTD.g:180:4: ( choice )\r
2880         // DTD.g:180:5: choice\r
2881         {\r
2882         pushFollow(FOLLOW_choice_in_synpred4_DTD765);\r
2883         choice();\r
2884 \r
2885         state._fsp--;\r
2886         if (state.failed) return ;\r
2887 \r
2888         }\r
2889     }\r
2890     // $ANTLR end synpred4_DTD\r
2891 \r
2892     // $ANTLR start synpred5_DTD\r
2893     public final void synpred5_DTD_fragment() throws RecognitionException {   \r
2894         // DTD.g:181:4: ( seq )\r
2895         // DTD.g:181:5: seq\r
2896         {\r
2897         pushFollow(FOLLOW_seq_in_synpred5_DTD794);\r
2898         seq();\r
2899 \r
2900         state._fsp--;\r
2901         if (state.failed) return ;\r
2902 \r
2903         }\r
2904     }\r
2905     // $ANTLR end synpred5_DTD\r
2906 \r
2907     // Delegated rules\r
2908 \r
2909     public final boolean synpred5_DTD() {\r
2910         state.backtracking++;\r
2911         int start = input.mark();\r
2912         try {\r
2913             synpred5_DTD_fragment(); // can never throw exception\r
2914         } catch (RecognitionException re) {\r
2915             System.err.println("impossible: "+re);\r
2916         }\r
2917         boolean success = !state.failed;\r
2918         input.rewind(start);\r
2919         state.backtracking--;\r
2920         state.failed=false;\r
2921         return success;\r
2922     }\r
2923     public final boolean synpred2_DTD() {\r
2924         state.backtracking++;\r
2925         int start = input.mark();\r
2926         try {\r
2927             synpred2_DTD_fragment(); // can never throw exception\r
2928         } catch (RecognitionException re) {\r
2929             System.err.println("impossible: "+re);\r
2930         }\r
2931         boolean success = !state.failed;\r
2932         input.rewind(start);\r
2933         state.backtracking--;\r
2934         state.failed=false;\r
2935         return success;\r
2936     }\r
2937     public final boolean synpred1_DTD() {\r
2938         state.backtracking++;\r
2939         int start = input.mark();\r
2940         try {\r
2941             synpred1_DTD_fragment(); // can never throw exception\r
2942         } catch (RecognitionException re) {\r
2943             System.err.println("impossible: "+re);\r
2944         }\r
2945         boolean success = !state.failed;\r
2946         input.rewind(start);\r
2947         state.backtracking--;\r
2948         state.failed=false;\r
2949         return success;\r
2950     }\r
2951     public final boolean synpred3_DTD() {\r
2952         state.backtracking++;\r
2953         int start = input.mark();\r
2954         try {\r
2955             synpred3_DTD_fragment(); // can never throw exception\r
2956         } catch (RecognitionException re) {\r
2957             System.err.println("impossible: "+re);\r
2958         }\r
2959         boolean success = !state.failed;\r
2960         input.rewind(start);\r
2961         state.backtracking--;\r
2962         state.failed=false;\r
2963         return success;\r
2964     }\r
2965     public final boolean synpred4_DTD() {\r
2966         state.backtracking++;\r
2967         int start = input.mark();\r
2968         try {\r
2969             synpred4_DTD_fragment(); // can never throw exception\r
2970         } catch (RecognitionException re) {\r
2971             System.err.println("impossible: "+re);\r
2972         }\r
2973         boolean success = !state.failed;\r
2974         input.rewind(start);\r
2975         state.backtracking--;\r
2976         state.failed=false;\r
2977         return success;\r
2978     }\r
2979 \r
2980 \r
2981  \r
2982 \r
2983     public static final BitSet FOLLOW_markupdecl_in_dtd552 = new BitSet(new long[]{0x2008040000000002L});\r
2984     public static final BitSet FOLLOW_elementDecl_in_markupdecl574 = new BitSet(new long[]{0x0000000000000002L});\r
2985     public static final BitSet FOLLOW_attlistDecl_in_markupdecl578 = new BitSet(new long[]{0x0000000000000002L});\r
2986     public static final BitSet FOLLOW_entityDecl_in_markupdecl582 = new BitSet(new long[]{0x0000000000000002L});\r
2987     public static final BitSet FOLLOW_Element_in_elementDecl590 = new BitSet(new long[]{0x0000001000000000L});\r
2988     public static final BitSet FOLLOW_Name_in_elementDecl592 = new BitSet(new long[]{0x0000300010000000L});\r
2989     public static final BitSet FOLLOW_contentSpec_in_elementDecl594 = new BitSet(new long[]{0x0000080000000000L});\r
2990     public static final BitSet FOLLOW_43_in_elementDecl596 = new BitSet(new long[]{0x0000000000000002L});\r
2991     public static final BitSet FOLLOW_44_in_contentSpec624 = new BitSet(new long[]{0x0000000000000002L});\r
2992     public static final BitSet FOLLOW_45_in_contentSpec635 = new BitSet(new long[]{0x0000000000000002L});\r
2993     public static final BitSet FOLLOW_mixed_in_contentSpec648 = new BitSet(new long[]{0x0000000000000002L});\r
2994     public static final BitSet FOLLOW_children_in_contentSpec655 = new BitSet(new long[]{0x0000000000000002L});\r
2995     public static final BitSet FOLLOW_choice_in_children678 = new BitSet(new long[]{0x0001C00000000002L});\r
2996     public static final BitSet FOLLOW_plural_in_children681 = new BitSet(new long[]{0x0000000000000002L});\r
2997     public static final BitSet FOLLOW_seq_in_children707 = new BitSet(new long[]{0x0001C00000000002L});\r
2998     public static final BitSet FOLLOW_plural_in_children709 = new BitSet(new long[]{0x0000000000000002L});\r
2999     public static final BitSet FOLLOW_Name_in_cp743 = new BitSet(new long[]{0x0001C00000000002L});\r
3000     public static final BitSet FOLLOW_plural_in_cp746 = new BitSet(new long[]{0x0000000000000002L});\r
3001     public static final BitSet FOLLOW_choice_in_cp770 = new BitSet(new long[]{0x0001C00000000002L});\r
3002     public static final BitSet FOLLOW_plural_in_cp773 = new BitSet(new long[]{0x0000000000000002L});\r
3003     public static final BitSet FOLLOW_seq_in_cp799 = new BitSet(new long[]{0x0001C00000000002L});\r
3004     public static final BitSet FOLLOW_plural_in_cp802 = new BitSet(new long[]{0x0000000000000002L});\r
3005     public static final BitSet FOLLOW_46_in_plural830 = new BitSet(new long[]{0x0000000000000002L});\r
3006     public static final BitSet FOLLOW_47_in_plural841 = new BitSet(new long[]{0x0000000000000002L});\r
3007     public static final BitSet FOLLOW_48_in_plural852 = new BitSet(new long[]{0x0000000000000002L});\r
3008     public static final BitSet FOLLOW_LParen_in_choice872 = new BitSet(new long[]{0x0000301010000000L});\r
3009     public static final BitSet FOLLOW_cp_in_choice874 = new BitSet(new long[]{0x0002000020000000L});\r
3010     public static final BitSet FOLLOW_49_in_choice877 = new BitSet(new long[]{0x0000301010000000L});\r
3011     public static final BitSet FOLLOW_cp_in_choice879 = new BitSet(new long[]{0x0002000020000000L});\r
3012     public static final BitSet FOLLOW_RParen_in_choice883 = new BitSet(new long[]{0x0000000000000002L});\r
3013     public static final BitSet FOLLOW_LParen_in_seq912 = new BitSet(new long[]{0x0000301010000000L});\r
3014     public static final BitSet FOLLOW_cp_in_seq914 = new BitSet(new long[]{0x0000000000800000L});\r
3015     public static final BitSet FOLLOW_Comma_in_seq917 = new BitSet(new long[]{0x0000301010000000L});\r
3016     public static final BitSet FOLLOW_cp_in_seq919 = new BitSet(new long[]{0x0000000020800000L});\r
3017     public static final BitSet FOLLOW_RParen_in_seq923 = new BitSet(new long[]{0x0000000000000002L});\r
3018     public static final BitSet FOLLOW_LParen_in_mixed945 = new BitSet(new long[]{0x0004000000000000L});\r
3019     public static final BitSet FOLLOW_50_in_mixed947 = new BitSet(new long[]{0x0002000020000000L});\r
3020     public static final BitSet FOLLOW_49_in_mixed950 = new BitSet(new long[]{0x0000001000000000L});\r
3021     public static final BitSet FOLLOW_mixed_i_in_mixed952 = new BitSet(new long[]{0x0002000020000000L});\r
3022     public static final BitSet FOLLOW_RParen_in_mixed956 = new BitSet(new long[]{0x0000800000000000L});\r
3023     public static final BitSet FOLLOW_47_in_mixed958 = new BitSet(new long[]{0x0000000000000002L});\r
3024     public static final BitSet FOLLOW_LParen_in_mixed980 = new BitSet(new long[]{0x0004000000000000L});\r
3025     public static final BitSet FOLLOW_50_in_mixed982 = new BitSet(new long[]{0x0000000020000000L});\r
3026     public static final BitSet FOLLOW_RParen_in_mixed984 = new BitSet(new long[]{0x0000000000000002L});\r
3027     public static final BitSet FOLLOW_Name_in_mixed_i1013 = new BitSet(new long[]{0x0000000000000002L});\r
3028     public static final BitSet FOLLOW_51_in_attlistDecl1034 = new BitSet(new long[]{0x0000001000000000L});\r
3029     public static final BitSet FOLLOW_Name_in_attlistDecl1036 = new BitSet(new long[]{0x0000081000000000L});\r
3030     public static final BitSet FOLLOW_attDef_in_attlistDecl1038 = new BitSet(new long[]{0x0000081000000000L});\r
3031     public static final BitSet FOLLOW_43_in_attlistDecl1041 = new BitSet(new long[]{0x0000000000000002L});\r
3032     public static final BitSet FOLLOW_Name_in_attDef1067 = new BitSet(new long[]{0x1FF0000010000000L});\r
3033     public static final BitSet FOLLOW_attType_in_attDef1069 = new BitSet(new long[]{0x0000020000000000L});\r
3034     public static final BitSet FOLLOW_DefaultDecl_in_attDef1071 = new BitSet(new long[]{0x0000000000000002L});\r
3035     public static final BitSet FOLLOW_stringType_in_attType1103 = new BitSet(new long[]{0x0000000000000002L});\r
3036     public static final BitSet FOLLOW_tokenizedType_in_attType1115 = new BitSet(new long[]{0x0000000000000002L});\r
3037     public static final BitSet FOLLOW_enumeratedType_in_attType1127 = new BitSet(new long[]{0x0000000000000002L});\r
3038     public static final BitSet FOLLOW_LParen_in_enumeration1144 = new BitSet(new long[]{0x0000001000000000L});\r
3039     public static final BitSet FOLLOW_Name_in_enumeration1146 = new BitSet(new long[]{0x0002000020000000L});\r
3040     public static final BitSet FOLLOW_49_in_enumeration1149 = new BitSet(new long[]{0x0000001000000000L});\r
3041     public static final BitSet FOLLOW_Name_in_enumeration1151 = new BitSet(new long[]{0x0002000020000000L});\r
3042     public static final BitSet FOLLOW_RParen_in_enumeration1155 = new BitSet(new long[]{0x0000000000000002L});\r
3043     public static final BitSet FOLLOW_notationType_in_enumeratedType1163 = new BitSet(new long[]{0x0000000000000002L});\r
3044     public static final BitSet FOLLOW_enumeration_in_enumeratedType1167 = new BitSet(new long[]{0x0000000000000002L});\r
3045     public static final BitSet FOLLOW_52_in_notationType1175 = new BitSet(new long[]{0x0000000010000000L});\r
3046     public static final BitSet FOLLOW_LParen_in_notationType1177 = new BitSet(new long[]{0x0000001000000000L});\r
3047     public static final BitSet FOLLOW_Name_in_notationType1179 = new BitSet(new long[]{0x0002000020000000L});\r
3048     public static final BitSet FOLLOW_49_in_notationType1182 = new BitSet(new long[]{0x0000001000000000L});\r
3049     public static final BitSet FOLLOW_Name_in_notationType1184 = new BitSet(new long[]{0x0002000020000000L});\r
3050     public static final BitSet FOLLOW_RParen_in_notationType1188 = new BitSet(new long[]{0x0000000000000002L});\r
3051     public static final BitSet FOLLOW_53_in_stringType1197 = new BitSet(new long[]{0x0000000000000002L});\r
3052     public static final BitSet FOLLOW_set_in_tokenizedType0 = new BitSet(new long[]{0x0000000000000002L});\r
3053     public static final BitSet FOLLOW_61_in_entityDecl1249 = new BitSet(new long[]{0x0000001000000000L});\r
3054     public static final BitSet FOLLOW_Name_in_entityDecl1251 = new BitSet(new long[]{0x0000000800000000L});\r
3055     public static final BitSet FOLLOW_String_in_entityDecl1253 = new BitSet(new long[]{0x0000080000000000L});\r
3056     public static final BitSet FOLLOW_43_in_entityDecl1255 = new BitSet(new long[]{0x0000000000000002L});\r
3057     public static final BitSet FOLLOW_61_in_entityDecl1273 = new BitSet(new long[]{0x4000000000000000L});\r
3058     public static final BitSet FOLLOW_62_in_entityDecl1275 = new BitSet(new long[]{0x0000001000000000L});\r
3059     public static final BitSet FOLLOW_Name_in_entityDecl1277 = new BitSet(new long[]{0x0000000800000000L});\r
3060     public static final BitSet FOLLOW_String_in_entityDecl1279 = new BitSet(new long[]{0x0000080000000000L});\r
3061     public static final BitSet FOLLOW_43_in_entityDecl1281 = new BitSet(new long[]{0x0000000000000002L});\r
3062     public static final BitSet FOLLOW_choice_in_synpred1_DTD673 = new BitSet(new long[]{0x0000000000000002L});\r
3063     public static final BitSet FOLLOW_seq_in_synpred2_DTD702 = new BitSet(new long[]{0x0000000000000002L});\r
3064     public static final BitSet FOLLOW_Name_in_synpred3_DTD738 = new BitSet(new long[]{0x0000000000000002L});\r
3065     public static final BitSet FOLLOW_choice_in_synpred4_DTD765 = new BitSet(new long[]{0x0000000000000002L});\r
3066     public static final BitSet FOLLOW_seq_in_synpred5_DTD794 = new BitSet(new long[]{0x0000000000000002L});\r
3067 \r
3068 }