blob: dac708e32dd4be1e6d3914fb43ccd5db9acb2917 [file] [log] [blame]
/*
* Copyright (c) 2005, 2010, 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.
*/
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.
*
* <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. */
public CompactSyntaxTokenManager token_source;
JavaCharStream jj_input_stream;
/** Current token. */
public Token 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. */
public CompactSyntax(java.io.InputStream stream) {
this(stream, null);
}
/** 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. */
public void ReInit(java.io.InputStream stream) {
ReInit(stream, null);
}
/** 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. */
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. */
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. */
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. */
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. */
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. */
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. */
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. */
final public void enable_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;
}
}