/*
 * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */
/*
 * Copyright (C) 2004-2011
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
/* Generated By:JavaCC: Do not edit this line. CompactSyntax.java */
package com.sun.xml.internal.rngom.parse.compact;

import java.io.Reader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.List;

import com.sun.xml.internal.rngom.ast.builder.Annotations;
import com.sun.xml.internal.rngom.ast.builder.BuildException;
import com.sun.xml.internal.rngom.ast.builder.CommentList;
import com.sun.xml.internal.rngom.ast.builder.DataPatternBuilder;
import com.sun.xml.internal.rngom.ast.builder.Div;
import com.sun.xml.internal.rngom.ast.builder.ElementAnnotationBuilder;
import com.sun.xml.internal.rngom.ast.builder.Grammar;
import com.sun.xml.internal.rngom.ast.builder.GrammarSection;
import com.sun.xml.internal.rngom.ast.builder.Include;
import com.sun.xml.internal.rngom.ast.builder.IncludedGrammar;
import com.sun.xml.internal.rngom.ast.builder.NameClassBuilder;
import com.sun.xml.internal.rngom.ast.builder.SchemaBuilder;
import com.sun.xml.internal.rngom.ast.builder.Scope;
import com.sun.xml.internal.rngom.ast.om.Location;
import com.sun.xml.internal.rngom.ast.om.ParsedElementAnnotation;
import com.sun.xml.internal.rngom.ast.om.ParsedNameClass;
import com.sun.xml.internal.rngom.ast.om.ParsedPattern;
import com.sun.xml.internal.rngom.parse.Context;
import com.sun.xml.internal.rngom.parse.IllegalSchemaException;
import com.sun.xml.internal.rngom.parse.Parseable;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.LocatorImpl;

import com.sun.xml.internal.rngom.util.Localizer;
import com.sun.xml.internal.rngom.xml.util.WellKnownNamespaces;


public class CompactSyntax implements Context, CompactSyntaxConstants {
  private static final int IN_ELEMENT = 0;
  private static final int IN_ATTRIBUTE = 1;
  private static final int IN_ANY_NAME = 2;
  private static final int IN_NS_NAME = 4;

