001/** 002 * Copyright (C) 2007 - 2016, Jens Lehmann 003 * 004 * This file is part of DL-Learner. 005 * 006 * DL-Learner is free software; you can redistribute it and/or modify 007 * it under the terms of the GNU General Public License as published by 008 * the Free Software Foundation; either version 3 of the License, or 009 * (at your option) any later version. 010 * 011 * DL-Learner is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 014 * GNU General Public License for more details. 015 * 016 * You should have received a copy of the GNU General Public License 017 * along with this program. If not, see <http://www.gnu.org/licenses/>. 018 */ 019/* Generated By:JavaCC: Do not edit this line. KBParser.java */ 020package org.dllearner.parser; 021 022import java.io.File; 023import java.io.FileInputStream; 024import java.io.FileNotFoundException; 025import java.io.IOException; 026import java.io.StringReader; 027import java.net.URL; 028 029import org.semanticweb.owlapi.apibinding.OWLManager; 030import org.semanticweb.owlapi.model.IRI; 031import org.semanticweb.owlapi.model.OWLAxiom; 032import org.semanticweb.owlapi.model.OWLClass; 033import org.semanticweb.owlapi.model.OWLClassAssertionAxiom; 034import org.semanticweb.owlapi.model.OWLClassExpression; 035import org.semanticweb.owlapi.model.OWLDataFactory; 036import org.semanticweb.owlapi.model.OWLDataProperty; 037import org.semanticweb.owlapi.model.OWLDataPropertyDomainAxiom; 038import org.semanticweb.owlapi.model.OWLDataPropertyRangeAxiom; 039import org.semanticweb.owlapi.model.OWLDataRange; 040import org.semanticweb.owlapi.model.OWLEquivalentClassesAxiom; 041import org.semanticweb.owlapi.model.OWLFunctionalObjectPropertyAxiom; 042import org.semanticweb.owlapi.model.OWLIndividual; 043import org.semanticweb.owlapi.model.OWLInverseObjectPropertiesAxiom; 044import org.semanticweb.owlapi.model.OWLObjectProperty; 045import org.semanticweb.owlapi.model.OWLObjectPropertyAssertionAxiom; 046import org.semanticweb.owlapi.model.OWLObjectPropertyDomainAxiom; 047import org.semanticweb.owlapi.model.OWLObjectPropertyRangeAxiom; 048import org.semanticweb.owlapi.model.OWLOntology; 049import org.semanticweb.owlapi.model.OWLOntologyCreationException; 050import org.semanticweb.owlapi.model.OWLOntologyManager; 051import org.semanticweb.owlapi.model.OWLSubClassOfAxiom; 052import org.semanticweb.owlapi.model.OWLSubObjectPropertyOfAxiom; 053import org.semanticweb.owlapi.model.OWLSymmetricObjectPropertyAxiom; 054import org.semanticweb.owlapi.model.OWLTransitiveObjectPropertyAxiom; 055 056import uk.ac.manchester.cs.owl.owlapi.OWLDataFactoryImpl; 057 058@SuppressWarnings("all") 059public class KBParser implements KBParserConstants { 060 061 public static String internalNamespace = "http://localhost/foo#"; 062 private static final OWLDataFactory df = new OWLDataFactoryImpl(); 063 064 // method to give all internal stuff an URI (not necessary for DLs, but for OWL ontologies 065 // and it should be possible to represent the internal KB as OWL ontology) 066 public static String getInternalURI(String name) { 067 if(name.startsWith("http://")) 068 return name; 069 else 070 return internalNamespace + name; 071 } 072 073 public static OWLClassExpression parseConcept(String string) throws ParseException { 074 // when just parsing the string as concept, we have no guarantee 075 // that the parser uses all symbols, e.g. a AND b returns just a 076 // because the brackets were forgotten; 077 // so instead we create an equivalent class axiom and return its 078 // right hand side 079 String eq = "tmp = " + string + "."; 080 KBParser parser = new KBParser(new StringReader(eq)); 081 OWLEquivalentClassesAxiom eqAxiom = parser.TBoxEquiv(); 082 return eqAxiom.getClassExpressionsMinus(df.getOWLClass(IRI.create(internalNamespace + "tmp"))).iterator().next(); 083 } 084 085 //TODO beware of this function it is evil (author: Sebastian Hellmann) 086 public static OWLClassExpression parseConcept(String string, String namespace) throws ParseException { 087 internalNamespace = namespace; 088 return parseConcept(string); 089 } 090 091 public static OWLOntology parseKBFile(String content) throws ParseException, OWLOntologyCreationException { 092 KBParser parser = new KBParser(new StringReader(content)); 093 return parser.KB(); 094 } 095 096 public static OWLOntology parseKBFile(URL url) throws IOException, ParseException, OWLOntologyCreationException { 097 KBParser parser = new KBParser(url.openStream()); 098 return parser.KB(); 099 } 100 101 public static OWLOntology parseKBFile(File file) throws FileNotFoundException, ParseException, OWLOntologyCreationException { 102 KBParser parser = new KBParser(new FileInputStream(file)); 103 return parser.KB(); 104 } 105 106 final public OWLOntology KB() throws ParseException, OWLOntologyCreationException { 107 OWLClassAssertionAxiom conceptAssertion; 108 OWLObjectPropertyAssertionAxiom roleAssertion; 109 OWLAxiom rBoxAxiom; 110 OWLEquivalentClassesAxiom equality; 111 OWLSubClassOfAxiom inclusion; 112 OWLOntologyManager man = OWLManager.createOWLOntologyManager(); 113 OWLOntology kb = man.createOntology(); 114 label_1: 115 while (true) { 116 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 117 case ID: 118 case TOP: 119 case BOTTOM: 120 case EXISTS: 121 case ALL: 122 case NOT: 123 case GE: 124 case LE: 125 case STRING: 126 case 22: 127 case 28: 128 case 29: 129 case 30: 130 case 31: 131 case 32: 132 case 34: 133 case 35: 134 case 36: 135 case 37: 136 case 38: 137 case 39: 138 case 40: 139 case 41: 140 case 42: 141 case 43: 142 ; 143 break; 144 default: 145 jj_la1[0] = jj_gen; 146 break label_1; 147 } 148 if (jj_2_1(2147483647)) { 149 conceptAssertion = ABoxConcept(); 150 man.addAxiom(kb, conceptAssertion); 151 } else if (jj_2_2(2147483647)) { 152 roleAssertion = ABoxRole(); 153 man.addAxiom(kb, roleAssertion); 154 } else { 155 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 156 case 28: 157 rBoxAxiom = Transitive(); 158 man.addAxiom(kb, rBoxAxiom); 159 break; 160 case 29: 161 rBoxAxiom = Functional(); 162 man.addAxiom(kb, rBoxAxiom); 163 break; 164 case 30: 165 rBoxAxiom = Symmetric(); 166 man.addAxiom(kb, rBoxAxiom); 167 break; 168 case 31: 169 rBoxAxiom = Inverse(); 170 man.addAxiom(kb, rBoxAxiom); 171 break; 172 case 32: 173 rBoxAxiom = Subrole(); 174 man.addAxiom(kb, rBoxAxiom); 175 break; 176 case 34: 177 case 35: 178 case 36: 179 rBoxAxiom = ObjectPropertyDomainAxiom(); 180 man.addAxiom(kb, rBoxAxiom); 181 break; 182 case 37: 183 case 38: 184 rBoxAxiom = DatatypePropertyDomainAxiom(); 185 man.addAxiom(kb, rBoxAxiom); 186 break; 187 case 39: 188 case 40: 189 case 41: 190 rBoxAxiom = ObjectPropertyRangeAxiom(); 191 man.addAxiom(kb, rBoxAxiom); 192 break; 193 case 42: 194 case 43: 195 rBoxAxiom = DatatypePropertyRangeAxiom(); 196 man.addAxiom(kb, rBoxAxiom); 197 break; 198 default: 199 jj_la1[1] = jj_gen; 200 if (jj_2_3(2147483647)) { 201 equality = TBoxEquiv(); 202 man.addAxiom(kb, equality); 203 } else if (jj_2_4(2147483647)) { 204 inclusion = TBoxSub(); 205 man.addAxiom(kb, inclusion); 206 } else { 207 jj_consume_token(-1); 208 throw new ParseException(); 209 } 210 } 211 } 212 } 213 jj_consume_token(0); 214 {if (true) return kb;} 215 throw new Error("Missing return statement in function"); 216 } 217 218 final public OWLClassAssertionAxiom ABoxConcept() throws ParseException { 219 OWLClassExpression c; OWLIndividual i; 220 c = Concept(); 221 jj_consume_token(22); 222 i = Individual(); 223 jj_consume_token(23); 224 jj_consume_token(COMMAND_END); 225 {if (true) return df.getOWLClassAssertionAxiom(c, i);} 226 throw new Error("Missing return statement in function"); 227 } 228 229 final public OWLObjectPropertyAssertionAxiom ABoxRole() throws ParseException { 230 boolean isNegated=false; 231 OWLObjectProperty ar; 232 OWLIndividual i1,i2; 233 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 234 case NOT: 235 Not(); 236 isNegated=true; 237 break; 238 default: 239 jj_la1[2] = jj_gen; 240 ; 241 } 242 ar = ObjectProperty(); 243 jj_consume_token(22); 244 i1 = Individual(); 245 jj_consume_token(24); 246 i2 = Individual(); 247 jj_consume_token(23); 248 jj_consume_token(COMMAND_END); 249 if(isNegated) 250 {if (true) throw new Error("negated role assertions not supported yet");} 251 else 252 {if (true) return df.getOWLObjectPropertyAssertionAxiom(ar,i1,i2);} 253 throw new Error("Missing return statement in function"); 254 } 255 256 final public OWLTransitiveObjectPropertyAxiom Transitive() throws ParseException { 257 OWLObjectProperty ar; 258 jj_consume_token(28); 259 jj_consume_token(22); 260 ar = ObjectProperty(); 261 jj_consume_token(23); 262 jj_consume_token(COMMAND_END); 263 {if (true) return df.getOWLTransitiveObjectPropertyAxiom(ar);} 264 throw new Error("Missing return statement in function"); 265 } 266 267 final public OWLFunctionalObjectPropertyAxiom Functional() throws ParseException { 268 OWLObjectProperty ar; 269 jj_consume_token(29); 270 jj_consume_token(22); 271 ar = ObjectProperty(); 272 jj_consume_token(23); 273 jj_consume_token(COMMAND_END); 274 {if (true) return df.getOWLFunctionalObjectPropertyAxiom(ar);} 275 throw new Error("Missing return statement in function"); 276 } 277 278 final public OWLSymmetricObjectPropertyAxiom Symmetric() throws ParseException { 279 OWLObjectProperty ar; 280 jj_consume_token(30); 281 jj_consume_token(22); 282 ar = ObjectProperty(); 283 jj_consume_token(23); 284 jj_consume_token(COMMAND_END); 285 {if (true) return df.getOWLSymmetricObjectPropertyAxiom(ar);} 286 throw new Error("Missing return statement in function"); 287 } 288 289 final public OWLInverseObjectPropertiesAxiom Inverse() throws ParseException { 290 OWLObjectProperty ar1,ar2; 291 jj_consume_token(31); 292 jj_consume_token(22); 293 ar1 = ObjectProperty(); 294 jj_consume_token(24); 295 ar2 = ObjectProperty(); 296 jj_consume_token(23); 297 jj_consume_token(COMMAND_END); 298 {if (true) return df.getOWLInverseObjectPropertiesAxiom(ar1,ar2);} 299 throw new Error("Missing return statement in function"); 300 } 301 302 final public OWLSubObjectPropertyOfAxiom Subrole() throws ParseException { 303 OWLObjectProperty ar1,ar2; 304 jj_consume_token(32); 305 jj_consume_token(22); 306 ar1 = ObjectProperty(); 307 jj_consume_token(24); 308 ar2 = ObjectProperty(); 309 jj_consume_token(23); 310 jj_consume_token(COMMAND_END); 311 {if (true) return df.getOWLSubObjectPropertyOfAxiom(ar1,ar2);} 312 throw new Error("Missing return statement in function"); 313 } 314 315 final public OWLEquivalentClassesAxiom TBoxEquiv() throws ParseException { 316 OWLClassExpression c1,c2; 317 c1 = Concept(); 318 jj_consume_token(25); 319 c2 = Concept(); 320 jj_consume_token(COMMAND_END); 321 {if (true) return df.getOWLEquivalentClassesAxiom(c1,c2);} 322 throw new Error("Missing return statement in function"); 323 } 324 325 final public OWLSubClassOfAxiom TBoxSub() throws ParseException { 326 OWLClassExpression c1,c2; 327 c1 = Concept(); 328 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 329 case 26: 330 jj_consume_token(26); 331 break; 332 case 27: 333 jj_consume_token(27); 334 break; 335 case 33: 336 jj_consume_token(33); 337 break; 338 default: 339 jj_la1[3] = jj_gen; 340 jj_consume_token(-1); 341 throw new ParseException(); 342 } 343 c2 = Concept(); 344 jj_consume_token(COMMAND_END); 345 {if (true) return df.getOWLSubClassOfAxiom(c1,c2);} 346 throw new Error("Missing return statement in function"); 347 } 348 349 final public OWLObjectPropertyDomainAxiom ObjectPropertyDomainAxiom() throws ParseException { 350 OWLObjectProperty op; OWLClassExpression domain; 351 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 352 case 34: 353 jj_consume_token(34); 354 break; 355 case 35: 356 jj_consume_token(35); 357 break; 358 case 36: 359 jj_consume_token(36); 360 break; 361 default: 362 jj_la1[4] = jj_gen; 363 jj_consume_token(-1); 364 throw new ParseException(); 365 } 366 jj_consume_token(22); 367 op = ObjectProperty(); 368 jj_consume_token(23); 369 jj_consume_token(25); 370 domain = Concept(); 371 jj_consume_token(COMMAND_END); 372 {if (true) return df.getOWLObjectPropertyDomainAxiom(op, domain);} 373 throw new Error("Missing return statement in function"); 374 } 375 376 final public OWLDataPropertyDomainAxiom DatatypePropertyDomainAxiom() throws ParseException { 377 OWLDataProperty op; OWLClassExpression domain; 378 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 379 case 37: 380 jj_consume_token(37); 381 break; 382 case 38: 383 jj_consume_token(38); 384 break; 385 default: 386 jj_la1[5] = jj_gen; 387 jj_consume_token(-1); 388 throw new ParseException(); 389 } 390 jj_consume_token(22); 391 op = DatatypeProperty(); 392 jj_consume_token(23); 393 jj_consume_token(25); 394 domain = Concept(); 395 jj_consume_token(COMMAND_END); 396 {if (true) return df.getOWLDataPropertyDomainAxiom(op, domain);} 397 throw new Error("Missing return statement in function"); 398 } 399 400 final public OWLObjectPropertyRangeAxiom ObjectPropertyRangeAxiom() throws ParseException { 401 OWLObjectProperty op; OWLClassExpression range; 402 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 403 case 39: 404 jj_consume_token(39); 405 break; 406 case 40: 407 jj_consume_token(40); 408 break; 409 case 41: 410 jj_consume_token(41); 411 break; 412 default: 413 jj_la1[6] = jj_gen; 414 jj_consume_token(-1); 415 throw new ParseException(); 416 } 417 jj_consume_token(22); 418 op = ObjectProperty(); 419 jj_consume_token(23); 420 jj_consume_token(25); 421 range = Concept(); 422 jj_consume_token(COMMAND_END); 423 {if (true) return df.getOWLObjectPropertyRangeAxiom(op, range);} 424 throw new Error("Missing return statement in function"); 425 } 426 427 final public OWLDataPropertyRangeAxiom DatatypePropertyRangeAxiom() throws ParseException { 428 OWLDataProperty op; OWLDataRange range; 429 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 430 case 42: 431 jj_consume_token(42); 432 break; 433 case 43: 434 jj_consume_token(43); 435 break; 436 default: 437 jj_la1[7] = jj_gen; 438 jj_consume_token(-1); 439 throw new ParseException(); 440 } 441 jj_consume_token(22); 442 op = DatatypeProperty(); 443 jj_consume_token(23); 444 jj_consume_token(25); 445 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 446 case 44: 447 jj_consume_token(44); 448 range = df.getDoubleOWLDatatype(); 449 break; 450 case 45: 451 jj_consume_token(45); 452 range = df.getBooleanOWLDatatype(); 453 break; 454 case 46: 455 jj_consume_token(46); 456 range = df.getIntegerOWLDatatype(); 457 break; 458 default: 459 jj_la1[8] = jj_gen; 460 jj_consume_token(-1); 461 throw new ParseException(); 462 } 463 jj_consume_token(COMMAND_END); 464 {if (true) return df.getOWLDataPropertyRangeAxiom(op, range);} 465 throw new Error("Missing return statement in function"); 466 } 467 468 final public OWLClassExpression Concept() throws ParseException { 469 OWLClassExpression c,c1,c2; 470 OWLClass ac; 471 OWLObjectProperty ar; 472 OWLDataProperty dp; 473 OWLObjectProperty op; 474 String s; 475 OWLIndividual ind; 476 int i; 477 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 478 case TOP: 479 Top(); 480 {if (true) return df.getOWLThing();} 481 break; 482 case BOTTOM: 483 Bottom(); 484 {if (true) return df.getOWLNothing();} 485 break; 486 default: 487 jj_la1[9] = jj_gen; 488 if (jj_2_5(2)) { 489 ac = AtomicConcept(); 490 {if (true) return ac;} 491 } else if (jj_2_6(2147483647)) { 492 jj_consume_token(22); 493 c1 = Concept(); 494 And(); 495 c2 = Concept(); 496 jj_consume_token(23); 497 {if (true) return df.getOWLObjectIntersectionOf(c1,c2);} 498 } else if (jj_2_7(2147483647)) { 499 jj_consume_token(22); 500 c1 = Concept(); 501 Or(); 502 c2 = Concept(); 503 jj_consume_token(23); 504 {if (true) return df.getOWLObjectUnionOf(c1,c2);} 505 } else { 506 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 507 case EXISTS: 508 Exists(); 509 ar = ObjectProperty(); 510 jj_consume_token(COMMAND_END); 511 c = Concept(); 512 {if (true) return df.getOWLObjectSomeValuesFrom(ar,c);} 513 break; 514 case ALL: 515 All(); 516 ar = ObjectProperty(); 517 jj_consume_token(COMMAND_END); 518 c = Concept(); 519 {if (true) return df.getOWLObjectAllValuesFrom(ar,c);} 520 break; 521 case NOT: 522 Not(); 523 c = Concept(); 524 {if (true) return df.getOWLObjectComplementOf(c);} 525 break; 526 case GE: 527 GE(); 528 i = Integer(); 529 ar = ObjectProperty(); 530 jj_consume_token(COMMAND_END); 531 c = Concept(); 532 {if (true) return df.getOWLObjectMinCardinality(i,ar,c);} 533 break; 534 case LE: 535 LE(); 536 i = Integer(); 537 ar = ObjectProperty(); 538 jj_consume_token(COMMAND_END); 539 c = Concept(); 540 {if (true) return df.getOWLObjectMaxCardinality(i,ar,c);} 541 break; 542 default: 543 jj_la1[10] = jj_gen; 544 if (jj_2_8(4)) { 545 jj_consume_token(22); 546 dp = DatatypeProperty(); 547 jj_consume_token(47); 548 jj_consume_token(48); 549 jj_consume_token(23); 550 {if (true) return df.getOWLDataHasValue(dp, df.getOWLLiteral(true));} 551 } else if (jj_2_9(4)) { 552 jj_consume_token(22); 553 dp = DatatypeProperty(); 554 jj_consume_token(47); 555 jj_consume_token(49); 556 jj_consume_token(23); 557 {if (true) return df.getOWLDataHasValue(dp, df.getOWLLiteral(false));} 558 } else if (jj_2_10(4)) { 559 jj_consume_token(22); 560 op = ObjectProperty(); 561 jj_consume_token(50); 562 ind = Individual(); 563 jj_consume_token(23); 564 {if (true) return df.getOWLObjectHasValue(op, ind);} 565 } else { 566 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 567 case 22: 568 jj_consume_token(22); 569 dp = DatatypeProperty(); 570 jj_consume_token(51); 571 s = String(); 572 jj_consume_token(23); 573 {if (true) return df.getOWLDataHasValue(dp, df.getOWLLiteral(s));} 574 break; 575 default: 576 jj_la1[11] = jj_gen; 577 jj_consume_token(-1); 578 throw new ParseException(); 579 } 580 } 581 } 582 } 583 } 584 throw new Error("Missing return statement in function"); 585 } 586 587 final public void Or() throws ParseException { 588 jj_consume_token(OR); 589 } 590 591 final public void And() throws ParseException { 592 jj_consume_token(AND); 593 } 594 595 final public void Top() throws ParseException { 596 jj_consume_token(TOP); 597 } 598 599 final public void Bottom() throws ParseException { 600 jj_consume_token(BOTTOM); 601 } 602 603 final public void Exists() throws ParseException { 604 jj_consume_token(EXISTS); 605 } 606 607 final public void All() throws ParseException { 608 jj_consume_token(ALL); 609 } 610 611 final public void Not() throws ParseException { 612 jj_consume_token(NOT); 613 } 614 615 final public void GE() throws ParseException { 616 jj_consume_token(GE); 617 } 618 619 final public void LE() throws ParseException { 620 jj_consume_token(LE); 621 } 622 623 final public OWLClass AtomicConcept() throws ParseException { 624 String name; 625 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 626 case ID: 627 name = Id(); 628 break; 629 case STRING: 630 name = String(); 631 break; 632 default: 633 jj_la1[12] = jj_gen; 634 jj_consume_token(-1); 635 throw new ParseException(); 636 } 637 {if (true) return df.getOWLClass(IRI.create(getInternalURI(name)));} 638 throw new Error("Missing return statement in function"); 639 } 640 641 final public OWLDataProperty DatatypeProperty() throws ParseException { 642 String name; 643 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 644 case ID: 645 name = Id(); 646 break; 647 case STRING: 648 name = String(); 649 break; 650 default: 651 jj_la1[13] = jj_gen; 652 jj_consume_token(-1); 653 throw new ParseException(); 654 } 655 {if (true) return df.getOWLDataProperty(IRI.create(getInternalURI(name)));} 656 throw new Error("Missing return statement in function"); 657 } 658 659 final public OWLObjectProperty ObjectProperty() throws ParseException { 660 String name; 661 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 662 case ID: 663 name = Id(); 664 break; 665 case STRING: 666 name = String(); 667 break; 668 default: 669 jj_la1[14] = jj_gen; 670 jj_consume_token(-1); 671 throw new ParseException(); 672 } 673 {if (true) return df.getOWLObjectProperty(IRI.create(getInternalURI(name)));} 674 throw new Error("Missing return statement in function"); 675 } 676 677 final public OWLIndividual Individual() throws ParseException { 678 String name; 679 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 680 case ID: 681 name = Id(); 682 break; 683 case STRING: 684 name = String(); 685 break; 686 default: 687 jj_la1[15] = jj_gen; 688 jj_consume_token(-1); 689 throw new ParseException(); 690 } 691 {if (true) return df.getOWLNamedIndividual(IRI.create(getInternalURI(name)));} 692 throw new Error("Missing return statement in function"); 693 } 694 695 final public String Id() throws ParseException { 696 Token t; 697 t = jj_consume_token(ID); 698 // jjtThis.setId(t.image); 699 {if (true) return t.image;} 700 throw new Error("Missing return statement in function"); 701 } 702 703 final public double Double() throws ParseException { 704 Token t; 705 t = jj_consume_token(DOUBLE); 706 {if (true) return new Double(t.image);} 707 throw new Error("Missing return statement in function"); 708 } 709 710 final public int Integer() throws ParseException { 711 Token t; 712 t = jj_consume_token(NUMBER); 713 // jjtThis.setId(t.image); 714 // muss noch in Integer umgewandelt werden 715 {if (true) return new Integer(t.image);} 716 throw new Error("Missing return statement in function"); 717 } 718 719 final public String String() throws ParseException { 720 Token t; 721 String s; 722 t = jj_consume_token(STRING); 723 // jjtThis.setId(t.image); 724 // es werden sofort die Anfuehrungszeichen abgeschnitten 725 s = t.image; 726 s = s.substring(1, s.length() - 1); 727 {if (true) return s;} 728 throw new Error("Missing return statement in function"); 729 } 730 731 private boolean jj_2_1(int xla) { 732 jj_la = xla; jj_lastpos = jj_scanpos = token; 733 try { return !jj_3_1(); } 734 catch(LookaheadSuccess ls) { return true; } 735 finally { jj_save(0, xla); } 736 } 737 738 private boolean jj_2_2(int xla) { 739 jj_la = xla; jj_lastpos = jj_scanpos = token; 740 try { return !jj_3_2(); } 741 catch(LookaheadSuccess ls) { return true; } 742 finally { jj_save(1, xla); } 743 } 744 745 private boolean jj_2_3(int xla) { 746 jj_la = xla; jj_lastpos = jj_scanpos = token; 747 try { return !jj_3_3(); } 748 catch(LookaheadSuccess ls) { return true; } 749 finally { jj_save(2, xla); } 750 } 751 752 private boolean jj_2_4(int xla) { 753 jj_la = xla; jj_lastpos = jj_scanpos = token; 754 try { return !jj_3_4(); } 755 catch(LookaheadSuccess ls) { return true; } 756 finally { jj_save(3, xla); } 757 } 758 759 private boolean jj_2_5(int xla) { 760 jj_la = xla; jj_lastpos = jj_scanpos = token; 761 try { return !jj_3_5(); } 762 catch(LookaheadSuccess ls) { return true; } 763 finally { jj_save(4, xla); } 764 } 765 766 private boolean jj_2_6(int xla) { 767 jj_la = xla; jj_lastpos = jj_scanpos = token; 768 try { return !jj_3_6(); } 769 catch(LookaheadSuccess ls) { return true; } 770 finally { jj_save(5, xla); } 771 } 772 773 private boolean jj_2_7(int xla) { 774 jj_la = xla; jj_lastpos = jj_scanpos = token; 775 try { return !jj_3_7(); } 776 catch(LookaheadSuccess ls) { return true; } 777 finally { jj_save(6, xla); } 778 } 779 780 private boolean jj_2_8(int xla) { 781 jj_la = xla; jj_lastpos = jj_scanpos = token; 782 try { return !jj_3_8(); } 783 catch(LookaheadSuccess ls) { return true; } 784 finally { jj_save(7, xla); } 785 } 786 787 private boolean jj_2_9(int xla) { 788 jj_la = xla; jj_lastpos = jj_scanpos = token; 789 try { return !jj_3_9(); } 790 catch(LookaheadSuccess ls) { return true; } 791 finally { jj_save(8, xla); } 792 } 793 794 private boolean jj_2_10(int xla) { 795 jj_la = xla; jj_lastpos = jj_scanpos = token; 796 try { return !jj_3_10(); } 797 catch(LookaheadSuccess ls) { return true; } 798 finally { jj_save(9, xla); } 799 } 800 801 private boolean jj_3_6() { 802 if (jj_scan_token(22)) return true; 803 if (jj_3R_2()) return true; 804 if (jj_scan_token(14)) return true; 805 return false; 806 } 807 808 private boolean jj_3R_12() { 809 if (jj_scan_token(17)) return true; 810 if (jj_3R_4()) return true; 811 if (jj_scan_token(COMMAND_END)) return true; 812 if (jj_3R_2()) return true; 813 return false; 814 } 815 816 private boolean jj_3R_11() { 817 if (jj_scan_token(16)) return true; 818 if (jj_3R_4()) return true; 819 if (jj_scan_token(COMMAND_END)) return true; 820 if (jj_3R_2()) return true; 821 return false; 822 } 823 824 private boolean jj_3R_10() { 825 if (jj_scan_token(22)) return true; 826 if (jj_3R_2()) return true; 827 if (jj_scan_token(15)) return true; 828 if (jj_3R_2()) return true; 829 if (jj_scan_token(23)) return true; 830 return false; 831 } 832 833 private boolean jj_3R_9() { 834 if (jj_scan_token(22)) return true; 835 if (jj_3R_2()) return true; 836 if (jj_scan_token(14)) return true; 837 if (jj_3R_2()) return true; 838 if (jj_scan_token(23)) return true; 839 return false; 840 } 841 842 private boolean jj_3_4() { 843 if (jj_3R_2()) return true; 844 Token xsp; 845 xsp = jj_scanpos; 846 if (jj_scan_token(26)) { 847 jj_scanpos = xsp; 848 if (jj_scan_token(27)) return true; 849 } 850 return false; 851 } 852 853 private boolean jj_3R_18() { 854 if (jj_3R_26()) return true; 855 return false; 856 } 857 858 private boolean jj_3_3() { 859 if (jj_3R_2()) return true; 860 if (jj_scan_token(25)) return true; 861 return false; 862 } 863 864 private boolean jj_3_5() { 865 if (jj_3R_5()) return true; 866 return false; 867 } 868 869 private boolean jj_3R_8() { 870 if (jj_scan_token(13)) return true; 871 return false; 872 } 873 874 private boolean jj_3R_7() { 875 if (jj_scan_token(12)) return true; 876 return false; 877 } 878 879 private boolean jj_3R_2() { 880 Token xsp; 881 xsp = jj_scanpos; 882 if (jj_3R_7()) { 883 jj_scanpos = xsp; 884 if (jj_3R_8()) { 885 jj_scanpos = xsp; 886 if (jj_3_5()) { 887 jj_scanpos = xsp; 888 if (jj_3R_9()) { 889 jj_scanpos = xsp; 890 if (jj_3R_10()) { 891 jj_scanpos = xsp; 892 if (jj_3R_11()) { 893 jj_scanpos = xsp; 894 if (jj_3R_12()) { 895 jj_scanpos = xsp; 896 if (jj_3R_13()) { 897 jj_scanpos = xsp; 898 if (jj_3R_14()) { 899 jj_scanpos = xsp; 900 if (jj_3R_15()) { 901 jj_scanpos = xsp; 902 if (jj_3_8()) { 903 jj_scanpos = xsp; 904 if (jj_3_9()) { 905 jj_scanpos = xsp; 906 if (jj_3_10()) { 907 jj_scanpos = xsp; 908 if (jj_3R_16()) return true; 909 } 910 } 911 } 912 } 913 } 914 } 915 } 916 } 917 } 918 } 919 } 920 } 921 } 922 return false; 923 } 924 925 private boolean jj_3R_27() { 926 if (jj_scan_token(ID)) return true; 927 return false; 928 } 929 930 private boolean jj_3R_20() { 931 if (jj_3R_26()) return true; 932 return false; 933 } 934 935 private boolean jj_3R_17() { 936 if (jj_3R_27()) return true; 937 return false; 938 } 939 940 private boolean jj_3R_3() { 941 Token xsp; 942 xsp = jj_scanpos; 943 if (jj_3R_17()) { 944 jj_scanpos = xsp; 945 if (jj_3R_18()) return true; 946 } 947 return false; 948 } 949 950 private boolean jj_3R_24() { 951 if (jj_3R_26()) return true; 952 return false; 953 } 954 955 private boolean jj_3_2() { 956 Token xsp; 957 xsp = jj_scanpos; 958 if (jj_scan_token(18)) jj_scanpos = xsp; 959 if (jj_3R_4()) return true; 960 if (jj_scan_token(22)) return true; 961 if (jj_3R_3()) return true; 962 if (jj_scan_token(24)) return true; 963 return false; 964 } 965 966 private boolean jj_3R_19() { 967 if (jj_3R_27()) return true; 968 return false; 969 } 970 971 private boolean jj_3R_4() { 972 Token xsp; 973 xsp = jj_scanpos; 974 if (jj_3R_19()) { 975 jj_scanpos = xsp; 976 if (jj_3R_20()) return true; 977 } 978 return false; 979 } 980 981 private boolean jj_3_1() { 982 if (jj_3R_2()) return true; 983 if (jj_scan_token(22)) return true; 984 if (jj_3R_3()) return true; 985 if (jj_scan_token(23)) return true; 986 if (jj_scan_token(COMMAND_END)) return true; 987 return false; 988 } 989 990 private boolean jj_3R_22() { 991 if (jj_3R_26()) return true; 992 return false; 993 } 994 995 private boolean jj_3R_23() { 996 if (jj_3R_27()) return true; 997 return false; 998 } 999 1000 private boolean jj_3R_6() { 1001 Token xsp; 1002 xsp = jj_scanpos; 1003 if (jj_3R_23()) { 1004 jj_scanpos = xsp; 1005 if (jj_3R_24()) return true; 1006 } 1007 return false; 1008 } 1009 1010 private boolean jj_3R_21() { 1011 if (jj_3R_27()) return true; 1012 return false; 1013 } 1014 1015 private boolean jj_3R_5() { 1016 Token xsp; 1017 xsp = jj_scanpos; 1018 if (jj_3R_21()) { 1019 jj_scanpos = xsp; 1020 if (jj_3R_22()) return true; 1021 } 1022 return false; 1023 } 1024 1025 private boolean jj_3R_26() { 1026 if (jj_scan_token(STRING)) return true; 1027 return false; 1028 } 1029 1030 private boolean jj_3R_16() { 1031 if (jj_scan_token(22)) return true; 1032 if (jj_3R_6()) return true; 1033 if (jj_scan_token(51)) return true; 1034 if (jj_3R_26()) return true; 1035 if (jj_scan_token(23)) return true; 1036 return false; 1037 } 1038 1039 private boolean jj_3_10() { 1040 if (jj_scan_token(22)) return true; 1041 if (jj_3R_4()) return true; 1042 if (jj_scan_token(50)) return true; 1043 if (jj_3R_3()) return true; 1044 if (jj_scan_token(23)) return true; 1045 return false; 1046 } 1047 1048 private boolean jj_3_9() { 1049 if (jj_scan_token(22)) return true; 1050 if (jj_3R_6()) return true; 1051 if (jj_scan_token(47)) return true; 1052 if (jj_scan_token(49)) return true; 1053 if (jj_scan_token(23)) return true; 1054 return false; 1055 } 1056 1057 private boolean jj_3_8() { 1058 if (jj_scan_token(22)) return true; 1059 if (jj_3R_6()) return true; 1060 if (jj_scan_token(47)) return true; 1061 if (jj_scan_token(48)) return true; 1062 if (jj_scan_token(23)) return true; 1063 return false; 1064 } 1065 1066 private boolean jj_3R_15() { 1067 if (jj_scan_token(20)) return true; 1068 if (jj_3R_25()) return true; 1069 if (jj_3R_4()) return true; 1070 if (jj_scan_token(COMMAND_END)) return true; 1071 if (jj_3R_2()) return true; 1072 return false; 1073 } 1074 1075 private boolean jj_3R_14() { 1076 if (jj_scan_token(19)) return true; 1077 if (jj_3R_25()) return true; 1078 if (jj_3R_4()) return true; 1079 if (jj_scan_token(COMMAND_END)) return true; 1080 if (jj_3R_2()) return true; 1081 return false; 1082 } 1083 1084 private boolean jj_3R_25() { 1085 if (jj_scan_token(NUMBER)) return true; 1086 return false; 1087 } 1088 1089 private boolean jj_3_7() { 1090 if (jj_scan_token(22)) return true; 1091 if (jj_3R_2()) return true; 1092 if (jj_scan_token(15)) return true; 1093 return false; 1094 } 1095 1096 private boolean jj_3R_13() { 1097 if (jj_scan_token(18)) return true; 1098 if (jj_3R_2()) return true; 1099 return false; 1100 } 1101 1102 /** Generated Token Manager. */ 1103 public KBParserTokenManager token_source; 1104 SimpleCharStream jj_input_stream; 1105 /** Current token. */ 1106 public Token token; 1107 /** Next token. */ 1108 public Token jj_nt; 1109 private int jj_ntk; 1110 private Token jj_scanpos, jj_lastpos; 1111 private int jj_la; 1112 private int jj_gen; 1113 final private int[] jj_la1 = new int[16]; 1114 static private int[] jj_la1_0; 1115 static private int[] jj_la1_1; 1116 static { 1117 jj_la1_init_0(); 1118 jj_la1_init_1(); 1119 } 1120 private static void jj_la1_init_0() { 1121 jj_la1_0 = new int[] {0xf07f3200,0xf0000000,0x40000,0xc000000,0x0,0x0,0x0,0x0,0x0,0x3000,0x1f0000,0x400000,0x200200,0x200200,0x200200,0x200200,}; 1122 } 1123 private static void jj_la1_init_1() { 1124 jj_la1_1 = new int[] {0xffd,0xffd,0x0,0x2,0x1c,0x60,0x380,0xc00,0x7000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; 1125 } 1126 final private JJCalls[] jj_2_rtns = new JJCalls[10]; 1127 private boolean jj_rescan = false; 1128 private int jj_gc = 0; 1129 1130 /** Constructor with InputStream. */ 1131 public KBParser(java.io.InputStream stream) { 1132 this(stream, null); 1133 } 1134 /** Constructor with InputStream and supplied encoding */ 1135 public KBParser(java.io.InputStream stream, String encoding) { 1136 try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } 1137 token_source = new KBParserTokenManager(jj_input_stream); 1138 token = new Token(); 1139 jj_ntk = -1; 1140 jj_gen = 0; 1141 for (int i = 0; i < 16; i++) jj_la1[i] = -1; 1142 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); 1143 } 1144 1145 /** Reinitialise. */ 1146 public void ReInit(java.io.InputStream stream) { 1147 ReInit(stream, null); 1148 } 1149 /** Reinitialise. */ 1150 public void ReInit(java.io.InputStream stream, String encoding) { 1151 try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } 1152 token_source.ReInit(jj_input_stream); 1153 token = new Token(); 1154 jj_ntk = -1; 1155 jj_gen = 0; 1156 for (int i = 0; i < 16; i++) jj_la1[i] = -1; 1157 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); 1158 } 1159 1160 /** Constructor. */ 1161 public KBParser(java.io.Reader stream) { 1162 jj_input_stream = new SimpleCharStream(stream, 1, 1); 1163 token_source = new KBParserTokenManager(jj_input_stream); 1164 token = new Token(); 1165 jj_ntk = -1; 1166 jj_gen = 0; 1167 for (int i = 0; i < 16; i++) jj_la1[i] = -1; 1168 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); 1169 } 1170 1171 /** Reinitialise. */ 1172 public void ReInit(java.io.Reader stream) { 1173 jj_input_stream.ReInit(stream, 1, 1); 1174 token_source.ReInit(jj_input_stream); 1175 token = new Token(); 1176 jj_ntk = -1; 1177 jj_gen = 0; 1178 for (int i = 0; i < 16; i++) jj_la1[i] = -1; 1179 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); 1180 } 1181 1182 /** Constructor with generated Token Manager. */ 1183 public KBParser(KBParserTokenManager tm) { 1184 token_source = tm; 1185 token = new Token(); 1186 jj_ntk = -1; 1187 jj_gen = 0; 1188 for (int i = 0; i < 16; i++) jj_la1[i] = -1; 1189 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); 1190 } 1191 1192 /** Reinitialise. */ 1193 public void ReInit(KBParserTokenManager tm) { 1194 token_source = tm; 1195 token = new Token(); 1196 jj_ntk = -1; 1197 jj_gen = 0; 1198 for (int i = 0; i < 16; i++) jj_la1[i] = -1; 1199 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); 1200 } 1201 1202 private Token jj_consume_token(int kind) throws ParseException { 1203 Token oldToken; 1204 if ((oldToken = token).next != null) token = token.next; 1205 else token = token.next = token_source.getNextToken(); 1206 jj_ntk = -1; 1207 if (token.kind == kind) { 1208 jj_gen++; 1209 if (++jj_gc > 100) { 1210 jj_gc = 0; 1211 for (int i = 0; i < jj_2_rtns.length; i++) { 1212 JJCalls c = jj_2_rtns[i]; 1213 while (c != null) { 1214 if (c.gen < jj_gen) c.first = null; 1215 c = c.next; 1216 } 1217 } 1218 } 1219 return token; 1220 } 1221 token = oldToken; 1222 jj_kind = kind; 1223 throw generateParseException(); 1224 } 1225 1226 static private final class LookaheadSuccess extends java.lang.Error { } 1227 final private LookaheadSuccess jj_ls = new LookaheadSuccess(); 1228 private boolean jj_scan_token(int kind) { 1229 if (jj_scanpos == jj_lastpos) { 1230 jj_la--; 1231 if (jj_scanpos.next == null) { 1232 jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken(); 1233 } else { 1234 jj_lastpos = jj_scanpos = jj_scanpos.next; 1235 } 1236 } else { 1237 jj_scanpos = jj_scanpos.next; 1238 } 1239 if (jj_rescan) { 1240 int i = 0; Token tok = token; 1241 while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; } 1242 if (tok != null) jj_add_error_token(kind, i); 1243 } 1244 if (jj_scanpos.kind != kind) return true; 1245 if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls; 1246 return false; 1247 } 1248 1249/** Get the next Token. */ 1250 final public Token getNextToken() { 1251 if (token.next != null) token = token.next; 1252 else token = token.next = token_source.getNextToken(); 1253 jj_ntk = -1; 1254 jj_gen++; 1255 return token; 1256 } 1257 1258/** Get the specific Token. */ 1259 final public Token getToken(int index) { 1260 Token t = token; 1261 for (int i = 0; i < index; i++) { 1262 if (t.next != null) t = t.next; 1263 else t = t.next = token_source.getNextToken(); 1264 } 1265 return t; 1266 } 1267 1268 private int jj_ntk() { 1269 if ((jj_nt=token.next) == null) 1270 return (jj_ntk = (token.next=token_source.getNextToken()).kind); 1271 else 1272 return (jj_ntk = jj_nt.kind); 1273 } 1274 1275 private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>(); 1276 private int[] jj_expentry; 1277 private int jj_kind = -1; 1278 private int[] jj_lasttokens = new int[100]; 1279 private int jj_endpos; 1280 1281 private void jj_add_error_token(int kind, int pos) { 1282 if (pos >= 100) return; 1283 if (pos == jj_endpos + 1) { 1284 jj_lasttokens[jj_endpos++] = kind; 1285 } else if (jj_endpos != 0) { 1286 jj_expentry = new int[jj_endpos]; 1287 for (int i = 0; i < jj_endpos; i++) { 1288 jj_expentry[i] = jj_lasttokens[i]; 1289 } 1290 jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) { 1291 int[] oldentry = (int[])(it.next()); 1292 if (oldentry.length == jj_expentry.length) { 1293 for (int i = 0; i < jj_expentry.length; i++) { 1294 if (oldentry[i] != jj_expentry[i]) { 1295 continue jj_entries_loop; 1296 } 1297 } 1298 jj_expentries.add(jj_expentry); 1299 break jj_entries_loop; 1300 } 1301 } 1302 if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind; 1303 } 1304 } 1305 1306 /** Generate ParseException. */ 1307 public ParseException generateParseException() { 1308 jj_expentries.clear(); 1309 boolean[] la1tokens = new boolean[52]; 1310 if (jj_kind >= 0) { 1311 la1tokens[jj_kind] = true; 1312 jj_kind = -1; 1313 } 1314 for (int i = 0; i < 16; i++) { 1315 if (jj_la1[i] == jj_gen) { 1316 for (int j = 0; j < 32; j++) { 1317 if ((jj_la1_0[i] & (1<<j)) != 0) { 1318 la1tokens[j] = true; 1319 } 1320 if ((jj_la1_1[i] & (1<<j)) != 0) { 1321 la1tokens[32+j] = true; 1322 } 1323 } 1324 } 1325 } 1326 for (int i = 0; i < 52; i++) { 1327 if (la1tokens[i]) { 1328 jj_expentry = new int[1]; 1329 jj_expentry[0] = i; 1330 jj_expentries.add(jj_expentry); 1331 } 1332 } 1333 jj_endpos = 0; 1334 jj_rescan_token(); 1335 jj_add_error_token(0, 0); 1336 int[][] exptokseq = new int[jj_expentries.size()][]; 1337 for (int i = 0; i < jj_expentries.size(); i++) { 1338 exptokseq[i] = jj_expentries.get(i); 1339 } 1340 return new ParseException(token, exptokseq, tokenImage); 1341 } 1342 1343 /** Enable tracing. */ 1344 final public void enable_tracing() { 1345 } 1346 1347 /** Disable tracing. */ 1348 final public void disable_tracing() { 1349 } 1350 1351 private void jj_rescan_token() { 1352 jj_rescan = true; 1353 for (int i = 0; i < 10; i++) { 1354 try { 1355 JJCalls p = jj_2_rtns[i]; 1356 do { 1357 if (p.gen > jj_gen) { 1358 jj_la = p.arg; jj_lastpos = jj_scanpos = p.first; 1359 switch (i) { 1360 case 0: jj_3_1(); break; 1361 case 1: jj_3_2(); break; 1362 case 2: jj_3_3(); break; 1363 case 3: jj_3_4(); break; 1364 case 4: jj_3_5(); break; 1365 case 5: jj_3_6(); break; 1366 case 6: jj_3_7(); break; 1367 case 7: jj_3_8(); break; 1368 case 8: jj_3_9(); break; 1369 case 9: jj_3_10(); break; 1370 } 1371 } 1372 p = p.next; 1373 } while (p != null); 1374 } catch(LookaheadSuccess ls) { } 1375 } 1376 jj_rescan = false; 1377 } 1378 1379 private void jj_save(int index, int xla) { 1380 JJCalls p = jj_2_rtns[index]; 1381 while (p.gen > jj_gen) { 1382 if (p.next == null) { p = p.next = new JJCalls(); break; } 1383 p = p.next; 1384 } 1385 p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla; 1386 } 1387 1388 static final class JJCalls { 1389 int gen; 1390 Token first; 1391 int arg; 1392 JJCalls next; 1393 } 1394 1395}