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