  private String defaultNamespace;
  private String compatibilityPrefix = null;
  private SchemaBuilder sb;
  private NameClassBuilder ncb;
  private String sourceUri;
  
This is what we are parsing right now.
/** * This is what we are parsing right now. */
private CompactParseable parseable; private ErrorHandler eh; private final Hashtable namespaceTable = new Hashtable(); private final Hashtable datatypesTable = new Hashtable(); private boolean hadError = false; private static final Localizer localizer = new Localizer(new Localizer(Parseable.class),CompactSyntax.class); private final Hashtable attributeNameTable = new Hashtable(); private boolean annotationsIncludeElements = false;
String that represents the inherited namespace.

HACK: we always allocate a new String instance so that we can distinguish inherited value from the explicitly given value.

/** * String that represents the inherited namespace. * * <p> * HACK: we always allocate a new String instance so that * we can distinguish inherited value from the explicitly * given value. */
private /*final*/ String inheritedNs; // essentially final but JavaCC don't let us declare it as so. final class LocatedString { private final String str; private final Token tok; LocatedString(String str, Token tok) { this.str = str; this.tok = tok; } String getString() { return str; } Location getLocation() { return makeLocation(tok); } Token getToken() { return tok; } } public CompactSyntax(CompactParseable parseable, Reader r, String sourceUri, SchemaBuilder sb, ErrorHandler eh, String inheritedNs) { this(r); this.sourceUri = sourceUri; this.parseable = parseable; this.sb = sb; this.ncb = sb.getNameClassBuilder(); this.eh = eh; // this causes the root pattern to have non-null annotations // which is useful because it gives a context to trang this.topLevelComments = sb.makeCommentList(); this.inheritedNs = defaultNamespace = new String(inheritedNs); } ParsedPattern parse(Scope scope) throws IllegalSchemaException { try { ParsedPattern p = Input(scope); if (!hadError) return p; } catch (ParseException e) { error("syntax_error", e.getMessage(), e.currentToken.next); } catch (EscapeSyntaxException e) { reportEscapeSyntaxException(e); } throw new IllegalSchemaException(); } ParsedPattern parseInclude(IncludedGrammar g) throws IllegalSchemaException { try { ParsedPattern p = IncludedGrammar(g); if (!hadError) return p; } catch (ParseException e) { error("syntax_error", e.getMessage(), e.currentToken.next); } catch (EscapeSyntaxException e) { reportEscapeSyntaxException(e); } throw new IllegalSchemaException(); } private void checkNsName(int context, LocatedString ns) { if ((context & IN_NS_NAME) != 0) error("ns_name_except_contains_ns_name", ns.getToken()); } private void checkAnyName(int context, Token t) { if ((context & IN_NS_NAME) != 0) error("ns_name_except_contains_any_name", t); if ((context & IN_ANY_NAME) != 0) error("any_name_except_contains_any_name", t); } private void error(String key, Token tok) { doError(localizer.message(key), tok); } private void error(String key, String arg, Token tok) { doError(localizer.message(key, arg), tok); } private void error(String key, String arg1, String arg2, Token tok) { doError(localizer.message(key, arg1, arg2), tok); } private void doError(String message, Token tok) { hadError = true; if (eh != null) { LocatorImpl loc = new LocatorImpl(); loc.setLineNumber(tok.beginLine); loc.setColumnNumber(tok.beginColumn); loc.setSystemId(sourceUri); try { eh.error(new SAXParseException(message, loc)); } catch (SAXException se) { throw new BuildException(se); } } } private void reportEscapeSyntaxException(EscapeSyntaxException e) { if (eh != null) { LocatorImpl loc = new LocatorImpl(); loc.setLineNumber(e.getLineNumber()); loc.setColumnNumber(e.getColumnNumber()); loc.setSystemId(sourceUri); try { eh.error(new SAXParseException(localizer.message(e.getKey()), loc)); } catch (SAXException se) { throw new BuildException(se); } } } private static String unquote(String s) { if (s.length() >= 6 && s.charAt(0) == s.charAt(1)) { s = s.replace('\u0000', '\u005cn'); return s.substring(3, s.length() - 3); } else return s.substring(1, s.length() - 1); } Location makeLocation(Token t) { return sb.makeLocation(sourceUri, t.beginLine, t.beginColumn); } private static ParsedPattern[] addPattern(ParsedPattern[] patterns, int i, ParsedPattern p) { if (i >= patterns.length) { ParsedPattern[] oldPatterns = patterns; patterns = new ParsedPattern[oldPatterns.length*2]; System.arraycopy(oldPatterns, 0, patterns, 0, oldPatterns.length); } patterns[i] = p; return patterns; } String getCompatibilityPrefix() { if (compatibilityPrefix == null) { compatibilityPrefix = "a"; while (namespaceTable.get(compatibilityPrefix) != null) compatibilityPrefix = compatibilityPrefix + "a"; } return compatibilityPrefix; } public String resolveNamespacePrefix(String prefix) { String result = (String)namespaceTable.get(prefix); if (result.length() == 0) return null; return result; } public Enumeration prefixes() { return namespaceTable.keys(); } public String getBaseUri() { return sourceUri; } public boolean isUnparsedEntity(String entityName) { return false; } public boolean isNotation(String notationName) { return false; } public Context copy() { return this; } private Context getContext() { return this; } private CommentList getComments() { return getComments(getTopLevelComments()); } private CommentList topLevelComments; private CommentList getTopLevelComments() { CommentList tem = topLevelComments; topLevelComments = null; return tem; } private void noteTopLevelComments() { topLevelComments = getComments(topLevelComments); } private void topLevelComments(GrammarSection section) { section.topLevelComment(getComments(null)); } private Token lastCommentSourceToken = null; private CommentList getComments(CommentList comments) { Token nextToken = getToken(1); if (lastCommentSourceToken != nextToken) { if (lastCommentSourceToken == null) lastCommentSourceToken = token; do { lastCommentSourceToken = lastCommentSourceToken.next; Token t = lastCommentSourceToken.specialToken; if (t != null) { while (t.specialToken != null) t = t.specialToken; if (comments == null) comments = sb.makeCommentList(); for (; t != null; t = t.next) { String s = mungeComment(t.image); Location loc = makeLocation(t); if (t.next != null && t.next.kind == CompactSyntaxConstants.SINGLE_LINE_COMMENT_CONTINUE) { StringBuffer buf = new StringBuffer(s); do { t = t.next; buf.append('\u005cn'); buf.append(mungeComment(t.image)); } while (t.next != null && t.next.kind == CompactSyntaxConstants.SINGLE_LINE_COMMENT_CONTINUE); s = buf.toString(); } comments.addComment(s, loc); } } } while (lastCommentSourceToken != nextToken); } return comments; } private ParsedPattern afterComments(ParsedPattern p) { CommentList comments = getComments(null); if (comments == null) return p; return sb.commentAfter(p, comments); } private ParsedNameClass afterComments(ParsedNameClass nc) { CommentList comments = getComments(null); if (comments == null) return nc; return ncb.commentAfter(nc, comments); } private static String mungeComment(String image) { int i = image.indexOf('#') + 1; while (i < image.length() && image.charAt(i) == '#') i++; if (i < image.length() && image.charAt(i) == ' ') i++; return image.substring(i); } private Annotations getCommentsAsAnnotations() { CommentList comments = getComments(); if (comments == null) return null; return sb.makeAnnotations(comments, getContext()); } private Annotations addCommentsToChildAnnotations(Annotations a) { CommentList comments = getComments(); if (comments == null) return a; if (a == null) a = sb.makeAnnotations(null, getContext()); a.addComment(comments); return a; } private Annotations addCommentsToLeadingAnnotations(Annotations a) { CommentList comments = getComments(); if (comments == null) return a; if (a == null) return sb.makeAnnotations(comments, getContext()); a.addLeadingComment(comments); return a; } private Annotations getTopLevelCommentsAsAnnotations() { CommentList comments = getTopLevelComments(); if (comments == null) return null; return sb.makeAnnotations(comments, getContext()); } private void clearAttributeList() { attributeNameTable.clear(); } private void addAttribute(Annotations a, String ns, String localName, String prefix, String value, Token tok) { String key = ns + "#" + localName; if (attributeNameTable.get(key) != null) error("duplicate_attribute", ns, localName, tok); else { attributeNameTable.put(key, key); a.addAttribute(ns, localName, prefix, value, makeLocation(tok)); } } private void checkExcept(Token[] except) { if (except[0] != null) error("except_missing_parentheses", except[0]); } private String lookupPrefix(String prefix, Token t) { String ns = (String)namespaceTable.get(prefix); if (ns == null) { error("undeclared_prefix", prefix, t); return "#error"; } return ns; } private String lookupDatatype(String prefix, Token t) { String ns = (String)datatypesTable.get(prefix); if (ns == null) { error("undeclared_prefix", prefix, t); return ""; // XXX } return ns; } private String resolve(String str) { try { return new URL(new URL(sourceUri), str).toString(); } catch (MalformedURLException e) { } return str; } final public ParsedPattern Input(Scope scope) throws ParseException { ParsedPattern p; Preamble(); if (jj_2_1(2147483647)) { p = TopLevelGrammar(scope); } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 1: case 10: case 17: case 18: case 19: case 26: case 27: case 28: case 31: case 32: case 33: case 34: case 35: case 36: case DOCUMENTATION: case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT: case IDENTIFIER: case ESCAPED_IDENTIFIER: case PREFIXED_NAME: case LITERAL: p = Expr(true, scope, null, null); p = afterComments(p); jj_consume_token(0); break; default: jj_la1[0] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } {if (true) return p;} throw new Error("Missing return statement in function"); } final public void TopLevelLookahead() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PREFIXED_NAME: jj_consume_token(PREFIXED_NAME); jj_consume_token(1); break; case IDENTIFIER: case ESCAPED_IDENTIFIER: Identifier(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 1: jj_consume_token(1); break; case 2: jj_consume_token(2); break; case 3: jj_consume_token(3); break; case 4: jj_consume_token(4); break; default: jj_la1[1] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; case 5: case 6: case 7: LookaheadGrammarKeyword(); break; case 1: LookaheadBody(); LookaheadAfterAnnotations(); break; case DOCUMENTATION: case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT: LookaheadDocumentation(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 1: LookaheadBody(); break; default: jj_la1[2] = jj_gen; ; } LookaheadAfterAnnotations(); break; default: jj_la1[3] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final public void LookaheadAfterAnnotations() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case IDENTIFIER: case ESCAPED_IDENTIFIER: Identifier(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 2: jj_consume_token(2); break; case 3: jj_consume_token(3); break; case 4: jj_consume_token(4); break; default: jj_la1[4] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; case 5: case 6: case 7: LookaheadGrammarKeyword(); break; default: jj_la1[5] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final public void LookaheadGrammarKeyword() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 5: jj_consume_token(5); break; case 6: jj_consume_token(6); break; case 7: jj_consume_token(7); break; default: jj_la1[6] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final public void LookaheadDocumentation() throws ParseException { label_1: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case DOCUMENTATION: jj_consume_token(DOCUMENTATION); break; case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT: jj_consume_token(DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT); break; default: jj_la1[7] = jj_gen; jj_consume_token(-1); throw new ParseException(); } label_2: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case DOCUMENTATION_CONTINUE: ; break; default: jj_la1[8] = jj_gen; break label_2; } jj_consume_token(DOCUMENTATION_CONTINUE); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case DOCUMENTATION: case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT: ; break; default: jj_la1[9] = jj_gen; break label_1; } } } final public void LookaheadBody() throws ParseException { jj_consume_token(1); label_3: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 1: case 2: case 5: case 6: case 7: case 8: case 10: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 26: case 27: case 31: case 32: case 33: case 34: case 35: case 36: case IDENTIFIER: case ESCAPED_IDENTIFIER: case PREFIXED_NAME: case LITERAL: ; break; default: jj_la1[10] = jj_gen; break label_3; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PREFIXED_NAME: jj_consume_token(PREFIXED_NAME); break; case 5: case 6: case 7: case 10: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 26: case 27: case 31: case 32: case 33: case 34: case 35: case 36: case IDENTIFIER: case ESCAPED_IDENTIFIER: UnprefixedName(); break; case 2: jj_consume_token(2); break; case LITERAL: jj_consume_token(LITERAL); break; case 8: jj_consume_token(8); break; case 1: LookaheadBody(); break; default: jj_la1[11] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } jj_consume_token(9); } final public ParsedPattern IncludedGrammar(IncludedGrammar g) throws ParseException { Annotations a; ParsedPattern p; Preamble(); if (jj_2_2(2147483647)) { a = GrammarBody(g, g, getTopLevelCommentsAsAnnotations()); } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 1: case 10: case DOCUMENTATION: case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT: a = Annotations(); jj_consume_token(10); jj_consume_token(11); a = GrammarBody(g, g, a); topLevelComments(g); jj_consume_token(12); break; default: jj_la1[12] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } p = afterComments(g.endIncludedGrammar(sb.makeLocation(sourceUri, 1, 1), a)); jj_consume_token(0); {if (true) return p;} throw new Error("Missing return statement in function"); } final public ParsedPattern TopLevelGrammar(Scope scope) throws ParseException { Annotations a = getTopLevelCommentsAsAnnotations(); Grammar g; ParsedPattern p; g = sb.makeGrammar(scope); a = GrammarBody(g, g, a); p = afterComments(g.endGrammar(sb.makeLocation(sourceUri, 1, 1), a)); jj_consume_token(0); {if (true) return p;} throw new Error("Missing return statement in function"); } final public void Preamble() throws ParseException { label_4: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 13: case 14: case 16: ; break; default: jj_la1[13] = jj_gen; break label_4; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 13: case 14: NamespaceDecl(); break; case 16: DatatypesDecl(); break; default: jj_la1[14] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } namespaceTable.put("xml", WellKnownNamespaces.XML); if (datatypesTable.get("xsd") == null) datatypesTable.put("xsd", WellKnownNamespaces.XML_SCHEMA_DATATYPES); } final public void NamespaceDecl() throws ParseException { LocatedString prefix = null; boolean isDefault = false; String namespaceName; noteTopLevelComments(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 13: jj_consume_token(13); prefix = UnprefixedName(); break; case 14: jj_consume_token(14); isDefault = true; jj_consume_token(13); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 5: case 6: case 7: case 10: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 26: case 27: case 31: case 32: case 33: case 34: case 35: case 36: case IDENTIFIER: case ESCAPED_IDENTIFIER: prefix = UnprefixedName(); break; default: jj_la1[15] = jj_gen; ; } break; default: jj_la1[16] = jj_gen; jj_consume_token(-1); throw new ParseException(); } jj_consume_token(2); namespaceName = NamespaceName(); if (isDefault) defaultNamespace = namespaceName; if (prefix != null) { if (prefix.getString().equals("xmlns")) error("xmlns_prefix", prefix.getToken()); else if (prefix.getString().equals("xml")) { if (!namespaceName.equals(WellKnownNamespaces.XML)) error("xml_prefix_bad_uri", prefix.getToken()); } else if (namespaceName.equals(WellKnownNamespaces.XML)) error("xml_uri_bad_prefix", prefix.getToken()); else { if (namespaceName.equals(WellKnownNamespaces.RELAX_NG_COMPATIBILITY_ANNOTATIONS)) compatibilityPrefix = prefix.getString(); namespaceTable.put(prefix.getString(), namespaceName); } } } final public String NamespaceName() throws ParseException { String r; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LITERAL: r = Literal(); break; case 15: jj_consume_token(15); r = this.inheritedNs; break; default: jj_la1[17] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return r;} throw new Error("Missing return statement in function"); } final public void DatatypesDecl() throws ParseException { LocatedString prefix; String uri; noteTopLevelComments(); jj_consume_token(16); prefix = UnprefixedName(); jj_consume_token(2); uri = Literal(); datatypesTable.put(prefix.getString(), uri); } final public ParsedPattern AnnotatedPrimaryExpr(boolean topLevel, Scope scope, Token[] except) throws ParseException { Annotations a; ParsedPattern p; ParsedElementAnnotation e; Token t; a = Annotations(); p = PrimaryExpr(topLevel, scope, a, except); label_5: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case FANNOTATE: ; break; default: jj_la1[18] = jj_gen; break label_5; } t = jj_consume_token(FANNOTATE); e = AnnotationElement(false); if (topLevel) error("top_level_follow_annotation", t); else p = sb.annotateAfter(p, e); } {if (true) return p;} throw new Error("Missing return statement in function"); } final public ParsedPattern PrimaryExpr(boolean topLevel, Scope scope, Annotations a, Token[] except) throws ParseException { ParsedPattern p; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 26: p = ElementExpr(scope, a); break; case 27: p = AttributeExpr(scope, a); break; case 10: p = GrammarExpr(scope, a); break; case 33: p = ExternalRefExpr(scope, a); break; case 31: p = ListExpr(scope, a); break; case 32: p = MixedExpr(scope, a); break; case 28: p = ParenExpr(topLevel, scope, a); break; case IDENTIFIER: case ESCAPED_IDENTIFIER: p = IdentifierExpr(scope, a); break; case 34: p = ParentExpr(scope, a); break; case 35: case 36: case PREFIXED_NAME: p = DataExpr(topLevel, scope, a, except); break; case LITERAL: p = ValueExpr(topLevel, a); break; case 18: p = TextExpr(a); break; case 17: p = EmptyExpr(a); break; case 19: p = NotAllowedExpr(a); break; default: jj_la1[19] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return p;} throw new Error("Missing return statement in function"); } final public ParsedPattern EmptyExpr(Annotations a) throws ParseException { Token t; t = jj_consume_token(17); {if (true) return sb.makeEmpty(makeLocation(t), a);} throw new Error("Missing return statement in function"); } final public ParsedPattern TextExpr(Annotations a) throws ParseException { Token t; t = jj_consume_token(18); {if (true) return sb.makeText(makeLocation(t), a);} throw new Error("Missing return statement in function"); } final public ParsedPattern NotAllowedExpr(Annotations a) throws ParseException { Token t; t = jj_consume_token(19); {if (true) return sb.makeNotAllowed(makeLocation(t), a);} throw new Error("Missing return statement in function"); } final public ParsedPattern Expr(boolean topLevel, Scope scope, Token t, Annotations a) throws ParseException { List patterns = new ArrayList(); ParsedPattern p; boolean[] hadOccur = new boolean[1]; Token[] except = new Token[1]; p = UnaryExpr(topLevel, scope, hadOccur, except); patterns.add(p); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 20: case 21: case 22: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 20: checkExcept(except); label_6: while (true) { t = jj_consume_token(20); p = UnaryExpr(topLevel, scope, null, except); patterns.add(p); checkExcept(except); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 20: ; break; default: jj_la1[20] = jj_gen; break label_6; } } p = sb.makeChoice(patterns, makeLocation(t), a); break; case 21: label_7: while (true) { t = jj_consume_token(21); p = UnaryExpr(topLevel, scope, null, except); patterns.add(p); checkExcept(except); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 21: ; break; default: jj_la1[21] = jj_gen; break label_7; } } p = sb.makeInterleave(patterns, makeLocation(t), a); break; case 22: label_8: while (true) { t = jj_consume_token(22); p = UnaryExpr(topLevel, scope, null, except); patterns.add(p); checkExcept(except); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 22: ; break; default: jj_la1[22] = jj_gen; break label_8; } } p = sb.makeGroup(patterns, makeLocation(t), a); break; default: jj_la1[23] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; default: jj_la1[24] = jj_gen; ; } if (patterns.size() == 1 && a != null) { if (hadOccur[0]) p = sb.annotate(p, a); else p = sb.makeGroup(patterns, makeLocation(t), a); } {if (true) return p;} throw new Error("Missing return statement in function"); } final public ParsedPattern UnaryExpr(boolean topLevel, Scope scope, boolean[] hadOccur, Token[] except) throws ParseException { ParsedPattern p; Token t; ParsedElementAnnotation e; p = AnnotatedPrimaryExpr(topLevel, scope, except); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 23: case 24: case 25: if (hadOccur != null) hadOccur[0] = true; p = afterComments(p); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 23: t = jj_consume_token(23); checkExcept(except); p = sb.makeOneOrMore(p, makeLocation(t), null); break; case 24: t = jj_consume_token(24); checkExcept(except); p = sb.makeOptional(p, makeLocation(t), null); break; case 25: t = jj_consume_token(25); checkExcept(except); p = sb.makeZeroOrMore(p, makeLocation(t), null); break; default: jj_la1[25] = jj_gen; jj_consume_token(-1); throw new ParseException(); } label_9: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case FANNOTATE: ; break; default: jj_la1[26] = jj_gen; break label_9; } t = jj_consume_token(FANNOTATE); e = AnnotationElement(false); if (topLevel) error("top_level_follow_annotation", t); else p = sb.annotateAfter(p, e); } break; default: jj_la1[27] = jj_gen; ; } {if (true) return p;} throw new Error("Missing return statement in function"); } final public ParsedPattern ElementExpr(Scope scope, Annotations a) throws ParseException { Token t; ParsedNameClass nc; ParsedPattern p; t = jj_consume_token(26); nc = NameClass(IN_ELEMENT, null); jj_consume_token(11); p = Expr(false, scope, null, null); p = afterComments(p); jj_consume_token(12); {if (true) return sb.makeElement(nc, p, makeLocation(t), a);} throw new Error("Missing return statement in function"); } final public ParsedPattern AttributeExpr(Scope scope, Annotations a) throws ParseException { Token t; ParsedNameClass nc; ParsedPattern p; t = jj_consume_token(27); nc = NameClass(IN_ATTRIBUTE, null); jj_consume_token(11); p = Expr(false, scope, null, null); p = afterComments(p); jj_consume_token(12); {if (true) return sb.makeAttribute(nc, p, makeLocation(t), a);} throw new Error("Missing return statement in function"); } final public ParsedNameClass NameClass(int context, Annotations[] pa) throws ParseException { Annotations a; ParsedNameClass nc; a = Annotations(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 5: case 6: case 7: case 10: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 26: case 27: case 28: case 31: case 32: case 33: case 34: case 35: case 36: case IDENTIFIER: case ESCAPED_IDENTIFIER: case PREFIXED_NAME: nc = PrimaryNameClass(context, a); nc = AnnotateAfter(nc); nc = NameClassAlternatives(context, nc, pa); break; case 25: nc = AnyNameExceptClass(context, a, pa); break; case PREFIX_STAR: nc = NsNameExceptClass(context, a, pa); break; default: jj_la1[28] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return nc;} throw new Error("Missing return statement in function"); } final public ParsedNameClass AnnotateAfter(ParsedNameClass nc) throws ParseException { ParsedElementAnnotation e; label_10: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case FANNOTATE: ; break; default: jj_la1[29] = jj_gen; break label_10; } jj_consume_token(FANNOTATE); e = AnnotationElement(false); nc = ncb.annotateAfter(nc, e); } {if (true) return nc;} throw new Error("Missing return statement in function"); } final public ParsedNameClass NameClassAlternatives(int context, ParsedNameClass nc, Annotations[] pa) throws ParseException { Token t; ParsedNameClass[] nameClasses; int nNameClasses; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 20: nameClasses = new ParsedNameClass[2]; nameClasses[0] = nc; nNameClasses = 1; label_11: while (true) { t = jj_consume_token(20); nc = BasicNameClass(context); nc = AnnotateAfter(nc); if (nNameClasses >= nameClasses.length) { ParsedNameClass[] oldNameClasses = nameClasses; nameClasses = new ParsedNameClass[oldNameClasses.length*2]; System.arraycopy(oldNameClasses, 0, nameClasses, 0, oldNameClasses.length); } nameClasses[nNameClasses++] = nc; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 20: ; break; default: jj_la1[30] = jj_gen; break label_11; } } Annotations a; if (pa == null) a = null; else { a = pa[0]; pa[0] = null; } nc = ncb.makeChoice(Arrays.asList(nameClasses).subList(0,nNameClasses), makeLocation(t), a); break; default: jj_la1[31] = jj_gen; ; } {if (true) return nc;} throw new Error("Missing return statement in function"); } final public ParsedNameClass BasicNameClass(int context) throws ParseException { Annotations a; ParsedNameClass nc; a = Annotations(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 5: case 6: case 7: case 10: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 26: case 27: case 28: case 31: case 32: case 33: case 34: case 35: case 36: case IDENTIFIER: case ESCAPED_IDENTIFIER: case PREFIXED_NAME: nc = PrimaryNameClass(context, a); break; case 25: case PREFIX_STAR: nc = OpenNameClass(context, a); break; default: jj_la1[32] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return nc;} throw new Error("Missing return statement in function"); } final public ParsedNameClass PrimaryNameClass(int context, Annotations a) throws ParseException { ParsedNameClass nc; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 5: case 6: case 7: case 10: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 26: case 27: case 31: case 32: case 33: case 34: case 35: case 36: case IDENTIFIER: case ESCAPED_IDENTIFIER: nc = UnprefixedNameClass(context, a); break; case PREFIXED_NAME: nc = PrefixedNameClass(a); break; case 28: nc = ParenNameClass(context, a); break; default: jj_la1[33] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return nc;} throw new Error("Missing return statement in function"); } final public ParsedNameClass OpenNameClass(int context, Annotations a) throws ParseException { Token t; LocatedString ns; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PREFIX_STAR: ns = NsName(); checkNsName(context, ns); {if (true) return ncb.makeNsName(ns.getString(), ns.getLocation(), a);} break; case 25: t = jj_consume_token(25); checkAnyName(context, t); {if (true) return ncb.makeAnyName(makeLocation(t), a);} break; default: jj_la1[34] = jj_gen; jj_consume_token(-1); throw new ParseException(); } throw new Error("Missing return statement in function"); } final public ParsedNameClass UnprefixedNameClass(int context, Annotations a) throws ParseException { LocatedString name; name = UnprefixedName(); String ns; if ((context & (IN_ATTRIBUTE|IN_ELEMENT)) == IN_ATTRIBUTE) ns = ""; else ns = defaultNamespace; {if (true) return ncb.makeName(ns, name.getString(), null, name.getLocation(), a);} throw new Error("Missing return statement in function"); } final public ParsedNameClass PrefixedNameClass(Annotations a) throws ParseException { Token t; t = jj_consume_token(PREFIXED_NAME); String qn = t.image; int colon = qn.indexOf(':'); String prefix = qn.substring(0, colon); {if (true) return ncb.makeName(lookupPrefix(prefix, t), qn.substring(colon + 1), prefix, makeLocation(t), a);} throw new Error("Missing return statement in function"); } final public ParsedNameClass NsNameExceptClass(int context, Annotations a, Annotations[] pa) throws ParseException { LocatedString ns; ParsedNameClass nc; ns = NsName(); checkNsName(context, ns); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 30: nc = ExceptNameClass(context | IN_NS_NAME); nc = ncb.makeNsName(ns.getString(), nc, ns.getLocation(), a); nc = AnnotateAfter(nc); break; default: jj_la1[35] = jj_gen; nc = ncb.makeNsName(ns.getString(), ns.getLocation(), a); nc = AnnotateAfter(nc); nc = NameClassAlternatives(context, nc, pa); } {if (true) return nc;} throw new Error("Missing return statement in function"); } final public LocatedString NsName() throws ParseException { Token t; t = jj_consume_token(PREFIX_STAR); String qn = t.image; String prefix = qn.substring(0, qn.length() - 2); {if (true) return new LocatedString(lookupPrefix(prefix, t), t);} throw new Error("Missing return statement in function"); } final public ParsedNameClass AnyNameExceptClass(int context, Annotations a, Annotations[] pa) throws ParseException { Token t; ParsedNameClass nc; t = jj_consume_token(25); checkAnyName(context, t); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 30: nc = ExceptNameClass(context | IN_ANY_NAME); nc = ncb.makeAnyName(nc, makeLocation(t), a); nc = AnnotateAfter(nc); break; default: jj_la1[36] = jj_gen; nc = ncb.makeAnyName(makeLocation(t), a); nc = AnnotateAfter(nc); nc = NameClassAlternatives(context, nc, pa); } {if (true) return nc;} throw new Error("Missing return statement in function"); } final public ParsedNameClass ParenNameClass(int context, Annotations a) throws ParseException { Token t; ParsedNameClass nc; Annotations[] pa = new Annotations[]{ a }; t = jj_consume_token(28); nc = NameClass(context, pa); nc = afterComments(nc); jj_consume_token(29); if (pa[0] != null) nc = ncb.makeChoice(Collections.singletonList(nc), makeLocation(t), pa[0]); {if (true) return nc;} throw new Error("Missing return statement in function"); } final public ParsedNameClass ExceptNameClass(int context) throws ParseException { ParsedNameClass nc; jj_consume_token(30); nc = BasicNameClass(context); {if (true) return nc;} throw new Error("Missing return statement in function"); } final public ParsedPattern ListExpr(Scope scope, Annotations a) throws ParseException { Token t; ParsedPattern p; t = jj_consume_token(31); jj_consume_token(11); p = Expr(false, scope, null, null); p = afterComments(p); jj_consume_token(12); {if (true) return sb.makeList(p, makeLocation(t), a);} throw new Error("Missing return statement in function"); } final public ParsedPattern MixedExpr(Scope scope, Annotations a) throws ParseException { Token t; ParsedPattern p; t = jj_consume_token(32); jj_consume_token(11); p = Expr(false, scope, null, null); p = afterComments(p); jj_consume_token(12); {if (true) return sb.makeMixed(p, makeLocation(t), a);} throw new Error("Missing return statement in function"); } final public ParsedPattern GrammarExpr(Scope scope, Annotations a) throws ParseException { Token t; Grammar g; t = jj_consume_token(10); g = sb.makeGrammar(scope); jj_consume_token(11); a = GrammarBody(g, g, a); topLevelComments(g); jj_consume_token(12); {if (true) return g.endGrammar(makeLocation(t), a);} throw new Error("Missing return statement in function"); } final public ParsedPattern ParenExpr(boolean topLevel, Scope scope, Annotations a) throws ParseException { Token t; ParsedPattern p; t = jj_consume_token(28); p = Expr(topLevel, scope, t, a); p = afterComments(p); jj_consume_token(29); {if (true) return p;} throw new Error("Missing return statement in function"); } final public Annotations GrammarBody(GrammarSection section, Scope scope, Annotations a) throws ParseException { ParsedElementAnnotation e; label_12: while (true) { if (jj_2_3(2)) { ; } else { break label_12; } e = AnnotationElementNotKeyword(); if (a == null) a = sb.makeAnnotations(null, getContext()); a.addElement(e); } label_13: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 1: case 5: case 6: case 7: case DOCUMENTATION: case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT: case IDENTIFIER: case ESCAPED_IDENTIFIER: ; break; default: jj_la1[37] = jj_gen; break label_13; } GrammarComponent(section, scope); } {if (true) return a;} throw new Error("Missing return statement in function"); } final public void GrammarComponent(GrammarSection section, Scope scope) throws ParseException { ParsedElementAnnotation e; Annotations a; a = Annotations(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 5: case IDENTIFIER: case ESCAPED_IDENTIFIER: Definition(section, scope, a); break; case 7: Include(section, scope, a); break; case 6: Div(section, scope, a); break; default: jj_la1[38] = jj_gen; jj_consume_token(-1); throw new ParseException(); } label_14: while (true) { if (jj_2_4(2)) { ; } else { break label_14; } e = AnnotationElementNotKeyword(); section.topLevelAnnotation(e); } } final public void Definition(GrammarSection section, Scope scope, Annotations a) throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case IDENTIFIER: case ESCAPED_IDENTIFIER: Define(section, scope, a); break; case 5: Start(section, scope, a); break; default: jj_la1[39] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final public void Start(GrammarSection section, Scope scope, Annotations a) throws ParseException { Token t; GrammarSection.Combine combine; ParsedPattern p; t = jj_consume_token(5); combine = AssignOp(); p = Expr(false, scope, null, null); section.define(GrammarSection.START, combine, p, makeLocation(t), a); } final public void Define(GrammarSection section, Scope scope, Annotations a) throws ParseException { LocatedString name; GrammarSection.Combine combine; ParsedPattern p; name = Identifier(); combine = AssignOp(); p = Expr(false, scope, null, null); section.define(name.getString(), combine, p, name.getLocation(), a); } final public GrammarSection.Combine AssignOp() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 2: jj_consume_token(2); {if (true) return null;} break; case 4: jj_consume_token(4); {if (true) return GrammarSection.COMBINE_CHOICE;} break; case 3: jj_consume_token(3); {if (true) return GrammarSection.COMBINE_INTERLEAVE;} break; default: jj_la1[40] = jj_gen; jj_consume_token(-1); throw new ParseException(); } throw new Error("Missing return statement in function"); } final public void Include(GrammarSection section, Scope scope, Annotations a) throws ParseException { Token t; String href; String ns; Include include = section.makeInclude(); t = jj_consume_token(7); href = Literal(); ns = Inherit(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 11: jj_consume_token(11); a = IncludeBody(include, scope, a); topLevelComments(include); jj_consume_token(12); break; default: jj_la1[41] = jj_gen; ; } try { include.endInclude(parseable, resolve(href), ns, makeLocation(t), a); } catch (IllegalSchemaException e) { } } final public Annotations IncludeBody(GrammarSection section, Scope scope, Annotations a) throws ParseException { ParsedElementAnnotation e; label_15: while (true) { if (jj_2_5(2)) { ; } else { break label_15; } e = AnnotationElementNotKeyword(); if (a == null) a = sb.makeAnnotations(null, getContext()); a.addElement(e); } label_16: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 1: case 5: case 6: case DOCUMENTATION: case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT: case IDENTIFIER: case ESCAPED_IDENTIFIER: ; break; default: jj_la1[42] = jj_gen; break label_16; } IncludeComponent(section, scope); } {if (true) return a;} throw new Error("Missing return statement in function"); } final public void IncludeComponent(GrammarSection section, Scope scope) throws ParseException { ParsedElementAnnotation e; Annotations a; a = Annotations(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 5: case IDENTIFIER: case ESCAPED_IDENTIFIER: Definition(section, scope, a); break; case 6: IncludeDiv(section, scope, a); break; default: jj_la1[43] = jj_gen; jj_consume_token(-1); throw new ParseException(); } label_17: while (true) { if (jj_2_6(2)) { ; } else { break label_17; } e = AnnotationElementNotKeyword(); section.topLevelAnnotation(e); } } final public void Div(GrammarSection section, Scope scope, Annotations a) throws ParseException { Token t; Div div = section.makeDiv(); t = jj_consume_token(6); jj_consume_token(11); a = GrammarBody(div, scope, a); topLevelComments(div); jj_consume_token(12); div.endDiv(makeLocation(t), a); } final public void IncludeDiv(GrammarSection section, Scope scope, Annotations a) throws ParseException { Token t; Div div = section.makeDiv(); t = jj_consume_token(6); jj_consume_token(11); a = IncludeBody(div, scope, a); topLevelComments(div); jj_consume_token(12); div.endDiv(makeLocation(t), a); } final public ParsedPattern ExternalRefExpr(Scope scope, Annotations a) throws ParseException { Token t; String href; String ns; t = jj_consume_token(33); href = Literal(); ns = Inherit(); try { {if (true) return sb.makeExternalRef(parseable, resolve(href), ns, scope, makeLocation(t), a);} } catch (IllegalSchemaException e) { {if (true) return sb.makeErrorPattern();} } throw new Error("Missing return statement in function"); } final public String Inherit() throws ParseException { String ns = null; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 15: jj_consume_token(15); jj_consume_token(2); ns = Prefix(); break; default: jj_la1[44] = jj_gen; ; } if (ns == null) ns = defaultNamespace; {if (true) return ns;} throw new Error("Missing return statement in function"); } final public ParsedPattern ParentExpr(Scope scope, Annotations a) throws ParseException { LocatedString name; jj_consume_token(34); a = addCommentsToChildAnnotations(a); name = Identifier(); if(scope==null) { error("parent_ref_outside_grammar",name.getToken()); {if (true) return sb.makeErrorPattern();} } else { {if (true) return scope.makeParentRef(name.getString(), name.getLocation(), a);} } throw new Error("Missing return statement in function"); } final public ParsedPattern IdentifierExpr(Scope scope, Annotations a) throws ParseException { LocatedString name; name = Identifier(); if(scope==null) { error("ref_outside_grammar",name.getToken()); {if (true) return sb.makeErrorPattern();} } else { {if (true) return scope.makeRef(name.getString(), name.getLocation(), a);} } throw new Error("Missing return statement in function"); } final public ParsedPattern ValueExpr(boolean topLevel, Annotations a) throws ParseException { LocatedString s; s = LocatedLiteral(); if (topLevel && annotationsIncludeElements) { error("top_level_follow_annotation", s.getToken()); a = null; } {if (true) return sb.makeValue("", "token", s.getString(), getContext(), defaultNamespace, s.getLocation(), a);} throw new Error("Missing return statement in function"); } final public ParsedPattern DataExpr(boolean topLevel, Scope scope, Annotations a, Token[] except) throws ParseException { Token datatypeToken; Location loc; String datatype; String datatypeUri = null; String s = null; ParsedPattern e = null; DataPatternBuilder dpb; datatypeToken = DatatypeName(); datatype = datatypeToken.image; loc = makeLocation(datatypeToken); int colon = datatype.indexOf(':'); if (colon < 0) datatypeUri = ""; else { String prefix = datatype.substring(0, colon); datatypeUri = lookupDatatype(prefix, datatypeToken); datatype = datatype.substring(colon + 1); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LITERAL: s = Literal(); if (topLevel && annotationsIncludeElements) { error("top_level_follow_annotation", datatypeToken); a = null; } {if (true) return sb.makeValue(datatypeUri, datatype, s, getContext(), defaultNamespace, loc, a);} break; default: jj_la1[48] = jj_gen; dpb = sb.makeDataPatternBuilder(datatypeUri, datatype, loc); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 11: Params(dpb); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 30: e = Except(scope, except); break; default: jj_la1[45] = jj_gen; ; } break; default: jj_la1[47] = jj_gen; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 30: e = Except(scope, except); break; default: jj_la1[46] = jj_gen; ; } } {if (true) return e == null ? dpb.makePattern(loc, a) : dpb.makePattern(e, loc, a);} } throw new Error("Missing return statement in function"); } final public Token DatatypeName() throws ParseException { Token t; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 35: t = jj_consume_token(35); break; case 36: t = jj_consume_token(36); break; case PREFIXED_NAME: t = jj_consume_token(PREFIXED_NAME); break; default: jj_la1[49] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return t;} throw new Error("Missing return statement in function"); } final public LocatedString Identifier() throws ParseException { LocatedString s; Token t; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case IDENTIFIER: t = jj_consume_token(IDENTIFIER); s = new LocatedString(t.image, t); break; case ESCAPED_IDENTIFIER: t = jj_consume_token(ESCAPED_IDENTIFIER); s = new LocatedString(t.image.substring(1), t); break; default: jj_la1[50] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return s;} throw new Error("Missing return statement in function"); } final public String Prefix() throws ParseException { Token t; String prefix; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case IDENTIFIER: t = jj_consume_token(IDENTIFIER); prefix = t.image; break; case ESCAPED_IDENTIFIER: t = jj_consume_token(ESCAPED_IDENTIFIER); prefix = t.image.substring(1); break; case 5: case 6: case 7: case 10: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 26: case 27: case 31: case 32: case 33: case 34: case 35: case 36: t = Keyword(); prefix = t.image; break; default: jj_la1[51] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return lookupPrefix(prefix, t);} throw new Error("Missing return statement in function"); } final public LocatedString UnprefixedName() throws ParseException { LocatedString s; Token t; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case IDENTIFIER: case ESCAPED_IDENTIFIER: s = Identifier(); break; case 5: case 6: case 7: case 10: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 26: case 27: case 31: case 32: case 33: case 34: case 35: case 36: t = Keyword(); s = new LocatedString(t.image, t); break; default: jj_la1[52] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return s;} throw new Error("Missing return statement in function"); } final public void Params(DataPatternBuilder dpb) throws ParseException { jj_consume_token(11); label_18: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 1: case 5: case 6: case 7: case 10: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 26: case 27: case 31: case 32: case 33: case 34: case 35: case 36: case DOCUMENTATION: case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT: case IDENTIFIER: case ESCAPED_IDENTIFIER: ; break; default: jj_la1[53] = jj_gen; break label_18; } Param(dpb); } jj_consume_token(12); } final public void Param(DataPatternBuilder dpb) throws ParseException { LocatedString name; Annotations a; String value; a = Annotations(); name = UnprefixedName(); jj_consume_token(2); a = addCommentsToLeadingAnnotations(a); value = Literal(); dpb.addParam(name.getString(), value, getContext(), defaultNamespace, name.getLocation(), a); } final public ParsedPattern Except(Scope scope, Token[] except) throws ParseException { Annotations a; ParsedPattern p; Token t; Token[] innerExcept = new Token[1]; t = jj_consume_token(30); a = Annotations(); p = PrimaryExpr(false, scope, a, innerExcept); checkExcept(innerExcept); except[0] = t; {if (true) return p;} throw new Error("Missing return statement in function"); } final public ParsedElementAnnotation Documentation() throws ParseException { CommentList comments = getComments(); ElementAnnotationBuilder eab; Token t; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case DOCUMENTATION: t = jj_consume_token(DOCUMENTATION); break; case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT: t = jj_consume_token(DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT); break; default: jj_la1[54] = jj_gen; jj_consume_token(-1); throw new ParseException(); } eab = sb.makeElementAnnotationBuilder(WellKnownNamespaces.RELAX_NG_COMPATIBILITY_ANNOTATIONS, "documentation", getCompatibilityPrefix(), makeLocation(t), comments, getContext()); eab.addText(mungeComment(t.image), makeLocation(t), null); label_19: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case DOCUMENTATION_CONTINUE: ; break; default: jj_la1[55] = jj_gen; break label_19; } t = jj_consume_token(DOCUMENTATION_CONTINUE); eab.addText("\u005cn" + mungeComment(t.image), makeLocation(t), null); } {if (true) return eab.makeElementAnnotation();} throw new Error("Missing return statement in function"); } final public Annotations Annotations() throws ParseException { CommentList comments = getComments(); Annotations a = null; ParsedElementAnnotation e; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case DOCUMENTATION: case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT: a = sb.makeAnnotations(comments, getContext()); label_20: while (true) { e = Documentation(); a.addElement(e); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case DOCUMENTATION: case DOCUMENTATION_AFTER_SINGLE_LINE_COMMENT: ; break; default: jj_la1[56] = jj_gen; break label_20; } } comments = getComments(); if (comments != null) a.addLeadingComment(comments); break; default: jj_la1[57] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 1: jj_consume_token(1); if (a == null) a = sb.makeAnnotations(comments, getContext()); clearAttributeList(); annotationsIncludeElements = false; label_21: while (true) { if (jj_2_7(2)) { ; } else { break label_21; } PrefixedAnnotationAttribute(a, false); } label_22: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 5: case 6: case 7: case 10: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 26: case 27: case 31: case 32: case 33: case 34: case 35: case 36: case IDENTIFIER: case ESCAPED_IDENTIFIER: case PREFIXED_NAME: ; break; default: jj_la1[58] = jj_gen; break label_22; } e = AnnotationElement(false); a.addElement(e); annotationsIncludeElements = true; } a.addComment(getComments()); jj_consume_token(9); break; default: jj_la1[59] = jj_gen; ; } if (a == null && comments != null) a = sb.makeAnnotations(comments, getContext()); {if (true) return a;} throw new Error("Missing return statement in function"); } final public void AnnotationAttribute(Annotations a) throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PREFIXED_NAME: PrefixedAnnotationAttribute(a, true); break; case 5: case 6: case 7: case 10: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 26: case 27: case 31: case 32: case 33: case 34: case 35: case 36: case IDENTIFIER: case ESCAPED_IDENTIFIER: UnprefixedAnnotationAttribute(a); break; default: jj_la1[60] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } final public void PrefixedAnnotationAttribute(Annotations a, boolean nested) throws ParseException { Token t; String value; t = jj_consume_token(PREFIXED_NAME); jj_consume_token(2); value = Literal(); String qn = t.image; int colon = qn.indexOf(':'); String prefix = qn.substring(0, colon); String ns = lookupPrefix(prefix, t); if (ns == this.inheritedNs) error("inherited_annotation_namespace", t); else if (ns.length() == 0 && !nested) error("unqualified_annotation_attribute", t); else if (ns.equals(WellKnownNamespaces.RELAX_NG) && !nested) error("relax_ng_namespace", t); /*else if (ns.length() == 0 && qn.length() - colon - 1 == 5 && qn.regionMatches(colon + 1, "xmlns", 0, 5)) error("xmlns_annotation_attribute", t);*/ else if (ns.equals(WellKnownNamespaces.XMLNS)) error("xmlns_annotation_attribute_uri", t); else { if (ns.length() == 0) prefix = null; addAttribute(a, ns, qn.substring(colon + 1), prefix, value, t); } } final public void UnprefixedAnnotationAttribute(Annotations a) throws ParseException { LocatedString name; String value; name = UnprefixedName(); jj_consume_token(2); value = Literal(); if (name.getString().equals("xmlns")) error("xmlns_annotation_attribute", name.getToken()); else addAttribute(a, "", name.getString(), null, value, name.getToken()); } final public ParsedElementAnnotation AnnotationElement(boolean nested) throws ParseException { ParsedElementAnnotation a; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PREFIXED_NAME: a = PrefixedAnnotationElement(nested); break; case 5: case 6: case 7: case 10: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 26: case 27: case 31: case 32: case 33: case 34: case 35: case 36: case IDENTIFIER: case ESCAPED_IDENTIFIER: a = UnprefixedAnnotationElement(); break; default: jj_la1[61] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return a;} throw new Error("Missing return statement in function"); } final public ParsedElementAnnotation AnnotationElementNotKeyword() throws ParseException { ParsedElementAnnotation a; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PREFIXED_NAME: a = PrefixedAnnotationElement(false); break; case IDENTIFIER: case ESCAPED_IDENTIFIER: a = IdentifierAnnotationElement(); break; default: jj_la1[62] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return a;} throw new Error("Missing return statement in function"); } final public ParsedElementAnnotation PrefixedAnnotationElement(boolean nested) throws ParseException { CommentList comments = getComments(); Token t; ElementAnnotationBuilder eab; t = jj_consume_token(PREFIXED_NAME); String qn = t.image; int colon = qn.indexOf(':'); String prefix = qn.substring(0, colon); String ns = lookupPrefix(prefix, t); if (ns == this.inheritedNs) { error("inherited_annotation_namespace", t); ns = ""; } else if (!nested && ns.equals(WellKnownNamespaces.RELAX_NG)) { error("relax_ng_namespace", t); ns = ""; } else { if (ns.length() == 0) prefix = null; } eab = sb.makeElementAnnotationBuilder(ns, qn.substring(colon + 1), prefix, makeLocation(t), comments, getContext()); AnnotationElementContent(eab); {if (true) return eab.makeElementAnnotation();} throw new Error("Missing return statement in function"); } final public ParsedElementAnnotation UnprefixedAnnotationElement() throws ParseException { CommentList comments = getComments(); LocatedString name; ElementAnnotationBuilder eab; name = UnprefixedName(); eab = sb.makeElementAnnotationBuilder("", name.getString(), null, name.getLocation(), comments, getContext()); AnnotationElementContent(eab); {if (true) return eab.makeElementAnnotation();} throw new Error("Missing return statement in function"); } final public ParsedElementAnnotation IdentifierAnnotationElement() throws ParseException { CommentList comments = getComments(); LocatedString name; ElementAnnotationBuilder eab; name = Identifier(); eab = sb.makeElementAnnotationBuilder("", name.getString(), null, name.getLocation(), comments, getContext()); AnnotationElementContent(eab); {if (true) return eab.makeElementAnnotation();} throw new Error("Missing return statement in function"); } final public void AnnotationElementContent(ElementAnnotationBuilder eab) throws ParseException { ParsedElementAnnotation e; jj_consume_token(1); clearAttributeList(); label_23: while (true) { if (jj_2_8(2)) { ; } else { break label_23; } AnnotationAttribute(eab); } label_24: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 5: case 6: case 7: case 10: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 26: case 27: case 31: case 32: case 33: case 34: case 35: case 36: case IDENTIFIER: case ESCAPED_IDENTIFIER: case PREFIXED_NAME: case LITERAL: ; break; default: jj_la1[63] = jj_gen; break label_24; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LITERAL: AnnotationElementLiteral(eab); label_25: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 8: ; break; default: jj_la1[64] = jj_gen; break label_25; } jj_consume_token(8); AnnotationElementLiteral(eab); } break; case 5: case 6: case 7: case 10: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 26: case 27: case 31: case 32: case 33: case 34: case 35: case 36: case IDENTIFIER: case ESCAPED_IDENTIFIER: case PREFIXED_NAME: e = AnnotationElement(true); eab.addElement(e); break; default: jj_la1[65] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } eab.addComment(getComments()); jj_consume_token(9); } final public void AnnotationElementLiteral(ElementAnnotationBuilder eab) throws ParseException { Token t; CommentList comments = getComments(); t = jj_consume_token(LITERAL); eab.addText(unquote(t.image), makeLocation(t), comments); } final public String Literal() throws ParseException { Token t; String s; StringBuffer buf; t = jj_consume_token(LITERAL); s = unquote(t.image); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 8: buf = new StringBuffer(s); label_26: while (true) { jj_consume_token(8); t = jj_consume_token(LITERAL); buf.append(unquote(t.image)); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 8: ; break; default: jj_la1[66] = jj_gen; break label_26; } } s = buf.toString(); break; default: jj_la1[67] = jj_gen; ; } {if (true) return s;} throw new Error("Missing return statement in function"); } final public LocatedString LocatedLiteral() throws ParseException { Token t; Token t2; String s; StringBuffer buf; t = jj_consume_token(LITERAL); s = unquote(t.image); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 8: buf = new StringBuffer(s); label_27: while (true) { jj_consume_token(8); t2 = jj_consume_token(LITERAL); buf.append(unquote(t2.image)); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 8: ; break; default: jj_la1[68] = jj_gen; break label_27; } } s = buf.toString(); break; default: jj_la1[69] = jj_gen; ; } {if (true) return new LocatedString(s, t);} throw new Error("Missing return statement in function"); } final public Token Keyword() throws ParseException { Token t; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 26: t = jj_consume_token(26); break; case 27: t = jj_consume_token(27); break; case 13: t = jj_consume_token(13); break; case 31: t = jj_consume_token(31); break; case 32: t = jj_consume_token(32); break; case 10: t = jj_consume_token(10); break; case 17: t = jj_consume_token(17); break; case 18: t = jj_consume_token(18); break; case 34: t = jj_consume_token(34); break; case 33: t = jj_consume_token(33); break; case 19: t = jj_consume_token(19); break; case 5: t = jj_consume_token(5); break; case 7: t = jj_consume_token(7); break; case 14: t = jj_consume_token(14); break; case 15: t = jj_consume_token(15); break; case 35: t = jj_consume_token(35); break; case 36: t = jj_consume_token(36); break; case 16: t = jj_consume_token(16); break; case 6: t = jj_consume_token(6); break; default: jj_la1[70] = jj_gen; jj_consume_token(-1); throw new ParseException(); } {if (true) return t;} throw new Error("Missing return statement in function"); } private boolean jj_2_1(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_1(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(0, xla); } } private boolean jj_2_2(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_2(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(1, xla); } } private boolean jj_2_3(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_3(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(2, xla); } } private boolean jj_2_4(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_4(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(3, xla); } } private boolean jj_2_5(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_5(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(4, xla); } } private boolean jj_2_6(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_6(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(5, xla); } } private boolean jj_2_7(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_7(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(6, xla); } } private boolean jj_2_8(int xla) { jj_la = xla; jj_lastpos = jj_scanpos = token; try { return !jj_3_8(); } catch(LookaheadSuccess ls) { return true; } finally { jj_save(7, xla); } } private boolean jj_3R_43() { if (jj_scan_token(1)) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_3R_52()) { jj_scanpos = xsp; break; } } if (jj_scan_token(9)) return true; return false; } private boolean jj_3R_51() { if (jj_scan_token(ESCAPED_IDENTIFIER)) return true; return false; } private boolean jj_3R_50() { if (jj_scan_token(IDENTIFIER)) return true; return false; } private boolean jj_3R_41() { Token xsp; xsp = jj_scanpos; if (jj_3R_50()) { jj_scanpos = xsp; if (jj_3R_51()) return true; } return false; } private boolean jj_3R_47() { if (jj_scan_token(PREFIXED_NAME)) return true; if (jj_3R_56()) return true; return false; } private boolean jj_3R_55() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(40)) { jj_scanpos = xsp; if (jj_scan_token(43)) return true; } while (true) { xsp = jj_scanpos; if (jj_scan_token(41)) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3R_45() { Token xsp; if (jj_3R_55()) return true; while (true) { xsp = jj_scanpos; if (jj_3R_55()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3R_38() { if (jj_3R_48()) return true; return false; } private boolean jj_3R_42() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(5)) { jj_scanpos = xsp; if (jj_scan_token(6)) { jj_scanpos = xsp; if (jj_scan_token(7)) return true; } } return false; } private boolean jj_3R_37() { if (jj_3R_47()) return true; return false; } private boolean jj_3R_54() { if (jj_3R_42()) return true; return false; } private boolean jj_3R_29() { Token xsp; xsp = jj_scanpos; if (jj_3R_37()) { jj_scanpos = xsp; if (jj_3R_38()) return true; } return false; } private boolean jj_3R_44() { Token xsp; xsp = jj_scanpos; if (jj_3R_53()) { jj_scanpos = xsp; if (jj_3R_54()) return true; } return false; } private boolean jj_3R_53() { if (jj_3R_41()) return true; Token xsp; xsp = jj_scanpos; if (jj_scan_token(2)) { jj_scanpos = xsp; if (jj_scan_token(3)) { jj_scanpos = xsp; if (jj_scan_token(4)) return true; } } return false; } private boolean jj_3R_36() { if (jj_3R_45()) return true; Token xsp; xsp = jj_scanpos; if (jj_3R_46()) jj_scanpos = xsp; if (jj_3R_44()) return true; return false; } private boolean jj_3R_35() { if (jj_3R_43()) return true; if (jj_3R_44()) return true; return false; } private boolean jj_3R_34() { if (jj_3R_42()) return true; return false; } private boolean jj_3R_33() { if (jj_3R_41()) return true; Token xsp; xsp = jj_scanpos; if (jj_scan_token(1)) { jj_scanpos = xsp; if (jj_scan_token(2)) { jj_scanpos = xsp; if (jj_scan_token(3)) { jj_scanpos = xsp; if (jj_scan_token(4)) return true; } } } return false; } private boolean jj_3_1() { if (jj_3R_28()) return true; return false; } private boolean jj_3R_32() { if (jj_scan_token(PREFIXED_NAME)) return true; if (jj_scan_token(1)) return true; return false; } private boolean jj_3R_28() { Token xsp; xsp = jj_scanpos; if (jj_3R_32()) { jj_scanpos = xsp; if (jj_3R_33()) { jj_scanpos = xsp; if (jj_3R_34()) { jj_scanpos = xsp; if (jj_3R_35()) { jj_scanpos = xsp; if (jj_3R_36()) return true; } } } } return false; } private boolean jj_3R_59() { if (jj_3R_43()) return true; return false; } private boolean jj_3_8() { if (jj_3R_31()) return true; return false; } private boolean jj_3R_56() { if (jj_scan_token(1)) return true; return false; } private boolean jj_3R_49() { if (jj_3R_57()) return true; if (jj_scan_token(2)) return true; return false; } private boolean jj_3R_40() { if (jj_3R_49()) return true; return false; } private boolean jj_3_4() { if (jj_3R_29()) return true; return false; } private boolean jj_3R_48() { if (jj_3R_41()) return true; if (jj_3R_56()) return true; return false; } private boolean jj_3_3() { if (jj_3R_29()) return true; return false; } private boolean jj_3_6() { if (jj_3R_29()) return true; return false; } private boolean jj_3R_62() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(26)) { jj_scanpos = xsp; if (jj_scan_token(27)) { jj_scanpos = xsp; if (jj_scan_token(13)) { jj_scanpos = xsp; if (jj_scan_token(31)) { jj_scanpos = xsp; if (jj_scan_token(32)) { jj_scanpos = xsp; if (jj_scan_token(10)) { jj_scanpos = xsp; if (jj_scan_token(17)) { jj_scanpos = xsp; if (jj_scan_token(18)) { jj_scanpos = xsp; if (jj_scan_token(34)) { jj_scanpos = xsp; if (jj_scan_token(33)) { jj_scanpos = xsp; if (jj_scan_token(19)) { jj_scanpos = xsp; if (jj_scan_token(5)) { jj_scanpos = xsp; if (jj_scan_token(7)) { jj_scanpos = xsp; if (jj_scan_token(14)) { jj_scanpos = xsp; if (jj_scan_token(15)) { jj_scanpos = xsp; if (jj_scan_token(35)) { jj_scanpos = xsp; if (jj_scan_token(36)) { jj_scanpos = xsp; if (jj_scan_token(16)) { jj_scanpos = xsp; if (jj_scan_token(6)) return true; } } } } } } } } } } } } } } } } } } return false; } private boolean jj_3R_61() { if (jj_3R_62()) return true; return false; } private boolean jj_3_2() { if (jj_3R_28()) return true; return false; } private boolean jj_3R_30() { if (jj_scan_token(PREFIXED_NAME)) return true; if (jj_scan_token(2)) return true; return false; } private boolean jj_3R_60() { if (jj_3R_41()) return true; return false; } private boolean jj_3R_58() { if (jj_3R_57()) return true; return false; } private boolean jj_3R_57() { Token xsp; xsp = jj_scanpos; if (jj_3R_60()) { jj_scanpos = xsp; if (jj_3R_61()) return true; } return false; } private boolean jj_3_5() { if (jj_3R_29()) return true; return false; } private boolean jj_3R_31() { Token xsp; xsp = jj_scanpos; if (jj_3R_39()) { jj_scanpos = xsp; if (jj_3R_40()) return true; } return false; } private boolean jj_3R_39() { if (jj_3R_30()) return true; return false; } private boolean jj_3_7() { if (jj_3R_30()) return true; return false; } private boolean jj_3R_46() { if (jj_3R_43()) return true; return false; } private boolean jj_3R_52() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(57)) { jj_scanpos = xsp; if (jj_3R_58()) { jj_scanpos = xsp; if (jj_scan_token(2)) { jj_scanpos = xsp; if (jj_scan_token(58)) { jj_scanpos = xsp; if (jj_scan_token(8)) { jj_scanpos = xsp; if (jj_3R_59()) return true; } } } } } return false; }
Generated Token Manager.
/** Generated Token Manager. */
public CompactSyntaxTokenManager token_source; JavaCharStream jj_input_stream;
Current token.
/** Current token. */
public Token token;
Next token.
/** Next token. */
public Token jj_nt; private int jj_ntk; private Token jj_scanpos, jj_lastpos; private int jj_la; private int jj_gen; final private int[] jj_la1 = new int[71]; static private int[] jj_la1_0; static private int[] jj_la1_1; static { jj_la1_init_0(); jj_la1_init_1(); } private static void jj_la1_init_0() { 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,}; } private static void jj_la1_init_1() { 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,}; } final private JJCalls[] jj_2_rtns = new JJCalls[8]; private boolean jj_rescan = false; private int jj_gc = 0;
Constructor with InputStream.
/** Constructor with InputStream. */
public CompactSyntax(java.io.InputStream stream) { this(stream, null); }
Constructor with InputStream and supplied encoding
/** Constructor with InputStream and supplied encoding */
public CompactSyntax(java.io.InputStream stream, String encoding) { try { jj_input_stream = new JavaCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source = new CompactSyntaxTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 71; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); }
Reinitialise.
/** Reinitialise. */
public void ReInit(java.io.InputStream stream) { ReInit(stream, null); }
Reinitialise.
/** Reinitialise. */
public void ReInit(java.io.InputStream stream, String encoding) { try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 71; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); }
Constructor.
/** Constructor. */
public CompactSyntax(java.io.Reader stream) { jj_input_stream = new JavaCharStream(stream, 1, 1); token_source = new CompactSyntaxTokenManager(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 71; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); }
Reinitialise.
/** Reinitialise. */
public void ReInit(java.io.Reader stream) { jj_input_stream.ReInit(stream, 1, 1); token_source.ReInit(jj_input_stream); token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 71; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); }
Constructor with generated Token Manager.
/** Constructor with generated Token Manager. */
public CompactSyntax(CompactSyntaxTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 71; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); }
Reinitialise.
/** Reinitialise. */
public void ReInit(CompactSyntaxTokenManager tm) { token_source = tm; token = new Token(); jj_ntk = -1; jj_gen = 0; for (int i = 0; i < 71; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } private Token jj_consume_token(int kind) throws ParseException { Token oldToken; if ((oldToken = token).next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; if (token.kind == kind) { jj_gen++; if (++jj_gc > 100) { jj_gc = 0; for (int i = 0; i < jj_2_rtns.length; i++) { JJCalls c = jj_2_rtns[i]; while (c != null) { if (c.gen < jj_gen) c.first = null; c = c.next; } } } return token; } token = oldToken; jj_kind = kind; throw generateParseException(); } static private final class LookaheadSuccess extends java.lang.Error { } final private LookaheadSuccess jj_ls = new LookaheadSuccess(); private boolean jj_scan_token(int kind) { if (jj_scanpos == jj_lastpos) { jj_la--; if (jj_scanpos.next == null) { jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken(); } else { jj_lastpos = jj_scanpos = jj_scanpos.next; } } else { jj_scanpos = jj_scanpos.next; } if (jj_rescan) { int i = 0; Token tok = token; while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; } if (tok != null) jj_add_error_token(kind, i); } if (jj_scanpos.kind != kind) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls; return false; }
Get the next Token.
/** Get the next Token. */
final public Token getNextToken() { if (token.next != null) token = token.next; else token = token.next = token_source.getNextToken(); jj_ntk = -1; jj_gen++; return token; }
Get the specific Token.
/** Get the specific Token. */
final public Token getToken(int index) { Token t = token; for (int i = 0; i < index; i++) { if (t.next != null) t = t.next; else t = t.next = token_source.getNextToken(); } return t; } private int jj_ntk() { if ((jj_nt=token.next) == null) return (jj_ntk = (token.next=token_source.getNextToken()).kind); else return (jj_ntk = jj_nt.kind); } private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>(); private int[] jj_expentry; private int jj_kind = -1; private int[] jj_lasttokens = new int[100]; private int jj_endpos; private void jj_add_error_token(int kind, int pos) { if (pos >= 100) return; if (pos == jj_endpos + 1) { jj_lasttokens[jj_endpos++] = kind; } else if (jj_endpos != 0) { jj_expentry = new int[jj_endpos]; for (int i = 0; i < jj_endpos; i++) { jj_expentry[i] = jj_lasttokens[i]; } jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) { int[] oldentry = (int[])(it.next()); if (oldentry.length == jj_expentry.length) { for (int i = 0; i < jj_expentry.length; i++) { if (oldentry[i] != jj_expentry[i]) { continue jj_entries_loop; } } jj_expentries.add(jj_expentry); break jj_entries_loop; } } if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind; } }
Generate ParseException.
/** Generate ParseException. */
public ParseException generateParseException() { jj_expentries.clear(); boolean[] la1tokens = new boolean[61]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; } for (int i = 0; i < 71; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1<<j)) != 0) { la1tokens[j] = true; } if ((jj_la1_1[i] & (1<<j)) != 0) { la1tokens[32+j] = true; } } } } for (int i = 0; i < 61; i++) { if (la1tokens[i]) { jj_expentry = new int[1]; jj_expentry[0] = i; jj_expentries.add(jj_expentry); } } jj_endpos = 0; jj_rescan_token(); jj_add_error_token(0, 0); int[][] exptokseq = new int[jj_expentries.size()][]; for (int i = 0; i < jj_expentries.size(); i++) { exptokseq[i] = jj_expentries.get(i); } return new ParseException(token, exptokseq, tokenImage); }
Enable tracing.
/** Enable tracing. */
final public void enable_tracing() { }
Disable tracing.
/** Disable tracing. */
final public void disable_tracing() { } private void jj_rescan_token() { jj_rescan = true; for (int i = 0; i < 8; i++) { try { JJCalls p = jj_2_rtns[i]; do { if (p.gen > jj_gen) { jj_la = p.arg; jj_lastpos = jj_scanpos = p.first; switch (i) { case 0: jj_3_1(); break; case 1: jj_3_2(); break; case 2: jj_3_3(); break; case 3: jj_3_4(); break; case 4: jj_3_5(); break; case 5: jj_3_6(); break; case 6: jj_3_7(); break; case 7: jj_3_8(); break; } } p = p.next; } while (p != null); } catch(LookaheadSuccess ls) { } } jj_rescan = false; } private void jj_save(int index, int xla) { JJCalls p = jj_2_rtns[index]; while (p.gen > jj_gen) { if (p.next == null) { p = p.next = new JJCalls(); break; } p = p.next; } p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla; } static final class JJCalls { int gen; Token first; int arg; JJCalls next; } }