1 /* 2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 /* Generated By:JavaCC: Do not edit this line. SCDParser.java */ 27 package com.sun.xml.internal.xsom.impl.scd; 28 29 import java.util.*; 30 import java.io.*; 31 import com.sun.xml.internal.xsom.impl.UName; 32 import javax.xml.namespace.*; 33 34 public class SCDParser implements SCDParserConstants { 35 private NamespaceContext nsc; SCDParser(String text,NamespaceContext nsc)36 public SCDParser(String text,NamespaceContext nsc) { 37 this(new StringReader(text)); 38 this.nsc = nsc; 39 } trim(String s)40 private String trim(String s) { 41 return s.substring(1,s.length()-1); 42 } resolvePrefix(String prefix)43 private String resolvePrefix(String prefix) throws ParseException { 44 try { 45 String r=nsc.getNamespaceURI(prefix); 46 // grrr!! 47 if(prefix.equals("")) 48 return r; 49 if(!r.equals("")) 50 return r; 51 } catch( IllegalArgumentException e ) { 52 ; // report an error 53 } 54 throw new ParseException("Unbound prefix: "+prefix); 55 } 56 57 // "[^:]+" QName()58 final public UName QName() throws ParseException { 59 Token p,l=null; 60 p = jj_consume_token(NCNAME); 61 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 62 case 15: 63 jj_consume_token(15); 64 l = jj_consume_token(NCNAME); 65 break; 66 default: 67 jj_la1[0] = jj_gen; 68 ; 69 } 70 if(l==null) 71 {if (true) return new UName(resolvePrefix(""),p.image);} 72 else 73 {if (true) return new UName(resolvePrefix(p.image),l.image);} 74 throw new Error("Missing return statement in function"); 75 } 76 Prefix()77 final public String Prefix() throws ParseException { 78 Token p; 79 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 80 case NCNAME: 81 p = jj_consume_token(NCNAME); 82 {if (true) return resolvePrefix(p.image);} 83 break; 84 default: 85 jj_la1[1] = jj_gen; 86 {if (true) return resolvePrefix("");} 87 } 88 throw new Error("Missing return statement in function"); 89 } 90 RelativeSchemaComponentPath()91 final public List RelativeSchemaComponentPath() throws ParseException { 92 List steps = new ArrayList(); 93 Step s; 94 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 95 case 16: 96 case 17: 97 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 98 case 16: 99 jj_consume_token(16); 100 steps.add(new Step.Any(Axis.ROOT)); 101 break; 102 case 17: 103 jj_consume_token(17); 104 steps.add(new Step.Any(Axis.DESCENDANTS)); 105 break; 106 default: 107 jj_la1[2] = jj_gen; 108 jj_consume_token(-1); 109 throw new ParseException(); 110 } 111 break; 112 default: 113 jj_la1[3] = jj_gen; 114 ; 115 } 116 s = Step(); 117 steps.add(s); 118 label_1: 119 while (true) { 120 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 121 case 16: 122 case 17: 123 ; 124 break; 125 default: 126 jj_la1[4] = jj_gen; 127 break label_1; 128 } 129 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 130 case 16: 131 jj_consume_token(16); 132 break; 133 case 17: 134 jj_consume_token(17); 135 steps.add(new Step.Any(Axis.DESCENDANTS)); 136 break; 137 default: 138 jj_la1[5] = jj_gen; 139 jj_consume_token(-1); 140 throw new ParseException(); 141 } 142 s = Step(); 143 steps.add(s); 144 } 145 {if (true) return steps;} 146 throw new Error("Missing return statement in function"); 147 } 148 Step()149 final public Step Step() throws ParseException { 150 Step s; String p; Token n; 151 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 152 case 18: 153 case 19: 154 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 155 case 18: 156 jj_consume_token(18); 157 break; 158 case 19: 159 jj_consume_token(19); 160 break; 161 default: 162 jj_la1[6] = jj_gen; 163 jj_consume_token(-1); 164 throw new ParseException(); 165 } 166 s = NameOrWildcard(Axis.ATTRIBUTE); 167 break; 168 case NCNAME: 169 case 20: 170 case 45: 171 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 172 case 20: 173 jj_consume_token(20); 174 break; 175 default: 176 jj_la1[7] = jj_gen; 177 ; 178 } 179 s = NameOrWildcard(Axis.ELEMENT); 180 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 181 case NUMBER: 182 Predicate(s); 183 break; 184 default: 185 jj_la1[8] = jj_gen; 186 ; 187 } 188 break; 189 case 21: 190 jj_consume_token(21); 191 s = NameOrWildcard(Axis.SUBSTITUTION_GROUP); 192 break; 193 case 22: 194 case 23: 195 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 196 case 22: 197 jj_consume_token(22); 198 break; 199 case 23: 200 jj_consume_token(23); 201 break; 202 default: 203 jj_la1[9] = jj_gen; 204 jj_consume_token(-1); 205 throw new ParseException(); 206 } 207 s = NameOrWildcardOrAnonymous(Axis.TYPE_DEFINITION); 208 break; 209 case 24: 210 jj_consume_token(24); 211 s = NameOrWildcard(Axis.BASETYPE); 212 break; 213 case 25: 214 jj_consume_token(25); 215 s = NameOrWildcard(Axis.PRIMITIVE_TYPE); 216 break; 217 case 26: 218 jj_consume_token(26); 219 s = NameOrWildcardOrAnonymous(Axis.ITEM_TYPE); 220 break; 221 case 27: 222 jj_consume_token(27); 223 s = NameOrWildcardOrAnonymous(Axis.MEMBER_TYPE); 224 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 225 case NUMBER: 226 Predicate(s); 227 break; 228 default: 229 jj_la1[10] = jj_gen; 230 ; 231 } 232 break; 233 case 28: 234 jj_consume_token(28); 235 s = NameOrWildcardOrAnonymous(Axis.SCOPE); 236 break; 237 case 29: 238 jj_consume_token(29); 239 s = NameOrWildcard(Axis.ATTRIBUTE_GROUP); 240 break; 241 case 30: 242 jj_consume_token(30); 243 s = NameOrWildcard(Axis.MODEL_GROUP_DECL); 244 break; 245 case 31: 246 jj_consume_token(31); 247 s = NameOrWildcard(Axis.IDENTITY_CONSTRAINT); 248 break; 249 case 32: 250 jj_consume_token(32); 251 s = NameOrWildcard(Axis.REFERENCED_KEY); 252 break; 253 case 33: 254 jj_consume_token(33); 255 s = NameOrWildcard(Axis.NOTATION); 256 break; 257 case 34: 258 jj_consume_token(34); 259 s=new Step.Any(Axis.MODELGROUP_SEQUENCE); 260 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 261 case NUMBER: 262 Predicate(s); 263 break; 264 default: 265 jj_la1[11] = jj_gen; 266 ; 267 } 268 break; 269 case 35: 270 jj_consume_token(35); 271 s=new Step.Any(Axis.MODELGROUP_CHOICE); 272 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 273 case NUMBER: 274 Predicate(s); 275 break; 276 default: 277 jj_la1[12] = jj_gen; 278 ; 279 } 280 break; 281 case 36: 282 jj_consume_token(36); 283 s=new Step.Any(Axis.MODELGROUP_ALL); 284 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 285 case NUMBER: 286 Predicate(s); 287 break; 288 default: 289 jj_la1[13] = jj_gen; 290 ; 291 } 292 break; 293 case 37: 294 jj_consume_token(37); 295 s=new Step.Any(Axis.MODELGROUP_ANY); 296 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 297 case NUMBER: 298 Predicate(s); 299 break; 300 default: 301 jj_la1[14] = jj_gen; 302 ; 303 } 304 break; 305 case 38: 306 jj_consume_token(38); 307 s=new Step.Any(Axis.WILDCARD); 308 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 309 case NUMBER: 310 Predicate(s); 311 break; 312 default: 313 jj_la1[15] = jj_gen; 314 ; 315 } 316 break; 317 case 39: 318 jj_consume_token(39); 319 s=new Step.Any(Axis.ATTRIBUTE_WILDCARD); 320 break; 321 case 40: 322 jj_consume_token(40); 323 s=new Step.Any(Axis.FACET); 324 break; 325 case 41: 326 jj_consume_token(41); 327 n = jj_consume_token(FACETNAME); 328 s=new Step.Facet(Axis.FACET,n.image); 329 break; 330 case 42: 331 jj_consume_token(42); 332 s=new Step.Any(Axis.DESCENDANTS); 333 break; 334 case 43: 335 jj_consume_token(43); 336 p = Prefix(); 337 s=new Step.Schema(Axis.X_SCHEMA,p); 338 break; 339 case 44: 340 jj_consume_token(44); 341 s=new Step.Any(Axis.X_SCHEMA); 342 break; 343 default: 344 jj_la1[16] = jj_gen; 345 jj_consume_token(-1); 346 throw new ParseException(); 347 } 348 {if (true) return s;} 349 throw new Error("Missing return statement in function"); 350 } 351 NameOrWildcard(Axis a)352 final public Step NameOrWildcard(Axis a) throws ParseException { 353 UName un; 354 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 355 case NCNAME: 356 un = QName(); 357 {if (true) return new Step.Named(a,un);} 358 break; 359 case 45: 360 jj_consume_token(45); 361 {if (true) return new Step.Any(a);} 362 break; 363 default: 364 jj_la1[17] = jj_gen; 365 jj_consume_token(-1); 366 throw new ParseException(); 367 } 368 throw new Error("Missing return statement in function"); 369 } 370 NameOrWildcardOrAnonymous(Axis a)371 final public Step NameOrWildcardOrAnonymous(Axis a) throws ParseException { 372 UName un; 373 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 374 case NCNAME: 375 un = QName(); 376 {if (true) return new Step.Named(a,un);} 377 break; 378 case 45: 379 jj_consume_token(45); 380 {if (true) return new Step.Any(a);} 381 break; 382 case 46: 383 jj_consume_token(46); 384 {if (true) return new Step.AnonymousType(a);} 385 break; 386 default: 387 jj_la1[18] = jj_gen; 388 jj_consume_token(-1); 389 throw new ParseException(); 390 } 391 throw new Error("Missing return statement in function"); 392 } 393 Predicate(Step s)394 final public int Predicate(Step s) throws ParseException { 395 Token t; 396 t = jj_consume_token(NUMBER); 397 {if (true) return s.predicate=Integer.parseInt(trim(t.image));} 398 throw new Error("Missing return statement in function"); 399 } 400 401 public SCDParserTokenManager token_source; 402 SimpleCharStream jj_input_stream; 403 public Token token, jj_nt; 404 private int jj_ntk; 405 private int jj_gen; 406 final private int[] jj_la1 = new int[19]; 407 static private int[] jj_la1_0; 408 static private int[] jj_la1_1; 409 static { jj_la1_0()410 jj_la1_0(); jj_la1_1()411 jj_la1_1(); 412 } jj_la1_0()413 private static void jj_la1_0() { 414 jj_la1_0 = new int[] {0x8000,0x1000,0x30000,0x30000,0x30000,0x30000,0xc0000,0x100000,0x2000,0xc00000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0xfffc1000,0x1000,0x1000,}; 415 } jj_la1_1()416 private static void jj_la1_1() { 417 jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3fff,0x2000,0x6000,}; 418 } 419 SCDParser(java.io.InputStream stream)420 public SCDParser(java.io.InputStream stream) { 421 this(stream, null); 422 } SCDParser(java.io.InputStream stream, String encoding)423 public SCDParser(java.io.InputStream stream, String encoding) { 424 try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } 425 token_source = new SCDParserTokenManager(jj_input_stream); 426 token = new Token(); 427 jj_ntk = -1; 428 jj_gen = 0; 429 for (int i = 0; i < 19; i++) jj_la1[i] = -1; 430 } 431 ReInit(java.io.InputStream stream)432 public void ReInit(java.io.InputStream stream) { 433 ReInit(stream, null); 434 } ReInit(java.io.InputStream stream, String encoding)435 public void ReInit(java.io.InputStream stream, String encoding) { 436 try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } 437 token_source.ReInit(jj_input_stream); 438 token = new Token(); 439 jj_ntk = -1; 440 jj_gen = 0; 441 for (int i = 0; i < 19; i++) jj_la1[i] = -1; 442 } 443 SCDParser(java.io.Reader stream)444 public SCDParser(java.io.Reader stream) { 445 jj_input_stream = new SimpleCharStream(stream, 1, 1); 446 token_source = new SCDParserTokenManager(jj_input_stream); 447 token = new Token(); 448 jj_ntk = -1; 449 jj_gen = 0; 450 for (int i = 0; i < 19; i++) jj_la1[i] = -1; 451 } 452 ReInit(java.io.Reader stream)453 public void ReInit(java.io.Reader stream) { 454 jj_input_stream.ReInit(stream, 1, 1); 455 token_source.ReInit(jj_input_stream); 456 token = new Token(); 457 jj_ntk = -1; 458 jj_gen = 0; 459 for (int i = 0; i < 19; i++) jj_la1[i] = -1; 460 } 461 SCDParser(SCDParserTokenManager tm)462 public SCDParser(SCDParserTokenManager tm) { 463 token_source = tm; 464 token = new Token(); 465 jj_ntk = -1; 466 jj_gen = 0; 467 for (int i = 0; i < 19; i++) jj_la1[i] = -1; 468 } 469 ReInit(SCDParserTokenManager tm)470 public void ReInit(SCDParserTokenManager tm) { 471 token_source = tm; 472 token = new Token(); 473 jj_ntk = -1; 474 jj_gen = 0; 475 for (int i = 0; i < 19; i++) jj_la1[i] = -1; 476 } 477 jj_consume_token(int kind)478 final private Token jj_consume_token(int kind) throws ParseException { 479 Token oldToken; 480 if ((oldToken = token).next != null) token = token.next; 481 else token = token.next = token_source.getNextToken(); 482 jj_ntk = -1; 483 if (token.kind == kind) { 484 jj_gen++; 485 return token; 486 } 487 token = oldToken; 488 jj_kind = kind; 489 throw generateParseException(); 490 } 491 getNextToken()492 final public Token getNextToken() { 493 if (token.next != null) token = token.next; 494 else token = token.next = token_source.getNextToken(); 495 jj_ntk = -1; 496 jj_gen++; 497 return token; 498 } 499 getToken(int index)500 final public Token getToken(int index) { 501 Token t = token; 502 for (int i = 0; i < index; i++) { 503 if (t.next != null) t = t.next; 504 else t = t.next = token_source.getNextToken(); 505 } 506 return t; 507 } 508 jj_ntk()509 final private int jj_ntk() { 510 if ((jj_nt=token.next) == null) 511 return (jj_ntk = (token.next=token_source.getNextToken()).kind); 512 else 513 return (jj_ntk = jj_nt.kind); 514 } 515 516 private java.util.Vector jj_expentries = new java.util.Vector(); 517 private int[] jj_expentry; 518 private int jj_kind = -1; 519 generateParseException()520 public ParseException generateParseException() { 521 jj_expentries.removeAllElements(); 522 boolean[] la1tokens = new boolean[47]; 523 for (int i = 0; i < 47; i++) { 524 la1tokens[i] = false; 525 } 526 if (jj_kind >= 0) { 527 la1tokens[jj_kind] = true; 528 jj_kind = -1; 529 } 530 for (int i = 0; i < 19; i++) { 531 if (jj_la1[i] == jj_gen) { 532 for (int j = 0; j < 32; j++) { 533 if ((jj_la1_0[i] & (1<<j)) != 0) { 534 la1tokens[j] = true; 535 } 536 if ((jj_la1_1[i] & (1<<j)) != 0) { 537 la1tokens[32+j] = true; 538 } 539 } 540 } 541 } 542 for (int i = 0; i < 47; i++) { 543 if (la1tokens[i]) { 544 jj_expentry = new int[1]; 545 jj_expentry[0] = i; 546 jj_expentries.addElement(jj_expentry); 547 } 548 } 549 int[][] exptokseq = new int[jj_expentries.size()][]; 550 for (int i = 0; i < jj_expentries.size(); i++) { 551 exptokseq[i] = (int[])jj_expentries.elementAt(i); 552 } 553 return new ParseException(token, exptokseq, tokenImage); 554 } 555 enable_tracing()556 final public void enable_tracing() { 557 } 558 disable_tracing()559 final public void disable_tracing() { 560 } 561 562 } 563