001 /* Generated By:JavaCC: Do not edit this line. CompactSyntax.java */
002 package com.thaiopensource.relaxng.parse.compact;
003
004 import com.thaiopensource.relaxng.parse.SchemaBuilder;
005 import com.thaiopensource.relaxng.parse.Annotations;
006 import com.thaiopensource.relaxng.parse.DataPatternBuilder;
007 import com.thaiopensource.relaxng.parse.ParsedElementAnnotation;
008 import com.thaiopensource.relaxng.parse.ElementAnnotationBuilder;
009 import com.thaiopensource.relaxng.parse.CommentList;
010 import com.thaiopensource.relaxng.parse.ParsedPattern;
011 import com.thaiopensource.relaxng.parse.ParsedNameClass;
012 import com.thaiopensource.relaxng.parse.Scope;
013 import com.thaiopensource.relaxng.parse.GrammarSection;
014 import com.thaiopensource.relaxng.parse.Div;
015 import com.thaiopensource.relaxng.parse.Grammar;
016 import com.thaiopensource.relaxng.parse.Include;
017 import com.thaiopensource.relaxng.parse.IncludedGrammar;
018 import com.thaiopensource.relaxng.parse.IllegalSchemaException;
019 import com.thaiopensource.relaxng.parse.BuildException;
020 import com.thaiopensource.relaxng.parse.Location;
021 import com.thaiopensource.relaxng.parse.Context;
022
023 import com.thaiopensource.xml.util.WellKnownNamespaces;
024
025 import com.thaiopensource.util.Localizer;
026
027 import org.xml.sax.ErrorHandler;
028 import org.xml.sax.SAXException;
029 import org.xml.sax.SAXParseException;
030 import org.xml.sax.Locator;
031 import org.xml.sax.helpers.LocatorImpl;
032
033 import java.util.Hashtable;
034 import java.util.Enumeration;
035 import java.io.Reader;
036 import java.net.MalformedURLException;
037 import java.net.URL;
038
039 public class CompactSyntax implements Context, CompactSyntaxConstants {
040 private static final int IN_ELEMENT = 0;
041 private static final int IN_ATTRIBUTE = 1;
042 private static final int IN_ANY_NAME = 2;
043 private static final int IN_NS_NAME = 4;
044
045 private String defaultNamespace = SchemaBuilder.INHERIT_NS;
046 private String compatibilityPrefix = null;
047 private SchemaBuilder sb;
048 private String sourceUri;
049 private ErrorHandler eh;
050 private final Hashtable namespaceTable = new Hashtable();
051 private final Hashtable datatypesTable = new Hashtable();
052 private boolean hadError = false;
053 private static final Localizer localizer = new Localizer(CompactSyntax.class);
054 private final Hashtable attributeNameTable = new Hashtable();
055 private boolean annotationsIncludeElements = false;
056
057 final class LocatedString {
058 private final String str;
059 private final Token tok;
060
061 LocatedString(String str, Token tok) {
062 this.str = str;
063 this.tok = tok;
064 }
065
066 String getString() {
067 return str;
068 }
069
070 Location getLocation() {
071 return makeLocation(tok);
072 }
073
074 Token getToken() {
075 return tok;
076 }
077
078 }
079
080 public CompactSyntax(Reader r, String sourceUri, SchemaBuilder sb, ErrorHandler eh) {
081 this(r);
082 this.sourceUri = sourceUri;
083 this.sb = sb;
084 this.eh = eh;
085 // this causes the root pattern to have non-null annotations
086 // which is useful because it gives a context to trang
087 this.topLevelComments = sb.makeCommentList();
088 }
089
090 ParsedPattern parse(Scope scope) throws IllegalSchemaException {
091 try {
092 ParsedPattern p = Input(scope);
093 if (!hadError)
094 return p;
095 }
096 catch (ParseException e) {
097 error("syntax_error", e.currentToken.next);
098 }
099 catch (EscapeSyntaxException e) {
100 reportEscapeSyntaxException(e);
101 }
102 throw new IllegalSchemaException();
103 }
104
105 ParsedPattern parseInclude(IncludedGrammar g) throws IllegalSchemaException {
106 try {
107 ParsedPattern p = IncludedGrammar(g);
108 if (!hadError)
109 return p;
110 }
111 catch (ParseException e) {
112 error("syntax_error", e.currentToken.next);
113 }
114 catch (EscapeSyntaxException e) {
115 reportEscapeSyntaxException(e);
116 }
117 throw new IllegalSchemaException();
118 }
119
120 private void checkNsName(int context, LocatedString ns) {
121 if ((context & IN_NS_NAME) != 0)
122 error("ns_name_except_contains_ns_name", ns.getToken());
123 }
124
125 private void checkAnyName(int context, Token t) {
126 if ((context & IN_NS_NAME) != 0)
127 error("ns_name_except_contains_any_name", t);
128 if ((context & IN_ANY_NAME) != 0)
129 error("any_name_except_contains_any_name", t);
130 }
131
132 private void error(String key, Token tok) {
133 doError(localizer.message(key), tok);
134 }
135
136 private void error(String key, String arg, Token tok) {
137 doError(localizer.message(key, arg), tok);
138 }
139
140 private void error(String key, String arg1, String arg2, Token tok) {
141 doError(localizer.message(key, arg1, arg2), tok);
142 }
143
144 private void doError(String message, Token tok) {
145 hadError = true;
146 if (eh != null) {
147 LocatorImpl loc = new LocatorImpl();
148 loc.setLineNumber(tok.beginLine);
149 loc.setColumnNumber(tok.beginColumn);
150 loc.setSystemId(sourceUri);
151 try {
152 eh.error(new SAXParseException(message, loc));
153 }
154 catch (SAXException se) {
155 throw new BuildException(se);
156 }
157 }
158 }
159
160 private void reportEscapeSyntaxException(EscapeSyntaxException e) {
161 if (eh != null) {
162 LocatorImpl loc = new LocatorImpl();
163 loc.setLineNumber(e.getLineNumber());
164 loc.setColumnNumber(e.getColumnNumber());
165 loc.setSystemId(sourceUri);
166 try {
167 eh.error(new SAXParseException(localizer.message(e.getKey()), loc));
168 }
169 catch (SAXException se) {
170 throw new BuildException(se);
171 }
172 }
173 }
174
175 private static String unquote(String s) {
176 if (s.length() >= 6 && s.charAt(0) == s.charAt(1)) {
177 s = s.replace('\u0000', '\n');
178 return s.substring(3, s.length() - 3);
179 }
180 else
181 return s.substring(1, s.length() - 1);
182 }
183
184 Location makeLocation(Token t) {
185 return sb.makeLocation(sourceUri, t.beginLine, t.beginColumn);
186 }
187
188 private static ParsedPattern[] addPattern(ParsedPattern[] patterns, int i, ParsedPattern p) {
189 if (i >= patterns.length) {
190 ParsedPattern[] oldPatterns = patterns;
191 patterns = new ParsedPattern[oldPatterns.length*2];
192 System.arraycopy(oldPatterns, 0, patterns, 0, oldPatterns.length);
193 }
194 patterns[i] = p;
195 return patterns;
196 }
197
198 String getCompatibilityPrefix() {
199 if (compatibilityPrefix == null) {
200 compatibilityPrefix = "a";
201 while (namespaceTable.get(compatibilityPrefix) != null)
202 compatibilityPrefix = compatibilityPrefix + "a";
203 }
204 return compatibilityPrefix;
205 }
206
207 public String resolveNamespacePrefix(String prefix) {
208 String result = (String)namespaceTable.get(prefix);
209 if (result.length() == 0)
210 return null;
211 return result;
212 }
213
214 public Enumeration prefixes() {
215 return namespaceTable.keys();
216 }
217
218 public String getBaseUri() {
219 return sourceUri;
220 }
221
222 public boolean isUnparsedEntity(String entityName) {
223 return false;
224 }
225
226 public boolean isNotation(String notationName) {
227 return false;
228 }
229
230 public Context copy() {
231 return this;
232 }
233
234 private Context getContext() {
235 return this;
236 }
237
238 private CommentList getComments() {
239 return getComments(getTopLevelComments());
240 }
241
242 private CommentList topLevelComments;
243
244 private CommentList getTopLevelComments() {
245 CommentList tem = topLevelComments;
246 topLevelComments = null;
247 return tem;
248 }
249
250 private void noteTopLevelComments() {
251 topLevelComments = getComments(topLevelComments);
252 }
253
254 private void topLevelComments(GrammarSection section) {
255 section.topLevelComment(getComments(null));
256 }
257
258 private Token lastCommentSourceToken = null;
259
260 private CommentList getComments(CommentList comments) {
261 Token nextToken = getToken(1);
262 if (lastCommentSourceToken != nextToken) {
263 if (lastCommentSourceToken == null)
264 lastCommentSourceToken = token;
265 do {
266 lastCommentSourceToken = lastCommentSourceToken.next;
267 Token t = lastCommentSourceToken.specialToken;
268 if (t != null) {
269 while (t.specialToken != null)
270 t = t.specialToken;
271 if (comments == null)
272 comments = sb.makeCommentList();
273 for (; t != null; t = t.next) {
274 String s = mungeComment(t.image);
275 Location loc = makeLocation(t);
276 if (t.next != null
277 && t.next.kind == CompactSyntaxConstants.SINGLE_LINE_COMMENT_CONTINUE) {
278 StringBuffer buf = new StringBuffer(s);
279 do {
280 t = t.next;
281 buf.append('\n');
282 buf.append(mungeComment(t.image));
283 } while (t.next != null
284 && t.next.kind == CompactSyntaxConstants.SINGLE_LINE_COMMENT_CONTINUE);
285 s = buf.toString();
286 }
287 comments.addComment(s, loc);
288 }
289 }
290 } while (lastCommentSourceToken != nextToken);
291 }
292 return comments;
293 }
294
295 private ParsedPattern afterComments(ParsedPattern p) {
296 CommentList comments = getComments(null);
297 if (comments == null)
298 return p;
299 return sb.commentAfter(p, comments);
300 }
301
302 private ParsedNameClass afterComments(ParsedNameClass nc) {
303 CommentList comments = getComments(null);
304 if (comments == null)
305 return nc;
306 return sb.commentAfter(nc, comments);
307 }
308
309 private static String mungeComment(String image) {
310 int i = image.indexOf('#') + 1;
311 while (i < image.length() && image.charAt(i) == '#')
312 i++;
313 if (i < image.length() && image.charAt(i) == ' ')
314 i++;
315 return image.substring(i);
316 }
317
318 private Annotations getCommentsAsAnnotations() {
319 CommentList comments = getComments();
320 if (comments == null)
321 return null;
322 return sb.makeAnnotations(comments, getContext());
323 }
324
325 private Annotations addCommentsToChildAnnotations(Annotations a) {
326 CommentList comments = getComments();
327 if (comments == null)
328 return a;
329 if (a == null)
330 a = sb.makeAnnotations(null, getContext());
331 a.addComment(comments);
332 return a;
333 }
334
335 private Annotations addCommentsToLeadingAnnotations(Annotations a) {
336 CommentList comments = getComments();
337 if (comments == null)
338 return a;
339 if (a == null)
340 return sb.makeAnnotations(comments, getContext());
341 a.addLeadingComment(comments);
342 return a;
343 }
344
345 private Annotations getTopLevelCommentsAsAnnotations() {
346 CommentList comments = getTopLevelComments();
347 if (comments == null)
348 return null;
349 return sb.makeAnnotations(comments, getContext());
350 }
351
352 private void clearAttributeList() {
353 attributeNameTable.clear();
354 }
355
356 private void addAttribute(Annotations a, String ns, String localName, String prefix, String value, Token tok) {
357 String key = ns + "#" + localName;
358 if (attributeNameTable.get(key) != null)
359 error("duplicate_attribute", ns, localName, tok);
360 else {
361 attributeNameTable.put(key, key);
362 a.addAttribute(ns, localName, prefix, value, makeLocation(tok));
363 }
364 }
365
366 private void checkExcept(Token[] except) {
367 if (except[0] != null)
368 error("except_missing_parentheses", except[0]);
369 }
370
371 private String lookupPrefix(String prefix, Token t) {
372 String ns = (String)namespaceTable.get(prefix);
373 if (ns == null) {
374 error("undeclared_prefix", prefix, t);
375 return "#error";
376 }
377 return ns;
378 }
379 private String lookupDatatype(String prefix, Token t) {
380 String ns = (String)datatypesTable.get(prefix);
381 if (ns == null) {
382 error("undeclared_prefix", prefix, t);
383 return ""; // XXX
384 }
385 return ns;
386 }
387 private String resolve(String str) {
388 try {
389 return new URL(new URL(sourceUri), str).toString();
390 }
391 catch (MalformedURLException e) { }
392 return str;
393 }
394
395 final public ParsedPattern Input(Scope scope) throws ParseException {
396 ParsedPattern p;
397 Preamble();
398 if (jj_2_1(2147483647)) {
399 p = TopLevelGrammar(scope);
400 } else {
401 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
402 case 1:
403 case 10:
404 case 17:
405 case 18:
406 case 19:
407 case 26:
408 case 27:
409 case 28:
410 case 31:
411 case 32:
412 case 33:
413 case 34:
414 case 35:
415 case 36:
416 case DOCUMENTATION:
417 case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT:
418 case IDENTIFIER:
419 case ESCAPED_IDENTIFIER:
420 case PREFIXED_NAME:
421 case LITERAL:
422 p = Expr(true, scope, null, null);
423 p = afterComments(p);
424 jj_consume_token(0);
425 break;
426 default:
427 jj_la1[0] = jj_gen;
428 jj_consume_token(-1);
429 throw new ParseException();
430 }
431 }
432 {if (true) return p;}
433 throw new Error("Missing return statement in function");
434 }
435
436 final public void TopLevelLookahead() throws ParseException {
437 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
438 case PREFIXED_NAME:
439 jj_consume_token(PREFIXED_NAME);
440 jj_consume_token(1);
441 break;
442 case IDENTIFIER:
443 case ESCAPED_IDENTIFIER:
444 Identifier();
445 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
446 case 1:
447 jj_consume_token(1);
448 break;
449 case 2:
450 jj_consume_token(2);
451 break;
452 case 3:
453 jj_consume_token(3);
454 break;
455 case 4:
456 jj_consume_token(4);
457 break;
458 default:
459 jj_la1[1] = jj_gen;
460 jj_consume_token(-1);
461 throw new ParseException();
462 }
463 break;
464 case 5:
465 case 6:
466 case 7:
467 LookaheadGrammarKeyword();
468 break;
469 case 1:
470 LookaheadBody();
471 LookaheadAfterAnnotations();
472 break;
473 case DOCUMENTATION:
474 case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT:
475 LookaheadDocumentation();
476 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
477 case 1:
478 LookaheadBody();
479 break;
480 default:
481 jj_la1[2] = jj_gen;
482 ;
483 }
484 LookaheadAfterAnnotations();
485 break;
486 default:
487 jj_la1[3] = jj_gen;
488 jj_consume_token(-1);
489 throw new ParseException();
490 }
491 }
492
493 final public void LookaheadAfterAnnotations() throws ParseException {
494 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
495 case IDENTIFIER:
496 case ESCAPED_IDENTIFIER:
497 Identifier();
498 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
499 case 2:
500 jj_consume_token(2);
501 break;
502 case 3:
503 jj_consume_token(3);
504 break;
505 case 4:
506 jj_consume_token(4);
507 break;
508 default:
509 jj_la1[4] = jj_gen;
510 jj_consume_token(-1);
511 throw new ParseException();
512 }
513 break;
514 case 5:
515 case 6:
516 case 7:
517 LookaheadGrammarKeyword();
518 break;
519 default:
520 jj_la1[5] = jj_gen;
521 jj_consume_token(-1);
522 throw new ParseException();
523 }
524 }
525
526 final public void LookaheadGrammarKeyword() throws ParseException {
527 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
528 case 5:
529 jj_consume_token(5);
530 break;
531 case 6:
532 jj_consume_token(6);
533 break;
534 case 7:
535 jj_consume_token(7);
536 break;
537 default:
538 jj_la1[6] = jj_gen;
539 jj_consume_token(-1);
540 throw new ParseException();
541 }
542 }
543
544 final public void LookaheadDocumentation() throws ParseException {
545 label_1:
546 while (true) {
547 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
548 case DOCUMENTATION:
549 jj_consume_token(DOCUMENTATION);
550 break;
551 case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT:
552 jj_consume_token(DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT);
553 break;
554 default:
555 jj_la1[7] = jj_gen;
556 jj_consume_token(-1);
557 throw new ParseException();
558 }
559 label_2:
560 while (true) {
561 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
562 case DOCUMENTATION_CONTINUE:
563 ;
564 break;
565 default:
566 jj_la1[8] = jj_gen;
567 break label_2;
568 }
569 jj_consume_token(DOCUMENTATION_CONTINUE);
570 }
571 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
572 case DOCUMENTATION:
573 case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT:
574 ;
575 break;
576 default:
577 jj_la1[9] = jj_gen;
578 break label_1;
579 }
580 }
581 }
582
583 final public void LookaheadBody() throws ParseException {
584 jj_consume_token(1);
585 label_3:
586 while (true) {
587 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
588 case 1:
589 case 2:
590 case 5:
591 case 6:
592 case 7:
593 case 8:
594 case 10:
595 case 13:
596 case 14:
597 case 15:
598 case 16:
599 case 17:
600 case 18:
601 case 19:
602 case 26:
603 case 27:
604 case 31:
605 case 32:
606 case 33:
607 case 34:
608 case 35:
609 case 36:
610 case IDENTIFIER:
611 case ESCAPED_IDENTIFIER:
612 case PREFIXED_NAME:
613 case LITERAL:
614 ;
615 break;
616 default:
617 jj_la1[10] = jj_gen;
618 break label_3;
619 }
620 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
621 case PREFIXED_NAME:
622 jj_consume_token(PREFIXED_NAME);
623 break;
624 case 5:
625 case 6:
626 case 7:
627 case 10:
628 case 13:
629 case 14:
630 case 15:
631 case 16:
632 case 17:
633 case 18:
634 case 19:
635 case 26:
636 case 27:
637 case 31:
638 case 32:
639 case 33:
640 case 34:
641 case 35:
642 case 36:
643 case IDENTIFIER:
644 case ESCAPED_IDENTIFIER:
645 UnprefixedName();
646 break;
647 case 2:
648 jj_consume_token(2);
649 break;
650 case LITERAL:
651 jj_consume_token(LITERAL);
652 break;
653 case 8:
654 jj_consume_token(8);
655 break;
656 case 1:
657 LookaheadBody();
658 break;
659 default:
660 jj_la1[11] = jj_gen;
661 jj_consume_token(-1);
662 throw new ParseException();
663 }
664 }
665 jj_consume_token(9);
666 }
667
668 final public ParsedPattern IncludedGrammar(IncludedGrammar g) throws ParseException {
669 Annotations a;
670 ParsedPattern p;
671 Preamble();
672 if (jj_2_2(2147483647)) {
673 a = GrammarBody(g, g, getTopLevelCommentsAsAnnotations());
674 } else {
675 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
676 case 1:
677 case 10:
678 case DOCUMENTATION:
679 case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT:
680 a = Annotations();
681 jj_consume_token(10);
682 jj_consume_token(11);
683 a = GrammarBody(g, g, a);
684 topLevelComments(g);
685 jj_consume_token(12);
686 break;
687 default:
688 jj_la1[12] = jj_gen;
689 jj_consume_token(-1);
690 throw new ParseException();
691 }
692 }
693 p = afterComments(g.endIncludedGrammar(sb.makeLocation(sourceUri, 1, 1), a));
694 jj_consume_token(0);
695 {if (true) return p;}
696 throw new Error("Missing return statement in function");
697 }
698
699 final public ParsedPattern TopLevelGrammar(Scope scope) throws ParseException {
700 Annotations a = getTopLevelCommentsAsAnnotations();
701 Grammar g;
702 ParsedPattern p;
703 g = sb.makeGrammar(scope);
704 a = GrammarBody(g, g, a);
705 p = afterComments(g.endGrammar(sb.makeLocation(sourceUri, 1, 1), a));
706 jj_consume_token(0);
707 {if (true) return p;}
708 throw new Error("Missing return statement in function");
709 }
710
711 final public void Preamble() throws ParseException {
712 label_4:
713 while (true) {
714 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
715 case 13:
716 case 14:
717 case 16:
718 ;
719 break;
720 default:
721 jj_la1[13] = jj_gen;
722 break label_4;
723 }
724 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
725 case 13:
726 case 14:
727 NamespaceDecl();
728 break;
729 case 16:
730 DatatypesDecl();
731 break;
732 default:
733 jj_la1[14] = jj_gen;
734 jj_consume_token(-1);
735 throw new ParseException();
736 }
737 }
738 namespaceTable.put("xml", WellKnownNamespaces.XML);
739 if (datatypesTable.get("xsd") == null)
740 datatypesTable.put("xsd", WellKnownNamespaces.XML_SCHEMA_DATATYPES);
741 }
742
743 final public void NamespaceDecl() throws ParseException {
744 LocatedString prefix = null;
745 boolean isDefault = false;
746 String namespaceName;
747 noteTopLevelComments();
748 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
749 case 13:
750 jj_consume_token(13);
751 prefix = UnprefixedName();
752 break;
753 case 14:
754 jj_consume_token(14);
755 isDefault = true;
756 jj_consume_token(13);
757 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
758 case 5:
759 case 6:
760 case 7:
761 case 10:
762 case 13:
763 case 14:
764 case 15:
765 case 16:
766 case 17:
767 case 18:
768 case 19:
769 case 26:
770 case 27:
771 case 31:
772 case 32:
773 case 33:
774 case 34:
775 case 35:
776 case 36:
777 case IDENTIFIER:
778 case ESCAPED_IDENTIFIER:
779 prefix = UnprefixedName();
780 break;
781 default:
782 jj_la1[15] = jj_gen;
783 ;
784 }
785 break;
786 default:
787 jj_la1[16] = jj_gen;
788 jj_consume_token(-1);
789 throw new ParseException();
790 }
791 jj_consume_token(2);
792 namespaceName = NamespaceName();
793 if (isDefault)
794 defaultNamespace = namespaceName;
795 if (prefix != null) {
796 if (prefix.getString().equals("xmlns"))
797 error("xmlns_prefix", prefix.getToken());
798 else if (prefix.getString().equals("xml")) {
799 if (!namespaceName.equals(WellKnownNamespaces.XML))
800 error("xml_prefix_bad_uri", prefix.getToken());
801 }
802 else if (namespaceName.equals(WellKnownNamespaces.XML))
803 error("xml_uri_bad_prefix", prefix.getToken());
804 else {
805 if (namespaceName.equals(WellKnownNamespaces.RELAX_NG_COMPATIBILITY_ANNOTATIONS))
806 compatibilityPrefix = prefix.getString();
807 namespaceTable.put(prefix.getString(), namespaceName);
808 }
809 }
810 }
811
812 final public String NamespaceName() throws ParseException {
813 String r;
814 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
815 case LITERAL:
816 r = Literal();
817 break;
818 case 15:
819 jj_consume_token(15);
820 r = SchemaBuilder.INHERIT_NS;
821 break;
822 default:
823 jj_la1[17] = jj_gen;
824 jj_consume_token(-1);
825 throw new ParseException();
826 }
827 {if (true) return r;}
828 throw new Error("Missing return statement in function");
829 }
830
831 final public void DatatypesDecl() throws ParseException {
832 LocatedString prefix;
833 String uri;
834 noteTopLevelComments();
835 jj_consume_token(16);
836 prefix = UnprefixedName();
837 jj_consume_token(2);
838 uri = Literal();
839 datatypesTable.put(prefix.getString(), uri);
840 }
841
842 final public ParsedPattern AnnotatedPrimaryExpr(boolean topLevel, Scope scope, Token[] except) throws ParseException {
843 Annotations a;
844 ParsedPattern p;
845 ParsedElementAnnotation e;
846 Token t;
847 a = Annotations();
848 p = PrimaryExpr(topLevel, scope, a, except);
849 label_5:
850 while (true) {
851 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
852 case FANNOTATE:
853 ;
854 break;
855 default:
856 jj_la1[18] = jj_gen;
857 break label_5;
858 }
859 t = jj_consume_token(FANNOTATE);
860 e = AnnotationElement(false);
861 if (topLevel)
862 error("top_level_follow_annotation", t);
863 else
864 p = sb.annotateAfter(p, e);
865 }
866 {if (true) return p;}
867 throw new Error("Missing return statement in function");
868 }
869
870 final public ParsedPattern PrimaryExpr(boolean topLevel, Scope scope, Annotations a, Token[] except) throws ParseException {
871 ParsedPattern p;
872 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
873 case 26:
874 p = ElementExpr(scope, a);
875 break;
876 case 27:
877 p = AttributeExpr(scope, a);
878 break;
879 case 10:
880 p = GrammarExpr(scope, a);
881 break;
882 case 33:
883 p = ExternalRefExpr(scope, a);
884 break;
885 case 31:
886 p = ListExpr(scope, a);
887 break;
888 case 32:
889 p = MixedExpr(scope, a);
890 break;
891 case 28:
892 p = ParenExpr(topLevel, scope, a);
893 break;
894 case IDENTIFIER:
895 case ESCAPED_IDENTIFIER:
896 p = IdentifierExpr(scope, a);
897 break;
898 case 34:
899 p = ParentExpr(scope, a);
900 break;
901 case 35:
902 case 36:
903 case PREFIXED_NAME:
904 p = DataExpr(topLevel, scope, a, except);
905 break;
906 case LITERAL:
907 p = ValueExpr(topLevel, a);
908 break;
909 case 18:
910 p = TextExpr(a);
911 break;
912 case 17:
913 p = EmptyExpr(a);
914 break;
915 case 19:
916 p = NotAllowedExpr(a);
917 break;
918 default:
919 jj_la1[19] = jj_gen;
920 jj_consume_token(-1);
921 throw new ParseException();
922 }
923 {if (true) return p;}
924 throw new Error("Missing return statement in function");
925 }
926
927 final public ParsedPattern EmptyExpr(Annotations a) throws ParseException {
928 Token t;
929 t = jj_consume_token(17);
930 {if (true) return sb.makeEmpty(makeLocation(t), a);}
931 throw new Error("Missing return statement in function");
932 }
933
934 final public ParsedPattern TextExpr(Annotations a) throws ParseException {
935 Token t;
936 t = jj_consume_token(18);
937 {if (true) return sb.makeText(makeLocation(t), a);}
938 throw new Error("Missing return statement in function");
939 }
940
941 final public ParsedPattern NotAllowedExpr(Annotations a) throws ParseException {
942 Token t;
943 t = jj_consume_token(19);
944 {if (true) return sb.makeNotAllowed(makeLocation(t), a);}
945 throw new Error("Missing return statement in function");
946 }
947
948 final public ParsedPattern Expr(boolean topLevel, Scope scope, Token t, Annotations a) throws ParseException {
949 ParsedPattern p;
950 ParsedPattern[] patterns = new ParsedPattern[2];
951 int nPatterns = 1;
952 boolean[] hadOccur = new boolean[1];
953 Token[] except = new Token[1];
954 p = UnaryExpr(topLevel, scope, hadOccur, except);
955 patterns[0] = p;
956 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
957 case 20:
958 case 21:
959 case 22:
960 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
961 case 20:
962 checkExcept(except);
963 label_6:
964 while (true) {
965 t = jj_consume_token(20);
966 p = UnaryExpr(topLevel, scope, null, except);
967 patterns = addPattern(patterns, nPatterns++, p); checkExcept(except);
968 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
969 case 20:
970 ;
971 break;
972 default:
973 jj_la1[20] = jj_gen;
974 break label_6;
975 }
976 }
977 p = sb.makeChoice(patterns, nPatterns, makeLocation(t), a);
978 break;
979 case 21:
980 label_7:
981 while (true) {
982 t = jj_consume_token(21);
983 p = UnaryExpr(topLevel, scope, null, except);
984 patterns = addPattern(patterns, nPatterns++, p); checkExcept(except);
985 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
986 case 21:
987 ;
988 break;
989 default:
990 jj_la1[21] = jj_gen;
991 break label_7;
992 }
993 }
994 p = sb.makeInterleave(patterns, nPatterns, makeLocation(t), a);
995 break;
996 case 22:
997 label_8:
998 while (true) {
999 t = jj_consume_token(22);
1000 p = UnaryExpr(topLevel, scope, null, except);
1001 patterns = addPattern(patterns, nPatterns++, p); checkExcept(except);
1002 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1003 case 22:
1004 ;
1005 break;
1006 default:
1007 jj_la1[22] = jj_gen;
1008 break label_8;
1009 }
1010 }
1011 p = sb.makeGroup(patterns, nPatterns, makeLocation(t), a);
1012 break;
1013 default:
1014 jj_la1[23] = jj_gen;
1015 jj_consume_token(-1);
1016 throw new ParseException();
1017 }
1018 break;
1019 default:
1020 jj_la1[24] = jj_gen;
1021 ;
1022 }
1023 if (nPatterns == 1 && a != null) {
1024 if (hadOccur[0])
1025 p = sb.annotate(p, a);
1026 else
1027 p = sb.makeGroup(patterns, nPatterns, makeLocation(t), a);
1028 }
1029 {if (true) return p;}
1030 throw new Error("Missing return statement in function");
1031 }
1032
1033 final public ParsedPattern UnaryExpr(boolean topLevel, Scope scope, boolean[] hadOccur, Token[] except) throws ParseException {
1034 ParsedPattern p;
1035 Token t;
1036 ParsedElementAnnotation e;
1037 p = AnnotatedPrimaryExpr(topLevel, scope, except);
1038 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1039 case 23:
1040 case 24:
1041 case 25:
1042 if (hadOccur != null) hadOccur[0] = true;
1043 p = afterComments(p);
1044 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1045 case 23:
1046 t = jj_consume_token(23);
1047 checkExcept(except); p = sb.makeOneOrMore(p, makeLocation(t), null);
1048 break;
1049 case 24:
1050 t = jj_consume_token(24);
1051 checkExcept(except); p = sb.makeOptional(p, makeLocation(t), null);
1052 break;
1053 case 25:
1054 t = jj_consume_token(25);
1055 checkExcept(except); p = sb.makeZeroOrMore(p, makeLocation(t), null);
1056 break;
1057 default:
1058 jj_la1[25] = jj_gen;
1059 jj_consume_token(-1);
1060 throw new ParseException();
1061 }
1062 label_9:
1063 while (true) {
1064 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1065 case FANNOTATE:
1066 ;
1067 break;
1068 default:
1069 jj_la1[26] = jj_gen;
1070 break label_9;
1071 }
1072 t = jj_consume_token(FANNOTATE);
1073 e = AnnotationElement(false);
1074 if (topLevel)
1075 error("top_level_follow_annotation", t);
1076 else
1077 p = sb.annotateAfter(p, e);
1078 }
1079 break;
1080 default:
1081 jj_la1[27] = jj_gen;
1082 ;
1083 }
1084 {if (true) return p;}
1085 throw new Error("Missing return statement in function");
1086 }
1087
1088 final public ParsedPattern ElementExpr(Scope scope, Annotations a) throws ParseException {
1089 Token t;
1090 ParsedNameClass nc;
1091 ParsedPattern p;
1092 t = jj_consume_token(26);
1093 nc = NameClass(IN_ELEMENT, null);
1094 jj_consume_token(11);
1095 p = Expr(false, scope, null, null);
1096 p = afterComments(p);
1097 jj_consume_token(12);
1098 {if (true) return sb.makeElement(nc, p, makeLocation(t), a);}
1099 throw new Error("Missing return statement in function");
1100 }
1101
1102 final public ParsedPattern AttributeExpr(Scope scope, Annotations a) throws ParseException {
1103 Token t;
1104 ParsedNameClass nc;
1105 ParsedPattern p;
1106 t = jj_consume_token(27);
1107 nc = NameClass(IN_ATTRIBUTE, null);
1108 jj_consume_token(11);
1109 p = Expr(false, scope, null, null);
1110 p = afterComments(p);
1111 jj_consume_token(12);
1112 {if (true) return sb.makeAttribute(nc, p, makeLocation(t), a);}
1113 throw new Error("Missing return statement in function");
1114 }
1115
1116 final public ParsedNameClass NameClass(int context, Annotations[] pa) throws ParseException {
1117 Annotations a;
1118 ParsedNameClass nc;
1119 a = Annotations();
1120 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1121 case 5:
1122 case 6:
1123 case 7:
1124 case 10:
1125 case 13:
1126 case 14:
1127 case 15:
1128 case 16:
1129 case 17:
1130 case 18:
1131 case 19:
1132 case 26:
1133 case 27:
1134 case 28:
1135 case 31:
1136 case 32:
1137 case 33:
1138 case 34:
1139 case 35:
1140 case 36:
1141 case IDENTIFIER:
1142 case ESCAPED_IDENTIFIER:
1143 case PREFIXED_NAME:
1144 nc = PrimaryNameClass(context, a);
1145 nc = AnnotateAfter(nc);
1146 nc = NameClassAlternatives(context, nc, pa);
1147 break;
1148 case 25:
1149 nc = AnyNameExceptClass(context, a, pa);
1150 break;
1151 case PREFIX_STAR:
1152 nc = NsNameExceptClass(context, a, pa);
1153 break;
1154 default:
1155 jj_la1[28] = jj_gen;
1156 jj_consume_token(-1);
1157 throw new ParseException();
1158 }
1159 {if (true) return nc;}
1160 throw new Error("Missing return statement in function");
1161 }
1162
1163 final public ParsedNameClass AnnotateAfter(ParsedNameClass nc) throws ParseException {
1164 ParsedElementAnnotation e;
1165 label_10:
1166 while (true) {
1167 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1168 case FANNOTATE:
1169 ;
1170 break;
1171 default:
1172 jj_la1[29] = jj_gen;
1173 break label_10;
1174 }
1175 jj_consume_token(FANNOTATE);
1176 e = AnnotationElement(false);
1177 nc = sb.annotateAfter(nc, e);
1178 }
1179 {if (true) return nc;}
1180 throw new Error("Missing return statement in function");
1181 }
1182
1183 final public ParsedNameClass NameClassAlternatives(int context, ParsedNameClass nc, Annotations[] pa) throws ParseException {
1184 Token t;
1185 ParsedNameClass[] nameClasses;
1186 int nNameClasses;
1187 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1188 case 20:
1189 nameClasses = new ParsedNameClass[2];
1190 nameClasses[0] = nc;
1191 nNameClasses = 1;
1192 label_11:
1193 while (true) {
1194 t = jj_consume_token(20);
1195 nc = BasicNameClass(context);
1196 nc = AnnotateAfter(nc);
1197 if (nNameClasses >= nameClasses.length) {
1198 ParsedNameClass[] oldNameClasses = nameClasses;
1199 nameClasses = new ParsedNameClass[oldNameClasses.length*2];
1200 System.arraycopy(oldNameClasses, 0, nameClasses, 0, oldNameClasses.length);
1201 }
1202 nameClasses[nNameClasses++] = nc;
1203 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1204 case 20:
1205 ;
1206 break;
1207 default:
1208 jj_la1[30] = jj_gen;
1209 break label_11;
1210 }
1211 }
1212 Annotations a;
1213 if (pa == null)
1214 a = null;
1215 else {
1216 a = pa[0];
1217 pa[0] = null;
1218 }
1219 nc = sb.makeChoice(nameClasses, nNameClasses, makeLocation(t), a);
1220 break;
1221 default:
1222 jj_la1[31] = jj_gen;
1223 ;
1224 }
1225 {if (true) return nc;}
1226 throw new Error("Missing return statement in function");
1227 }
1228
1229 final public ParsedNameClass BasicNameClass(int context) throws ParseException {
1230 Annotations a;
1231 ParsedNameClass nc;
1232 a = Annotations();
1233 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1234 case 5:
1235 case 6:
1236 case 7:
1237 case 10:
1238 case 13:
1239 case 14:
1240 case 15:
1241 case 16:
1242 case 17:
1243 case 18:
1244 case 19:
1245 case 26:
1246 case 27:
1247 case 28:
1248 case 31:
1249 case 32:
1250 case 33:
1251 case 34:
1252 case 35:
1253 case 36:
1254 case IDENTIFIER:
1255 case ESCAPED_IDENTIFIER:
1256 case PREFIXED_NAME:
1257 nc = PrimaryNameClass(context, a);
1258 break;
1259 case 25:
1260 case PREFIX_STAR:
1261 nc = OpenNameClass(context, a);
1262 break;
1263 default:
1264 jj_la1[32] = jj_gen;
1265 jj_consume_token(-1);
1266 throw new ParseException();
1267 }
1268 {if (true) return nc;}
1269 throw new Error("Missing return statement in function");
1270 }
1271
1272 final public ParsedNameClass PrimaryNameClass(int context, Annotations a) throws ParseException {
1273 ParsedNameClass nc;
1274 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1275 case 5:
1276 case 6:
1277 case 7:
1278 case 10:
1279 case 13:
1280 case 14:
1281 case 15:
1282 case 16:
1283 case 17:
1284 case 18:
1285 case 19:
1286 case 26:
1287 case 27:
1288 case 31:
1289 case 32:
1290 case 33:
1291 case 34:
1292 case 35:
1293 case 36:
1294 case IDENTIFIER:
1295 case ESCAPED_IDENTIFIER:
1296 nc = UnprefixedNameClass(context, a);
1297 break;
1298 case PREFIXED_NAME:
1299 nc = PrefixedNameClass(a);
1300 break;
1301 case 28:
1302 nc = ParenNameClass(context, a);
1303 break;
1304 default:
1305 jj_la1[33] = jj_gen;
1306 jj_consume_token(-1);
1307 throw new ParseException();
1308 }
1309 {if (true) return nc;}
1310 throw new Error("Missing return statement in function");
1311 }
1312
1313 final public ParsedNameClass OpenNameClass(int context, Annotations a) throws ParseException {
1314 Token t;
1315 LocatedString ns;
1316 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1317 case PREFIX_STAR:
1318 ns = NsName();
1319 checkNsName(context, ns); {if (true) return sb.makeNsName(ns.getString(), ns.getLocation(), a);}
1320 break;
1321 case 25:
1322 t = jj_consume_token(25);
1323 checkAnyName(context, t); {if (true) return sb.makeAnyName(makeLocation(t), a);}
1324 break;
1325 default:
1326 jj_la1[34] = jj_gen;
1327 jj_consume_token(-1);
1328 throw new ParseException();
1329 }
1330 throw new Error("Missing return statement in function");
1331 }
1332
1333 final public ParsedNameClass UnprefixedNameClass(int context, Annotations a) throws ParseException {
1334 LocatedString name;
1335 name = UnprefixedName();
1336 String ns;
1337 if ((context & (IN_ATTRIBUTE|IN_ELEMENT)) == IN_ATTRIBUTE)
1338 ns = "";
1339 else
1340 ns = defaultNamespace;
1341 {if (true) return sb.makeName(ns, name.getString(), null, name.getLocation(), a);}
1342 throw new Error("Missing return statement in function");
1343 }
1344
1345 final public ParsedNameClass PrefixedNameClass(Annotations a) throws ParseException {
1346 Token t;
1347 t = jj_consume_token(PREFIXED_NAME);
1348 String qn = t.image;
1349 int colon = qn.indexOf(':');
1350 String prefix = qn.substring(0, colon);
1351 {if (true) return sb.makeName(lookupPrefix(prefix, t), qn.substring(colon + 1), prefix, makeLocation(t), a);}
1352 throw new Error("Missing return statement in function");
1353 }
1354
1355 final public ParsedNameClass NsNameExceptClass(int context, Annotations a, Annotations[] pa) throws ParseException {
1356 LocatedString ns;
1357 ParsedNameClass nc;
1358 ns = NsName();
1359 checkNsName(context, ns);
1360 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1361 case 30:
1362 nc = ExceptNameClass(context | IN_NS_NAME);
1363 nc = sb.makeNsName(ns.getString(), nc, ns.getLocation(), a);
1364 nc = AnnotateAfter(nc);
1365 break;
1366 default:
1367 jj_la1[35] = jj_gen;
1368 nc = sb.makeNsName(ns.getString(), ns.getLocation(), a);
1369 nc = AnnotateAfter(nc);
1370 nc = NameClassAlternatives(context, nc, pa);
1371 }
1372 {if (true) return nc;}
1373 throw new Error("Missing return statement in function");
1374 }
1375
1376 final public LocatedString NsName() throws ParseException {
1377 Token t;
1378 t = jj_consume_token(PREFIX_STAR);
1379 String qn = t.image;
1380 String prefix = qn.substring(0, qn.length() - 2);
1381 {if (true) return new LocatedString(lookupPrefix(prefix, t), t);}
1382 throw new Error("Missing return statement in function");
1383 }
1384
1385 final public ParsedNameClass AnyNameExceptClass(int context, Annotations a, Annotations[] pa) throws ParseException {
1386 Token t;
1387 ParsedNameClass nc;
1388 t = jj_consume_token(25);
1389 checkAnyName(context, t);
1390 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1391 case 30:
1392 nc = ExceptNameClass(context | IN_ANY_NAME);
1393 nc = sb.makeAnyName(nc, makeLocation(t), a);
1394 nc = AnnotateAfter(nc);
1395 break;
1396 default:
1397 jj_la1[36] = jj_gen;
1398 nc = sb.makeAnyName(makeLocation(t), a);
1399 nc = AnnotateAfter(nc);
1400 nc = NameClassAlternatives(context, nc, pa);
1401 }
1402 {if (true) return nc;}
1403 throw new Error("Missing return statement in function");
1404 }
1405
1406 final public ParsedNameClass ParenNameClass(int context, Annotations a) throws ParseException {
1407 Token t;
1408 ParsedNameClass nc;
1409 Annotations[] pa = new Annotations[]{ a };
1410 t = jj_consume_token(28);
1411 nc = NameClass(context, pa);
1412 nc = afterComments(nc);
1413 jj_consume_token(29);
1414 if (pa[0] != null)
1415 nc = sb.makeChoice(new ParsedNameClass[] { nc }, 1, makeLocation(t), pa[0]);
1416 {if (true) return nc;}
1417 throw new Error("Missing return statement in function");
1418 }
1419
1420 final public ParsedNameClass ExceptNameClass(int context) throws ParseException {
1421 ParsedNameClass nc;
1422 jj_consume_token(30);
1423 nc = BasicNameClass(context);
1424 {if (true) return nc;}
1425 throw new Error("Missing return statement in function");
1426 }
1427
1428 final public ParsedPattern ListExpr(Scope scope, Annotations a) throws ParseException {
1429 Token t;
1430 ParsedPattern p;
1431 t = jj_consume_token(31);
1432 jj_consume_token(11);
1433 p = Expr(false, scope, null, null);
1434 p = afterComments(p);
1435 jj_consume_token(12);
1436 {if (true) return sb.makeList(p, makeLocation(t), a);}
1437 throw new Error("Missing return statement in function");
1438 }
1439
1440 final public ParsedPattern MixedExpr(Scope scope, Annotations a) throws ParseException {
1441 Token t;
1442 ParsedPattern p;
1443 t = jj_consume_token(32);
1444 jj_consume_token(11);
1445 p = Expr(false, scope, null, null);
1446 p = afterComments(p);
1447 jj_consume_token(12);
1448 {if (true) return sb.makeMixed(p, makeLocation(t), a);}
1449 throw new Error("Missing return statement in function");
1450 }
1451
1452 final public ParsedPattern GrammarExpr(Scope scope, Annotations a) throws ParseException {
1453 Token t;
1454 Grammar g;
1455 t = jj_consume_token(10);
1456 g = sb.makeGrammar(scope);
1457 jj_consume_token(11);
1458 a = GrammarBody(g, g, a);
1459 topLevelComments(g);
1460 jj_consume_token(12);
1461 {if (true) return g.endGrammar(makeLocation(t), a);}
1462 throw new Error("Missing return statement in function");
1463 }
1464
1465 final public ParsedPattern ParenExpr(boolean topLevel, Scope scope, Annotations a) throws ParseException {
1466 Token t;
1467 ParsedPattern p;
1468 t = jj_consume_token(28);
1469 p = Expr(topLevel, scope, t, a);
1470 p = afterComments(p);
1471 jj_consume_token(29);
1472 {if (true) return p;}
1473 throw new Error("Missing return statement in function");
1474 }
1475
1476 final public Annotations GrammarBody(GrammarSection section, Scope scope, Annotations a) throws ParseException {
1477 ParsedElementAnnotation e;
1478 label_12:
1479 while (true) {
1480 if (jj_2_3(2)) {
1481 ;
1482 } else {
1483 break label_12;
1484 }
1485 e = AnnotationElementNotKeyword();
1486 if (a == null) a = sb.makeAnnotations(null, getContext()); a.addElement(e);
1487 }
1488 label_13:
1489 while (true) {
1490 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1491 case 1:
1492 case 5:
1493 case 6:
1494 case 7:
1495 case DOCUMENTATION:
1496 case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT:
1497 case IDENTIFIER:
1498 case ESCAPED_IDENTIFIER:
1499 ;
1500 break;
1501 default:
1502 jj_la1[37] = jj_gen;
1503 break label_13;
1504 }
1505 GrammarComponent(section, scope);
1506 }
1507 {if (true) return a;}
1508 throw new Error("Missing return statement in function");
1509 }
1510
1511 final public void GrammarComponent(GrammarSection section, Scope scope) throws ParseException {
1512 ParsedElementAnnotation e;
1513 Annotations a;
1514 a = Annotations();
1515 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1516 case 5:
1517 case IDENTIFIER:
1518 case ESCAPED_IDENTIFIER:
1519 Definition(section, scope, a);
1520 break;
1521 case 7:
1522 Include(section, scope, a);
1523 break;
1524 case 6:
1525 Div(section, scope, a);
1526 break;
1527 default:
1528 jj_la1[38] = jj_gen;
1529 jj_consume_token(-1);
1530 throw new ParseException();
1531 }
1532 label_14:
1533 while (true) {
1534 if (jj_2_4(2)) {
1535 ;
1536 } else {
1537 break label_14;
1538 }
1539 e = AnnotationElementNotKeyword();
1540 section.topLevelAnnotation(e);
1541 }
1542 }
1543
1544 final public void Definition(GrammarSection section, Scope scope, Annotations a) throws ParseException {
1545 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1546 case IDENTIFIER:
1547 case ESCAPED_IDENTIFIER:
1548 Define(section, scope, a);
1549 break;
1550 case 5:
1551 Start(section, scope, a);
1552 break;
1553 default:
1554 jj_la1[39] = jj_gen;
1555 jj_consume_token(-1);
1556 throw new ParseException();
1557 }
1558 }
1559
1560 final public void Start(GrammarSection section, Scope scope, Annotations a) throws ParseException {
1561 Token t;
1562 GrammarSection.Combine combine;
1563 ParsedPattern p;
1564 t = jj_consume_token(5);
1565 combine = AssignOp();
1566 p = Expr(false, scope, null, null);
1567 section.define(GrammarSection.START, combine, p, makeLocation(t), a);
1568 }
1569
1570 final public void Define(GrammarSection section, Scope scope, Annotations a) throws ParseException {
1571 LocatedString name;
1572 GrammarSection.Combine combine;
1573 ParsedPattern p;
1574 name = Identifier();
1575 combine = AssignOp();
1576 p = Expr(false, scope, null, null);
1577 section.define(name.getString(), combine, p, name.getLocation(), a);
1578 }
1579
1580 final public GrammarSection.Combine AssignOp() throws ParseException {
1581 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1582 case 2:
1583 jj_consume_token(2);
1584 {if (true) return null;}
1585 break;
1586 case 4:
1587 jj_consume_token(4);
1588 {if (true) return GrammarSection.COMBINE_CHOICE;}
1589 break;
1590 case 3:
1591 jj_consume_token(3);
1592 {if (true) return GrammarSection.COMBINE_INTERLEAVE;}
1593 break;
1594 default:
1595 jj_la1[40] = jj_gen;
1596 jj_consume_token(-1);
1597 throw new ParseException();
1598 }
1599 throw new Error("Missing return statement in function");
1600 }
1601
1602 final public void Include(GrammarSection section, Scope scope, Annotations a) throws ParseException {
1603 Token t;
1604 String href;
1605 String ns;
1606 Include include = section.makeInclude();
1607 t = jj_consume_token(7);
1608 href = Literal();
1609 ns = Inherit();
1610 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1611 case 11:
1612 jj_consume_token(11);
1613 a = IncludeBody(include, scope, a);
1614 topLevelComments(include);
1615 jj_consume_token(12);
1616 break;
1617 default:
1618 jj_la1[41] = jj_gen;
1619 ;
1620 }
1621 try {
1622 include.endInclude(resolve(href), ns, makeLocation(t), a);
1623 }
1624 catch (IllegalSchemaException e) { }
1625 }
1626
1627 final public Annotations IncludeBody(GrammarSection section, Scope scope, Annotations a) throws ParseException {
1628 ParsedElementAnnotation e;
1629 label_15:
1630 while (true) {
1631 if (jj_2_5(2)) {
1632 ;
1633 } else {
1634 break label_15;
1635 }
1636 e = AnnotationElementNotKeyword();
1637 if (a == null) a = sb.makeAnnotations(null, getContext()); a.addElement(e);
1638 }
1639 label_16:
1640 while (true) {
1641 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1642 case 1:
1643 case 5:
1644 case 6:
1645 case DOCUMENTATION:
1646 case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT:
1647 case IDENTIFIER:
1648 case ESCAPED_IDENTIFIER:
1649 ;
1650 break;
1651 default:
1652 jj_la1[42] = jj_gen;
1653 break label_16;
1654 }
1655 IncludeComponent(section, scope);
1656 }
1657 {if (true) return a;}
1658 throw new Error("Missing return statement in function");
1659 }
1660
1661 final public void IncludeComponent(GrammarSection section, Scope scope) throws ParseException {
1662 ParsedElementAnnotation e;
1663 Annotations a;
1664 a = Annotations();
1665 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1666 case 5:
1667 case IDENTIFIER:
1668 case ESCAPED_IDENTIFIER:
1669 Definition(section, scope, a);
1670 break;
1671 case 6:
1672 IncludeDiv(section, scope, a);
1673 break;
1674 default:
1675 jj_la1[43] = jj_gen;
1676 jj_consume_token(-1);
1677 throw new ParseException();
1678 }
1679 label_17:
1680 while (true) {
1681 if (jj_2_6(2)) {
1682 ;
1683 } else {
1684 break label_17;
1685 }
1686 e = AnnotationElementNotKeyword();
1687 section.topLevelAnnotation(e);
1688 }
1689 }
1690
1691 final public void Div(GrammarSection section, Scope scope, Annotations a) throws ParseException {
1692 Token t;
1693 Div div = section.makeDiv();
1694 t = jj_consume_token(6);
1695 jj_consume_token(11);
1696 a = GrammarBody(div, scope, a);
1697 topLevelComments(div);
1698 jj_consume_token(12);
1699 div.endDiv(makeLocation(t), a);
1700 }
1701
1702 final public void IncludeDiv(GrammarSection section, Scope scope, Annotations a) throws ParseException {
1703 Token t;
1704 Div div = section.makeDiv();
1705 t = jj_consume_token(6);
1706 jj_consume_token(11);
1707 a = IncludeBody(div, scope, a);
1708 topLevelComments(div);
1709 jj_consume_token(12);
1710 div.endDiv(makeLocation(t), a);
1711 }
1712
1713 final public ParsedPattern ExternalRefExpr(Scope scope, Annotations a) throws ParseException {
1714 Token t;
1715 String href;
1716 String ns;
1717 t = jj_consume_token(33);
1718 href = Literal();
1719 ns = Inherit();
1720 try {
1721 {if (true) return sb.makeExternalRef(resolve(href), ns, scope, makeLocation(t), a);}
1722 }
1723 catch (IllegalSchemaException e) {
1724 {if (true) return sb.makeErrorPattern();}
1725 }
1726 throw new Error("Missing return statement in function");
1727 }
1728
1729 final public String Inherit() throws ParseException {
1730 String ns = null;
1731 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1732 case 15:
1733 jj_consume_token(15);
1734 jj_consume_token(2);
1735 ns = Prefix();
1736 break;
1737 default:
1738 jj_la1[44] = jj_gen;
1739 ;
1740 }
1741 if (ns == null)
1742 ns = defaultNamespace;
1743 {if (true) return ns;}
1744 throw new Error("Missing return statement in function");
1745 }
1746
1747 final public ParsedPattern ParentExpr(Scope scope, Annotations a) throws ParseException {
1748 LocatedString name;
1749 jj_consume_token(34);
1750 a = addCommentsToChildAnnotations(a);
1751 name = Identifier();
1752 {if (true) return scope.makeParentRef(name.getString(), name.getLocation(), a);}
1753 throw new Error("Missing return statement in function");
1754 }
1755
1756 final public ParsedPattern IdentifierExpr(Scope scope, Annotations a) throws ParseException {
1757 LocatedString name;
1758 name = Identifier();
1759 {if (true) return scope.makeRef(name.getString(), name.getLocation(), a);}
1760 throw new Error("Missing return statement in function");
1761 }
1762
1763 final public ParsedPattern ValueExpr(boolean topLevel, Annotations a) throws ParseException {
1764 LocatedString s;
1765 s = LocatedLiteral();
1766 if (topLevel && annotationsIncludeElements) {
1767 error("top_level_follow_annotation", s.getToken());
1768 a = null;
1769 }
1770 {if (true) return sb.makeValue("", "token", s.getString(), getContext(), defaultNamespace, s.getLocation(), a);}
1771 throw new Error("Missing return statement in function");
1772 }
1773
1774 final public ParsedPattern DataExpr(boolean topLevel, Scope scope, Annotations a, Token[] except) throws ParseException {
1775 Token datatypeToken;
1776 Location loc;
1777 String datatype;
1778 String datatypeUri = null;
1779 String s = null;
1780 ParsedPattern e = null;
1781 DataPatternBuilder dpb;
1782 datatypeToken = DatatypeName();
1783 datatype = datatypeToken.image;
1784 loc = makeLocation(datatypeToken);
1785 int colon = datatype.indexOf(':');
1786 if (colon < 0)
1787 datatypeUri = "";
1788 else {
1789 String prefix = datatype.substring(0, colon);
1790 datatypeUri = lookupDatatype(prefix, datatypeToken);
1791 datatype = datatype.substring(colon + 1);
1792 }
1793 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1794 case LITERAL:
1795 s = Literal();
1796 if (topLevel && annotationsIncludeElements) {
1797 error("top_level_follow_annotation", datatypeToken);
1798 a = null;
1799 }
1800 {if (true) return sb.makeValue(datatypeUri, datatype, s, getContext(), defaultNamespace, loc, a);}
1801 break;
1802 default:
1803 jj_la1[48] = jj_gen;
1804 dpb = sb.makeDataPatternBuilder(datatypeUri, datatype, loc);
1805 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1806 case 11:
1807 Params(dpb);
1808 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1809 case 30:
1810 e = Except(scope, except);
1811 break;
1812 default:
1813 jj_la1[45] = jj_gen;
1814 ;
1815 }
1816 break;
1817 default:
1818 jj_la1[47] = jj_gen;
1819 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1820 case 30:
1821 e = Except(scope, except);
1822 break;
1823 default:
1824 jj_la1[46] = jj_gen;
1825 ;
1826 }
1827 }
1828 {if (true) return e == null ? dpb.makePattern(loc, a) : dpb.makePattern(e, loc, a);}
1829 }
1830 throw new Error("Missing return statement in function");
1831 }
1832
1833 final public Token DatatypeName() throws ParseException {
1834 Token t;
1835 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1836 case 35:
1837 t = jj_consume_token(35);
1838 break;
1839 case 36:
1840 t = jj_consume_token(36);
1841 break;
1842 case PREFIXED_NAME:
1843 t = jj_consume_token(PREFIXED_NAME);
1844 break;
1845 default:
1846 jj_la1[49] = jj_gen;
1847 jj_consume_token(-1);
1848 throw new ParseException();
1849 }
1850 {if (true) return t;}
1851 throw new Error("Missing return statement in function");
1852 }
1853
1854 final public LocatedString Identifier() throws ParseException {
1855 LocatedString s;
1856 Token t;
1857 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1858 case IDENTIFIER:
1859 t = jj_consume_token(IDENTIFIER);
1860 s = new LocatedString(t.image, t);
1861 break;
1862 case ESCAPED_IDENTIFIER:
1863 t = jj_consume_token(ESCAPED_IDENTIFIER);
1864 s = new LocatedString(t.image.substring(1), t);
1865 break;
1866 default:
1867 jj_la1[50] = jj_gen;
1868 jj_consume_token(-1);
1869 throw new ParseException();
1870 }
1871 {if (true) return s;}
1872 throw new Error("Missing return statement in function");
1873 }
1874
1875 final public String Prefix() throws ParseException {
1876 Token t;
1877 String prefix;
1878 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1879 case IDENTIFIER:
1880 t = jj_consume_token(IDENTIFIER);
1881 prefix = t.image;
1882 break;
1883 case ESCAPED_IDENTIFIER:
1884 t = jj_consume_token(ESCAPED_IDENTIFIER);
1885 prefix = t.image.substring(1);
1886 break;
1887 case 5:
1888 case 6:
1889 case 7:
1890 case 10:
1891 case 13:
1892 case 14:
1893 case 15:
1894 case 16:
1895 case 17:
1896 case 18:
1897 case 19:
1898 case 26:
1899 case 27:
1900 case 31:
1901 case 32:
1902 case 33:
1903 case 34:
1904 case 35:
1905 case 36:
1906 t = Keyword();
1907 prefix = t.image;
1908 break;
1909 default:
1910 jj_la1[51] = jj_gen;
1911 jj_consume_token(-1);
1912 throw new ParseException();
1913 }
1914 {if (true) return lookupPrefix(prefix, t);}
1915 throw new Error("Missing return statement in function");
1916 }
1917
1918 final public LocatedString UnprefixedName() throws ParseException {
1919 LocatedString s;
1920 Token t;
1921 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1922 case IDENTIFIER:
1923 case ESCAPED_IDENTIFIER:
1924 s = Identifier();
1925 break;
1926 case 5:
1927 case 6:
1928 case 7:
1929 case 10:
1930 case 13:
1931 case 14:
1932 case 15:
1933 case 16:
1934 case 17:
1935 case 18:
1936 case 19:
1937 case 26:
1938 case 27:
1939 case 31:
1940 case 32:
1941 case 33:
1942 case 34:
1943 case 35:
1944 case 36:
1945 t = Keyword();
1946 s = new LocatedString(t.image, t);
1947 break;
1948 default:
1949 jj_la1[52] = jj_gen;
1950 jj_consume_token(-1);
1951 throw new ParseException();
1952 }
1953 {if (true) return s;}
1954 throw new Error("Missing return statement in function");
1955 }
1956
1957 final public void Params(DataPatternBuilder dpb) throws ParseException {
1958 jj_consume_token(11);
1959 label_18:
1960 while (true) {
1961 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1962 case 1:
1963 case 5:
1964 case 6:
1965 case 7:
1966 case 10:
1967 case 13:
1968 case 14:
1969 case 15:
1970 case 16:
1971 case 17:
1972 case 18:
1973 case 19:
1974 case 26:
1975 case 27:
1976 case 31:
1977 case 32:
1978 case 33:
1979 case 34:
1980 case 35:
1981 case 36:
1982 case DOCUMENTATION:
1983 case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT:
1984 case IDENTIFIER:
1985 case ESCAPED_IDENTIFIER:
1986 ;
1987 break;
1988 default:
1989 jj_la1[53] = jj_gen;
1990 break label_18;
1991 }
1992 Param(dpb);
1993 }
1994 jj_consume_token(12);
1995 }
1996
1997 final public void Param(DataPatternBuilder dpb) throws ParseException {
1998 LocatedString name;
1999 Annotations a;
2000 String value;
2001 a = Annotations();
2002 name = UnprefixedName();
2003 jj_consume_token(2);
2004 a = addCommentsToLeadingAnnotations(a);
2005 value = Literal();
2006 dpb.addParam(name.getString(), value, getContext(), defaultNamespace, name.getLocation(), a);
2007 }
2008
2009 final public ParsedPattern Except(Scope scope, Token[] except) throws ParseException {
2010 Annotations a;
2011 ParsedPattern p;
2012 Token t;
2013 Token[] innerExcept = new Token[1];
2014 t = jj_consume_token(30);
2015 a = Annotations();
2016 p = PrimaryExpr(false, scope, a, innerExcept);
2017 checkExcept(innerExcept);
2018 except[0] = t;
2019 {if (true) return p;}
2020 throw new Error("Missing return statement in function");
2021 }
2022
2023 final public ParsedElementAnnotation Documentation() throws ParseException {
2024 CommentList comments = getComments();
2025 ElementAnnotationBuilder eab;
2026 Token t;
2027 String s;
2028 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2029 case DOCUMENTATION:
2030 t = jj_consume_token(DOCUMENTATION);
2031 break;
2032 case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT:
2033 t = jj_consume_token(DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT);
2034 break;
2035 default:
2036 jj_la1[54] = jj_gen;
2037 jj_consume_token(-1);
2038 throw new ParseException();
2039 }
2040 eab = sb.makeElementAnnotationBuilder(WellKnownNamespaces.RELAX_NG_COMPATIBILITY_ANNOTATIONS,
2041 "documentation",
2042 getCompatibilityPrefix(),
2043 makeLocation(t),
2044 comments,
2045 getContext());
2046 eab.addText(mungeComment(t.image), makeLocation(t), null);
2047 label_19:
2048 while (true) {
2049 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2050 case DOCUMENTATION_CONTINUE:
2051 ;
2052 break;
2053 default:
2054 jj_la1[55] = jj_gen;
2055 break label_19;
2056 }
2057 t = jj_consume_token(DOCUMENTATION_CONTINUE);
2058 eab.addText("\n" + mungeComment(t.image), makeLocation(t), null);
2059 }
2060 {if (true) return eab.makeElementAnnotation();}
2061 throw new Error("Missing return statement in function");
2062 }
2063
2064 final public Annotations Annotations() throws ParseException {
2065 CommentList comments = getComments();
2066 Annotations a = null;
2067 ParsedElementAnnotation e;
2068 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2069 case DOCUMENTATION:
2070 case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT:
2071 a = sb.makeAnnotations(comments, getContext());
2072 label_20:
2073 while (true) {
2074 e = Documentation();
2075 a.addElement(e);
2076 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2077 case DOCUMENTATION:
2078 case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT:
2079 ;
2080 break;
2081 default:
2082 jj_la1[56] = jj_gen;
2083 break label_20;
2084 }
2085 }
2086 comments = getComments();
2087 if (comments != null)
2088 a.addLeadingComment(comments);
2089 break;
2090 default:
2091 jj_la1[57] = jj_gen;
2092 ;
2093 }
2094 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2095 case 1:
2096 jj_consume_token(1);
2097 if (a == null) a = sb.makeAnnotations(comments, getContext()); clearAttributeList(); annotationsIncludeElements = false;
2098 label_21:
2099 while (true) {
2100 if (jj_2_7(2)) {
2101 ;
2102 } else {
2103 break label_21;
2104 }
2105 PrefixedAnnotationAttribute(a, false);
2106 }
2107 label_22:
2108 while (true) {
2109 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2110 case 5:
2111 case 6:
2112 case 7:
2113 case 10:
2114 case 13:
2115 case 14:
2116 case 15:
2117 case 16:
2118 case 17:
2119 case 18:
2120 case 19:
2121 case 26:
2122 case 27:
2123 case 31:
2124 case 32:
2125 case 33:
2126 case 34:
2127 case 35:
2128 case 36:
2129 case IDENTIFIER:
2130 case ESCAPED_IDENTIFIER:
2131 case PREFIXED_NAME:
2132 ;
2133 break;
2134 default:
2135 jj_la1[58] = jj_gen;
2136 break label_22;
2137 }
2138 e = AnnotationElement(false);
2139 a.addElement(e); annotationsIncludeElements = true;
2140 }
2141 a.addComment(getComments());
2142 jj_consume_token(9);
2143 break;
2144 default:
2145 jj_la1[59] = jj_gen;
2146 ;
2147 }
2148 if (a == null && comments != null)
2149 a = sb.makeAnnotations(comments, getContext());
2150 {if (true) return a;}
2151 throw new Error("Missing return statement in function");
2152 }
2153
2154 final public void AnnotationAttribute(Annotations a) throws ParseException {
2155 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2156 case PREFIXED_NAME:
2157 PrefixedAnnotationAttribute(a, true);
2158 break;
2159 case 5:
2160 case 6:
2161 case 7:
2162 case 10:
2163 case 13:
2164 case 14:
2165 case 15:
2166 case 16:
2167 case 17:
2168 case 18:
2169 case 19:
2170 case 26:
2171 case 27:
2172 case 31:
2173 case 32:
2174 case 33:
2175 case 34:
2176 case 35:
2177 case 36:
2178 case IDENTIFIER:
2179 case ESCAPED_IDENTIFIER:
2180 UnprefixedAnnotationAttribute(a);
2181 break;
2182 default:
2183 jj_la1[60] = jj_gen;
2184 jj_consume_token(-1);
2185 throw new ParseException();
2186 }
2187 }
2188
2189 final public void PrefixedAnnotationAttribute(Annotations a, boolean nested) throws ParseException {
2190 Token t;
2191 String value;
2192 t = jj_consume_token(PREFIXED_NAME);
2193 jj_consume_token(2);
2194 value = Literal();
2195 String qn = t.image;
2196 int colon = qn.indexOf(':');
2197 String prefix = qn.substring(0, colon);
2198 String ns = lookupPrefix(prefix, t);
2199 if (ns == SchemaBuilder.INHERIT_NS)
2200 error("inherited_annotation_namespace", t);
2201 else if (ns.length() == 0 && !nested)
2202 error("unqualified_annotation_attribute", t);
2203 else if (ns.equals(WellKnownNamespaces.RELAX_NG) && !nested)
2204 error("relax_ng_namespace", t);
2205 /*else if (ns.length() == 0
2206 && qn.length() - colon - 1 == 5
2207 && qn.regionMatches(colon + 1, "xmlns", 0, 5))
2208 error("xmlns_annotation_attribute", t);*/
2209 else if (ns.equals(WellKnownNamespaces.XMLNS))
2210 error("xmlns_annotation_attribute_uri", t);
2211 else {
2212 if (ns.length() == 0)
2213 prefix = null;
2214 addAttribute(a, ns, qn.substring(colon + 1), prefix, value, t);
2215 }
2216 }
2217
2218 final public void UnprefixedAnnotationAttribute(Annotations a) throws ParseException {
2219 LocatedString name;
2220 String value;
2221 name = UnprefixedName();
2222 jj_consume_token(2);
2223 value = Literal();
2224 if (name.getString().equals("xmlns"))
2225 error("xmlns_annotation_attribute", name.getToken());
2226 else
2227 addAttribute(a, "", name.getString(), null, value, name.getToken());
2228 }
2229
2230 final public ParsedElementAnnotation AnnotationElement(boolean nested) throws ParseException {
2231 ParsedElementAnnotation a;
2232 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2233 case PREFIXED_NAME:
2234 a = PrefixedAnnotationElement(nested);
2235 break;
2236 case 5:
2237 case 6:
2238 case 7:
2239 case 10:
2240 case 13:
2241 case 14:
2242 case 15:
2243 case 16:
2244 case 17:
2245 case 18:
2246 case 19:
2247 case 26:
2248 case 27:
2249 case 31:
2250 case 32:
2251 case 33:
2252 case 34:
2253 case 35:
2254 case 36:
2255 case IDENTIFIER:
2256 case ESCAPED_IDENTIFIER:
2257 a = UnprefixedAnnotationElement();
2258 break;
2259 default:
2260 jj_la1[61] = jj_gen;
2261 jj_consume_token(-1);
2262 throw new ParseException();
2263 }
2264 {if (true) return a;}
2265 throw new Error("Missing return statement in function");
2266 }
2267
2268 final public ParsedElementAnnotation AnnotationElementNotKeyword() throws ParseException {
2269 ParsedElementAnnotation a;
2270 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2271 case PREFIXED_NAME:
2272 a = PrefixedAnnotationElement(false);
2273 break;
2274 case IDENTIFIER:
2275 case ESCAPED_IDENTIFIER:
2276 a = IdentifierAnnotationElement();
2277 break;
2278 default:
2279 jj_la1[62] = jj_gen;
2280 jj_consume_token(-1);
2281 throw new ParseException();
2282 }
2283 {if (true) return a;}
2284 throw new Error("Missing return statement in function");
2285 }
2286
2287 final public ParsedElementAnnotation PrefixedAnnotationElement(boolean nested) throws ParseException {
2288 CommentList comments = getComments();
2289 Token t;
2290 ElementAnnotationBuilder eab;
2291 t = jj_consume_token(PREFIXED_NAME);
2292 String qn = t.image;
2293 int colon = qn.indexOf(':');
2294 String prefix = qn.substring(0, colon);
2295 String ns = lookupPrefix(prefix, t);
2296 if (ns == SchemaBuilder.INHERIT_NS) {
2297 error("inherited_annotation_namespace", t);
2298 ns = "";
2299 }
2300 else if (!nested && ns.equals(WellKnownNamespaces.RELAX_NG)) {
2301 error("relax_ng_namespace", t);
2302 ns = "";
2303 }
2304 else {
2305 if (ns.length() == 0)
2306 prefix = null;
2307 }
2308 eab = sb.makeElementAnnotationBuilder(ns, qn.substring(colon + 1), prefix,
2309 makeLocation(t), comments, getContext());
2310 AnnotationElementContent(eab);
2311 {if (true) return eab.makeElementAnnotation();}
2312 throw new Error("Missing return statement in function");
2313 }
2314
2315 final public ParsedElementAnnotation UnprefixedAnnotationElement() throws ParseException {
2316 CommentList comments = getComments();
2317 LocatedString name;
2318 ElementAnnotationBuilder eab;
2319 name = UnprefixedName();
2320 eab = sb.makeElementAnnotationBuilder("", name.getString(), null,
2321 name.getLocation(), comments, getContext());
2322 AnnotationElementContent(eab);
2323 {if (true) return eab.makeElementAnnotation();}
2324 throw new Error("Missing return statement in function");
2325 }
2326
2327 final public ParsedElementAnnotation IdentifierAnnotationElement() throws ParseException {
2328 CommentList comments = getComments();
2329 LocatedString name;
2330 ElementAnnotationBuilder eab;
2331 name = Identifier();
2332 eab = sb.makeElementAnnotationBuilder("", name.getString(), null,
2333 name.getLocation(), comments, getContext());
2334 AnnotationElementContent(eab);
2335 {if (true) return eab.makeElementAnnotation();}
2336 throw new Error("Missing return statement in function");
2337 }
2338
2339 final public void AnnotationElementContent(ElementAnnotationBuilder eab) throws ParseException {
2340 ParsedElementAnnotation e;
2341 jj_consume_token(1);
2342 clearAttributeList();
2343 label_23:
2344 while (true) {
2345 if (jj_2_8(2)) {
2346 ;
2347 } else {
2348 break label_23;
2349 }
2350 AnnotationAttribute(eab);
2351 }
2352 label_24:
2353 while (true) {
2354 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2355 case 5:
2356 case 6:
2357 case 7:
2358 case 10:
2359 case 13:
2360 case 14:
2361 case 15:
2362 case 16:
2363 case 17:
2364 case 18:
2365 case 19:
2366 case 26:
2367 case 27:
2368 case 31:
2369 case 32:
2370 case 33:
2371 case 34:
2372 case 35:
2373 case 36:
2374 case IDENTIFIER:
2375 case ESCAPED_IDENTIFIER:
2376 case PREFIXED_NAME:
2377 case LITERAL:
2378 ;
2379 break;
2380 default:
2381 jj_la1[63] = jj_gen;
2382 break label_24;
2383 }
2384 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2385 case LITERAL:
2386 AnnotationElementLiteral(eab);
2387 label_25:
2388 while (true) {
2389 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2390 case 8:
2391 ;
2392 break;
2393 default:
2394 jj_la1[64] = jj_gen;
2395 break label_25;
2396 }
2397 jj_consume_token(8);
2398 AnnotationElementLiteral(eab);
2399 }
2400 break;
2401 case 5:
2402 case 6:
2403 case 7:
2404 case 10:
2405 case 13:
2406 case 14:
2407 case 15:
2408 case 16:
2409 case 17:
2410 case 18:
2411 case 19:
2412 case 26:
2413 case 27:
2414 case 31:
2415 case 32:
2416 case 33:
2417 case 34:
2418 case 35:
2419 case 36:
2420 case IDENTIFIER:
2421 case ESCAPED_IDENTIFIER:
2422 case PREFIXED_NAME:
2423 e = AnnotationElement(true);
2424 eab.addElement(e);
2425 break;
2426 default:
2427 jj_la1[65] = jj_gen;
2428 jj_consume_token(-1);
2429 throw new ParseException();
2430 }
2431 }
2432 eab.addComment(getComments());
2433 jj_consume_token(9);
2434 }
2435
2436 final public void AnnotationElementLiteral(ElementAnnotationBuilder eab) throws ParseException {
2437 Token t;
2438 CommentList comments = getComments();
2439 t = jj_consume_token(LITERAL);
2440 eab.addText(unquote(t.image), makeLocation(t), comments);
2441 }
2442
2443 final public String Literal() throws ParseException {
2444 Token t;
2445 String s;
2446 StringBuffer buf;
2447 t = jj_consume_token(LITERAL);
2448 s = unquote(t.image);
2449 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2450 case 8:
2451 buf = new StringBuffer(s);
2452 label_26:
2453 while (true) {
2454 jj_consume_token(8);
2455 t = jj_consume_token(LITERAL);
2456 buf.append(unquote(t.image));
2457 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2458 case 8:
2459 ;
2460 break;
2461 default:
2462 jj_la1[66] = jj_gen;
2463 break label_26;
2464 }
2465 }
2466 s = buf.toString();
2467 break;
2468 default:
2469 jj_la1[67] = jj_gen;
2470 ;
2471 }
2472 {if (true) return s;}
2473 throw new Error("Missing return statement in function");
2474 }
2475
2476 final public LocatedString LocatedLiteral() throws ParseException {
2477 Token t;
2478 Token t2;
2479 String s;
2480 StringBuffer buf;
2481 t = jj_consume_token(LITERAL);
2482 s = unquote(t.image);
2483 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2484 case 8:
2485 buf = new StringBuffer(s);
2486 label_27:
2487 while (true) {
2488 jj_consume_token(8);
2489 t2 = jj_consume_token(LITERAL);
2490 buf.append(unquote(t2.image));
2491 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2492 case 8:
2493 ;
2494 break;
2495 default:
2496 jj_la1[68] = jj_gen;
2497 break label_27;
2498 }
2499 }
2500 s = buf.toString();
2501 break;
2502 default:
2503 jj_la1[69] = jj_gen;
2504 ;
2505 }
2506 {if (true) return new LocatedString(s, t);}
2507 throw new Error("Missing return statement in function");
2508 }
2509
2510 final public Token Keyword() throws ParseException {
2511 Token t;
2512 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2513 case 26:
2514 t = jj_consume_token(26);
2515 break;
2516 case 27:
2517 t = jj_consume_token(27);
2518 break;
2519 case 13:
2520 t = jj_consume_token(13);
2521 break;
2522 case 31:
2523 t = jj_consume_token(31);
2524 break;
2525 case 32:
2526 t = jj_consume_token(32);
2527 break;
2528 case 10:
2529 t = jj_consume_token(10);
2530 break;
2531 case 17:
2532 t = jj_consume_token(17);
2533 break;
2534 case 18:
2535 t = jj_consume_token(18);
2536 break;
2537 case 34:
2538 t = jj_consume_token(34);
2539 break;
2540 case 33:
2541 t = jj_consume_token(33);
2542 break;
2543 case 19:
2544 t = jj_consume_token(19);
2545 break;
2546 case 5:
2547 t = jj_consume_token(5);
2548 break;
2549 case 7:
2550 t = jj_consume_token(7);
2551 break;
2552 case 14:
2553 t = jj_consume_token(14);
2554 break;
2555 case 15:
2556 t = jj_consume_token(15);
2557 break;
2558 case 35:
2559 t = jj_consume_token(35);
2560 break;
2561 case 36:
2562 t = jj_consume_token(36);
2563 break;
2564 case 16:
2565 t = jj_consume_token(16);
2566 break;
2567 case 6:
2568 t = jj_consume_token(6);
2569 break;
2570 default:
2571 jj_la1[70] = jj_gen;
2572 jj_consume_token(-1);
2573 throw new ParseException();
2574 }
2575 {if (true) return t;}
2576 throw new Error("Missing return statement in function");
2577 }
2578
2579 final private boolean jj_2_1(int xla) {
2580 jj_la = xla; jj_lastpos = jj_scanpos = token;
2581 boolean retval = !jj_3_1();
2582 jj_save(0, xla);
2583 return retval;
2584 }
2585
2586 final private boolean jj_2_2(int xla) {
2587 jj_la = xla; jj_lastpos = jj_scanpos = token;
2588 boolean retval = !jj_3_2();
2589 jj_save(1, xla);
2590 return retval;
2591 }
2592
2593 final private boolean jj_2_3(int xla) {
2594 jj_la = xla; jj_lastpos = jj_scanpos = token;
2595 boolean retval = !jj_3_3();
2596 jj_save(2, xla);
2597 return retval;
2598 }
2599
2600 final private boolean jj_2_4(int xla) {
2601 jj_la = xla; jj_lastpos = jj_scanpos = token;
2602 boolean retval = !jj_3_4();
2603 jj_save(3, xla);
2604 return retval;
2605 }
2606
2607 final private boolean jj_2_5(int xla) {
2608 jj_la = xla; jj_lastpos = jj_scanpos = token;
2609 boolean retval = !jj_3_5();
2610 jj_save(4, xla);
2611 return retval;
2612 }
2613
2614 final private boolean jj_2_6(int xla) {
2615 jj_la = xla; jj_lastpos = jj_scanpos = token;
2616 boolean retval = !jj_3_6();
2617 jj_save(5, xla);
2618 return retval;
2619 }
2620
2621 final private boolean jj_2_7(int xla) {
2622 jj_la = xla; jj_lastpos = jj_scanpos = token;
2623 boolean retval = !jj_3_7();
2624 jj_save(6, xla);
2625 return retval;
2626 }
2627
2628 final private boolean jj_2_8(int xla) {
2629 jj_la = xla; jj_lastpos = jj_scanpos = token;
2630 boolean retval = !jj_3_8();
2631 jj_save(7, xla);
2632 return retval;
2633 }
2634
2635 final private boolean jj_3R_92() {
2636 if (jj_scan_token(7)) return true;
2637 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2638 return false;
2639 }
2640
2641 final private boolean jj_3R_91() {
2642 if (jj_scan_token(5)) return true;
2643 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2644 return false;
2645 }
2646
2647 final private boolean jj_3R_90() {
2648 if (jj_scan_token(19)) return true;
2649 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2650 return false;
2651 }
2652
2653 final private boolean jj_3R_89() {
2654 if (jj_scan_token(33)) return true;
2655 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2656 return false;
2657 }
2658
2659 final private boolean jj_3R_88() {
2660 if (jj_scan_token(34)) return true;
2661 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2662 return false;
2663 }
2664
2665 final private boolean jj_3R_87() {
2666 if (jj_scan_token(18)) return true;
2667 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2668 return false;
2669 }
2670
2671 final private boolean jj_3R_86() {
2672 if (jj_scan_token(17)) return true;
2673 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2674 return false;
2675 }
2676
2677 final private boolean jj_3R_85() {
2678 if (jj_scan_token(10)) return true;
2679 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2680 return false;
2681 }
2682
2683 final private boolean jj_3R_84() {
2684 if (jj_scan_token(32)) return true;
2685 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2686 return false;
2687 }
2688
2689 final private boolean jj_3R_83() {
2690 if (jj_scan_token(31)) return true;
2691 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2692 return false;
2693 }
2694
2695 final private boolean jj_3R_82() {
2696 if (jj_scan_token(13)) return true;
2697 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2698 return false;
2699 }
2700
2701 final private boolean jj_3R_81() {
2702 if (jj_scan_token(27)) return true;
2703 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2704 return false;
2705 }
2706
2707 final private boolean jj_3R_80() {
2708 if (jj_scan_token(26)) return true;
2709 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2710 return false;
2711 }
2712
2713 final private boolean jj_3R_79() {
2714 Token xsp;
2715 xsp = jj_scanpos;
2716 if (jj_3R_80()) {
2717 jj_scanpos = xsp;
2718 if (jj_3R_81()) {
2719 jj_scanpos = xsp;
2720 if (jj_3R_82()) {
2721 jj_scanpos = xsp;
2722 if (jj_3R_83()) {
2723 jj_scanpos = xsp;
2724 if (jj_3R_84()) {
2725 jj_scanpos = xsp;
2726 if (jj_3R_85()) {
2727 jj_scanpos = xsp;
2728 if (jj_3R_86()) {
2729 jj_scanpos = xsp;
2730 if (jj_3R_87()) {
2731 jj_scanpos = xsp;
2732 if (jj_3R_88()) {
2733 jj_scanpos = xsp;
2734 if (jj_3R_89()) {
2735 jj_scanpos = xsp;
2736 if (jj_3R_90()) {
2737 jj_scanpos = xsp;
2738 if (jj_3R_91()) {
2739 jj_scanpos = xsp;
2740 if (jj_3R_92()) {
2741 jj_scanpos = xsp;
2742 if (jj_3R_93()) {
2743 jj_scanpos = xsp;
2744 if (jj_3R_94()) {
2745 jj_scanpos = xsp;
2746 if (jj_3R_95()) {
2747 jj_scanpos = xsp;
2748 if (jj_3R_96()) {
2749 jj_scanpos = xsp;
2750 if (jj_3R_97()) {
2751 jj_scanpos = xsp;
2752 if (jj_3R_98()) return true;
2753 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2754 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2755 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2756 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2757 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2758 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2759 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2760 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2761 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2762 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2763 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2764 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2765 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2766 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2767 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2768 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2769 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2770 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2771 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2772 return false;
2773 }
2774
2775 final private boolean jj_3R_30() {
2776 if (jj_scan_token(PREFIXED_NAME)) return true;
2777 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2778 if (jj_scan_token(2)) return true;
2779 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2780 return false;
2781 }
2782
2783 final private boolean jj_3R_39() {
2784 if (jj_3R_30()) return true;
2785 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2786 return false;
2787 }
2788
2789 final private boolean jj_3R_31() {
2790 Token xsp;
2791 xsp = jj_scanpos;
2792 if (jj_3R_39()) {
2793 jj_scanpos = xsp;
2794 if (jj_3R_40()) return true;
2795 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2796 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2797 return false;
2798 }
2799
2800 final private boolean jj_3_7() {
2801 if (jj_3R_30()) return true;
2802 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2803 return false;
2804 }
2805
2806 final private boolean jj_3R_70() {
2807 if (jj_3R_47()) return true;
2808 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2809 return false;
2810 }
2811
2812 final private boolean jj_3R_69() {
2813 if (jj_scan_token(8)) return true;
2814 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2815 return false;
2816 }
2817
2818 final private boolean jj_3R_76() {
2819 if (jj_scan_token(DOCUMENTATION_CONTINUE)) return true;
2820 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2821 return false;
2822 }
2823
2824 final private boolean jj_3_8() {
2825 if (jj_3R_31()) return true;
2826 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2827 return false;
2828 }
2829
2830 final private boolean jj_3R_68() {
2831 if (jj_scan_token(LITERAL)) return true;
2832 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2833 return false;
2834 }
2835
2836 final private boolean jj_3R_63() {
2837 if (jj_scan_token(1)) return true;
2838 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2839 return false;
2840 }
2841
2842 final private boolean jj_3R_67() {
2843 if (jj_scan_token(2)) return true;
2844 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2845 return false;
2846 }
2847
2848 final private boolean jj_3R_52() {
2849 if (jj_3R_41()) return true;
2850 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2851 if (jj_3R_63()) return true;
2852 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2853 return false;
2854 }
2855
2856 final private boolean jj_3_6() {
2857 if (jj_3R_29()) return true;
2858 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2859 return false;
2860 }
2861
2862 final private boolean jj_3_2() {
2863 if (jj_3R_28()) return true;
2864 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2865 return false;
2866 }
2867
2868 final private boolean jj_3R_66() {
2869 if (jj_3R_64()) return true;
2870 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2871 return false;
2872 }
2873
2874 final private boolean jj_3_5() {
2875 if (jj_3R_29()) return true;
2876 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2877 return false;
2878 }
2879
2880 final private boolean jj_3R_75() {
2881 if (jj_scan_token(DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT)) return true;
2882 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2883 return false;
2884 }
2885
2886 final private boolean jj_3R_78() {
2887 if (jj_3R_79()) return true;
2888 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2889 return false;
2890 }
2891
2892 final private boolean jj_3R_73() {
2893 if (jj_scan_token(4)) return true;
2894 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2895 return false;
2896 }
2897
2898 final private boolean jj_3R_77() {
2899 if (jj_3R_41()) return true;
2900 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2901 return false;
2902 }
2903
2904 final private boolean jj_3R_45() {
2905 if (jj_scan_token(4)) return true;
2906 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2907 return false;
2908 }
2909
2910 final private boolean jj_3R_64() {
2911 Token xsp;
2912 xsp = jj_scanpos;
2913 if (jj_3R_77()) {
2914 jj_scanpos = xsp;
2915 if (jj_3R_78()) return true;
2916 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2917 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2918 return false;
2919 }
2920
2921 final private boolean jj_3R_58() {
2922 if (jj_scan_token(7)) return true;
2923 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2924 return false;
2925 }
2926
2927 final private boolean jj_3R_50() {
2928 if (jj_3R_47()) return true;
2929 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2930 return false;
2931 }
2932
2933 final private boolean jj_3R_59() {
2934 Token xsp;
2935 xsp = jj_scanpos;
2936 if (jj_3R_65()) {
2937 jj_scanpos = xsp;
2938 if (jj_3R_66()) {
2939 jj_scanpos = xsp;
2940 if (jj_3R_67()) {
2941 jj_scanpos = xsp;
2942 if (jj_3R_68()) {
2943 jj_scanpos = xsp;
2944 if (jj_3R_69()) {
2945 jj_scanpos = xsp;
2946 if (jj_3R_70()) return true;
2947 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2948 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2949 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2950 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2951 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2952 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2953 return false;
2954 }
2955
2956 final private boolean jj_3R_65() {
2957 if (jj_scan_token(PREFIXED_NAME)) return true;
2958 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2959 return false;
2960 }
2961
2962 final private boolean jj_3R_72() {
2963 if (jj_scan_token(3)) return true;
2964 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2965 return false;
2966 }
2967
2968 final private boolean jj_3R_47() {
2969 if (jj_scan_token(1)) return true;
2970 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2971 Token xsp;
2972 while (true) {
2973 xsp = jj_scanpos;
2974 if (jj_3R_59()) { jj_scanpos = xsp; break; }
2975 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2976 }
2977 if (jj_scan_token(9)) return true;
2978 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2979 return false;
2980 }
2981
2982 final private boolean jj_3R_44() {
2983 if (jj_scan_token(3)) return true;
2984 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2985 return false;
2986 }
2987
2988 final private boolean jj_3R_57() {
2989 if (jj_scan_token(6)) return true;
2990 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2991 return false;
2992 }
2993
2994 final private boolean jj_3R_74() {
2995 if (jj_scan_token(DOCUMENTATION)) return true;
2996 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2997 return false;
2998 }
2999
3000 final private boolean jj_3R_62() {
3001 Token xsp;
3002 xsp = jj_scanpos;
3003 if (jj_3R_74()) {
3004 jj_scanpos = xsp;
3005 if (jj_3R_75()) return true;
3006 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3007 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3008 while (true) {
3009 xsp = jj_scanpos;
3010 if (jj_3R_76()) { jj_scanpos = xsp; break; }
3011 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3012 }
3013 return false;
3014 }
3015
3016 final private boolean jj_3R_71() {
3017 if (jj_scan_token(2)) return true;
3018 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3019 return false;
3020 }
3021
3022 final private boolean jj_3R_49() {
3023 Token xsp;
3024 if (jj_3R_62()) return true;
3025 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3026 while (true) {
3027 xsp = jj_scanpos;
3028 if (jj_3R_62()) { jj_scanpos = xsp; break; }
3029 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3030 }
3031 return false;
3032 }
3033
3034 final private boolean jj_3R_43() {
3035 if (jj_scan_token(2)) return true;
3036 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3037 return false;
3038 }
3039
3040 final private boolean jj_3R_46() {
3041 Token xsp;
3042 xsp = jj_scanpos;
3043 if (jj_3R_56()) {
3044 jj_scanpos = xsp;
3045 if (jj_3R_57()) {
3046 jj_scanpos = xsp;
3047 if (jj_3R_58()) return true;
3048 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3049 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3050 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3051 return false;
3052 }
3053
3054 final private boolean jj_3R_42() {
3055 if (jj_scan_token(1)) return true;
3056 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3057 return false;
3058 }
3059
3060 final private boolean jj_3R_56() {
3061 if (jj_scan_token(5)) return true;
3062 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3063 return false;
3064 }
3065
3066 final private boolean jj_3R_55() {
3067 if (jj_scan_token(ESCAPED_IDENTIFIER)) return true;
3068 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3069 return false;
3070 }
3071
3072 final private boolean jj_3R_54() {
3073 if (jj_scan_token(IDENTIFIER)) return true;
3074 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3075 return false;
3076 }
3077
3078 final private boolean jj_3R_61() {
3079 if (jj_3R_46()) return true;
3080 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3081 return false;
3082 }
3083
3084 final private boolean jj_3R_41() {
3085 Token xsp;
3086 xsp = jj_scanpos;
3087 if (jj_3R_54()) {
3088 jj_scanpos = xsp;
3089 if (jj_3R_55()) return true;
3090 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3091 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3092 return false;
3093 }
3094
3095 final private boolean jj_3R_51() {
3096 if (jj_scan_token(PREFIXED_NAME)) return true;
3097 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3098 if (jj_3R_63()) return true;
3099 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3100 return false;
3101 }
3102
3103 final private boolean jj_3R_48() {
3104 Token xsp;
3105 xsp = jj_scanpos;
3106 if (jj_3R_60()) {
3107 jj_scanpos = xsp;
3108 if (jj_3R_61()) return true;
3109 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3110 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3111 return false;
3112 }
3113
3114 final private boolean jj_3R_60() {
3115 if (jj_3R_41()) return true;
3116 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3117 Token xsp;
3118 xsp = jj_scanpos;
3119 if (jj_3R_71()) {
3120 jj_scanpos = xsp;
3121 if (jj_3R_72()) {
3122 jj_scanpos = xsp;
3123 if (jj_3R_73()) return true;
3124 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3125 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3126 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3127 return false;
3128 }
3129
3130 final private boolean jj_3R_36() {
3131 if (jj_3R_49()) return true;
3132 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3133 Token xsp;
3134 xsp = jj_scanpos;
3135 if (jj_3R_50()) jj_scanpos = xsp;
3136 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3137 if (jj_3R_48()) return true;
3138 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3139 return false;
3140 }
3141
3142 final private boolean jj_3R_35() {
3143 if (jj_3R_47()) return true;
3144 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3145 if (jj_3R_48()) return true;
3146 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3147 return false;
3148 }
3149
3150 final private boolean jj_3R_34() {
3151 if (jj_3R_46()) return true;
3152 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3153 return false;
3154 }
3155
3156 final private boolean jj_3R_38() {
3157 if (jj_3R_52()) return true;
3158 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3159 return false;
3160 }
3161
3162 final private boolean jj_3_1() {
3163 if (jj_3R_28()) return true;
3164 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3165 return false;
3166 }
3167
3168 final private boolean jj_3R_33() {
3169 if (jj_3R_41()) return true;
3170 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3171 Token xsp;
3172 xsp = jj_scanpos;
3173 if (jj_3R_42()) {
3174 jj_scanpos = xsp;
3175 if (jj_3R_43()) {
3176 jj_scanpos = xsp;
3177 if (jj_3R_44()) {
3178 jj_scanpos = xsp;
3179 if (jj_3R_45()) return true;
3180 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3181 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3182 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3183 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3184 return false;
3185 }
3186
3187 final private boolean jj_3R_37() {
3188 if (jj_3R_51()) return true;
3189 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3190 return false;
3191 }
3192
3193 final private boolean jj_3R_28() {
3194 Token xsp;
3195 xsp = jj_scanpos;
3196 if (jj_3R_32()) {
3197 jj_scanpos = xsp;
3198 if (jj_3R_33()) {
3199 jj_scanpos = xsp;
3200 if (jj_3R_34()) {
3201 jj_scanpos = xsp;
3202 if (jj_3R_35()) {
3203 jj_scanpos = xsp;
3204 if (jj_3R_36()) return true;
3205 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3206 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3207 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3208 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3209 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3210 return false;
3211 }
3212
3213 final private boolean jj_3R_32() {
3214 if (jj_scan_token(PREFIXED_NAME)) return true;
3215 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3216 if (jj_scan_token(1)) return true;
3217 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3218 return false;
3219 }
3220
3221 final private boolean jj_3R_29() {
3222 Token xsp;
3223 xsp = jj_scanpos;
3224 if (jj_3R_37()) {
3225 jj_scanpos = xsp;
3226 if (jj_3R_38()) return true;
3227 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3228 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3229 return false;
3230 }
3231
3232 final private boolean jj_3_4() {
3233 if (jj_3R_29()) return true;
3234 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3235 return false;
3236 }
3237
3238 final private boolean jj_3R_53() {
3239 if (jj_3R_64()) return true;
3240 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3241 if (jj_scan_token(2)) return true;
3242 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3243 return false;
3244 }
3245
3246 final private boolean jj_3R_40() {
3247 if (jj_3R_53()) return true;
3248 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3249 return false;
3250 }
3251
3252 final private boolean jj_3R_98() {
3253 if (jj_scan_token(6)) return true;
3254 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3255 return false;
3256 }
3257
3258 final private boolean jj_3_3() {
3259 if (jj_3R_29()) return true;
3260 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3261 return false;
3262 }
3263
3264 final private boolean jj_3R_97() {
3265 if (jj_scan_token(16)) return true;
3266 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3267 return false;
3268 }
3269
3270 final private boolean jj_3R_96() {
3271 if (jj_scan_token(36)) return true;
3272 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3273 return false;
3274 }
3275
3276 final private boolean jj_3R_95() {
3277 if (jj_scan_token(35)) return true;
3278 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3279 return false;
3280 }
3281
3282 final private boolean jj_3R_94() {
3283 if (jj_scan_token(15)) return true;
3284 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3285 return false;
3286 }
3287
3288 final private boolean jj_3R_93() {
3289 if (jj_scan_token(14)) return true;
3290 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3291 return false;
3292 }
3293
3294 public CompactSyntaxTokenManager token_source;
3295 UCode_UCodeESC_CharStream jj_input_stream;
3296 public Token token, jj_nt;
3297 private int jj_ntk;
3298 private Token jj_scanpos, jj_lastpos;
3299 private int jj_la;
3300 public boolean lookingAhead = false;
3301 private boolean jj_semLA;
3302 private int jj_gen;
3303 final private int[] jj_la1 = new int[71];
3304 final private int[] jj_la1_0 = {0x9c0e0402,0x1e,0x2,0xe2,0x1c,0xe0,0xe0,0x0,0x0,0x0,0x8c0fe5e6,0x8c0fe5e6,0x402,0x16000,0x16000,0x8c0fe4e0,0x6000,0x8000,0x0,0x9c0e0400,0x100000,0x200000,0x400000,0x700000,0x700000,0x3800000,0x0,0x3800000,0x9e0fe4e0,0x0,0x100000,0x100000,0x9e0fe4e0,0x9c0fe4e0,0x2000000,0x40000000,0x40000000,0xe2,0xe0,0x20,0x1c,0x800,0x62,0x60,0x8000,0x40000000,0x40000000,0x800,0x0,0x0,0x0,0x8c0fe4e0,0x8c0fe4e0,0x8c0fe4e2,0x0,0x0,0x0,0x0,0x8c0fe4e0,0x2,0x8c0fe4e0,0x8c0fe4e0,0x0,0x8c0fe4e0,0x100,0x8c0fe4e0,0x100,0x100,0x100,0x100,0x8c0fe4e0,};
3305 final private int[] jj_la1_1 = {0x6c0091f,0x0,0x0,0x2c00900,0x0,0xc00000,0x0,0x900,0x200,0x900,0x6c0001f,0x6c0001f,0x900,0x0,0x0,0xc0001f,0x0,0x4000000,0x8000000,0x6c0001f,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x0,0x3c0001f,0x8000000,0x0,0x0,0x3c0001f,0x2c0001f,0x1000000,0x0,0x0,0xc00900,0xc00000,0xc00000,0x0,0x0,0xc00900,0xc00000,0x0,0x0,0x0,0x0,0x4000000,0x2000018,0xc00000,0xc0001f,0xc0001f,0xc0091f,0x900,0x200,0x900,0x900,0x2c0001f,0x0,0x2c0001f,0x2c0001f,0x2c00000,0x6c0001f,0x0,0x6c0001f,0x0,0x0,0x0,0x0,0x1f,};
3306 final private JJCalls[] jj_2_rtns = new JJCalls[8];
3307 private boolean jj_rescan = false;
3308 private int jj_gc = 0;
3309
3310 public CompactSyntax(java.io.InputStream stream) {
3311 jj_input_stream = new UCode_UCodeESC_CharStream(stream, 1, 1);
3312 token_source = new CompactSyntaxTokenManager(jj_input_stream);
3313 token = new Token();
3314 jj_ntk = -1;
3315 jj_gen = 0;
3316 for (int i = 0; i < 71; i++) jj_la1[i] = -1;
3317 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3318 }
3319
3320 public void ReInit(java.io.InputStream stream) {
3321 jj_input_stream.ReInit(stream, 1, 1);
3322 token_source.ReInit(jj_input_stream);
3323 token = new Token();
3324 jj_ntk = -1;
3325 jj_gen = 0;
3326 for (int i = 0; i < 71; i++) jj_la1[i] = -1;
3327 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3328 }
3329
3330 public CompactSyntax(java.io.Reader stream) {
3331 jj_input_stream = new UCode_UCodeESC_CharStream(stream, 1, 1);
3332 token_source = new CompactSyntaxTokenManager(jj_input_stream);
3333 token = new Token();
3334 jj_ntk = -1;
3335 jj_gen = 0;
3336 for (int i = 0; i < 71; i++) jj_la1[i] = -1;
3337 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3338 }
3339
3340 public void ReInit(java.io.Reader stream) {
3341 jj_input_stream.ReInit(stream, 1, 1);
3342 token_source.ReInit(jj_input_stream);
3343 token = new Token();
3344 jj_ntk = -1;
3345 jj_gen = 0;
3346 for (int i = 0; i < 71; i++) jj_la1[i] = -1;
3347 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3348 }
3349
3350 public CompactSyntax(CompactSyntaxTokenManager tm) {
3351 token_source = tm;
3352 token = new Token();
3353 jj_ntk = -1;
3354 jj_gen = 0;
3355 for (int i = 0; i < 71; i++) jj_la1[i] = -1;
3356 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3357 }
3358
3359 public void ReInit(CompactSyntaxTokenManager tm) {
3360 token_source = tm;
3361 token = new Token();
3362 jj_ntk = -1;
3363 jj_gen = 0;
3364 for (int i = 0; i < 71; i++) jj_la1[i] = -1;
3365 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3366 }
3367
3368 final private Token jj_consume_token(int kind) throws ParseException {
3369 Token oldToken;
3370 if ((oldToken = token).next != null) token = token.next;
3371 else token = token.next = token_source.getNextToken();
3372 jj_ntk = -1;
3373 if (token.kind == kind) {
3374 jj_gen++;
3375 if (++jj_gc > 100) {
3376 jj_gc = 0;
3377 for (int i = 0; i < jj_2_rtns.length; i++) {
3378 JJCalls c = jj_2_rtns[i];
3379 while (c != null) {
3380 if (c.gen < jj_gen) c.first = null;
3381 c = c.next;
3382 }
3383 }
3384 }
3385 return token;
3386 }
3387 token = oldToken;
3388 jj_kind = kind;
3389 throw generateParseException();
3390 }
3391
3392 final private boolean jj_scan_token(int kind) {
3393 if (jj_scanpos == jj_lastpos) {
3394 jj_la--;
3395 if (jj_scanpos.next == null) {
3396 jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
3397 } else {
3398 jj_lastpos = jj_scanpos = jj_scanpos.next;
3399 }
3400 } else {
3401 jj_scanpos = jj_scanpos.next;
3402 }
3403 if (jj_rescan) {
3404 int i = 0; Token tok = token;
3405 while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
3406 if (tok != null) jj_add_error_token(kind, i);
3407 }
3408 return (jj_scanpos.kind != kind);
3409 }
3410
3411 final public Token getNextToken() {
3412 if (token.next != null) token = token.next;
3413 else token = token.next = token_source.getNextToken();
3414 jj_ntk = -1;
3415 jj_gen++;
3416 return token;
3417 }
3418
3419 final public Token getToken(int index) {
3420 Token t = lookingAhead ? jj_scanpos : token;
3421 for (int i = 0; i < index; i++) {
3422 if (t.next != null) t = t.next;
3423 else t = t.next = token_source.getNextToken();
3424 }
3425 return t;
3426 }
3427
3428 final private int jj_ntk() {
3429 if ((jj_nt=token.next) == null)
3430 return (jj_ntk = (token.next=token_source.getNextToken()).kind);
3431 else
3432 return (jj_ntk = jj_nt.kind);
3433 }
3434
3435 private java.util.Vector jj_expentries = new java.util.Vector();
3436 private int[] jj_expentry;
3437 private int jj_kind = -1;
3438 private int[] jj_lasttokens = new int[100];
3439 private int jj_endpos;
3440
3441 private void jj_add_error_token(int kind, int pos) {
3442 if (pos >= 100) return;
3443 if (pos == jj_endpos + 1) {
3444 jj_lasttokens[jj_endpos++] = kind;
3445 } else if (jj_endpos != 0) {
3446 jj_expentry = new int[jj_endpos];
3447 for (int i = 0; i < jj_endpos; i++) {
3448 jj_expentry[i] = jj_lasttokens[i];
3449 }
3450 boolean exists = false;
3451 for (java.util.Enumeration en = jj_expentries.elements(); en.hasMoreElements();) {
3452 int[] oldentry = (int[])(en.nextElement());
3453 if (oldentry.length == jj_expentry.length) {
3454 exists = true;
3455 for (int i = 0; i < jj_expentry.length; i++) {
3456 if (oldentry[i] != jj_expentry[i]) {
3457 exists = false;
3458 break;
3459 }
3460 }
3461 if (exists) break;
3462 }
3463 }
3464 if (!exists) jj_expentries.addElement(jj_expentry);
3465 if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
3466 }
3467 }
3468
3469 final public ParseException generateParseException() {
3470 jj_expentries.removeAllElements();
3471 boolean[] la1tokens = new boolean[61];
3472 for (int i = 0; i < 61; i++) {
3473 la1tokens[i] = false;
3474 }
3475 if (jj_kind >= 0) {
3476 la1tokens[jj_kind] = true;
3477 jj_kind = -1;
3478 }
3479 for (int i = 0; i < 71; i++) {
3480 if (jj_la1[i] == jj_gen) {
3481 for (int j = 0; j < 32; j++) {
3482 if ((jj_la1_0[i] & (1<<j)) != 0) {
3483 la1tokens[j] = true;
3484 }
3485 if ((jj_la1_1[i] & (1<<j)) != 0) {
3486 la1tokens[32+j] = true;
3487 }
3488 }
3489 }
3490 }
3491 for (int i = 0; i < 61; i++) {
3492 if (la1tokens[i]) {
3493 jj_expentry = new int[1];
3494 jj_expentry[0] = i;
3495 jj_expentries.addElement(jj_expentry);
3496 }
3497 }
3498 jj_endpos = 0;
3499 jj_rescan_token();
3500 jj_add_error_token(0, 0);
3501 int[][] exptokseq = new int[jj_expentries.size()][];
3502 for (int i = 0; i < jj_expentries.size(); i++) {
3503 exptokseq[i] = (int[])jj_expentries.elementAt(i);
3504 }
3505 return new ParseException(token, exptokseq, tokenImage);
3506 }
3507
3508 final public void enable_tracing() {
3509 }
3510
3511 final public void disable_tracing() {
3512 }
3513
3514 final private void jj_rescan_token() {
3515 jj_rescan = true;
3516 for (int i = 0; i < 8; i++) {
3517 JJCalls p = jj_2_rtns[i];
3518 do {
3519 if (p.gen > jj_gen) {
3520 jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
3521 switch (i) {
3522 case 0: jj_3_1(); break;
3523 case 1: jj_3_2(); break;
3524 case 2: jj_3_3(); break;
3525 case 3: jj_3_4(); break;
3526 case 4: jj_3_5(); break;
3527 case 5: jj_3_6(); break;
3528 case 6: jj_3_7(); break;
3529 case 7: jj_3_8(); break;
3530 }
3531 }
3532 p = p.next;
3533 } while (p != null);
3534 }
3535 jj_rescan = false;
3536 }
3537
3538 final private void jj_save(int index, int xla) {
3539 JJCalls p = jj_2_rtns[index];
3540 while (p.gen > jj_gen) {
3541 if (p.next == null) { p = p.next = new JJCalls(); break; }
3542 p = p.next;
3543 }
3544 p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
3545 }
3546
3547 static final class JJCalls {
3548 int gen;
3549 Token first;
3550 int arg;
3551 JJCalls next;
3552 }
3553
3554 }