diff --git a/.classpath b/.classpath index b4df3def3..61d3a4bd6 100644 --- a/.classpath +++ b/.classpath @@ -1,29 +1,13 @@ - - - - - + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..f4d30d4c8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/bin/ +/build/ \ No newline at end of file diff --git a/.project b/.project index a9c27c9a8..47ae031bf 100644 --- a/.project +++ b/.project @@ -16,7 +16,7 @@ * limitations under the License. --> - xalan-java-trunk + apache-xalan-j-2.7.1-maint-main diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index bfab4f073..5917cfb92 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,15 +1,18 @@ -#Thu Feb 19 19:22:46 EST 2009 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1 +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.3 +org.eclipse.jdt.core.compiler.compliance=1.8 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore -org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore -org.eclipse.jdt.core.compiler.source=1.3 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 diff --git a/KEYS b/KEYS index 34695237e..5d3013023 100644 --- a/KEYS +++ b/KEYS @@ -411,3 +411,93 @@ Q/M+Mf7tVQ4= =NDBw -----END PGP PUBLIC KEY BLOCK----- +Gary David Gregory (Code signing key) + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.11 (MingW32) + +mQENBE2kzuwBCACYV+G9yxNkSjAKSji0B5ipMGM74JAL1Ogtcu+993pLHHYsdXri +WWXi37x9PLjeHxw63mN26SFyrbMJ4A8erLB03PDjw0DEzAwiu9P2vSvL/RFxGBbk +cM0BTNXNR1rk8DpIzvXtejp8IHtD1qcDLTlJ8D0W3USebShDPo6NmMxTNuH0u99B +WHCMAdSa34wsg0ZpffwQmRxeA+ebrf2ydKupGkeZsKjkLlaXNkTVp1ghn5ts/lvg +KeHv1SJivWKCRmFlbPhBK4+mxSUSOPdoBNAfxA51QzZoPizSk0VbRz3YufYRVLFy +9vqPSorDmYJhCvn3f6+A38FS/j8VE+8obQ2rABEBAAG0O0dhcnkgRGF2aWQgR3Jl +Z29yeSAoQ29kZSBzaWduaW5nIGtleSkgPGdncmVnb3J5QGFwYWNoZS5vcmc+iQE4 +BBMBAgAiBQJNpM7sAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCG/cfi +oRJiy2vXCACU6jW2+XIWuWBKSmeowBMxlUMJFSq7QjLt+o6B1ZYClbzBLDKcxlnS +dF6v0jLhp71LozTde+HFI4/qIv6OO4UaGHin8Z1rNU/i5L07HkhLxcrbDoWhaSGD +buRsWCv9ljm5GCXyK9s6Uj7d4af9mDWaGhNFJJFIs+yqOvTwffoaB7y+2a1YWStZ +ZXDJ0KiHdY7xQ7bbYR/61MgvJslF1uX+u4jLTNmbU0tCXLtUrLd2VbJiAMFezqy6 +hV/ZxQLZoBPpr3FYhR2SIzNhQ30nj9AVcPgCCuLD49nx6Ad5CpcP8sTwb4aWk9GK ++Uu3Bfz4jTAvd9Q7TsRMt3NV+7sOGD4vuQENBE2kzuwBCACzeGpkd6X/xTfKDBWv +XgHOOKIJ2pht9XmtZZKiIj7LIiSwvSds/ZkoZKxAm7AY+KPh8Xjf968FtoUBQJvH +AG4rbowEqT7OOrJae2JcenH5qzaod7TpIPQVv+Ysz8I1wLlC6LzKRj1X99Hng6X+ +obsEasnPbmEEkuiZ/Sgi4vVC8SHkDmYt1Dx8jDgm53oUeWkEJO9LSI2zcrZhSgvg +1xa4Q4gY5UUK7gE4LbmGCjFlATuuW/0sryxu8zxph15gkn4Nqgk0CPMSjesMYEGO +sdDzfQXl2tXbt+Pe6mBoWh67MZ1v5zOq3EDtoSqDpWPxponAeaCuNDDFX44vGjfx +GE0tABEBAAGJAR8EGAECAAkFAk2kzuwCGwwACgkQhv3H4qESYsvEMAf/VGyqIEcw +4T2D3gZZ3ITkeoBevQdxBT/27xNvoWOZyGSzGYlRbRQrlo+uZsjfMc9MNvaSmxyy +4gLVbcdvQr3PF//GxphJ98W8pk9l+M57jfyHnnCumn7MO4o9ed+WuigN5oeuNJ6B +Iq3ff2o1DsrEvDChYOJEOeFuWxv+u7I2ABJJep7NbByM2n9PE8vlGU3zUBgWUBsk +6jT+klKnEyHE76WzegPLz3jtElTuyB7jRhjyQJu1yiJEMbs2zH8aJGObi5f8Jum4 +tILZuEAdoI0M3c3VRq12cz/vLy+9VXa/s//8IsGn88kjyyYqOy8WJEjoOXFh++dp +WiM7nZkgQcNi5A== +=0UFs +-----END PGP PUBLIC KEY BLOCK----- + +Mukul Gandhi (Code signing key) mukulg@apache.org + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v2.2.6 (Windows) + +mQINBFrVrw4BEADaSqFLnW5IvKF7CaJXHpz2K94WTZr5vXg8sGE5r7XTi+91BqrU +VCVanxkKs/dEy7O0QAnkGNaF6nT/deHZVU6FGTUVcj7GtDXd/8Upj5H5Yhkvf8nO +U50U/W427OuLAbtKK06zUXQQq7jNUC5DEQNOA2amqKsSGCzeLticjOB/PIaFSAE7 +vLYPXdVZVA0/+c8tI98vt0LH/dC0FK8Q/YQLGLvDrrnkLqZ8Q/G27BYvJA0uBVvD +7oC7uivXE87Qqy489DWI/zTciVgm8LwwOOgACVc0WzkHI9qX/Dmc27CjowCacW8O ++8VS1QVpq61L7y6vCg8dnL78Y3E+0MbvbVz7MpJKb9f7hxNHg6UwUVHweR+o2oXV +75EMHQDN1vRWJ0gQgGOU479jECp1Iu52T2cL6qr5QDnmwb8G4LZUp3edJmlGQ+DO +kSXJSSG+LtwdmwB/MwwyP6u7PKLKzE5Vn+zXyfJq5IHQmh9QlBatPcRrzFmKg4o1 +vI23xe09edfqSRPEfpLTa3h1CZPSOcu/93SteENslFKQ5SZIOyXK3RTz4jjJ6gMD +W9FKGq5ntUTZHWiXJdxtr1cnt/SKJOsUK2OwTgD13EPYFonckbrPst4OSFFWUkba +zIiENlbgkRKnQC06/bnBAfLC4h3W9AxxseVLVD7COB9fbJzGcLCsyo7mewARAQAB +tDNNdWt1bCBHYW5kaGkgKENPREUgU0lHTklORyBLRVkpIDxtdWt1bGdAYXBhY2hl +Lm9yZz6JAk4EEwEIADgWIQRNj7Vy+2rc/WnL/g17JYamteJcPQUCWtWvDgIbAwUL +CQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRB7JYamteJcPelTEAChRbuWaFsbJMs/ +qQNO0ALcqAKZvjnzB2Ne3qjYBT/3ptq86HSOBbuT1T/YAKUPN+ETR9Y7ib05x2qN +pcLOhJJTNApNPcczNXKLokn4fojv70wFykRsm0OPp4/+gvtY9d/c7OPEIv1nLxOP +zV7IJUX6JEXMuuUBAQ8XNFjy9ObRmQ3JTM3dvtsXNMqwpcsF3p4YvTTq7M3wKEJk +J+d6DV48t0YNjDSmboZ1eb8NbBo6xGAUb42RuolJ8PtanDRjSUgCHPqSjn4x5F0H +W/+kdoFybORCMCrVdKh1x4/8MLWLToC3aIaY1Dw51p9Li64NGHsxCBur1wlX/hAZ +99Zy0GJcayuv9BPRG5lHraIwI0MhpYzmWL6xcOTOyWUOl8U5M/uaMkXlCS6WXdjz +SrJx29y+1dH6mykRTjIQTBa+fsH7duJjiXlo9L8AYbXX6BiwImNiLHVdx6XHwEKP +qDnQNuUFWuj4I2sU7Di0NNPpNemyDvGFlLd+472qD1K3M6ck0BMN+qp5n1gMcwUr +X8cW40PBp5N14nghGiMVzA8QwcU62MCgu5Wo5yITKrZS3rf5vncRFNZ0yA49JqyF +ypTWsJRE5iDIWYCvsQd0fICudxU5zRkaMlIUr8Yz+MjDITZ0YeDLrNDtyU+IE20W +NpNXkhMSUHy6Vz772b3ejQt7Dg1Nd7kCDQRa1a8OARAA6tfcOXamaYMCf9bX6w9Q +ggrmLmVJEUYbjMMlqg7jn1uatI1Fl0YPey1SJCKV52fc0OxX6+7iXlJhLc8q+tsx +/9ojgbEetm85qlFBs7A2x1F/G4nXOi1LJbxDvytXonSn0YSKXpV7zLHnFz2/9KuK +gi7YH41RmvYf/enLh2D8cZMApBfdaB+ZfiooMg7Flr9AHpqk5/UrV4vQZ1mkiiT+ +EXar5rygRP4DZKgBow6RWsJnDE2FKCh4UFzcjeQ0IGhh0iIldCT32jwJB8HDPamQ ++1WAiEzzCH0OOZ1yxiyVSXor+KFpmtnaJlWzUJMm/K6W/6aD9sikY1pA8bfOC0gz +BU7/FZ76rGHgfDAL136lqUzQ54BXdmhM/hTv9VBmZ5JHbjm6xdF9Msr/QI7sRbms +mgjqOF6IJk4vD7u4sIRYQlHJSsxJyBCu3sbKlHv4RZ/Pun6Sxj1fxO/NisQX3sdm +pMwtZSCaBnx/Xlm/DRQKHhWhRcZ+4efeIWY1WcBvH/LgZYJhi5p9PxSLYvtjY83H +iFH1k1v+fZk5c06iwYB3WQJkUfjXIWAPbSHuVuQLq2eZN1Slkd1BncSFYEEgtFl8 +I+UwmrqBTdONMRGkLjezrjnFa1uSBiEHnyyD6PMP3PPsFzqSEYh/E1Kna7jtaJky +ZD5SpLdlvFnS4dYOzzGwhY8AEQEAAYkCNgQYAQgAIBYhBE2PtXL7atz9acv+DXsl +hqa14lw9BQJa1a8OAhsMAAoJEHslhqa14lw9hOgQAJXFChQ394HeivVGTP3Lc0fY +WOBceE9+8xWn6gjFf2SOVlSW7TlBrOGBwAzgeGDWKAP5Js/S2i8LlxTzWA0n7t1T +zMEstkIjEEm5rkSdZ6GkSXQuQkEuiD9fVq8wMjdOKcgRzPq5CUYBFoOPm4r1ZMBc +uMg4fFn3nIHLALdi8hjeJENsl7e9cf7pct9ZmMARgF9jFPPcZbpu7THNgheXnxYW +bzYMNHVV9NkmZA1nJcGTLXao8i0dIQwFyg91cyTfc5iI7EQP+SXUACiOWlZ6GO2S +EcY6CR4g4obg9lBzEPs2uiDRdxWLyD66gbP2XDGPiAsg8LM43Wxa4hDPjXHp9Pig +tPfamxqdl13a8JvbS9hX6wvqS5dbrJfRuxejjGG+LI2cAcWSnT1gCQJWEnxXdzkh +Y6E4aiI6xNw7Xek7rL7DJKe3bVcMcUKI7rLQJor6Gq9ESuTbe73eJdkWTK1cWSWs +StTfzMWwq22VjOZCHz7p/h5zQvuj+oeeJb1wdMn65FjRp6VCmZFwUAphV4tS/Ihe +vVJJKMjIMdUrqDwRhUlt2JLIcjQov00nJ6/SC5AAY5m9jB0LhIHNvXHXPrfxeNEH +otQEdxhoQJS4bxa+pEztFxSkOyHLYya53TVZmGDPW1oMnghHKMA9FLvypQU3CsXM +6CMlHiO/MH1/Ktz2a7NW +=hMIE +-----END PGP PUBLIC KEY BLOCK----- + diff --git a/LICENSE.txt b/LICENSE.txt index 762701ce9..f0738e25f 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -201,9 +201,15 @@ xml-apis.jar - Xerces-Java 2 XML Parser. Source: http://xerces.apache.org/ Used by: Xalan-Java 2 and release copy of Xerces-Java 2 +The license above also applies to the jar file +bsf.jar - Beans Scripting Framework (BSF) +Source: https://commons.apache.org/proper/commons-bsf/ +Used by: Xalan-Java 2's non Java extensions - - +The license above also applies to the jar file +commons-logging-1.2.jar - Apache Commons Logging +Source: https://commons.apache.org/proper/commons-logging/ +Used by: Xalan-Java 2's non Java extensions @@ -682,3 +688,387 @@ Used by: Xalan-Java 2, Xalan-C++ * . */ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + +The following license applies to the jar file +rhino-1.7.14.jar - JavaScript implementation in Java +Source: https://github.com/mozilla/rhino +Used by: Xalan-Java 2's non Java extensions + +<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< +The majority of Rhino is licensed under the MPL 2.0: + +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> diff --git a/NOTICE.txt b/NOTICE.txt index b3fef4252..7147df727 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -4,7 +4,7 @@ ========================================================================= Apache Xalan (Xalan XSLT processor) - Copyright 1999-2012 The Apache Software Foundation + Copyright 1999-2023 The Apache Software Foundation Apache Xalan (Xalan serializer) Copyright 1999-2012 The Apache Software Foundation @@ -44,14 +44,19 @@ - Bytecode Engineering Library - see LICENSE.txt - Regular Expression - see LICENSE.txt - Ant - see LICENSE.txt - - Stylebook doc tool - see LICENSE.txt + - Stylebook doc tool - see LICENSE.txt + - Beans Scripting Framework (BSF) - see LICENSE.txt + - Commons Logging - see LICENSE.txt - Elliot Joel Berk and C. Scott Ananian - Lexical Analyzer Generator (JLex) - see LICENSE.txt + + - Mozilla Foundation + - Rhino: JavaScript implementation in Java - see LICENSE.txt ========================================================================= Apache Xerces Java - Copyright 1999-2006 The Apache Software Foundation + Copyright 1999-2022 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). diff --git a/README b/README new file mode 100644 index 000000000..f8d13c310 --- /dev/null +++ b/README @@ -0,0 +1,137 @@ + + +Copyright 1999-2023 The Apache Software Foundation + +Authors: + Gary Gregory + Joe Kesselman + Mukul Gandhi + +This file primarily, contains instructions to the person(s) who shall be making an Apache XalanJ +release for distribution, along with the instructions about how to test XalanJ release before +recommending the release for distribution. + +The details mentioned within this file, may also be used, by XalanJ source distribution users to +build and test XalanJ from the source distribution (except that, "git clone" steps as mentioned +within this file, might not be required to be run by XalanJ source distribution users). + +(1) Steps to build the XalanJ release + +1) Do a git clone, of the relevant XalanJ branches: + +git clone --single-branch https://gitbox.apache.org/repos/asf/xalan-java.git -b xalan-j_2_7_1_maint + +git clone https://gitbox.apache.org/repos/asf/xalan-test.git + +This creates two folders: xalan-java and xalan-test. These folders need to be parallel to +each other, to be able to follow the XalanJ build and tests steps as described in this document, +for making a XalanJ release for distribution. + +2) Set JAVA_HOME and ANT_HOME environment variables, for example on Windows: + +set JAVA_HOME=C:\Program Files\Eclipse Adoptium\jdk-8.0.352.8-hotspot\ + +set ANT_HOME=C:\java\apache-ant-1.10.12 + +3) Run the command, "build clean fulldist" from folder xalan-java. + +For XalanJ source distribution users, this command needs to be run from, the root +of the XalanJ source distribution folder (i.e, from the source distribution folder, +which contains folders "src", "tools" etc). + +(2) Steps to run the XalanJ tests, on XalanJ implementation + +Note that, for XalanJ source distribution users, XalanJ implementation shall be +produced (that XalanJ source distribution users, might want to test) by running +the build command "build clean fulldist" from the root of the XalanJ source +distribution folder. + +1) Go to the XalanJ tests repos's, local git clone folder: +cd ..\xalan-test + +For XalanJ source distribution users, xalan-test folder is located at the root of the XalanJ +source distribution folder (i.e, parallel to folders "src", "tools" etc within the main XalanJ +codebase folder location), from where XalanJ source distribution users may run XalanJ +tests, by using the "build" script located at this folder location. + +2) Set JAVA_HOME and ANT_HOME environment variables, for example: + +set JAVA_HOME=C:\Program Files\Eclipse Adoptium\jdk-8.0.352.8-hotspot\ + +set ANT_HOME=C:\java\apache-ant-1.10.12 + +3) Run the command "build clean jar" from folder xalan-test. This produces +the file testxsl.jar that acts as main XalanJ test driver, within folder xalan-test/java/build. + +4) Run the necessary XalanJ tests as follows, + +The tests described below within points 4.1, 4.2, 4.3 need to be run from folder xalan-test. + +4.1 Run the ant target "smoketest", using following two commands in sequence shown below + +build extensions.classes + +build smoketest + +The final result of the command "build smoketest" should be following, + +smoketest-pass: + [echo] [minitest] CONGRATULATIONS! The Smoketest passed! + +4.2 Run the ant target "apitest", using following command + +build apitest + +The final result of the command "build apitest" should be following, + +apitest-pass-file-check: + [echo] [minitest] CONGRATULATIONS! The api tests passed! + +4.3 Run the ant target "conf.xsltc", using the following command + +build conf.xsltc + +The final result of the command "build conf.xsltc" should be following, + +[echo] [minitest] CONGRATULATIONS! The conf.xsltc tests passed! + +The XalanJ XSLTC processor, producing compiled translets, is known to have certain issues +as summarized by the following jira tickets, for the respective mentioned XalanJ conf.xsltc +test cases as mentioned below (users shall currently see, these xalanj test cases as failing, +within the test build conf.xsltc's output). + +1) output63 https://issues.apache.org/jira/browse/XALANJ-2642 +2) idkey49 https://issues.apache.org/jira/browse/XALANJ-2640 +3) math111 https://issues.apache.org/jira/browse/XALANJ-2641 +4) whitespace35 https://issues.apache.org/jira/browse/XALANJ-2643 + +These XSLT transformation issues, do not exist with the XalanJ interpretive processor. + +4.4 From folder xalan-test/tests/2.7.3_release, run the batch file 2.7.3_release.bat (for Windows) or +shell script 2.7.3_release.sh (for Linux) to run certain tests, specific to XalanJ 2.7.3 and higher versions. + +The final result of running this tests batch file/shell script (point 4.4), for these test's success should +be following, +The xalanj integer truncation bug fix test passed! +The test case passed [xalan_interpretive : jira_xalanj_2584]! +The test case passed [xalan_xsltc : jira_xalanj_2584]! +The test case passed [xalan_interpretive : jira_xalanj_2623]! +The test case passed [xalan_xsltc : jira_xalanj_2623]! + +Users may read information within the batch file 2.7.3_release.bat or shell script 2.7.3_release.sh, to know +more about these tests (i.e, point 4.4). diff --git a/build.bat b/build.bat old mode 100755 new mode 100644 index 1281e4604..25c89b866 --- a/build.bat +++ b/build.bat @@ -17,64 +17,54 @@ rem = See the License for the specific language governing permissions and rem = limitations under the License. rem ========================================================================== rem -rem build.bat: Build Xalan-J 2.x using Ant +rem build.bat: Build Xalan-J 2.x using Ant +rem Author: XalanJ team +rem rem Usage: build [ant-options] [targets] +rem rem Setup: -rem - you should set JAVA_HOME -rem - you can set ANT_HOME if you use your own Ant install -rem - JAVA_OPTS is added to the java command line -rem - PARSER_JAR may be set to use alternate parser (default:lib\xercesImpl.jar) +rem 1) You must set JAVA_HOME +rem +rem 2) You can set ANT_HOME if you use your own Ant install + echo. echo Xalan-J 2.x Build -echo ------------- +echo ----------------- -if not "%JAVA_HOME%" == "" goto setant -:noJavaHome -rem Default command used to call java.exe; hopefully it's on the path here -if "%_JAVACMD%" == "" set _JAVACMD=java -echo. -echo Warning: JAVA_HOME environment variable is not set. -echo If build fails because sun.* classes could not be found -echo you will need to set the JAVA_HOME environment variable -echo to the installation directory of java. -echo. +if "%JAVA_HOME%"=="" goto noJavaHome -:setant -rem Default command used to call java.exe or equivalent -if "%_JAVACMD%" == "" set _JAVACMD=%JAVA_HOME%\bin\java +if exist "%JAVA_HOME%\lib\tools.jar" ( + set _CLASSPATH=%JAVA_HOME%\lib\tools.jar +) -rem Default _ANT_HOME to Xalan's checked-in copy if not set -set _ANT_HOME=%ANT_HOME% -if "%_ANT_HOME%" == "" set _ANT_HOME=. +set _JAVACMD=%JAVA_HOME%\bin\java -rem Default locations of jars we depend on to run Ant on our build.xml file -rem Set our local vars to all start with _underscore -set _ANT_JAR=%ANT_JAR% -if "%_ANT_JAR%" == "" set _ANT_JAR=tools\ant.jar -set _PARSER_JAR=%PARSER_JAR% -if "%_PARSER_JAR%" == "" set _PARSER_JAR=lib\xercesImpl.jar -set _XML-APIS_JAR=%XML-APIS_JAR% -if "%_XML-APIS_JAR%" == "" set _XML-APIS_JAR=lib\xml-apis.jar +rem Default ANT_HOME to the one what user has set +if not "%ANT_HOME%"=="" set _ANT_HOME=%ANT_HOME% +if "%ANT_HOME%"=="" set _ANT_HOME=. -rem Attempt to automatically add system classes to _CLASSPATH -rem Use _underscore prefix to not conflict with user's settings -set _CLASSPATH=%CLASSPATH% -if exist "%JAVA_HOME%\lib\tools.jar" set _CLASSPATH=%CLASSPATH%;%JAVA_HOME%\lib\tools.jar -if exist "%JAVA_HOME%\lib\classes.zip" set _CLASSPATH=%CLASSPATH%;%JAVA_HOME%\lib\classes.zip -set _CLASSPATH=%_ANT_JAR%;%_XML-APIS_JAR%;%_PARSER_JAR%;%_CLASSPATH% +if exist "%_ANT_HOME%\tools\ant.jar" ( + set _ANT_JARS=%_ANT_HOME%\tools\ant.jar +) else ( + set _ANT_JARS=%_ANT_HOME%\lib\ant.jar;%_ANT_HOME%\lib\ant-launcher.jar +) + +set _CLASSPATH=%_CLASSPATH%;%_ANT_JARS% + +set XERCES_ENDORSED_DIR_PATH=lib\endorsed @echo on -"%_JAVACMD%" -mx64m %JAVA_OPTS% -Dant.home="%ANT_HOME%" -classpath "%_CLASSPATH%" org.apache.tools.ant.Main %1 %2 %3 %4 %5 %6 %7 %8 %9 +"%_JAVACMD%" -mx1024m -Djava.endorsed.dirs=%XERCES_ENDORSED_DIR_PATH% -classpath "%_CLASSPATH%" org.apache.tools.ant.Main %1 %2 %3 %4 %5 %6 %7 %8 %9 @echo off goto end +:noJavaHome +echo Warning: JAVA_HOME environment variable is not set + :end rem Cleanup environment variables set _JAVACMD= set _CLASSPATH= set _ANT_HOME= -set _ANT_JAR= -set _PARSER_JAR= -set _XML-APIS_JAR= - +set _ANT_JARS= diff --git a/build.sh b/build.sh index 4e75ee15c..4f7ac97c1 100755 --- a/build.sh +++ b/build.sh @@ -1,12 +1,11 @@ #!/bin/sh # #========================================================================= -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at +# Copyright 2001-2023 The Apache Software Foundation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # @@ -17,57 +16,75 @@ # limitations under the License. #========================================================================= # -# Name: build.sh Build Xalan-J 2.x using Ant -# Author: Shane Curcuru +# Name: build.sh +# Author: Joe Kesselman +# Fresh port from Mukul Gandhi's revised build.bat. +# WARNING: This currently does not include the hooks needed +# to make the script compatable with cygwin (unix/Linux shell +# and commands ported to run under Windows). See +# deprecated_build.sh to see how we handled the cygwin +# syntax differences back in 2001. These days, Windows users +# are more likely to use WSL, which simplifies matters. -# Alternatively, you can just call "ant" +# See: build.xml -echo "Xalan-J 2.x Build" -echo "-------------" +# Setup: +# 1) You must set JAVA_HOME, for example, +# $ export JAVA_HOME=/etc/alternatives/java_sdk -_JAVACMD=$JAVA_HOME/bin/java -if [ "$JAVA_HOME" = "" ] ; then - echo "Warning: JAVA_HOME environment variable is not set." - _JAVACMD=java -fi +# 2) You can set ANT_HOME if you use your own Ant install, for example, +# $ export ANT_HOME=/usr/share/ant -# Default locations of jars we depend on to run Ant on our build.xml file -if [ "$ANT_HOME" = "" ] ; then - ANT_HOME=. -fi -if [ "$ANT_JAR" = "" ] ; then - ANT_JAR=./tools/ant.jar +echo +echo Xalan-J test automation build +echo ----------------------------- + +if [ "$1" = "-h" ]; then + echo build.sh - executes Xalan Java-based test automation + echo Usage: build [target] [-D options] + echo Example: build api -DtestClass=TransformerAPITest -Dqetest.loggingLevel=30 + echo + echo You MUST export the JAVA_HOME environment variable to point to the JDK + echo You CAN export ANT_HOME environment variable if you use your own Ant install + + exit 1 fi -if [ "$PARSER_JAR" = "" ] ; then - PARSER_JAR=./lib/xercesImpl.jar + +if [ "$JAVA_HOME" = "" ]; then + echo Warning: JAVA_HOME environment variable is not exported + echo You may have meant to set it to /etc/alternatives/java_sdk + exit 1 fi -if [ "$XML_APIS_JAR" = "" ] ; then - XML_APIS_JAR=./lib/xml-apis.jar +if [ -f "$JAVA_HOME/lib/tools.jar" ]; then + CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar fi -# Use _underscore prefix to not conflict with user's settings -# Default to UNIX-style pathing -CLPATHSEP=: -# if we're on a Windows box make it ; -uname | grep WIN && CLPATHSEP=\; -_CLASSPATH="$ANT_JAR${CLPATHSEP}$XML_APIS_JAR${CLPATHSEP}$PARSER_JAR${CLPATHSEP}$CLASSPATH" +JAVACMD=$JAVA_HOME/bin/java -# Attempt to automatically add system classes to _CLASSPATH -if [ -f $JAVA_HOME/lib/tools.jar ] ; then - _CLASSPATH=${_CLASSPATH}${CLPATHSEP}${JAVA_HOME}/lib/tools.jar -fi +CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar -if [ -f $JAVA_HOME/lib/classes.zip ] ; then - _CLASSPATH=${_CLASSPATH}${CLPATHSEP}${JAVA_HOME}/lib/classes.zip +# Since Linux has scoped environments, we don't need explicit temporary vars. +# Default is to use a copy of ant bundled with xalan-java. +if [ "$ANT_HOME" = "" ]; then + ANT_HOME=. fi +# Check user's ANT_HOME to make sure it actually has what we need +if [ -f "$ANT_HOME/tools/ant.jar" ]; then + ANT_JARS=$ANT_HOME/tools/ant.jar +else + ANT_JARS=$ANT_HOME/lib/ant.jar:$ANT_HOME/lib/ant-launcher.jar +fi -echo "Starting Ant with targets: $@" -echo " ...with classpath: $_CLASSPATH" - -"$_JAVACMD" $JAVA_OPTS -Dant.home=$ANT_HOME -classpath "$_CLASSPATH" org.apache.tools.ant.Main $@ +CLASSPATH=$CLASSPATH:$ANT_JARS +XERCES_ENDORSED_DIR_PATH=lib/endorsed +XALAN_BUILD_DIR_PATH=../xalan-java/build:../build +# Reminder: Note $* versus $@ distinction +echo Running:$JAVACMD -mx1024m -Djava.endorsed.dirs=$XERCES_ENDORSED_DIR_PATH -classpath "$CLASSPATH" org.apache.tools.ant.Main "$@" +$JAVACMD -mx1024m -Djava.endorsed.dirs=$XERCES_ENDORSED_DIR_PATH -classpath "$CLASSPATH" org.apache.tools.ant.Main "$@" +echo "build.sh complete!" diff --git a/build.xml b/build.xml index 13f925c95..55c7d38e5 100644 --- a/build.xml +++ b/build.xml @@ -62,26 +62,30 @@ $Id$ - - + + + + + - + - - + + - + + @@ -94,19 +98,19 @@ $Id$ - + - + - - + + - + @@ -118,6 +122,13 @@ $Id$ + + + + + + + @@ -206,14 +217,12 @@ $Id$ - - @@ -222,27 +231,20 @@ $Id$ - - - - - - - + + - + @@ -261,7 +263,7 @@ $Id$ - + @@ -279,13 +281,14 @@ $Id$ - + - + - + + @@ -295,12 +298,15 @@ $Id$ - + + + + - + @@ -373,7 +379,9 @@ $Id$ + debug="${build.debug}" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> @@ -400,7 +408,9 @@ $Id$ + debug="${build.debug}" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> @@ -435,7 +445,6 @@ $Id$ - @@ -446,7 +455,9 @@ $Id$ + debug="${build.debug}" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> @@ -509,7 +520,9 @@ $Id$ destdir="${build.classes}" includes="${xsltc.reldir}/**/*.java" excludes="${serializer.reldir}/**/*.java" - debug="${build.debug}"> + debug="${build.debug}" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> @@ -522,7 +535,9 @@ $Id$ + debug="${build.debug}" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> @@ -723,77 +738,106 @@ $Id$ + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + nowarn="${compiler.nowarn}"> + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> + depends="servlet.jardepends,xsltc.applet.nojardepends, + xsltc.ejb.jardepends,xsltc.servlet.jardepends"/> @@ -817,16 +861,16 @@ $Id$ - + - + - @@ -835,8 +879,11 @@ $Id$ - + bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> + + @@ -873,12 +920,16 @@ $Id$ + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"/> + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"/> @@ -890,7 +941,9 @@ $Id$ + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"/> @@ -899,13 +952,17 @@ $Id$ - + - + + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> + + @@ -916,13 +973,17 @@ $Id$ - + - + + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> + + @@ -931,13 +992,17 @@ $Id$ - + - + + debug="${build.debug}" bootclasspathref="xslt.boot.class.path" + target="${compiler.target}" source="${compiler.source}" + classpath="${build.xalan.jar}:${servlet-api.jar}" + nowarn="${compiler.nowarn}"> + @@ -1113,13 +1178,14 @@ $Id$ + - + - + + @@ -1276,12 +1343,19 @@ $Id$ - + - + + + + + + + + @@ -1301,13 +1375,38 @@ $Id$ - + + + + + - + + + + + + + + + + + + + + + + + + + + + + @@ -1429,32 +1528,42 @@ $Id$ - + + - + + description="Run the Minitest from xml-xalan/xalan-test" > - + + description="Run Smoketests (Minitest, conf, harness) from xml-xalan/xalan-test"> - - - + + + + + + + + + + + @@ -1510,7 +1619,7 @@ $Id$ + classpath="${build.xalan.jar}:${bin.dir}/fop.jar:${bin.dir}/w3c.jar"> @@ -1642,7 +1751,9 @@ $Id$ + debug="${serializer.build.debug}" + target="${compiler.target}" source="${compiler.source}" + nowarn="${compiler.nowarn}"> diff --git a/build_srcdist_xalan.xml b/build_srcdist_xalan.xml new file mode 100644 index 000000000..4b2d9d5d9 --- /dev/null +++ b/build_srcdist_xalan.xml @@ -0,0 +1,1944 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build_srcdist_xalan_tests.xml b/build_srcdist_xalan_tests.xml new file mode 100644 index 000000000..2416aeb7f --- /dev/null +++ b/build_srcdist_xalan_tests.xml @@ -0,0 +1,1783 @@ + + + + +build.xml:$Revision$ +Ant 1.4.1+ build script for compiling and running Xalan-J tests. + +Note that this is a slightly unusual Ant build.xml file, since we +support both compiling/packaging the Xalan-J tests themselves, as +well as a number of targets designed to execute the tests once +they're built. + +In general the compilation targets (i.e. ones that compile the +test classes themselves) do list their dependencies explicitly. +Targets that serve to execute tests do not normally list any +dependencies - users must manually 'build jar' first. + +@author shane_curcuru@lotus.com +@see build.bat + +This file has been written, to enable running XalanJ tests from +XalanJ source distribution. This file is largely, a copy of the +file build.xml provided by XalanJ xalan-test git repos. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deprecated_build.sh b/deprecated_build.sh new file mode 100644 index 000000000..e21d6e133 --- /dev/null +++ b/deprecated_build.sh @@ -0,0 +1,73 @@ +#!/bin/sh +# +#========================================================================= +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#========================================================================= +# +# Name: build.sh Build Xalan-J 2.x using Ant +# Author: Shane Curcuru + +# Alternatively, you can just call "ant" + +echo "Xalan-J 2.x Build" +echo "-------------" + +_JAVACMD=$JAVA_HOME/bin/java +if [ "$JAVA_HOME" = "" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." + _JAVACMD=java +fi + +# Default locations of jars we depend on to run Ant on our build.xml file +if [ "$ANT_HOME" = "" ] ; then + ANT_HOME=. +fi +if [ "$ANT_JAR" = "" ] ; then + ANT_JAR=./tools/ant.jar +fi +if [ "$PARSER_JAR" = "" ] ; then + PARSER_JAR=./lib/endorsed/xercesImpl.jar +fi + +if [ "$XML_APIS_JAR" = "" ] ; then + XML_APIS_JAR=./lib/endorsed/xml-apis.jar +fi + +# Use _underscore prefix to not conflict with user's settings +# Default to UNIX-style pathing +CLPATHSEP=: +# if we're on a Windows box make it ; +uname | grep WIN && CLPATHSEP=\; +_CLASSPATH="$ANT_JAR${CLPATHSEP}$XML_APIS_JAR${CLPATHSEP}$PARSER_JAR${CLPATHSEP}$CLASSPATH" + +# Attempt to automatically add system classes to _CLASSPATH +if [ -f $JAVA_HOME/lib/tools.jar ] ; then + _CLASSPATH=${_CLASSPATH}${CLPATHSEP}${JAVA_HOME}/lib/tools.jar +fi + +if [ -f $JAVA_HOME/lib/classes.zip ] ; then + _CLASSPATH=${_CLASSPATH}${CLPATHSEP}${JAVA_HOME}/lib/classes.zip +fi + + +echo "Starting Ant with targets: $@" +echo " ...with classpath: $_CLASSPATH" + +"$_JAVACMD" $JAVA_OPTS -Dant.home=$ANT_HOME -classpath "$_CLASSPATH" org.apache.tools.ant.Main $@ + + + + diff --git a/lib/BCEL.jar b/lib/BCEL.jar deleted file mode 100644 index 644f87634..000000000 Binary files a/lib/BCEL.jar and /dev/null differ diff --git a/lib/bcel-6.7.0.jar b/lib/bcel-6.7.0.jar new file mode 100644 index 000000000..fb36e1d38 Binary files /dev/null and b/lib/bcel-6.7.0.jar differ diff --git a/lib/brazil-2.1.jar b/lib/brazil-2.1.jar new file mode 100644 index 000000000..78a1e784f Binary files /dev/null and b/lib/brazil-2.1.jar differ diff --git a/lib/bsf.jar b/lib/bsf.jar new file mode 100644 index 000000000..302896730 Binary files /dev/null and b/lib/bsf.jar differ diff --git a/lib/commons-logging-1.2.jar b/lib/commons-logging-1.2.jar new file mode 100644 index 000000000..93a3b9f6d Binary files /dev/null and b/lib/commons-logging-1.2.jar differ diff --git a/lib/endorsed/xercesImpl.jar b/lib/endorsed/xercesImpl.jar new file mode 100644 index 000000000..ccbae9f45 Binary files /dev/null and b/lib/endorsed/xercesImpl.jar differ diff --git a/lib/endorsed/xml-apis.jar b/lib/endorsed/xml-apis.jar new file mode 100644 index 000000000..4f677fc86 Binary files /dev/null and b/lib/endorsed/xml-apis.jar differ diff --git a/lib/javaee-api-5.0-2.jar b/lib/javaee-api-5.0-2.jar new file mode 100644 index 000000000..65acd770a Binary files /dev/null and b/lib/javaee-api-5.0-2.jar differ diff --git a/lib/rhino-1.7.14.jar b/lib/rhino-1.7.14.jar new file mode 100644 index 000000000..ad47a2015 Binary files /dev/null and b/lib/rhino-1.7.14.jar differ diff --git a/lib/servlet-api-2.5.jar b/lib/servlet-api-2.5.jar new file mode 100644 index 000000000..b0537c4db Binary files /dev/null and b/lib/servlet-api-2.5.jar differ diff --git a/lib/xercesImpl.jar b/lib/xercesImpl.jar deleted file mode 100644 index e0a4c2e37..000000000 Binary files a/lib/xercesImpl.jar and /dev/null differ diff --git a/lib/xml-apis.jar b/lib/xml-apis.jar deleted file mode 100644 index d42c0ea6c..000000000 Binary files a/lib/xml-apis.jar and /dev/null differ diff --git a/src/MANIFEST.MF b/src/MANIFEST.MF index 14160aa75..15a12ae14 100644 --- a/src/MANIFEST.MF +++ b/src/MANIFEST.MF @@ -12,21 +12,21 @@ Specification-Version: 1.3 Implementation-Title: org.apache.xalan Implementation-Version: @impl.version@ Implementation-Vendor: Apache Software Foundation -Implementation-URL: http://xml.apache.org/xalan-j/ +Implementation-URL: https://xalan.apache.org/xalan-j/ Name: org/apache/xpath/ Comment: XPath engine Implementation-Title: org.apache.xpath Implementation-Version: @impl.version@ Implementation-Vendor: Apache Software Foundation -Implementation-URL: http://xml.apache.org/xalan-j/ +Implementation-URL: https://xalan.apache.org/xalan-j/ Name: org/apache/xml/ Comment: DTM implementation and utilities Implementation-Title: org.apache.xml Implementation-Version: @impl.version@ Implementation-Vendor: Apache Software Foundation -Implementation-URL: http://xml.apache.org/xalan-j/ +Implementation-URL: https://xalan.apache.org/xalan-j/ Name: org/apache/xalan/xsltc/ Comment: Main XSLTC engine implementing TrAX/JAXP @@ -36,7 +36,7 @@ Specification-Version: 1.3 Implementation-Title: org.apache.xalan.xsltc Implementation-Version: @impl.version@ Implementation-Vendor: Apache Software Foundation -Implementation-URL: http://xml.apache.org/xalan-j/ +Implementation-URL: https://xalan.apache.org/xalan-j/ Name: java_cup/runtime/ Comment: Runtime component of JCup @@ -49,14 +49,14 @@ Implementation-Vendor: Princeton University Implementation-URL: http://www.cs.princeton.edu/~appel/modern/java/CUP/ Name: org/apache/bcel/ -Comment: Byte Code Engineering Library -Specification-Title: Byte Code Engineering Library -Specification-Vendor: Markus Dahm -Specification-Version: 5.0 rc1 +Comment: Apache Commons Byte Code Engineering Library +Specification-Title: Apache Commons BCEL +Specification-Vendor: Apache Software Foundation +Specification-Version: 6.7.0 Implementation-Title: org.apache.bcel Implementation-Version: @impl.version@ Implementation-Vendor: Apache Software Foundation -Implementation-URL: http://jakarta.apache.org/bcel +Implementation-URL: https://commons.apache.org/proper/commons-bcel Name: org/apache/regexp/ Comment: Java Regular Expression package diff --git a/src/MANIFEST.SERIALIZER b/src/MANIFEST.SERIALIZER index 8d6eb9c64..54be29121 100644 --- a/src/MANIFEST.SERIALIZER +++ b/src/MANIFEST.SERIALIZER @@ -11,7 +11,7 @@ Specification-Version: 1.0 Implementation-Title: org.apache.xml.serializer Implementation-Version: @impl.version@ Implementation-Vendor: Apache Software Foundation -Implementation-URL: http://xml.apache.org/xalan-j/usagepatterns.html +Implementation-URL: https://xalan.apache.org/xalan-j/usagepatterns.html Name: org/apache/xml/serializer/utils/ Comment: Utilities used internally by the Serializer. Not for external use. diff --git a/src/manifest.xsltc b/src/manifest.xsltc index bdfc0e18e..fd248872e 100644 --- a/src/manifest.xsltc +++ b/src/manifest.xsltc @@ -33,7 +33,7 @@ Name: org/apache/bcel/ Comment: Byte Code Engineering Library Specification-Title: Byte Code Engineering Library Specification-Vendor: Markus Dahm -Specification-Version: 5.0 rc1 +Specification-Version: 6.6.0 Implementation-Title: org.apache.bcel Implementation-Version: @impl.version@ Implementation-Vendor: Apache Software Foundation diff --git a/src/org/apache/xalan/Version.java b/src/org/apache/xalan/Version.java index c2d9f2f35..7b4a39538 100644 --- a/src/org/apache/xalan/Version.java +++ b/src/org/apache/xalan/Version.java @@ -119,7 +119,7 @@ public static int getReleaseVersionNum() */ public static int getMaintenanceVersionNum() { - return 1; + return 3; } /** diff --git a/src/org/apache/xalan/lib/ExsltDatetime.java b/src/org/apache/xalan/lib/ExsltDatetime.java index d53b27d59..307e6fd83 100644 --- a/src/org/apache/xalan/lib/ExsltDatetime.java +++ b/src/org/apache/xalan/lib/ExsltDatetime.java @@ -22,13 +22,23 @@ package org.apache.xalan.lib; +import java.math.BigDecimal; +import java.math.BigInteger; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; +import java.util.GregorianCalendar; import java.util.Locale; import java.util.TimeZone; +import javax.xml.datatype.DatatypeConfigurationException; +import javax.xml.datatype.DatatypeConstants; +import javax.xml.datatype.DatatypeFactory; +import javax.xml.datatype.Duration; +import javax.xml.datatype.XMLGregorianCalendar; +import javax.xml.namespace.QName; + import org.apache.xpath.objects.XBoolean; import org.apache.xpath.objects.XNumber; import org.apache.xpath.objects.XObject; @@ -75,7 +85,7 @@ public class ExsltDatetime */ public static String dateTime() { - Calendar cal = Calendar.getInstance(); + /*Calendar cal = Calendar.getInstance(); Date datetime = cal.getTime(); // Format for date and time. SimpleDateFormat dateFormat = new SimpleDateFormat(dt); @@ -97,8 +107,21 @@ public static String dateTime() char posneg = hrs < 0? '-': '+'; buff.append(posneg + formatDigits(hrs) + ':' + formatDigits(min)); } - return buff.toString(); - } + return buff.toString();*/ + String resultStr = ""; + try { + GregorianCalendar cal = new GregorianCalendar(); + cal.setTime(new Date()); + XMLGregorianCalendar xmlGcal = DatatypeFactory.newInstance().newXMLGregorianCalendar(cal); + xmlGcal.setMillisecond(DatatypeConstants.FIELD_UNDEFINED); + resultStr = xmlGcal.toXMLFormat(); + } + catch (DatatypeConfigurationException ex) { + + } + + return resultStr; + } /** * Represent the hours and minutes with two-digit strings. @@ -135,6 +158,7 @@ private static String formatDigits(int q) public static String date(String datetimeIn) throws ParseException { + if ("".equals(datetimeIn)) return EMPTY_STR; String[] edz = getEraDatetimeZone(datetimeIn); String leader = edz[0]; String datetime = edz[1]; @@ -251,7 +275,7 @@ public static double year(String datetimeIn) String[] formats = {dt, d, gym, gy}; double yr = getNumber(datetime, formats, Calendar.YEAR); - if (ad || yr == Double.NaN) + if (ad || Double.isNaN(yr)) return yr; else return -yr; @@ -604,7 +628,7 @@ public static XObject leapYear(String datetimeIn) String[] formats = {dt, d, gym, gy}; double dbl = getNumber(datetime, formats, Calendar.YEAR); - if (dbl == Double.NaN) + if (Double.isNaN(dbl)) return new XNumber(Double.NaN); int yr = (int)dbl; return new XBoolean(yr % 400 == 0 || (yr % 100 != 0 && yr % 4 == 0)); diff --git a/src/org/apache/xalan/processor/TransformerFactoryImpl.java b/src/org/apache/xalan/processor/TransformerFactoryImpl.java index 87e234447..3a7c78cdc 100644 --- a/src/org/apache/xalan/processor/TransformerFactoryImpl.java +++ b/src/org/apache/xalan/processor/TransformerFactoryImpl.java @@ -326,6 +326,10 @@ public Source getAssociatedStylesheet( reader = XMLReaderFactory.createXMLReader(); } + if(m_isSecureProcessing) + { + reader.setFeature("http://xml.org/sax/features/external-general-entities",false); + } // Need to set options! reader.setContentHandler(handler); reader.parse(isource); diff --git a/src/org/apache/xalan/processor/XSLProcessorVersion.java b/src/org/apache/xalan/processor/XSLProcessorVersion.java new file mode 100644 index 000000000..27c224095 --- /dev/null +++ b/src/org/apache/xalan/processor/XSLProcessorVersion.java @@ -0,0 +1,116 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * $Id$ + */ +package org.apache.xalan.processor; + +/** + * Administrative class to keep track of the version number of + * the Xalan release. + *

See also: org/apache/xalan/res/XSLTInfo.properties

+ * @deprecated To be replaced by org.apache.xalan.Version.getVersion() + * @xsl.usage general + */ +public class XSLProcessorVersion +{ + + /** + * Print the processor version to the command line. + * + * @param argv command line arguments, unused. + */ + public static void main(String argv[]) + { + System.out.println(S_VERSION); + } + + /** + * Constant name of product. + */ + public static final String PRODUCT = "Xalan"; + + /** + * Implementation Language. + */ + public static final String LANGUAGE = "Java"; + + /** + * Major version number. + * Version number. This changes only when there is a + * significant, externally apparent enhancement from + * the previous release. 'n' represents the n'th + * version. + * + * Clients should carefully consider the implications + * of new versions as external interfaces and behaviour + * may have changed. + */ + public static final int VERSION = 2; + + /** + * Release Number. + * Release number. This changes when: + * - a new set of functionality is to be added, eg, + * implementation of a new W3C specification. + * - API or behaviour change. + * - its designated as a reference release. + */ + public static final int RELEASE = 7; + + /** + * Maintenance Drop Number. + * Optional identifier used to designate maintenance + * drop applied to a specific release and contains + * fixes for defects reported. It maintains compatibility + * with the release and contains no API changes. + * When missing, it designates the final and complete + * development drop for a release. + */ + public static final int MAINTENANCE = 3; + + /** + * Development Drop Number. + * Optional identifier designates development drop of + * a specific release. D01 is the first development drop + * of a new release. + * + * Development drops are works in progress towards a + * compeleted, final release. A specific development drop + * may not completely implement all aspects of a new + * feature, which may take several development drops to + * complete. At the point of the final drop for the + * release, the D suffix will be omitted. + * + * Each 'D' drops can contain functional enhancements as + * well as defect fixes. 'D' drops may not be as stable as + * the final releases. + */ + public static final int DEVELOPMENT = 0; + + /** + * Version String like "Xalan Language + * v.r[.dd| Dnn]". + *

Semantics of the version string are identical to the Xerces project.

+ */ + public static final String S_VERSION = PRODUCT+" "+LANGUAGE+" " + +VERSION+"."+RELEASE+"." + +(DEVELOPMENT > 0 ? ("D"+DEVELOPMENT) + : (""+MAINTENANCE)); + +} diff --git a/src/org/apache/xalan/processor/XSLTElementProcessor.java b/src/org/apache/xalan/processor/XSLTElementProcessor.java index 4225f5909..553832d11 100644 --- a/src/org/apache/xalan/processor/XSLTElementProcessor.java +++ b/src/org/apache/xalan/processor/XSLTElementProcessor.java @@ -337,17 +337,31 @@ Attributes setPropertiesFromAttributes( } else { - // Can we switch the order here: - - boolean success = attrDef.setAttrValue(handler, attrUri, attrLocalName, - attributes.getQName(i), attributes.getValue(i), - target); - - // Now we only add the element if it passed a validation check - if (success) - processedDefs.add(attrDef); + //handle secure processing + if(handler.getStylesheetProcessor()==null) + System.out.println("stylesheet processor null"); + if(attrDef.getName().compareTo("*")==0 && handler.getStylesheetProcessor().isSecureProcessing()) + { + //foreign attributes are not allowed in secure processing mode + // Then barf, because this element does not allow this attribute. + handler.error(XSLTErrorResources.ER_ATTR_NOT_ALLOWED, new Object[]{attributes.getQName(i), rawName}, null);//"\""+attributes.getQName(i)+"\"" + //+ " attribute is not allowed on the " + rawName + // + " element!", null); + } else - errorDefs.add(attrDef); + { + + + boolean success = attrDef.setAttrValue(handler, attrUri, attrLocalName, + attributes.getQName(i), attributes.getValue(i), + target); + + // Now we only add the element if it passed a validation check + if (success) + processedDefs.add(attrDef); + else + errorDefs.add(attrDef); + } } } diff --git a/src/org/apache/xalan/templates/ElemExtensionCall.java b/src/org/apache/xalan/templates/ElemExtensionCall.java index be69934b9..531f6be96 100644 --- a/src/org/apache/xalan/templates/ElemExtensionCall.java +++ b/src/org/apache/xalan/templates/ElemExtensionCall.java @@ -211,7 +211,7 @@ public void execute(TransformerImpl transformer) transformer.getResultTreeHandler().flushPending(); ExtensionsTable etable = transformer.getExtensionsTable(); - ExtensionHandler nsh = etable.get(m_extns); + ExtensionHandler nsh = etable != null ? etable.get(m_extns) : null; if (null == nsh) { diff --git a/src/org/apache/xalan/transformer/TransformerIdentityImpl.java b/src/org/apache/xalan/transformer/TransformerIdentityImpl.java index a06ef17cd..ebfac878e 100644 --- a/src/org/apache/xalan/transformer/TransformerIdentityImpl.java +++ b/src/org/apache/xalan/transformer/TransformerIdentityImpl.java @@ -21,8 +21,11 @@ package org.apache.xalan.transformer; import java.io.IOException; +import java.util.HashMap; import java.util.Hashtable; +import java.util.Map; import java.util.Properties; +import java.util.Map.Entry; import javax.xml.XMLConstants; import javax.xml.parsers.DocumentBuilder; @@ -62,6 +65,8 @@ import org.xml.sax.InputSource; import org.xml.sax.Locator; import org.xml.sax.SAXException; +import org.xml.sax.SAXNotRecognizedException; +import org.xml.sax.SAXNotSupportedException; import org.xml.sax.XMLReader; import org.xml.sax.ext.DeclHandler; import org.xml.sax.ext.LexicalHandler; @@ -425,6 +430,12 @@ public void transform(Source source, Result outputTarget) XMLReader reader = null; boolean managedReader = false; + + //cleanup + ContentHandler oldContentHandler = null; + DTDHandler oldDtdHandler = null; + boolean isDtdHandlerSet = false; + Map oldProperties = new HashMap(); try { @@ -451,34 +462,57 @@ public void transform(Source source, Result outputTarget) // Get the input content handler, which will handle the // parse events and create the source tree. ContentHandler inputHandler = this; - + oldContentHandler = reader.getContentHandler(); reader.setContentHandler(inputHandler); - if (inputHandler instanceof org.xml.sax.DTDHandler) + if (inputHandler instanceof org.xml.sax.DTDHandler) { + isDtdHandlerSet = true; + oldDtdHandler = reader.getDTDHandler(); reader.setDTDHandler((org.xml.sax.DTDHandler) inputHandler); + } try { - if (inputHandler instanceof org.xml.sax.ext.LexicalHandler) + if (inputHandler instanceof org.xml.sax.ext.LexicalHandler) { + oldProperties.put( + "http://xml.org/sax/properties/lexical-handler", + reader.getProperty("http://xml.org/sax/properties/lexical-handler")); + reader.setProperty("http://xml.org/sax/properties/lexical-handler", inputHandler); + } - if (inputHandler instanceof org.xml.sax.ext.DeclHandler) + if (inputHandler instanceof org.xml.sax.ext.DeclHandler) { + oldProperties.put( + "http://xml.org/sax/properties/declaration-handler", + reader.getProperty("http://xml.org/sax/properties/declaration-handler")); + reader.setProperty( "http://xml.org/sax/properties/declaration-handler", inputHandler); + } } catch (org.xml.sax.SAXException se){} try { - if (inputHandler instanceof org.xml.sax.ext.LexicalHandler) + if (inputHandler instanceof org.xml.sax.ext.LexicalHandler) { + oldProperties.put( + "http://xml.org/sax/handlers/LexicalHandler", + reader.getProperty("http://xml.org/sax/handlers/LexicalHandler")); + reader.setProperty("http://xml.org/sax/handlers/LexicalHandler", inputHandler); + } - if (inputHandler instanceof org.xml.sax.ext.DeclHandler) + if (inputHandler instanceof org.xml.sax.ext.DeclHandler) { + oldProperties.put( + "http://xml.org/sax/handlers/DeclHandler", + reader.getProperty("http://xml.org/sax/handlers/DeclHandler")); + reader.setProperty("http://xml.org/sax/handlers/DeclHandler", inputHandler); + } } catch (org.xml.sax.SAXNotRecognizedException snre){} @@ -505,6 +539,19 @@ public void transform(Source source, Result outputTarget) { throw new TransformerException(ioe); } finally { + reader.setContentHandler(oldContentHandler); + if (isDtdHandlerSet) { + reader.setDTDHandler(oldDtdHandler); + } + + for (Entry oldProperty: oldProperties.entrySet()) { + try { + reader.setProperty(oldProperty.getKey(), oldProperty.getValue()); + } catch (SAXNotRecognizedException e) { + } catch (SAXNotSupportedException e) { + } + } + if (managedReader) { XMLReaderManager.getInstance().releaseXMLReader(reader); } diff --git a/src/org/apache/xalan/transformer/TransformerImpl.java b/src/org/apache/xalan/transformer/TransformerImpl.java index f999f6da2..bd9baaf71 100644 --- a/src/org/apache/xalan/transformer/TransformerImpl.java +++ b/src/org/apache/xalan/transformer/TransformerImpl.java @@ -438,7 +438,9 @@ void setExtensionsTable(StylesheetRoot sroot) try { if (sroot.getExtensions() != null) - m_extensionsTable = new ExtensionsTable(sroot); + //only load extensions if secureProcessing is disabled + if(!sroot.isSecureProcessing()) + m_extensionsTable = new ExtensionsTable(sroot); } catch (javax.xml.transform.TransformerException te) {te.printStackTrace();} diff --git a/src/org/apache/xalan/xslt/Process.java b/src/org/apache/xalan/xslt/Process.java index a96484093..654c0587b 100644 --- a/src/org/apache/xalan/xslt/Process.java +++ b/src/org/apache/xalan/xslt/Process.java @@ -56,8 +56,9 @@ import org.apache.xalan.trace.PrintTraceListener; import org.apache.xalan.trace.TraceManager; import org.apache.xalan.transformer.XalanProperties; +import org.apache.xalan.xslt.util.XslTransformErrorLocatorHelper; import org.apache.xml.utils.DefaultErrorHandler; - +import org.apache.xml.utils.SystemIDResolver; import org.w3c.dom.Document; import org.w3c.dom.Node; @@ -749,6 +750,7 @@ else if ("-SECURE".equalsIgnoreCase(argv[i])) else { // System.out.println("Calling newTemplates: "+xslFileName); + XslTransformErrorLocatorHelper.systemId = SystemIDResolver.getAbsoluteURI(xslFileName); stylesheet = tfactory.newTemplates(new StreamSource(xslFileName)); // System.out.println("Done calling newTemplates: "+xslFileName); } diff --git a/readme.html b/src/org/apache/xalan/xslt/util/XslTransformErrorLocatorHelper.java similarity index 69% rename from readme.html rename to src/org/apache/xalan/xslt/util/XslTransformErrorLocatorHelper.java index d3883cee4..a9db67f12 100644 --- a/readme.html +++ b/src/org/apache/xalan/xslt/util/XslTransformErrorLocatorHelper.java @@ -1,39 +1,27 @@ - + */ - - - - - - - - Redirecting to What's New in Xalan_Java 2 - - +package org.apache.xalan.xslt.util; +/** + * @version $Id: $ + */ +public class XslTransformErrorLocatorHelper { + + public static String systemId; - - - - - - - - - - +} diff --git a/src/org/apache/xalan/xsltc/compiler/Mode.java b/src/org/apache/xalan/xsltc/compiler/Mode.java index 3f44ec5bb..107255205 100644 --- a/src/org/apache/xalan/xsltc/compiler/Mode.java +++ b/src/org/apache/xalan/xsltc/compiler/Mode.java @@ -860,7 +860,7 @@ argTypes, argNames, functionName(), elemPrio = elemTest.getPriority(); elemPos = elemTest.getPosition(); } - if (elemPrio == Double.NaN || elemPrio < nodePrio || + if (Double.isNaN(elemPrio) || elemPrio < nodePrio || (elemPrio == nodePrio && elemPos < nodePos)) { ihElem = _childNodeTestSeq.compile(classGen, methodGen, ihLoop); @@ -1208,7 +1208,7 @@ argTypes, argNames, functionName()+'_'+max, elemPos = elemTest.getPosition(); } - if (elemPrio == Double.NaN || elemPrio < nodePrio || + if (Double.isNaN(elemPrio) || elemPrio < nodePrio || (elemPrio == nodePrio && elemPos < nodePos)) { ihElem = _childNodeTestSeq.compile(classGen, methodGen, ihLoop); diff --git a/src/org/apache/xalan/xsltc/compiler/XPathLexer.java b/src/org/apache/xalan/xsltc/compiler/XPathLexer.java new file mode 100644 index 000000000..1db26b287 --- /dev/null +++ b/src/org/apache/xalan/xsltc/compiler/XPathLexer.java @@ -0,0 +1,1643 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * $Id$ + */ +/* + * @author Jacek Ambroziak + * @author Santiago Pericas-Geertsen + * @author Morten Jorgensen + * + */ +package org.apache.xalan.xsltc.compiler; +import java_cup.runtime.Symbol; + + +class XPathLexer implements java_cup.runtime.Scanner { + private final int YY_BUFFER_SIZE = 512; + private final int YY_F = -1; + private final int YY_NO_STATE = -1; + private final int YY_NOT_ACCEPT = 0; + private final int YY_START = 1; + private final int YY_END = 2; + private final int YY_NO_ANCHOR = 4; + private final int YY_BOL = 65536; + private final int YY_EOF = 65537; + public final int YYEOF = -1; + + int last; + void initialize() { + last = -1; + } + static boolean isWhitespace(int c) { + return (c == ' ' || c == '\t' || c == '\r' || c == '\n' || c == '\f'); + } + /** + * If symbol is not followed by '::' or '(', then treat it as a + * name instead of an axis or function (Jira-1912). + */ + Symbol disambiguateAxisOrFunction(int ss) throws Exception { + // Peek in the input buffer without changing the internal state + int index = yy_buffer_index; + // Skip whitespace + while (index < yy_buffer_read && isWhitespace(yy_buffer[index])) { + index++; + } + // If end of buffer, can't disambiguate :( + if (index >= yy_buffer_read) { + // Can't disambiguate, so return as symbol + return new Symbol(ss); + } + // Return symbol if next token is '::' or '(' + return (yy_buffer[index] == ':' && yy_buffer[index+1] == ':' || + yy_buffer[index] == '(') ? + newSymbol(ss) : newSymbol(sym.QNAME, yytext()); + } + /** + * If symbol is first token or if it follows any of the operators + * listed in http://www.w3.org/TR/xpath#exprlex then treat as a + * name instead of a keyword (Jira-1912). + */ + Symbol disambiguateOperator(int ss) throws Exception { + switch (last) { + case -1: // first token + case sym.ATSIGN: + case sym.DCOLON: + case sym.LPAREN: + case sym.LBRACK: + case sym.COMMA: + case sym.AND: + case sym.OR: + case sym.MOD: + case sym.DIV: + case sym.MULT: + case sym.SLASH: + case sym.DSLASH: + case sym.VBAR: + case sym.PLUS: + case sym.MINUS: + case sym.EQ: + case sym.NE: + case sym.LT: + case sym.LE: + case sym.GT: + case sym.GE: + return newSymbol(sym.QNAME, yytext()); + } + return newSymbol(ss); + } + /** + * If symbol is first token or if it follows any of the operators + * listed in http://www.w3.org/TR/xpath#exprlex then treat as a + * wildcard instead of a multiplication operator + */ + Symbol disambiguateStar() throws Exception { + switch (last) { + case -1: // first token + case sym.ATSIGN: + case sym.DCOLON: + case sym.LPAREN: + case sym.LBRACK: + case sym.COMMA: + case sym.AND: + case sym.OR: + case sym.MOD: + case sym.DIV: + case sym.MULT: + case sym.SLASH: + case sym.DSLASH: + case sym.VBAR: + case sym.PLUS: + case sym.MINUS: + case sym.EQ: + case sym.NE: + case sym.LT: + case sym.LE: + case sym.GT: + case sym.GE: + return newSymbol(sym.STAR); + } + return newSymbol(sym.MULT); + } + Symbol newSymbol(int ss) { + last = ss; + return new Symbol(ss); + } + Symbol newSymbol(int ss, String value) { + last = ss; + return new Symbol(ss, value); + } + Symbol newSymbol(int ss, Long value) { + last = ss; + return new Symbol(ss, value); + } + Symbol newSymbol(int ss, Double value) { + last = ss; + return new Symbol(ss, value); + } + private java.io.BufferedReader yy_reader; + private int yy_buffer_index; + private int yy_buffer_read; + private int yy_buffer_start; + private int yy_buffer_end; + private char yy_buffer[]; + private boolean yy_at_bol; + private int yy_lexical_state; + + XPathLexer (java.io.Reader reader) { + this (); + if (null == reader) { + throw (new Error("Error: Bad input stream initializer.")); + } + yy_reader = new java.io.BufferedReader(reader); + } + + XPathLexer (java.io.InputStream instream) { + this (); + if (null == instream) { + throw (new Error("Error: Bad input stream initializer.")); + } + yy_reader = new java.io.BufferedReader(new java.io.InputStreamReader(instream)); + } + + private XPathLexer () { + yy_buffer = new char[YY_BUFFER_SIZE]; + yy_buffer_read = 0; + yy_buffer_index = 0; + yy_buffer_start = 0; + yy_buffer_end = 0; + yy_at_bol = true; + yy_lexical_state = YYINITIAL; + } + + private boolean yy_eof_done = false; + private final int YYINITIAL = 0; + private final int yy_state_dtrans[] = { + 0 + }; + private void yybegin (int state) { + yy_lexical_state = state; + } + private int yy_advance () + throws java.io.IOException { + int next_read; + int i; + int j; + + if (yy_buffer_index < yy_buffer_read) { + return yy_buffer[yy_buffer_index++]; + } + + if (0 != yy_buffer_start) { + i = yy_buffer_start; + j = 0; + while (i < yy_buffer_read) { + yy_buffer[j] = yy_buffer[i]; + ++i; + ++j; + } + yy_buffer_end = yy_buffer_end - yy_buffer_start; + yy_buffer_start = 0; + yy_buffer_read = j; + yy_buffer_index = j; + next_read = yy_reader.read(yy_buffer, + yy_buffer_read, + yy_buffer.length - yy_buffer_read); + if (-1 == next_read) { + return YY_EOF; + } + yy_buffer_read = yy_buffer_read + next_read; + } + + while (yy_buffer_index >= yy_buffer_read) { + if (yy_buffer_index >= yy_buffer.length) { + yy_buffer = yy_double(yy_buffer); + } + next_read = yy_reader.read(yy_buffer, + yy_buffer_read, + yy_buffer.length - yy_buffer_read); + if (-1 == next_read) { + return YY_EOF; + } + yy_buffer_read = yy_buffer_read + next_read; + } + return yy_buffer[yy_buffer_index++]; + } + private void yy_move_end () { + if (yy_buffer_end > yy_buffer_start && + '\n' == yy_buffer[yy_buffer_end-1]) + yy_buffer_end--; + if (yy_buffer_end > yy_buffer_start && + '\r' == yy_buffer[yy_buffer_end-1]) + yy_buffer_end--; + } + private boolean yy_last_was_cr=false; + private void yy_mark_start () { + yy_buffer_start = yy_buffer_index; + } + private void yy_mark_end () { + yy_buffer_end = yy_buffer_index; + } + private void yy_to_mark () { + yy_buffer_index = yy_buffer_end; + yy_at_bol = (yy_buffer_end > yy_buffer_start) && + ('\r' == yy_buffer[yy_buffer_end-1] || + '\n' == yy_buffer[yy_buffer_end-1] || + 2028/*LS*/ == yy_buffer[yy_buffer_end-1] || + 2029/*PS*/ == yy_buffer[yy_buffer_end-1]); + } + private java.lang.String yytext () { + return (new java.lang.String(yy_buffer, + yy_buffer_start, + yy_buffer_end - yy_buffer_start)); + } + private int yylength () { + return yy_buffer_end - yy_buffer_start; + } + private char[] yy_double (char buf[]) { + int i; + char newbuf[]; + newbuf = new char[2*buf.length]; + for (i = 0; i < buf.length; ++i) { + newbuf[i] = buf[i]; + } + return newbuf; + } + private final int YY_E_INTERNAL = 0; + private final int YY_E_MATCH = 1; + private java.lang.String yy_error_string[] = { + "Error: Internal error.\n", + "Error: Unmatched input.\n" + }; + private void yy_error (int code,boolean fatal) { + java.lang.System.out.print(yy_error_string[code]); + java.lang.System.out.flush(); + if (fatal) { + throw new Error("Fatal Error.\n"); + } + } + static private int[][] unpackFromString(int size1, int size2, String st) { + int colonIndex = -1; + String lengthString; + int sequenceLength = 0; + int sequenceInteger = 0; + + int commaIndex; + String workString; + + int res[][] = new int[size1][size2]; + for (int i= 0; i < size1; i++) { + for (int j= 0; j < size2; j++) { + if (sequenceLength != 0) { + res[i][j] = sequenceInteger; + sequenceLength--; + continue; + } + commaIndex = st.indexOf(','); + workString = (commaIndex==-1) ? st : + st.substring(0, commaIndex); + st = st.substring(commaIndex+1); + colonIndex = workString.indexOf(':'); + if (colonIndex == -1) { + res[i][j]=Integer.parseInt(workString); + continue; + } + lengthString = + workString.substring(colonIndex+1); + sequenceLength=Integer.parseInt(lengthString); + workString=workString.substring(0,colonIndex); + sequenceInteger=Integer.parseInt(workString); + res[i][j] = sequenceInteger; + sequenceLength--; + } + } + return res; + } + private int yy_acpt[] = { + /* 0 */ YY_NOT_ACCEPT, + /* 1 */ YY_NO_ANCHOR, + /* 2 */ YY_NO_ANCHOR, + /* 3 */ YY_NO_ANCHOR, + /* 4 */ YY_NO_ANCHOR, + /* 5 */ YY_NO_ANCHOR, + /* 6 */ YY_NO_ANCHOR, + /* 7 */ YY_NO_ANCHOR, + /* 8 */ YY_NO_ANCHOR, + /* 9 */ YY_NO_ANCHOR, + /* 10 */ YY_NO_ANCHOR, + /* 11 */ YY_NO_ANCHOR, + /* 12 */ YY_NO_ANCHOR, + /* 13 */ YY_NO_ANCHOR, + /* 14 */ YY_NO_ANCHOR, + /* 15 */ YY_NO_ANCHOR, + /* 16 */ YY_NO_ANCHOR, + /* 17 */ YY_NO_ANCHOR, + /* 18 */ YY_NO_ANCHOR, + /* 19 */ YY_NO_ANCHOR, + /* 20 */ YY_NO_ANCHOR, + /* 21 */ YY_NO_ANCHOR, + /* 22 */ YY_NO_ANCHOR, + /* 23 */ YY_NO_ANCHOR, + /* 24 */ YY_NO_ANCHOR, + /* 25 */ YY_NO_ANCHOR, + /* 26 */ YY_NO_ANCHOR, + /* 27 */ YY_NO_ANCHOR, + /* 28 */ YY_NO_ANCHOR, + /* 29 */ YY_NO_ANCHOR, + /* 30 */ YY_NO_ANCHOR, + /* 31 */ YY_NO_ANCHOR, + /* 32 */ YY_NO_ANCHOR, + /* 33 */ YY_NO_ANCHOR, + /* 34 */ YY_NO_ANCHOR, + /* 35 */ YY_NO_ANCHOR, + /* 36 */ YY_NO_ANCHOR, + /* 37 */ YY_NO_ANCHOR, + /* 38 */ YY_NO_ANCHOR, + /* 39 */ YY_NO_ANCHOR, + /* 40 */ YY_NO_ANCHOR, + /* 41 */ YY_NO_ANCHOR, + /* 42 */ YY_NO_ANCHOR, + /* 43 */ YY_NO_ANCHOR, + /* 44 */ YY_NO_ANCHOR, + /* 45 */ YY_NO_ANCHOR, + /* 46 */ YY_NO_ANCHOR, + /* 47 */ YY_NO_ANCHOR, + /* 48 */ YY_NO_ANCHOR, + /* 49 */ YY_NO_ANCHOR, + /* 50 */ YY_NO_ANCHOR, + /* 51 */ YY_NO_ANCHOR, + /* 52 */ YY_NO_ANCHOR, + /* 53 */ YY_NO_ANCHOR, + /* 54 */ YY_NO_ANCHOR, + /* 55 */ YY_NO_ANCHOR, + /* 56 */ YY_NO_ANCHOR, + /* 57 */ YY_NO_ANCHOR, + /* 58 */ YY_NO_ANCHOR, + /* 59 */ YY_NO_ANCHOR, + /* 60 */ YY_NO_ANCHOR, + /* 61 */ YY_NO_ANCHOR, + /* 62 */ YY_NO_ANCHOR, + /* 63 */ YY_NO_ANCHOR, + /* 64 */ YY_NOT_ACCEPT, + /* 65 */ YY_NO_ANCHOR, + /* 66 */ YY_NO_ANCHOR, + /* 67 */ YY_NO_ANCHOR, + /* 68 */ YY_NO_ANCHOR, + /* 69 */ YY_NOT_ACCEPT, + /* 70 */ YY_NO_ANCHOR, + /* 71 */ YY_NO_ANCHOR, + /* 72 */ YY_NOT_ACCEPT, + /* 73 */ YY_NO_ANCHOR, + /* 74 */ YY_NO_ANCHOR, + /* 75 */ YY_NOT_ACCEPT, + /* 76 */ YY_NO_ANCHOR, + /* 77 */ YY_NO_ANCHOR, + /* 78 */ YY_NOT_ACCEPT, + /* 79 */ YY_NO_ANCHOR, + /* 80 */ YY_NOT_ACCEPT, + /* 81 */ YY_NO_ANCHOR, + /* 82 */ YY_NOT_ACCEPT, + /* 83 */ YY_NO_ANCHOR, + /* 84 */ YY_NOT_ACCEPT, + /* 85 */ YY_NO_ANCHOR, + /* 86 */ YY_NOT_ACCEPT, + /* 87 */ YY_NO_ANCHOR, + /* 88 */ YY_NOT_ACCEPT, + /* 89 */ YY_NO_ANCHOR, + /* 90 */ YY_NOT_ACCEPT, + /* 91 */ YY_NO_ANCHOR, + /* 92 */ YY_NOT_ACCEPT, + /* 93 */ YY_NO_ANCHOR, + /* 94 */ YY_NOT_ACCEPT, + /* 95 */ YY_NO_ANCHOR, + /* 96 */ YY_NOT_ACCEPT, + /* 97 */ YY_NO_ANCHOR, + /* 98 */ YY_NOT_ACCEPT, + /* 99 */ YY_NO_ANCHOR, + /* 100 */ YY_NOT_ACCEPT, + /* 101 */ YY_NO_ANCHOR, + /* 102 */ YY_NOT_ACCEPT, + /* 103 */ YY_NO_ANCHOR, + /* 104 */ YY_NOT_ACCEPT, + /* 105 */ YY_NO_ANCHOR, + /* 106 */ YY_NOT_ACCEPT, + /* 107 */ YY_NO_ANCHOR, + /* 108 */ YY_NOT_ACCEPT, + /* 109 */ YY_NO_ANCHOR, + /* 110 */ YY_NOT_ACCEPT, + /* 111 */ YY_NO_ANCHOR, + /* 112 */ YY_NOT_ACCEPT, + /* 113 */ YY_NO_ANCHOR, + /* 114 */ YY_NOT_ACCEPT, + /* 115 */ YY_NO_ANCHOR, + /* 116 */ YY_NOT_ACCEPT, + /* 117 */ YY_NO_ANCHOR, + /* 118 */ YY_NOT_ACCEPT, + /* 119 */ YY_NO_ANCHOR, + /* 120 */ YY_NOT_ACCEPT, + /* 121 */ YY_NO_ANCHOR, + /* 122 */ YY_NOT_ACCEPT, + /* 123 */ YY_NO_ANCHOR, + /* 124 */ YY_NOT_ACCEPT, + /* 125 */ YY_NO_ANCHOR, + /* 126 */ YY_NOT_ACCEPT, + /* 127 */ YY_NO_ANCHOR, + /* 128 */ YY_NO_ANCHOR, + /* 129 */ YY_NO_ANCHOR, + /* 130 */ YY_NO_ANCHOR, + /* 131 */ YY_NO_ANCHOR, + /* 132 */ YY_NO_ANCHOR, + /* 133 */ YY_NO_ANCHOR, + /* 134 */ YY_NO_ANCHOR, + /* 135 */ YY_NO_ANCHOR, + /* 136 */ YY_NO_ANCHOR, + /* 137 */ YY_NO_ANCHOR, + /* 138 */ YY_NO_ANCHOR, + /* 139 */ YY_NO_ANCHOR, + /* 140 */ YY_NO_ANCHOR, + /* 141 */ YY_NO_ANCHOR, + /* 142 */ YY_NO_ANCHOR, + /* 143 */ YY_NO_ANCHOR, + /* 144 */ YY_NO_ANCHOR, + /* 145 */ YY_NO_ANCHOR, + /* 146 */ YY_NO_ANCHOR, + /* 147 */ YY_NO_ANCHOR, + /* 148 */ YY_NO_ANCHOR, + /* 149 */ YY_NO_ANCHOR, + /* 150 */ YY_NO_ANCHOR, + /* 151 */ YY_NO_ANCHOR, + /* 152 */ YY_NO_ANCHOR, + /* 153 */ YY_NO_ANCHOR, + /* 154 */ YY_NO_ANCHOR, + /* 155 */ YY_NO_ANCHOR, + /* 156 */ YY_NO_ANCHOR, + /* 157 */ YY_NO_ANCHOR, + /* 158 */ YY_NO_ANCHOR, + /* 159 */ YY_NO_ANCHOR, + /* 160 */ YY_NO_ANCHOR, + /* 161 */ YY_NO_ANCHOR, + /* 162 */ YY_NO_ANCHOR, + /* 163 */ YY_NO_ANCHOR, + /* 164 */ YY_NO_ANCHOR, + /* 165 */ YY_NO_ANCHOR, + /* 166 */ YY_NO_ANCHOR, + /* 167 */ YY_NO_ANCHOR, + /* 168 */ YY_NO_ANCHOR, + /* 169 */ YY_NO_ANCHOR, + /* 170 */ YY_NO_ANCHOR, + /* 171 */ YY_NO_ANCHOR, + /* 172 */ YY_NO_ANCHOR, + /* 173 */ YY_NO_ANCHOR, + /* 174 */ YY_NO_ANCHOR, + /* 175 */ YY_NO_ANCHOR, + /* 176 */ YY_NO_ANCHOR, + /* 177 */ YY_NO_ANCHOR, + /* 178 */ YY_NO_ANCHOR, + /* 179 */ YY_NO_ANCHOR, + /* 180 */ YY_NO_ANCHOR, + /* 181 */ YY_NO_ANCHOR, + /* 182 */ YY_NO_ANCHOR, + /* 183 */ YY_NO_ANCHOR, + /* 184 */ YY_NO_ANCHOR, + /* 185 */ YY_NOT_ACCEPT, + /* 186 */ YY_NOT_ACCEPT, + /* 187 */ YY_NO_ANCHOR, + /* 188 */ YY_NOT_ACCEPT, + /* 189 */ YY_NO_ANCHOR, + /* 190 */ YY_NOT_ACCEPT, + /* 191 */ YY_NO_ANCHOR, + /* 192 */ YY_NO_ANCHOR, + /* 193 */ YY_NO_ANCHOR, + /* 194 */ YY_NO_ANCHOR, + /* 195 */ YY_NO_ANCHOR, + /* 196 */ YY_NO_ANCHOR, + /* 197 */ YY_NO_ANCHOR, + /* 198 */ YY_NO_ANCHOR, + /* 199 */ YY_NO_ANCHOR, + /* 200 */ YY_NO_ANCHOR, + /* 201 */ YY_NO_ANCHOR, + /* 202 */ YY_NO_ANCHOR, + /* 203 */ YY_NO_ANCHOR, + /* 204 */ YY_NO_ANCHOR, + /* 205 */ YY_NO_ANCHOR, + /* 206 */ YY_NO_ANCHOR, + /* 207 */ YY_NO_ANCHOR, + /* 208 */ YY_NO_ANCHOR, + /* 209 */ YY_NO_ANCHOR, + /* 210 */ YY_NO_ANCHOR, + /* 211 */ YY_NO_ANCHOR, + /* 212 */ YY_NO_ANCHOR, + /* 213 */ YY_NO_ANCHOR, + /* 214 */ YY_NO_ANCHOR, + /* 215 */ YY_NO_ANCHOR, + /* 216 */ YY_NO_ANCHOR, + /* 217 */ YY_NO_ANCHOR, + /* 218 */ YY_NO_ANCHOR, + /* 219 */ YY_NO_ANCHOR, + /* 220 */ YY_NO_ANCHOR, + /* 221 */ YY_NO_ANCHOR, + /* 222 */ YY_NO_ANCHOR, + /* 223 */ YY_NO_ANCHOR, + /* 224 */ YY_NO_ANCHOR, + /* 225 */ YY_NO_ANCHOR, + /* 226 */ YY_NO_ANCHOR, + /* 227 */ YY_NO_ANCHOR, + /* 228 */ YY_NO_ANCHOR, + /* 229 */ YY_NO_ANCHOR, + /* 230 */ YY_NO_ANCHOR, + /* 231 */ YY_NO_ANCHOR, + /* 232 */ YY_NO_ANCHOR, + /* 233 */ YY_NO_ANCHOR + }; + static private int yy_cmap[] = unpackFromString(1,65538, +"54:9,27:2,54,27:2,54:18,27,17,53,54,15,54:2,55,25,26,1,3,11,4,13,2,56:10,10" + +",54,18,16,19,54,12,44,57:3,46,57:3,51,57:4,48,52,43,57,47,50,45,57:3,49,57:" + +"2,41,54,42,54,58,54,35,38,29,5,21,39,33,36,6,57,20,37,8,28,9,30,57,31,32,23" + +",34,7,40,24,22,57,54,14,54:58,60,54:8,57:23,54,57:31,54,57:58,58:2,57:11,58" + +":2,57:8,58,57:53,58,57:68,58:9,57:36,58:3,57:2,58:4,57:30,58:56,57:89,58:18" + +",57:7,58:62,60:70,54:26,60:2,54:14,58:14,54,58:7,57,58,57:3,58,57,58,57:20," + +"58,57:44,58,57:7,58:3,57,58,57,58,57,58,57,58,57:18,58:13,57:12,58,57:66,58" + +",57:12,58,57:36,58:14,57:53,58:2,57:2,58:2,57:2,58:3,57:28,58:2,57:8,58:2,5" + +"7:2,58:55,57:38,58:2,57,58:7,57:38,58:73,57:27,58:5,57:3,58:46,57:26,58:6,5" + +"7:10,58:21,59:10,58:7,57:71,58:2,57:5,58,57:15,58,57:4,58,57,58:15,57:2,58:" + +"9,59:10,58:523,57:53,58:3,57,58:26,57:10,58:4,59:10,58:21,57:8,58:2,57:2,58" + +":2,57:22,58,57:7,58,57,58:3,57:4,58:34,57:2,58,57:3,58:4,59:10,57:2,58:19,5" + +"7:6,58:4,57:2,58:2,57:22,58,57:7,58,57:2,58,57:2,58,57:2,58:31,57:4,58,57,5" + +"8:7,59:10,58:2,57:3,58:16,57:7,58,57,58,57:3,58,57:22,58,57:7,58,57:2,58,57" + +":5,58:3,57,58:34,57,58:5,59:10,58:21,57:8,58:2,57:2,58:2,57:22,58,57:7,58,5" + +"7:2,58:2,57:4,58:3,57,58:30,57:2,58,57:3,58:4,59:10,58:21,57:6,58:3,57:3,58" + +",57:4,58:3,57:2,58,57,58,57:2,58:3,57:2,58:3,57:3,58:3,57:8,58,57:3,58:45,5" + +"9:9,58:21,57:8,58,57:3,58,57:23,58,57:10,58,57:5,58:38,57:2,58:4,59:10,58:2" + +"1,57:8,58,57:3,58,57:23,58,57:10,58,57:5,58:36,57,58,57:2,58:4,59:10,58:21," + +"57:8,58,57:3,58,57:23,58,57:16,58:38,57:2,58:4,59:10,58:145,57:46,58,57,58," + +"57:2,58:12,57:6,58:10,59:10,58:39,57:2,58,57,58:2,57:2,58,57,58:2,57,58:6,5" + +"7:4,58,57:7,58,57:3,58,57,58,57,58:2,57:2,58,57:2,58,57,58,57:2,58:9,57,58:" + +"2,57:5,58:11,59:10,58:70,59:10,58:22,57:8,58,57:33,58:310,57:38,58:10,57:39" + +",58:9,57,58,57:2,58,57:3,58,57,58,57:2,58,57:5,58:41,57,58,57,58,57,58:11,5" + +"7,58,57,58,57,58:3,57:2,58:3,57,58:5,57:3,58,57,58,57,58,57,58,57,58:3,57:2" + +",58:3,57:2,58,57,58:40,57,58:9,57,58:2,57,58:2,57:2,58:7,57:2,58,57,58,57:7" + +",58:40,57,58:4,57,58:8,57,58:3078,57:156,58:4,57:90,58:6,57:22,58:2,57:6,58" + +":2,57:38,58:2,57:6,58:2,57:8,58,57,58,57,58,57,58,57:31,58:2,57:53,58,57:7," + +"58,57,58:3,57:3,58,57:7,58:3,57:4,58:2,57:6,58:4,57:13,58:5,57:3,58,57:7,58" + +":3,54:12,58:2,54:98,58:182,57,58:3,57:2,58:2,57,58:81,57:3,58:13,54:2672,58" + +":1008,54:17,58:64,57:84,58:12,57:90,58:10,57:40,58:31443,57:11172,58:92,54:" + +"8448,58:1232,54:32,58:526,54:2,0:2")[0]; + + static private int yy_rmap[] = unpackFromString(1,234, +"0,1:2,2,1:2,3,4,1,5,6,1:3,7,8,1:5,9,1,10:2,1:3,11,1:5,12,10,1,10:5,1:2,10,1" + +":2,13,1,10,1,14,10,15,16,1:2,10:4,17,1:2,18,19,20,21,22,23,24,25,26,27,1,25" + +",10,28:2,29,5,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,5" + +"0,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,7" + +"5,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,1" + +"00,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118," + +"119,120,121,122,123,124,125,126,127,128,129,130,131,132,10,133,134,135,136," + +"137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155" + +",156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,17" + +"4,175,176,177,178,179,180,181")[0]; + + static private int yy_nxt[][] = unpackFromString(182,61, +"1,2,3,4,5,6,65,184,204,70,7,8,9,10,11,12,13,66,14,15,211,184:2,215,184,16,1" + +"7,18,218,220,221,184,222,184:2,223,184:3,224,184,19,20,184:10,71,74,77,21,1" + +"84:2,67,74,-1:63,22,-1:62,184:2,73,184:3,64,-1:2,76,-1:6,184,79,184:3,-1:3," + +"184:13,-1:2,184:10,-1:3,76,184,76:3,-1:10,25,-1:51,26,-1:72,27,-1:42,28,-1:" + +"2,28,-1:17,30,-1:26,69,-1:2,72,-1:30,31,-1:57,34,-1:42,21,-1:2,21,-1:5,184:" + +"6,64,-1:2,76,-1:6,184:5,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:56,28,-" + +"1:2,28,-1:57,34,-1:2,34,-1:5,155,184:5,64,-1:2,76,-1:6,184:5,-1:3,184:13,-1" + +":2,184:10,-1:3,76,184,76:3,-1:4,209,184:5,64,-1:2,76,-1:6,184:5,-1:3,184:13" + +",-1:2,184:10,-1:3,76,184,76:3,-1:4,233,184:5,64,-1:2,76,-1:6,184:5,-1:3,184" + +":13,-1:2,184:10,-1:3,76,184,76:3,-1:4,158,184:5,64,-1:2,76,-1:6,184:5,-1:3," + +"184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,122,-1" + +",124,183,184:12,-1:2,184:10,-1:3,76,184,76:3,-1,36,-1:3,103:5,-1:2,80,-1:7," + +"103:5,-1:3,103:13,-1:2,103:10,-1:4,103:3,-1:5,184,23,184:4,64,-1:2,76,-1:6," + +"184:5,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:16,29,-1:48,184:6,64,-1:2" + +",68,-1:6,184:5,-1:3,184:13,-1:2,184:10,-1:3,67,184,76,67,76,-1:4,184:6,64,-" + +"1:2,76,-1:6,184:5,-1:3,184:13,-1:2,184:10,-1:3,68,184,76,68,76,-1:44,82,-1:" + +"20,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:3,24,184:9,-1:2,184:10,-1:3,76,184," + +"76:3,-1,75:52,32,75:7,-1:49,84,-1:15,184:3,35,184:2,64,-1:2,76,-1:6,184:5,-" + +"1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1,78:54,33,78:5,-1:4,184:6,64,-1:2" + +",76,-1:6,184:5,-1:3,184:4,105,184:8,-1:2,184:10,-1:3,76,184,76:3,-1:4,184,3" + +"7,184:4,64,-1:2,76,-1:6,184:5,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4" + +"5,185,-1:19,184:6,64,-1:2,76,-1:6,184:2,38,184:2,-1:3,184:13,-1:2,184:10,-1" + +":3,76,184,76:3,-1:43,86,-1:21,184:6,64,-1:2,76,-1:6,184:4,191,-1:3,184:13,-" + +"1:2,184:10,-1:3,76,184,76:3,-1:47,186,-1:17,184,107,184:4,64,-1:2,76,-1:6,1" + +"84:5,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:46,96,-1:18,184:4,193,184," + +"64,-1:2,76,-1:6,184:5,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:26,42,-1:" + +"38,184:2,205,184:3,64,-1:2,76,-1:6,184:5,-1:3,184:13,-1:2,184:10,-1:3,76,18" + +"4,76:3,-1:25,100,-1,92,-1:37,184:5,192,64,-1:2,76,-1:6,184,228,184:3,-1:3,1" + +"84:13,-1:2,184:10,-1:3,76,184,76:3,-1:26,43,-1:38,184:6,64,-1:2,76,-1:6,184" + +":5,-1:3,184:3,206,184:9,-1:2,184:10,-1:3,76,184,76:3,-1:47,104,-1:17,184:6," + +"64,-1:2,76,-1:6,184:5,-1:3,184:9,111,184:3,-1:2,184:10,-1:3,76,184,76:3,-1:" + +"50,190,-1:14,184:6,64,-1:2,76,-1:6,184:3,113,184,-1:3,184:13,-1:2,184:10,-1" + +":3,76,184,76:3,-1:26,45,-1:38,184,39,184:4,64,-1:2,76,-1:6,184:5,-1:3,184,2" + +"12,184:11,-1:2,184:10,-1:3,76,184,76:3,-1:26,46,-1:38,103:6,-1:3,103,-1:6,1" + +"03:5,-1:3,103:13,-1:2,103:10,-1:3,103:5,-1:48,106,-1:16,184:6,64,-1:2,76,-1" + +":6,184:5,-1:3,184,216,184:11,-1:2,184:10,-1:3,76,184,76:3,-1:19,48,-1:45,18" + +"4:6,64,-1:2,76,-1:6,184,119,184:3,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3," + +"-1:51,114,-1:13,184:4,123,184,64,-1:2,76,-1:6,184:5,-1:3,184:13,-1:2,184:10" + +",-1:3,76,184,76:3,-1:26,50,-1:38,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:11,40" + +",184,-1:2,184:10,-1:3,76,184,76:3,-1:25,116,-1,112,-1:37,184:6,64,-1:2,76,-" + +"1:6,184:5,-1:3,184:3,128,184:9,-1:2,184:10,-1:3,76,184,76:3,-1:52,118,-1:12" + +",184:6,64,-1:2,76,-1:6,184:5,-1:3,184:9,129,184:3,-1:2,184:10,-1:3,76,184,7" + +"6:3,-1:26,55,-1:38,184:6,64,-1:2,76,-1:6,184:3,130,184,90,-1,92,184:13,-1:2" + +",184:10,-1:3,76,184,76:3,-1:48,120,-1:16,184:6,64,-1:2,76,-1:6,184,131,184:" + +"3,94,-1,188,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:19,56,-1:45,184:6,64,-1:" + +"2,76,-1:6,184:5,-1:3,184:4,132,184:8,-1:2,184:10,-1:3,76,184,76:3,-1:26,62," + +"-1:38,184:6,64,-1:2,76,-1:6,184,208,184:3,-1:3,184:13,-1:2,184:10,-1:3,76,1" + +"84,76:3,-1:25,126,-1,124,-1:37,184,41,184:4,64,-1:2,76,-1:6,184:5,-1:3,184:" + +"13,-1:2,184:10,-1:3,76,184,76:3,-1:26,63,-1:38,184:6,64,-1:2,76,-1:6,184:5," + +"-1:3,135,184:12,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:2,136,184:3,64,-1:2,7" + +"6,-1:6,184:5,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:5,138,64,-1:" + +"2,76,-1:6,184:5,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2" + +",76,-1:6,184:3,130,184,-1:2,92,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184" + +":6,64,-1:2,76,-1:6,184,131,184:3,-1:2,188,184:13,-1:2,184:10,-1:3,76,184,76" + +":3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:2,139,184:10,-1:2,184:10,-1:3," + +"76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:4,197,184:8,-1:2,184:" + +"10,-1:3,76,184,76:3,-1:4,184,140,184:4,64,-1:2,76,-1:6,184:5,-1:3,184:13,-1" + +":2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:3,44,184,-1:3,184" + +":13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:" + +"10,141,184:2,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:3," + +"142,184,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6" + +",184:5,-1:3,184:12,225,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-" + +"1:6,184:5,-1:3,184:7,143,184:5,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:2,145," + +"184:3,64,-1:2,76,-1:6,184:5,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,1" + +"84:6,64,-1:2,76,-1:6,184:5,-1:3,184:6,146,184:6,-1:2,184:10,-1:3,76,184,76:" + +"3,-1:4,184:5,147,64,-1:2,76,-1:6,184:5,-1:3,184:13,-1:2,184:10,-1:3,76,184," + +"76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,184,148,184:11,-1:2,184:10,-1:3," + +"76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:3,149,184,110,-1,112,184:13,-1:2" + +",184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,150,184:12,-" + +"1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:3,151,184,-1:3,1" + +"84:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,18" + +"4:3,47,184:9,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184,49" + +",184:3,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6," + +"184:3,149,184,-1:2,112,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1" + +":2,76,-1:6,184:5,-1:3,184:5,51,184:7,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:" + +"6,64,-1:2,76,-1:6,184,52,184:3,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:" + +"4,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:5,53,184:7,-1:2,184:10,-1:3,76,184,7" + +"6:3,-1:4,184:6,64,-1:2,76,-1:6,184:3,54,184,-1:3,184:13,-1:2,184:10,-1:3,76" + +",184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:5,156,184:7,-1:2,184:10" + +",-1:3,76,184,76:3,-1:4,184:5,157,64,-1:2,76,-1:6,184:5,-1:3,184:13,-1:2,184" + +":10,-1:3,76,184,76:3,-1:4,159,184:5,64,-1:2,76,-1:6,184:5,-1:3,184:13,-1:2," + +"184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:3,160,184" + +":9,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:5,161,64,-1:2,76,-1:6,184:5,-1:3,1" + +"84:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:2,162,184:3,64,-1:2,76,-1:6,184" + +":5,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,213,184:5,64,-1:2,76,-1:6," + +"184:5,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,1" + +"84:5,-1:3,184:3,226,184:9,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,7" + +"6,-1:6,184:5,-1:3,217,184:12,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:" + +"2,76,-1:6,184:5,-1:3,184:10,164,184:2,-1:2,184:10,-1:3,76,184,76:3,-1:4,184" + +":6,64,-1:2,76,-1:6,184:5,-1:3,184:9,167,184:3,-1:2,184:10,-1:3,76,184,76:3," + +"-1:4,184:6,64,-1:2,76,-1:6,184,168,184:3,-1:3,184:13,-1:2,184:10,-1:3,76,18" + +"4,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:3,170,184,-1:3,184:13,-1:2,184:10,-1:" + +"3,76,184,76:3,-1:4,184:2,171,184:3,64,-1:2,76,-1:6,184:5,-1:3,184:13,-1:2,1" + +"84:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:9,172,184:" + +"3,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184,173,184:3,-1:" + +"3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3" + +",184:3,174,184:9,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,18" + +"4:5,-1:3,175,184:12,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6" + +",184:5,-1:3,184:11,57,184,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,7" + +"6,-1:6,184:5,-1:3,184:9,177,184:3,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,6" + +"4,-1:2,76,-1:6,184:5,-1:3,184:6,178,184:6,-1:2,184:10,-1:3,76,184,76:3,-1:4" + +",184:6,64,-1:2,76,-1:6,184:5,-1:3,184:5,58,184:7,-1:2,184:10,-1:3,76,184,76" + +":3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:5,59,184:7,-1:2,184:10,-1:3,76" + +",184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:11,60,184,-1:2,184:10,-" + +"1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,184,179,184:11,-1:2,1" + +"84:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:3,180,184,-1:3,184:13" + +",-1:2,184:10,-1:3,76,184,76:3,-1:4,184:2,181,184:3,64,-1:2,76,-1:6,184:5,-1" + +":3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:5,182,64,-1:2,76,-1:6,184:5" + +",-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5," + +"-1:3,61,184:12,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:" + +"5,-1:2,124,183,184:12,-1:2,184:10,-1:3,76,184,76:3,-1:45,88,-1:61,98,-1:18," + +"184:4,109,184,64,-1:2,76,-1:6,184:5,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:" + +"3,-1:25,102,-1,188,-1:37,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:9,115,184:3,-" + +"1:2,184:10,-1:3,76,184,76:3,-1:50,108,-1:14,184:6,64,-1:2,76,-1:6,184:3,117" + +",184,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,18" + +"4:5,-1:3,184,195,184:11,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76," + +"-1:6,184,121,184:3,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-" + +"1:2,76,-1:6,184:5,-1:3,184:4,137,184:8,-1:2,184:10,-1:3,76,184,76:3,-1:4,18" + +"4:6,64,-1:2,76,-1:6,184,133,184:3,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3," + +"-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,198,184:12,-1:2,184:10,-1:3,76,184,76" + +":3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:4,229,184:8,-1:2,184:10,-1:3,7" + +"6,184,76:3,-1:4,184,200,184:4,64,-1:2,76,-1:6,184:5,-1:3,184:13,-1:2,184:10" + +",-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:3,144,184,-1:3,184:13,-1:2" + +",184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:7,210,18" + +"4:5,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,152," + +"184:12,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:2,163,184:3,64,-1:2,76,-1:6,18" + +"4:5,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184" + +":5,-1:3,176,184:12,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:5,81,64,-1:2,76,-1" + +":6,184:5,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:" + +"6,184:5,-1:3,184:9,125,184:3,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:" + +"2,76,-1:6,184,127,184:3,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6" + +",64,-1:2,76,-1:6,184,134,184:3,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:" + +"4,184:6,64,-1:2,76,-1:6,184:5,-1:3,199,184:12,-1:2,184:10,-1:3,76,184,76:3," + +"-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:4,202,184:8,-1:2,184:10,-1:3,76,1" + +"84,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,153,184:12,-1:2,184:10,-1:3,7" + +"6,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184,83,184:3,-1:3,184:13,-1:2,184:10," + +"-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184,194,184:3,-1:3,184:13,-1:2," + +"184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:4,165,184" + +":8,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,154,1" + +"84:12,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184,85,184:3," + +"-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184,196" + +",184:3,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6," + +"184:5,-1:3,184:4,166,184:8,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:5,87,64,-1" + +":2,76,-1:6,184:5,-1:3,184:7,89,184:5,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:" + +"6,64,-1:2,76,-1:6,184:5,-1:3,184:4,169,184:8,-1:2,184:10,-1:3,76,184,76:3,-" + +"1:4,184:5,187,64,-1:2,76,-1:6,184:5,-1:3,184:8,91,184:4,-1:2,184:10,-1:3,76" + +",184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:3,93,184:3,95,184:5,-1:" + +"2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184,97,184:3,-1:3,184:" + +"13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:3,99,184,-1:" + +"3,101,184:12,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:5,189,64,-1:2,76,-1:6,18" + +"4:5,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:2,201,184:3,64,-1:2,7" + +"6,-1:6,184:5,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,219,184:5,64,-1:" + +"2,76,-1:6,184:5,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:2,203,184" + +":3,64,-1:2,76,-1:6,184:5,-1:3,184:13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:" + +"6,64,-1:2,76,-1:6,184:5,-1:3,184,207,184:11,-1:2,184:10,-1:3,76,184,76:3,-1" + +":4,184:2,214,184:3,64,-1:2,76,-1:6,184:5,-1:3,184:13,-1:2,184:10,-1:3,76,18" + +"4,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:9,227,184:3,-1:2,184:10,-1" + +":3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:10,230,184:2,-1:2," + +"184:10,-1:3,76,184,76:3,-1:4,184:2,231,184:3,64,-1:2,76,-1:6,184:5,-1:3,184" + +":13,-1:2,184:10,-1:3,76,184,76:3,-1:4,184:6,64,-1:2,76,-1:6,184:5,-1:3,184:" + +"4,232,184:8,-1:2,184:10,-1:3,76,184,76:3"); + + public java_cup.runtime.Symbol next_token () + throws java.io.IOException, +Exception + + { + int yy_lookahead; + int yy_anchor = YY_NO_ANCHOR; + int yy_state = yy_state_dtrans[yy_lexical_state]; + int yy_next_state = YY_NO_STATE; + int yy_last_accept_state = YY_NO_STATE; + boolean yy_initial = true; + int yy_this_accept; + + yy_mark_start(); + yy_this_accept = yy_acpt[yy_state]; + if (YY_NOT_ACCEPT != yy_this_accept) { + yy_last_accept_state = yy_state; + yy_mark_end(); + } + while (true) { + if (yy_initial && yy_at_bol) yy_lookahead = YY_BOL; + else yy_lookahead = yy_advance(); + yy_next_state = YY_F; + yy_next_state = yy_nxt[yy_rmap[yy_state]][yy_cmap[yy_lookahead]]; + if (YY_EOF == yy_lookahead && true == yy_initial) { + +return newSymbol(sym.EOF); + } + if (YY_F != yy_next_state) { + yy_state = yy_next_state; + yy_initial = false; + yy_this_accept = yy_acpt[yy_state]; + if (YY_NOT_ACCEPT != yy_this_accept) { + yy_last_accept_state = yy_state; + yy_mark_end(); + } + } + else { + if (YY_NO_STATE == yy_last_accept_state) { + throw (new Error("Lexical Error: Unmatched Input.")); + } + else { + yy_anchor = yy_acpt[yy_last_accept_state]; + if (0 != (YY_END & yy_anchor)) { + yy_move_end(); + } + yy_to_mark(); + switch (yy_last_accept_state) { + case 1: + + case -2: + break; + case 2: + { return disambiguateStar(); } + case -3: + break; + case 3: + { return newSymbol(sym.SLASH); } + case -4: + break; + case 4: + { return newSymbol(sym.PLUS); } + case -5: + break; + case 5: + { return newSymbol(sym.MINUS); } + case -6: + break; + case 6: + { return newSymbol(sym.QNAME, yytext()); } + case -7: + break; + case 7: + { throw new Exception(yytext()); } + case -8: + break; + case 8: + { return newSymbol(sym.COMMA); } + case -9: + break; + case 9: + { return newSymbol(sym.ATSIGN); } + case -10: + break; + case 10: + { return newSymbol(sym.DOT); } + case -11: + break; + case 11: + { return newSymbol(sym.VBAR); } + case -12: + break; + case 12: + { return newSymbol(sym.DOLLAR); } + case -13: + break; + case 13: + { return newSymbol(sym.EQ); } + case -14: + break; + case 14: + { return newSymbol(sym.LT); } + case -15: + break; + case 15: + { return newSymbol(sym.GT); } + case -16: + break; + case 16: + { return newSymbol(sym.LPAREN); } + case -17: + break; + case 17: + { return newSymbol(sym.RPAREN); } + case -18: + break; + case 18: + { /* ignore white space. */ } + case -19: + break; + case 19: + { return newSymbol(sym.LBRACK); } + case -20: + break; + case 20: + { return newSymbol(sym.RBRACK); } + case -21: + break; + case 21: + { return newSymbol(sym.INT, new Long(yytext())); } + case -22: + break; + case 22: + { return newSymbol(sym.DSLASH); } + case -23: + break; + case 23: + { return disambiguateAxisOrFunction(sym.ID); } + case -24: + break; + case 24: + { return disambiguateOperator(sym.OR); } + case -25: + break; + case 25: + { return newSymbol(sym.DCOLON); } + case -26: + break; + case 26: + { return newSymbol(sym.QNAME, yytext()); } + case -27: + break; + case 27: + { return newSymbol(sym.DDOT); } + case -28: + break; + case 28: + { return newSymbol(sym.REAL, new Double(yytext())); } + case -29: + break; + case 29: + { return newSymbol(sym.NE); } + case -30: + break; + case 30: + { return newSymbol(sym.LE); } + case -31: + break; + case 31: + { return newSymbol(sym.GE); } + case -32: + break; + case 32: + { return newSymbol(sym.Literal, + yytext().substring(1, yytext().length() - 1)); } + case -33: + break; + case 33: + { return newSymbol(sym.Literal, + yytext().substring(1, yytext().length() - 1)); } + case -34: + break; + case 34: + { return newSymbol(sym.REAL, new Double(yytext())); } + case -35: + break; + case 35: + { return disambiguateOperator(sym.DIV); } + case -36: + break; + case 36: + { return newSymbol(sym.QNAME, yytext()); } + case -37: + break; + case 37: + { return disambiguateOperator(sym.MOD); } + case -38: + break; + case 38: + { return disambiguateAxisOrFunction(sym.KEY); } + case -39: + break; + case 39: + { return disambiguateOperator(sym.AND); } + case -40: + break; + case 40: + { return disambiguateAxisOrFunction(sym.SELF); } + case -41: + break; + case 41: + { return disambiguateAxisOrFunction(sym.CHILD); } + case -42: + break; + case 42: + { return newSymbol(sym.TEXT); } + case -43: + break; + case 43: + { return newSymbol(sym.NODE); } + case -44: + break; + case 44: + { return disambiguateAxisOrFunction(sym.PARENT); } + case -45: + break; + case 45: + { return newSymbol(sym.TEXT); } + case -46: + break; + case 46: + { return newSymbol(sym.NODE); } + case -47: + break; + case 47: + { return disambiguateAxisOrFunction(sym.ANCESTOR); } + case -48: + break; + case 48: + { initialize(); return new Symbol(sym.PATTERN); } + case -49: + break; + case 49: + { return disambiguateAxisOrFunction(sym.NAMESPACE); } + case -50: + break; + case 50: + { return newSymbol(sym.COMMENT); } + case -51: + break; + case 51: + { return disambiguateAxisOrFunction(sym.PRECEDING); } + case -52: + break; + case 52: + { return disambiguateAxisOrFunction(sym.ATTRIBUTE); } + case -53: + break; + case 53: + { return disambiguateAxisOrFunction(sym.FOLLOWING); } + case -54: + break; + case 54: + { return disambiguateAxisOrFunction(sym.DESCENDANT); } + case -55: + break; + case 55: + { return newSymbol(sym.COMMENT); } + case -56: + break; + case 56: + { initialize(); return new Symbol(sym.EXPRESSION); } + case -57: + break; + case 57: + { return disambiguateAxisOrFunction(sym.ANCESTORORSELF); } + case -58: + break; + case 58: + { return disambiguateAxisOrFunction(sym.PRECEDINGSIBLING); } + case -59: + break; + case 59: + { return disambiguateAxisOrFunction(sym.FOLLOWINGSIBLING); } + case -60: + break; + case 60: + { return disambiguateAxisOrFunction(sym.DESCENDANTORSELF); } + case -61: + break; + case 61: + { return disambiguateAxisOrFunction(sym.PIPARAM); } + case -62: + break; + case 62: + { return newSymbol(sym.PI); } + case -63: + break; + case 63: + { return newSymbol(sym.PI); } + case -64: + break; + case 65: + { return newSymbol(sym.QNAME, yytext()); } + case -65: + break; + case 66: + { throw new Exception(yytext()); } + case -66: + break; + case 67: + { return newSymbol(sym.INT, new Long(yytext())); } + case -67: + break; + case 68: + { return newSymbol(sym.REAL, new Double(yytext())); } + case -68: + break; + case 70: + { return newSymbol(sym.QNAME, yytext()); } + case -69: + break; + case 71: + { throw new Exception(yytext()); } + case -70: + break; + case 73: + { return newSymbol(sym.QNAME, yytext()); } + case -71: + break; + case 74: + { throw new Exception(yytext()); } + case -72: + break; + case 76: + { return newSymbol(sym.QNAME, yytext()); } + case -73: + break; + case 77: + { throw new Exception(yytext()); } + case -74: + break; + case 79: + { return newSymbol(sym.QNAME, yytext()); } + case -75: + break; + case 81: + { return newSymbol(sym.QNAME, yytext()); } + case -76: + break; + case 83: + { return newSymbol(sym.QNAME, yytext()); } + case -77: + break; + case 85: + { return newSymbol(sym.QNAME, yytext()); } + case -78: + break; + case 87: + { return newSymbol(sym.QNAME, yytext()); } + case -79: + break; + case 89: + { return newSymbol(sym.QNAME, yytext()); } + case -80: + break; + case 91: + { return newSymbol(sym.QNAME, yytext()); } + case -81: + break; + case 93: + { return newSymbol(sym.QNAME, yytext()); } + case -82: + break; + case 95: + { return newSymbol(sym.QNAME, yytext()); } + case -83: + break; + case 97: + { return newSymbol(sym.QNAME, yytext()); } + case -84: + break; + case 99: + { return newSymbol(sym.QNAME, yytext()); } + case -85: + break; + case 101: + { return newSymbol(sym.QNAME, yytext()); } + case -86: + break; + case 103: + { return newSymbol(sym.QNAME, yytext()); } + case -87: + break; + case 105: + { return newSymbol(sym.QNAME, yytext()); } + case -88: + break; + case 107: + { return newSymbol(sym.QNAME, yytext()); } + case -89: + break; + case 109: + { return newSymbol(sym.QNAME, yytext()); } + case -90: + break; + case 111: + { return newSymbol(sym.QNAME, yytext()); } + case -91: + break; + case 113: + { return newSymbol(sym.QNAME, yytext()); } + case -92: + break; + case 115: + { return newSymbol(sym.QNAME, yytext()); } + case -93: + break; + case 117: + { return newSymbol(sym.QNAME, yytext()); } + case -94: + break; + case 119: + { return newSymbol(sym.QNAME, yytext()); } + case -95: + break; + case 121: + { return newSymbol(sym.QNAME, yytext()); } + case -96: + break; + case 123: + { return newSymbol(sym.QNAME, yytext()); } + case -97: + break; + case 125: + { return newSymbol(sym.QNAME, yytext()); } + case -98: + break; + case 127: + { return newSymbol(sym.QNAME, yytext()); } + case -99: + break; + case 128: + { return newSymbol(sym.QNAME, yytext()); } + case -100: + break; + case 129: + { return newSymbol(sym.QNAME, yytext()); } + case -101: + break; + case 130: + { return newSymbol(sym.QNAME, yytext()); } + case -102: + break; + case 131: + { return newSymbol(sym.QNAME, yytext()); } + case -103: + break; + case 132: + { return newSymbol(sym.QNAME, yytext()); } + case -104: + break; + case 133: + { return newSymbol(sym.QNAME, yytext()); } + case -105: + break; + case 134: + { return newSymbol(sym.QNAME, yytext()); } + case -106: + break; + case 135: + { return newSymbol(sym.QNAME, yytext()); } + case -107: + break; + case 136: + { return newSymbol(sym.QNAME, yytext()); } + case -108: + break; + case 137: + { return newSymbol(sym.QNAME, yytext()); } + case -109: + break; + case 138: + { return newSymbol(sym.QNAME, yytext()); } + case -110: + break; + case 139: + { return newSymbol(sym.QNAME, yytext()); } + case -111: + break; + case 140: + { return newSymbol(sym.QNAME, yytext()); } + case -112: + break; + case 141: + { return newSymbol(sym.QNAME, yytext()); } + case -113: + break; + case 142: + { return newSymbol(sym.QNAME, yytext()); } + case -114: + break; + case 143: + { return newSymbol(sym.QNAME, yytext()); } + case -115: + break; + case 144: + { return newSymbol(sym.QNAME, yytext()); } + case -116: + break; + case 145: + { return newSymbol(sym.QNAME, yytext()); } + case -117: + break; + case 146: + { return newSymbol(sym.QNAME, yytext()); } + case -118: + break; + case 147: + { return newSymbol(sym.QNAME, yytext()); } + case -119: + break; + case 148: + { return newSymbol(sym.QNAME, yytext()); } + case -120: + break; + case 149: + { return newSymbol(sym.QNAME, yytext()); } + case -121: + break; + case 150: + { return newSymbol(sym.QNAME, yytext()); } + case -122: + break; + case 151: + { return newSymbol(sym.QNAME, yytext()); } + case -123: + break; + case 152: + { return newSymbol(sym.QNAME, yytext()); } + case -124: + break; + case 153: + { return newSymbol(sym.QNAME, yytext()); } + case -125: + break; + case 154: + { return newSymbol(sym.QNAME, yytext()); } + case -126: + break; + case 155: + { return newSymbol(sym.QNAME, yytext()); } + case -127: + break; + case 156: + { return newSymbol(sym.QNAME, yytext()); } + case -128: + break; + case 157: + { return newSymbol(sym.QNAME, yytext()); } + case -129: + break; + case 158: + { return newSymbol(sym.QNAME, yytext()); } + case -130: + break; + case 159: + { return newSymbol(sym.QNAME, yytext()); } + case -131: + break; + case 160: + { return newSymbol(sym.QNAME, yytext()); } + case -132: + break; + case 161: + { return newSymbol(sym.QNAME, yytext()); } + case -133: + break; + case 162: + { return newSymbol(sym.QNAME, yytext()); } + case -134: + break; + case 163: + { return newSymbol(sym.QNAME, yytext()); } + case -135: + break; + case 164: + { return newSymbol(sym.QNAME, yytext()); } + case -136: + break; + case 165: + { return newSymbol(sym.QNAME, yytext()); } + case -137: + break; + case 166: + { return newSymbol(sym.QNAME, yytext()); } + case -138: + break; + case 167: + { return newSymbol(sym.QNAME, yytext()); } + case -139: + break; + case 168: + { return newSymbol(sym.QNAME, yytext()); } + case -140: + break; + case 169: + { return newSymbol(sym.QNAME, yytext()); } + case -141: + break; + case 170: + { return newSymbol(sym.QNAME, yytext()); } + case -142: + break; + case 171: + { return newSymbol(sym.QNAME, yytext()); } + case -143: + break; + case 172: + { return newSymbol(sym.QNAME, yytext()); } + case -144: + break; + case 173: + { return newSymbol(sym.QNAME, yytext()); } + case -145: + break; + case 174: + { return newSymbol(sym.QNAME, yytext()); } + case -146: + break; + case 175: + { return newSymbol(sym.QNAME, yytext()); } + case -147: + break; + case 176: + { return newSymbol(sym.QNAME, yytext()); } + case -148: + break; + case 177: + { return newSymbol(sym.QNAME, yytext()); } + case -149: + break; + case 178: + { return newSymbol(sym.QNAME, yytext()); } + case -150: + break; + case 179: + { return newSymbol(sym.QNAME, yytext()); } + case -151: + break; + case 180: + { return newSymbol(sym.QNAME, yytext()); } + case -152: + break; + case 181: + { return newSymbol(sym.QNAME, yytext()); } + case -153: + break; + case 182: + { return newSymbol(sym.QNAME, yytext()); } + case -154: + break; + case 183: + { return newSymbol(sym.QNAME, yytext()); } + case -155: + break; + case 184: + { return newSymbol(sym.QNAME, yytext()); } + case -156: + break; + case 187: + { return newSymbol(sym.QNAME, yytext()); } + case -157: + break; + case 189: + { return newSymbol(sym.QNAME, yytext()); } + case -158: + break; + case 191: + { return newSymbol(sym.QNAME, yytext()); } + case -159: + break; + case 192: + { return newSymbol(sym.QNAME, yytext()); } + case -160: + break; + case 193: + { return newSymbol(sym.QNAME, yytext()); } + case -161: + break; + case 194: + { return newSymbol(sym.QNAME, yytext()); } + case -162: + break; + case 195: + { return newSymbol(sym.QNAME, yytext()); } + case -163: + break; + case 196: + { return newSymbol(sym.QNAME, yytext()); } + case -164: + break; + case 197: + { return newSymbol(sym.QNAME, yytext()); } + case -165: + break; + case 198: + { return newSymbol(sym.QNAME, yytext()); } + case -166: + break; + case 199: + { return newSymbol(sym.QNAME, yytext()); } + case -167: + break; + case 200: + { return newSymbol(sym.QNAME, yytext()); } + case -168: + break; + case 201: + { return newSymbol(sym.QNAME, yytext()); } + case -169: + break; + case 202: + { return newSymbol(sym.QNAME, yytext()); } + case -170: + break; + case 203: + { return newSymbol(sym.QNAME, yytext()); } + case -171: + break; + case 204: + { return newSymbol(sym.QNAME, yytext()); } + case -172: + break; + case 205: + { return newSymbol(sym.QNAME, yytext()); } + case -173: + break; + case 206: + { return newSymbol(sym.QNAME, yytext()); } + case -174: + break; + case 207: + { return newSymbol(sym.QNAME, yytext()); } + case -175: + break; + case 208: + { return newSymbol(sym.QNAME, yytext()); } + case -176: + break; + case 209: + { return newSymbol(sym.QNAME, yytext()); } + case -177: + break; + case 210: + { return newSymbol(sym.QNAME, yytext()); } + case -178: + break; + case 211: + { return newSymbol(sym.QNAME, yytext()); } + case -179: + break; + case 212: + { return newSymbol(sym.QNAME, yytext()); } + case -180: + break; + case 213: + { return newSymbol(sym.QNAME, yytext()); } + case -181: + break; + case 214: + { return newSymbol(sym.QNAME, yytext()); } + case -182: + break; + case 215: + { return newSymbol(sym.QNAME, yytext()); } + case -183: + break; + case 216: + { return newSymbol(sym.QNAME, yytext()); } + case -184: + break; + case 217: + { return newSymbol(sym.QNAME, yytext()); } + case -185: + break; + case 218: + { return newSymbol(sym.QNAME, yytext()); } + case -186: + break; + case 219: + { return newSymbol(sym.QNAME, yytext()); } + case -187: + break; + case 220: + { return newSymbol(sym.QNAME, yytext()); } + case -188: + break; + case 221: + { return newSymbol(sym.QNAME, yytext()); } + case -189: + break; + case 222: + { return newSymbol(sym.QNAME, yytext()); } + case -190: + break; + case 223: + { return newSymbol(sym.QNAME, yytext()); } + case -191: + break; + case 224: + { return newSymbol(sym.QNAME, yytext()); } + case -192: + break; + case 225: + { return newSymbol(sym.QNAME, yytext()); } + case -193: + break; + case 226: + { return newSymbol(sym.QNAME, yytext()); } + case -194: + break; + case 227: + { return newSymbol(sym.QNAME, yytext()); } + case -195: + break; + case 228: + { return newSymbol(sym.QNAME, yytext()); } + case -196: + break; + case 229: + { return newSymbol(sym.QNAME, yytext()); } + case -197: + break; + case 230: + { return newSymbol(sym.QNAME, yytext()); } + case -198: + break; + case 231: + { return newSymbol(sym.QNAME, yytext()); } + case -199: + break; + case 232: + { return newSymbol(sym.QNAME, yytext()); } + case -200: + break; + case 233: + { return newSymbol(sym.QNAME, yytext()); } + case -201: + break; + default: + yy_error(YY_E_INTERNAL,false); + case -1: + } + yy_initial = true; + yy_state = yy_state_dtrans[yy_lexical_state]; + yy_next_state = YY_NO_STATE; + yy_last_accept_state = YY_NO_STATE; + yy_mark_start(); + yy_this_accept = yy_acpt[yy_state]; + if (YY_NOT_ACCEPT != yy_this_accept) { + yy_last_accept_state = yy_state; + yy_mark_end(); + } + } + } + } + } +} diff --git a/src/org/apache/xalan/xsltc/compiler/XPathParser.java b/src/org/apache/xalan/xsltc/compiler/XPathParser.java new file mode 100644 index 000000000..9b7688d71 --- /dev/null +++ b/src/org/apache/xalan/xsltc/compiler/XPathParser.java @@ -0,0 +1,3149 @@ + +//---------------------------------------------------- +// The following code was generated by CUP v0.10k +// Fri Sep 16 18:02:07 IST 2022 +//---------------------------------------------------- + +package org.apache.xalan.xsltc.compiler; + +import java.util.Stack; +import java.util.Vector; +import java.io.StringReader; +import java_cup.runtime.*; +import org.apache.xml.dtm.DTM; +import org.apache.xalan.xsltc.DOM; +import org.apache.xml.dtm.Axis; +import org.apache.xalan.xsltc.runtime.Operators; +import org.apache.xalan.xsltc.compiler.util.ErrorMsg; + +/** CUP v0.10k generated parser. + * @version Fri Sep 16 18:02:07 IST 2022 + */ +public class XPathParser extends java_cup.runtime.lr_parser { + + /** Default constructor. */ + public XPathParser() {super();} + + /** Constructor which sets the default scanner. */ + public XPathParser(java_cup.runtime.Scanner s) {super(s);} + + /** Production table. */ + protected static final short _production_table[][] = + unpackFromStrings(new String[] { + "\000\215\000\002\002\004\000\002\003\004\000\002\003" + + "\004\000\002\036\003\000\002\036\005\000\002\037\003" + + "\000\002\037\004\000\002\037\003\000\002\037\005\000" + + "\002\037\005\000\002\037\004\000\002\037\003\000\002" + + "\035\006\000\002\035\010\000\002\040\006\000\002\041" + + "\003\000\002\041\005\000\002\041\005\000\002\042\003" + + "\000\002\042\004\000\002\042\003\000\002\042\004\000" + + "\002\042\004\000\002\042\005\000\002\042\004\000\002" + + "\042\005\000\002\043\003\000\002\043\003\000\002\043" + + "\003\000\002\043\003\000\002\043\003\000\002\044\003" + + "\000\002\044\003\000\002\054\003\000\002\054\004\000" + + "\002\054\004\000\002\045\003\000\002\045\004\000\002" + + "\007\005\000\002\004\003\000\002\012\003\000\002\012" + + "\005\000\002\013\003\000\002\013\005\000\002\014\003" + + "\000\002\014\005\000\002\014\005\000\002\015\003\000" + + "\002\015\005\000\002\015\005\000\002\015\005\000\002" + + "\015\005\000\002\016\003\000\002\016\005\000\002\016" + + "\005\000\002\017\003\000\002\017\005\000\002\017\005" + + "\000\002\017\005\000\002\020\003\000\002\020\004\000" + + "\002\024\003\000\002\024\005\000\002\025\003\000\002" + + "\025\003\000\002\025\005\000\002\025\005\000\002\006" + + "\003\000\002\006\003\000\002\027\003\000\002\027\005" + + "\000\002\027\003\000\002\031\003\000\002\031\004\000" + + "\002\031\003\000\002\030\005\000\002\032\004\000\002" + + "\011\003\000\002\011\004\000\002\011\005\000\002\011" + + "\004\000\002\011\003\000\002\053\004\000\002\053\003" + + "\000\002\052\003\000\002\052\003\000\002\052\003\000" + + "\002\052\003\000\002\052\003\000\002\052\003\000\002" + + "\052\003\000\002\052\003\000\002\052\003\000\002\052" + + "\003\000\002\052\003\000\002\052\003\000\002\052\003" + + "\000\002\026\003\000\002\026\003\000\002\010\003\000" + + "\002\010\004\000\002\023\003\000\002\023\005\000\002" + + "\023\003\000\002\023\003\000\002\023\003\000\002\023" + + "\003\000\002\021\004\000\002\022\005\000\002\022\006" + + "\000\002\046\003\000\002\046\005\000\002\050\003\000" + + "\002\051\003\000\002\005\003\000\002\033\003\000\002" + + "\033\003\000\002\033\003\000\002\033\003\000\002\033" + + "\006\000\002\033\003\000\002\034\003\000\002\034\003" + + "\000\002\047\003\000\002\047\003\000\002\047\003\000" + + "\002\047\003\000\002\047\003\000\002\047\003\000\002" + + "\047\003\000\002\047\003\000\002\047\003\000\002\047" + + "\003\000\002\047\003\000\002\047\003\000\002\047\003" + + "\000\002\047\003\000\002\047\003\000\002\047\003\000" + + "\002\047\003\000\002\047\003" }); + + /** Access to production table. */ + public short[][] production_table() {return _production_table;} + + /** Parse-action table. */ + protected static final short[][] _action_table = + unpackFromStrings(new String[] { + "\000\307\000\006\067\006\070\005\001\002\000\004\002" + + "\311\001\002\000\110\004\061\005\111\011\071\013\103" + + "\015\134\016\066\017\106\021\070\031\075\032\031\033" + + "\040\035\057\036\034\037\113\040\141\041\142\042\145" + + "\045\063\046\062\047\065\050\115\051\123\052\136\053" + + "\077\054\143\055\131\056\125\057\116\060\104\061\140" + + "\062\067\063\060\064\127\065\132\066\072\001\002\000" + + "\070\004\013\013\027\016\020\021\023\032\031\033\040" + + "\036\034\037\033\040\046\041\047\042\051\045\015\046" + + "\014\047\016\050\036\051\037\052\044\053\025\054\050" + + "\055\043\056\041\057\035\060\030\061\045\062\021\063" + + "\012\064\042\001\002\000\006\002\ufffe\010\306\001\002" + + "\000\004\002\000\001\002\000\014\002\uffe7\004\uffe7\006" + + "\uffe7\010\uffe7\021\uffe7\001\002\000\054\002\uff7a\004\uff7a" + + "\006\uff7a\007\uff7a\010\uff7a\012\uff7a\014\uff7a\021\uff7a\022" + + "\uff7a\023\uff7a\024\uff7a\025\uff7a\026\uff7a\027\uff7a\030\uff7a" + + "\031\uff7a\032\uff7a\033\uff7a\034\uff7a\043\uff7a\044\uff7a\001" + + "\002\000\070\002\ufffc\010\ufffc\013\027\016\020\032\031" + + "\033\040\036\034\037\113\040\141\041\047\042\051\045" + + "\015\046\014\047\016\050\036\051\037\052\044\053\025" + + "\054\050\055\043\056\041\057\035\060\030\061\045\062" + + "\021\063\012\064\042\001\002\000\014\002\uffe3\004\uffe3" + + "\006\uffe3\010\uffe3\021\uffe3\001\002\000\014\002\uffe4\004" + + "\uffe4\006\uffe4\010\uffe4\021\uffe4\001\002\000\004\011\302" + + "\001\002\000\012\002\ufffa\004\277\010\ufffa\021\276\001" + + "\002\000\062\013\uffe0\032\uffe0\033\uffe0\036\uffe0\037\uffe0" + + "\040\uffe0\041\uffe0\042\uffe0\045\uffe0\046\uffe0\047\uffe0\050" + + "\uffe0\051\uffe0\052\uffe0\053\uffe0\054\uffe0\055\uffe0\056\uffe0" + + "\057\uffe0\060\uffe0\061\uffe0\062\uffe0\063\uffe0\064\uffe0\001" + + "\002\000\054\002\uff7b\004\uff7b\006\uff7b\007\uff7b\010\uff7b" + + "\012\uff7b\014\uff7b\021\uff7b\022\uff7b\023\uff7b\024\uff7b\025" + + "\uff7b\026\uff7b\027\uff7b\030\uff7b\031\uff7b\032\uff7b\033\uff7b" + + "\034\uff7b\043\uff7b\044\uff7b\001\002\000\062\013\027\032" + + "\031\033\040\036\034\037\113\040\141\041\047\042\051" + + "\045\015\046\014\047\016\050\036\051\037\052\044\053" + + "\170\054\166\055\043\056\041\057\035\060\030\061\045" + + "\062\021\063\012\064\042\001\002\000\064\013\027\016" + + "\020\032\031\033\040\036\034\037\113\040\141\041\047" + + "\042\051\045\015\046\014\047\016\050\036\051\037\052" + + "\044\053\025\054\050\055\043\056\041\057\035\060\030" + + "\061\045\062\021\063\012\064\042\001\002\000\012\002" + + "\ufff2\004\266\010\ufff2\021\265\001\002\000\016\002\uff7f" + + "\004\uff7f\006\uff7f\010\uff7f\020\264\021\uff7f\001\002\000" + + "\006\002\ufff6\010\ufff6\001\002\000\014\002\uffe2\004\uffe2" + + "\006\uffe2\010\uffe2\021\uffe2\001\002\000\054\002\uff7d\004" + + "\uff7d\006\uff7d\007\uff7d\010\uff7d\012\uff7d\014\uff7d\021\uff7d" + + "\022\uff7d\023\uff7d\024\uff7d\025\uff7d\026\uff7d\027\uff7d\030" + + "\uff7d\031\uff7d\032\uff7d\033\uff7d\034\uff7d\043\uff7d\044\uff7d" + + "\001\002\000\056\002\uff85\004\uff85\006\uff85\007\uff85\010" + + "\uff85\011\uff85\012\uff85\014\uff85\021\uff85\022\uff85\023\uff85" + + "\024\uff85\025\uff85\026\uff85\027\uff85\030\uff85\031\uff85\032" + + "\uff85\033\uff85\034\uff85\043\uff85\044\uff85\001\002\000\014" + + "\002\uffed\004\uffed\006\055\010\uffed\021\uffed\001\002\000" + + "\016\002\uff75\004\uff75\006\uff75\010\uff75\011\260\021\uff75" + + "\001\002\000\056\002\uff86\004\uff86\006\uff86\007\uff86\010" + + "\uff86\011\uff86\012\uff86\014\uff86\021\uff86\022\uff86\023\uff86" + + "\024\uff86\025\uff86\026\uff86\027\uff86\030\uff86\031\uff86\032" + + "\uff86\033\uff86\034\uff86\043\uff86\044\uff86\001\002\000\054" + + "\002\uff7e\004\uff7e\006\uff7e\007\uff7e\010\uff7e\012\uff7e\014" + + "\uff7e\021\uff7e\022\uff7e\023\uff7e\024\uff7e\025\uff7e\026\uff7e" + + "\027\uff7e\030\uff7e\031\uff7e\032\uff7e\033\uff7e\034\uff7e\043" + + "\uff7e\044\uff7e\001\002\000\054\002\uff77\004\uff77\006\uff77" + + "\007\uff77\010\uff77\012\uff77\014\uff77\021\uff77\022\uff77\023" + + "\uff77\024\uff77\025\uff77\026\uff77\027\uff77\030\uff77\031\uff77" + + "\032\uff77\033\uff77\034\uff77\043\uff77\044\uff77\001\002\000" + + "\054\002\uff76\004\uff76\006\uff76\007\uff76\010\uff76\012\uff76" + + "\014\uff76\021\uff76\022\uff76\023\uff76\024\uff76\025\uff76\026" + + "\uff76\027\uff76\030\uff76\031\uff76\032\uff76\033\uff76\034\uff76" + + "\043\uff76\044\uff76\001\002\000\056\002\uff84\004\uff84\006" + + "\uff84\007\uff84\010\uff84\011\uff84\012\uff84\014\uff84\021\uff84" + + "\022\uff84\023\uff84\024\uff84\025\uff84\026\uff84\027\uff84\030" + + "\uff84\031\uff84\032\uff84\033\uff84\034\uff84\043\uff84\044\uff84" + + "\001\002\000\054\002\uff81\004\uff81\006\uff81\007\uff81\010" + + "\uff81\012\uff81\014\uff81\021\uff81\022\uff81\023\uff81\024\uff81" + + "\025\uff81\026\uff81\027\uff81\030\uff81\031\uff81\032\uff81\033" + + "\uff81\034\uff81\043\uff81\044\uff81\001\002\000\054\002\uff78" + + "\004\uff78\006\uff78\007\uff78\010\uff78\012\uff78\014\uff78\021" + + "\uff78\022\uff78\023\uff78\024\uff78\025\uff78\026\uff78\027\uff78" + + "\030\uff78\031\uff78\032\uff78\033\uff78\034\uff78\043\uff78\044" + + "\uff78\001\002\000\054\002\uff82\004\uff82\006\uff82\007\uff82" + + "\010\uff82\012\uff82\014\uff82\021\uff82\022\uff82\023\uff82\024" + + "\uff82\025\uff82\026\uff82\027\uff82\030\uff82\031\uff82\032\uff82" + + "\033\uff82\034\uff82\043\uff82\044\uff82\001\002\000\054\002" + + "\uff79\004\uff79\006\uff79\007\uff79\010\uff79\012\uff79\014\uff79" + + "\021\uff79\022\uff79\023\uff79\024\uff79\025\uff79\026\uff79\027" + + "\uff79\030\uff79\031\uff79\032\uff79\033\uff79\034\uff79\043\uff79" + + "\044\uff79\001\002\000\054\002\uff7c\004\uff7c\006\uff7c\007" + + "\uff7c\010\uff7c\012\uff7c\014\uff7c\021\uff7c\022\uff7c\023\uff7c" + + "\024\uff7c\025\uff7c\026\uff7c\027\uff7c\030\uff7c\031\uff7c\032" + + "\uff7c\033\uff7c\034\uff7c\043\uff7c\044\uff7c\001\002\000\016" + + "\002\uff83\004\uff83\006\uff83\010\uff83\011\253\021\uff83\001" + + "\002\000\014\002\uffe5\004\uffe5\006\uffe5\010\uffe5\021\uffe5" + + "\001\002\000\016\002\uff80\004\uff80\006\uff80\010\uff80\020" + + "\252\021\uff80\001\002\000\014\002\uffe6\004\uffe6\006\uffe6" + + "\010\uffe6\021\uffe6\001\002\000\014\002\uffe1\004\uffe1\006" + + "\uffe1\010\uffe1\021\uffe1\001\002\000\014\002\uffef\004\uffef" + + "\006\055\010\uffef\021\uffef\001\002\000\054\002\uffdd\004" + + "\uffdd\006\055\007\uffdd\010\uffdd\012\uffdd\014\uffdd\021\uffdd" + + "\022\uffdd\023\uffdd\024\uffdd\025\uffdd\026\uffdd\027\uffdd\030" + + "\uffdd\031\uffdd\032\uffdd\033\uffdd\034\uffdd\043\uffdd\044\uffdd" + + "\001\002\000\110\004\061\005\111\011\071\013\103\015" + + "\134\016\066\017\106\021\070\031\075\032\031\033\040" + + "\035\057\036\034\037\113\040\141\041\142\042\145\045" + + "\063\046\062\047\065\050\115\051\123\052\136\053\077" + + "\054\143\055\131\056\125\057\116\060\104\061\140\062" + + "\067\063\060\064\127\065\132\066\072\001\002\000\012" + + "\002\uffee\004\uffee\010\uffee\021\uffee\001\002\000\054\002" + + "\uff9a\004\uff9a\006\uff9a\007\uff9a\010\uff9a\012\uff9a\014\uff9a" + + "\021\uff9a\022\uff9a\023\uff9a\024\uff9a\025\uff9a\026\uff9a\027" + + "\uff9a\030\uff9a\031\uff9a\032\uff9a\033\uff9a\034\uff9a\043\uff9a" + + "\044\uff9a\001\002\000\060\002\uff7a\004\uff7a\006\uff7a\007" + + "\uff7a\010\uff7a\011\uff7a\012\uff7a\014\uff7a\020\uffa5\021\uff7a" + + "\022\uff7a\023\uff7a\024\uff7a\025\uff7a\026\uff7a\027\uff7a\030" + + "\uff7a\031\uff7a\032\uff7a\033\uff7a\034\uff7a\043\uff7a\044\uff7a" + + "\001\002\000\130\002\uffb9\005\111\007\uffb9\010\uffb9\012" + + "\uffb9\013\103\014\uffb9\016\066\017\106\022\uffb9\023\uffb9" + + "\024\uffb9\025\uffb9\026\uffb9\027\uffb9\030\uffb9\031\uffb9\032" + + "\031\033\040\034\uffb9\036\034\037\113\040\141\041\142" + + "\042\145\043\uffb9\044\uffb9\045\063\046\062\047\065\050" + + "\115\051\123\052\136\053\077\054\143\055\131\056\125" + + "\057\116\060\104\061\140\062\067\063\060\064\127\001" + + "\002\000\054\002\uff89\004\uff89\006\uff89\007\uff89\010\uff89" + + "\012\uff89\014\uff89\021\uff89\022\uff89\023\uff89\024\uff89\025" + + "\uff89\026\uff89\027\uff89\030\uff89\031\uff89\032\uff89\033\uff89" + + "\034\uff89\043\uff89\044\uff89\001\002\000\054\002\uff8b\004" + + "\uff8b\006\uff8b\007\uff8b\010\uff8b\012\uff8b\014\uff8b\021\uff8b" + + "\022\uff8b\023\uff8b\024\uff8b\025\uff8b\026\uff8b\027\uff8b\030" + + "\uff8b\031\uff8b\032\uff8b\033\uff8b\034\uff8b\043\uff8b\044\uff8b" + + "\001\002\000\032\002\uffd5\007\uffd5\012\uffd5\014\uffd5\022" + + "\uffd5\023\uffd5\024\221\025\222\026\223\027\224\043\uffd5" + + "\044\uffd5\001\002\000\004\011\245\001\002\000\062\013" + + "\uffae\032\uffae\033\uffae\036\uffae\037\uffae\040\uffae\041\uffae" + + "\042\uffae\045\uffae\046\uffae\047\uffae\050\uffae\051\uffae\052" + + "\uffae\053\uffae\054\uffae\055\uffae\056\uffae\057\uffae\060\uffae" + + "\061\uffae\062\uffae\063\uffae\064\uffae\001\002\000\060\002" + + "\uff7b\004\uff7b\006\uff7b\007\uff7b\010\uff7b\011\uff7b\012\uff7b" + + "\014\uff7b\020\uffa6\021\uff7b\022\uff7b\023\uff7b\024\uff7b\025" + + "\uff7b\026\uff7b\027\uff7b\030\uff7b\031\uff7b\032\uff7b\033\uff7b" + + "\034\uff7b\043\uff7b\044\uff7b\001\002\000\070\005\111\013" + + "\103\016\066\017\106\032\031\033\040\036\034\037\113" + + "\040\141\041\142\042\145\045\063\046\062\047\065\050" + + "\115\051\123\052\136\053\077\054\143\055\131\056\125" + + "\057\116\060\104\061\140\062\067\063\060\064\127\001" + + "\002\000\110\004\061\005\111\011\071\013\103\015\134" + + "\016\066\017\106\021\070\031\075\032\031\033\040\035" + + "\057\036\034\037\113\040\141\041\142\042\145\045\063" + + "\046\062\047\065\050\115\051\123\052\136\053\077\054" + + "\143\055\131\056\125\057\116\060\104\061\140\062\067" + + "\063\060\064\127\065\132\066\072\001\002\000\054\002" + + "\uff99\004\uff99\006\uff99\007\uff99\010\uff99\012\uff99\014\uff99" + + "\021\uff99\022\uff99\023\uff99\024\uff99\025\uff99\026\uff99\027" + + "\uff99\030\uff99\031\uff99\032\uff99\033\uff99\034\uff99\043\uff99" + + "\044\uff99\001\002\000\046\002\uffb7\007\uffb7\010\uffb7\012" + + "\uffb7\014\uffb7\022\uffb7\023\uffb7\024\uffb7\025\uffb7\026\uffb7" + + "\027\uffb7\030\uffb7\031\uffb7\032\uffb7\033\uffb7\034\uffb7\043" + + "\uffb7\044\uffb7\001\002\000\054\002\uff97\004\uff97\006\uff97" + + "\007\uff97\010\uff97\012\uff97\014\uff97\021\uff97\022\uff97\023" + + "\uff97\024\uff97\025\uff97\026\uff97\027\uff97\030\uff97\031\uff97" + + "\032\uff97\033\uff97\034\uff97\043\uff97\044\uff97\001\002\000" + + "\110\004\061\005\111\011\071\013\103\015\134\016\066" + + "\017\106\021\070\031\075\032\031\033\040\035\057\036" + + "\034\037\113\040\141\041\142\042\145\045\063\046\062" + + "\047\065\050\115\051\123\052\136\053\077\054\143\055" + + "\131\056\125\057\116\060\104\061\140\062\067\063\060" + + "\064\127\065\132\066\072\001\002\000\016\002\uffd9\007" + + "\uffd9\012\uffd9\014\uffd9\043\uffd9\044\234\001\002\000\060" + + "\002\uff7f\004\uff7f\006\uff7f\007\uff7f\010\uff7f\011\uff7f\012" + + "\uff7f\014\uff7f\020\uffaa\021\uff7f\022\uff7f\023\uff7f\024\uff7f" + + "\025\uff7f\026\uff7f\027\uff7f\030\uff7f\031\uff7f\032\uff7f\033" + + "\uff7f\034\uff7f\043\uff7f\044\uff7f\001\002\000\062\013\103" + + "\032\031\033\040\036\034\037\113\040\141\041\142\042" + + "\145\045\063\046\062\047\065\050\036\051\037\052\044" + + "\053\170\054\166\055\043\056\041\057\035\060\030\061" + + "\045\062\021\063\012\064\042\001\002\000\004\020\236" + + "\001\002\000\014\002\uffda\007\uffda\012\uffda\014\uffda\043" + + "\232\001\002\000\054\002\uff88\004\uff88\006\uff88\007\uff88" + + "\010\uff88\012\uff88\014\uff88\021\uff88\022\uff88\023\uff88\024" + + "\uff88\025\uff88\026\uff88\027\uff88\030\uff88\031\uff88\032\uff88" + + "\033\uff88\034\uff88\043\uff88\044\uff88\001\002\000\060\002" + + "\uff7d\004\uff7d\006\uff7d\007\uff7d\010\uff7d\011\uff7d\012\uff7d" + + "\014\uff7d\020\uffa8\021\uff7d\022\uff7d\023\uff7d\024\uff7d\025" + + "\uff7d\026\uff7d\027\uff7d\030\uff7d\031\uff7d\032\uff7d\033\uff7d" + + "\034\uff7d\043\uff7d\044\uff7d\001\002\000\022\002\uffd7\007" + + "\uffd7\012\uffd7\014\uffd7\022\216\023\217\043\uffd7\044\uffd7" + + "\001\002\000\052\002\uff9f\004\uff9f\007\uff9f\010\uff9f\012" + + "\uff9f\014\uff9f\021\uff9f\022\uff9f\023\uff9f\024\uff9f\025\uff9f" + + "\026\uff9f\027\uff9f\030\uff9f\031\uff9f\032\uff9f\033\uff9f\034" + + "\uff9f\043\uff9f\044\uff9f\001\002\000\054\002\uffb4\004\uffb4" + + "\006\055\007\uffb4\010\uffb4\012\uffb4\014\uffb4\021\uffb4\022" + + "\uffb4\023\uffb4\024\uffb4\025\uffb4\026\uffb4\027\uffb4\030\uffb4" + + "\031\uffb4\032\uffb4\033\uffb4\034\uffb4\043\uffb4\044\uffb4\001" + + "\002\000\046\002\uffbd\007\uffbd\010\uffbd\012\uffbd\014\uffbd" + + "\022\uffbd\023\uffbd\024\uffbd\025\uffbd\026\uffbd\027\uffbd\030" + + "\uffbd\031\uffbd\032\uffbd\033\uffbd\034\uffbd\043\uffbd\044\uffbd" + + "\001\002\000\052\002\uffa0\004\uffa0\007\uffa0\010\uffa0\012" + + "\uffa0\014\uffa0\021\uffa0\022\uffa0\023\uffa0\024\uffa0\025\uffa0" + + "\026\uffa0\027\uffa0\030\uffa0\031\uffa0\032\uffa0\033\uffa0\034" + + "\uffa0\043\uffa0\044\uffa0\001\002\000\036\002\uffd2\007\uffd2" + + "\012\uffd2\014\uffd2\022\uffd2\023\uffd2\024\uffd2\025\uffd2\026" + + "\uffd2\027\uffd2\030\211\031\212\043\uffd2\044\uffd2\001\002" + + "\000\056\002\uff75\004\uff75\006\uff75\007\uff75\010\uff75\011" + + "\uff75\012\uff75\014\uff75\021\uff75\022\uff75\023\uff75\024\uff75" + + "\025\uff75\026\uff75\027\uff75\030\uff75\031\uff75\032\uff75\033" + + "\uff75\034\uff75\043\uff75\044\uff75\001\002\000\044\002\uffca" + + "\007\uffca\012\uffca\014\uffca\022\uffca\023\uffca\024\uffca\025" + + "\uffca\026\uffca\027\uffca\030\uffca\031\uffca\032\uffca\033\uffca" + + "\034\uffca\043\uffca\044\uffca\001\002\000\060\002\uff77\004" + + "\uff77\006\uff77\007\uff77\010\uff77\011\uff77\012\uff77\014\uff77" + + "\020\uffa2\021\uff77\022\uff77\023\uff77\024\uff77\025\uff77\026" + + "\uff77\027\uff77\030\uff77\031\uff77\032\uff77\033\uff77\034\uff77" + + "\043\uff77\044\uff77\001\002\000\060\002\uff7e\004\uff7e\006" + + "\uff7e\007\uff7e\010\uff7e\011\uff7e\012\uff7e\014\uff7e\020\uffa9" + + "\021\uff7e\022\uff7e\023\uff7e\024\uff7e\025\uff7e\026\uff7e\027" + + "\uff7e\030\uff7e\031\uff7e\032\uff7e\033\uff7e\034\uff7e\043\uff7e" + + "\044\uff7e\001\002\000\004\011\201\001\002\000\052\002" + + "\uffbc\004\uffbc\007\uffbc\010\uffbc\012\uffbc\014\uffbc\021\uffbc" + + "\022\uffbc\023\uffbc\024\uffbc\025\uffbc\026\uffbc\027\uffbc\030" + + "\uffbc\031\uffbc\032\uffbc\033\uffbc\034\uffbc\043\uffbc\044\uffbc" + + "\001\002\000\046\002\uffc2\007\uffc2\010\uffc2\012\uffc2\014" + + "\uffc2\022\uffc2\023\uffc2\024\uffc2\025\uffc2\026\uffc2\027\uffc2" + + "\030\uffc2\031\uffc2\032\uffc2\033\uffc2\034\uffc2\043\uffc2\044" + + "\uffc2\001\002\000\054\002\uff9e\004\uff9e\006\055\007\uff9e" + + "\010\uff9e\012\uff9e\014\uff9e\021\uff9e\022\uff9e\023\uff9e\024" + + "\uff9e\025\uff9e\026\uff9e\027\uff9e\030\uff9e\031\uff9e\032\uff9e" + + "\033\uff9e\034\uff9e\043\uff9e\044\uff9e\001\002\000\060\002" + + "\uff76\004\uff76\006\uff76\007\uff76\010\uff76\011\uff76\012\uff76" + + "\014\uff76\020\uffa1\021\uff76\022\uff76\023\uff76\024\uff76\025" + + "\uff76\026\uff76\027\uff76\030\uff76\031\uff76\032\uff76\033\uff76" + + "\034\uff76\043\uff76\044\uff76\001\002\000\046\002\uffc4\007" + + "\uffc4\010\176\012\uffc4\014\uffc4\022\uffc4\023\uffc4\024\uffc4" + + "\025\uffc4\026\uffc4\027\uffc4\030\uffc4\031\uffc4\032\uffc4\033" + + "\uffc4\034\uffc4\043\uffc4\044\uffc4\001\002\000\060\002\uff81" + + "\004\uff81\006\uff81\007\uff81\010\uff81\011\uff81\012\uff81\014" + + "\uff81\020\uffac\021\uff81\022\uff81\023\uff81\024\uff81\025\uff81" + + "\026\uff81\027\uff81\030\uff81\031\uff81\032\uff81\033\uff81\034" + + "\uff81\043\uff81\044\uff81\001\002\000\054\002\uff9c\004\uff9c" + + "\006\uff9c\007\uff9c\010\uff9c\012\uff9c\014\uff9c\021\uff9c\022" + + "\uff9c\023\uff9c\024\uff9c\025\uff9c\026\uff9c\027\uff9c\030\uff9c" + + "\031\uff9c\032\uff9c\033\uff9c\034\uff9c\043\uff9c\044\uff9c\001" + + "\002\000\060\002\uff78\004\uff78\006\uff78\007\uff78\010\uff78" + + "\011\uff78\012\uff78\014\uff78\020\uffa3\021\uff78\022\uff78\023" + + "\uff78\024\uff78\025\uff78\026\uff78\027\uff78\030\uff78\031\uff78" + + "\032\uff78\033\uff78\034\uff78\043\uff78\044\uff78\001\002\000" + + "\052\002\uffc1\004\173\007\uffc1\010\uffc1\012\uffc1\014\uffc1" + + "\021\172\022\uffc1\023\uffc1\024\uffc1\025\uffc1\026\uffc1\027" + + "\uffc1\030\uffc1\031\uffc1\032\uffc1\033\uffc1\034\uffc1\043\uffc1" + + "\044\uffc1\001\002\000\060\002\uff82\004\uff82\006\uff82\007" + + "\uff82\010\uff82\011\uff82\012\uff82\014\uff82\020\uffad\021\uff82" + + "\022\uff82\023\uff82\024\uff82\025\uff82\026\uff82\027\uff82\030" + + "\uff82\031\uff82\032\uff82\033\uff82\034\uff82\043\uff82\044\uff82" + + "\001\002\000\054\002\uff98\004\uff98\006\uff98\007\uff98\010" + + "\uff98\012\uff98\014\uff98\021\uff98\022\uff98\023\uff98\024\uff98" + + "\025\uff98\026\uff98\027\uff98\030\uff98\031\uff98\032\uff98\033" + + "\uff98\034\uff98\043\uff98\044\uff98\001\002\000\004\007\171" + + "\001\002\000\046\032\031\033\040\036\034\037\113\040" + + "\141\050\036\051\037\052\044\053\170\054\166\055\043" + + "\056\041\057\035\060\030\061\045\062\021\063\012\064" + + "\042\001\002\000\052\002\uffba\004\uffba\007\uffba\010\uffba" + + "\012\uffba\014\uffba\021\uffba\022\uffba\023\uffba\024\uffba\025" + + "\uffba\026\uffba\027\uffba\030\uffba\031\uffba\032\uffba\033\uffba" + + "\034\uffba\043\uffba\044\uffba\001\002\000\060\002\uff79\004" + + "\uff79\006\uff79\007\uff79\010\uff79\011\uff79\012\uff79\014\uff79" + + "\020\uffa4\021\uff79\022\uff79\023\uff79\024\uff79\025\uff79\026" + + "\uff79\027\uff79\030\uff79\031\uff79\032\uff79\033\uff79\034\uff79" + + "\043\uff79\044\uff79\001\002\000\052\002\uffb0\004\uffb0\007" + + "\uffb0\010\uffb0\012\uffb0\014\uffb0\021\uffb0\022\uffb0\023\uffb0" + + "\024\uffb0\025\uffb0\026\uffb0\027\uffb0\030\uffb0\031\uffb0\032" + + "\uffb0\033\uffb0\034\uffb0\043\uffb0\044\uffb0\001\002\000\060" + + "\002\uff7c\004\uff7c\006\uff7c\007\uff7c\010\uff7c\011\uff7c\012" + + "\uff7c\014\uff7c\020\uffa7\021\uff7c\022\uff7c\023\uff7c\024\uff7c" + + "\025\uff7c\026\uff7c\027\uff7c\030\uff7c\031\uff7c\032\uff7c\033" + + "\uff7c\034\uff7c\043\uff7c\044\uff7c\001\002\000\056\002\uff83" + + "\004\uff83\006\uff83\007\uff83\010\uff83\011\uff83\012\uff83\014" + + "\uff83\021\uff83\022\uff83\023\uff83\024\uff83\025\uff83\026\uff83" + + "\027\uff83\030\uff83\031\uff83\032\uff83\033\uff83\034\uff83\043" + + "\uff83\044\uff83\001\002\000\054\002\uff8c\004\uff8c\006\uff8c" + + "\007\uff8c\010\uff8c\012\uff8c\014\uff8c\021\uff8c\022\uff8c\023" + + "\uff8c\024\uff8c\025\uff8c\026\uff8c\027\uff8c\030\uff8c\031\uff8c" + + "\032\uff8c\033\uff8c\034\uff8c\043\uff8c\044\uff8c\001\002\000" + + "\060\002\uff80\004\uff80\006\uff80\007\uff80\010\uff80\011\uff80" + + "\012\uff80\014\uff80\020\uffab\021\uff80\022\uff80\023\uff80\024" + + "\uff80\025\uff80\026\uff80\027\uff80\030\uff80\031\uff80\032\uff80" + + "\033\uff80\034\uff80\043\uff80\044\uff80\001\002\000\044\002" + + "\uffc6\007\uffc6\012\uffc6\014\uffc6\022\uffc6\023\uffc6\024\uffc6" + + "\025\uffc6\026\uffc6\027\uffc6\030\uffc6\031\uffc6\032\uffc6\033" + + "\uffc6\034\uffc6\043\uffc6\044\uffc6\001\002\000\054\002\uff8d" + + "\004\uff8d\006\uff8d\007\uff8d\010\uff8d\012\uff8d\014\uff8d\021" + + "\uff8d\022\uff8d\023\uff8d\024\uff8d\025\uff8d\026\uff8d\027\uff8d" + + "\030\uff8d\031\uff8d\032\uff8d\033\uff8d\034\uff8d\043\uff8d\044" + + "\uff8d\001\002\000\044\002\uffcd\007\uffcd\012\uffcd\014\uffcd" + + "\022\uffcd\023\uffcd\024\uffcd\025\uffcd\026\uffcd\027\uffcd\030" + + "\uffcd\031\uffcd\032\161\033\157\034\160\043\uffcd\044\uffcd" + + "\001\002\000\052\002\uffbe\004\153\007\uffbe\010\uffbe\012" + + "\uffbe\014\uffbe\021\152\022\uffbe\023\uffbe\024\uffbe\025\uffbe" + + "\026\uffbe\027\uffbe\030\uffbe\031\uffbe\032\uffbe\033\uffbe\034" + + "\uffbe\043\uffbe\044\uffbe\001\002\000\054\002\uff8e\004\uff8e" + + "\006\uff8e\007\uff8e\010\uff8e\012\uff8e\014\uff8e\021\uff8e\022" + + "\uff8e\023\uff8e\024\uff8e\025\uff8e\026\uff8e\027\uff8e\030\uff8e" + + "\031\uff8e\032\uff8e\033\uff8e\034\uff8e\043\uff8e\044\uff8e\001" + + "\002\000\056\002\uff87\004\uff87\006\uff87\007\uff87\010\uff87" + + "\011\uff91\012\uff87\014\uff87\021\uff87\022\uff87\023\uff87\024" + + "\uff87\025\uff87\026\uff87\027\uff87\030\uff87\031\uff87\032\uff87" + + "\033\uff87\034\uff87\043\uff87\044\uff87\001\002\000\070\005" + + "\111\013\103\016\066\017\106\032\031\033\040\036\034" + + "\037\113\040\141\041\142\042\145\045\063\046\062\047" + + "\065\050\115\051\123\052\136\053\077\054\143\055\131" + + "\056\125\057\116\060\104\061\140\062\067\063\060\064" + + "\127\001\002\000\070\005\111\013\103\016\066\017\106" + + "\032\031\033\040\036\034\037\113\040\141\041\142\042" + + "\145\045\063\046\062\047\065\050\115\051\123\052\136" + + "\053\077\054\143\055\131\056\125\057\116\060\104\061" + + "\140\062\067\063\060\064\127\001\002\000\054\002\uff87" + + "\004\uff87\006\uff87\007\uff87\010\uff87\012\uff87\014\uff87\021" + + "\uff87\022\uff87\023\uff87\024\uff87\025\uff87\026\uff87\027\uff87" + + "\030\uff87\031\uff87\032\uff87\033\uff87\034\uff87\043\uff87\044" + + "\uff87\001\002\000\052\002\uffbb\004\uffbb\007\uffbb\010\uffbb" + + "\012\uffbb\014\uffbb\021\uffbb\022\uffbb\023\uffbb\024\uffbb\025" + + "\uffbb\026\uffbb\027\uffbb\030\uffbb\031\uffbb\032\uffbb\033\uffbb" + + "\034\uffbb\043\uffbb\044\uffbb\001\002\000\052\002\uffb6\004" + + "\uffb6\007\uffb6\010\uffb6\012\uffb6\014\uffb6\021\uffb6\022\uffb6" + + "\023\uffb6\024\uffb6\025\uffb6\026\uffb6\027\uffb6\030\uffb6\031" + + "\uffb6\032\uffb6\033\uffb6\034\uffb6\043\uffb6\044\uffb6\001\002" + + "\000\110\004\061\005\111\011\071\013\103\015\134\016" + + "\066\017\106\021\070\031\075\032\031\033\040\035\057" + + "\036\034\037\113\040\141\041\142\042\145\045\063\046" + + "\062\047\065\050\115\051\123\052\136\053\077\054\143" + + "\055\131\056\125\057\116\060\104\061\140\062\067\063" + + "\060\064\127\065\132\066\072\001\002\000\110\004\061" + + "\005\111\011\071\013\103\015\134\016\066\017\106\021" + + "\070\031\075\032\031\033\040\035\057\036\034\037\113" + + "\040\141\041\142\042\145\045\063\046\062\047\065\050" + + "\115\051\123\052\136\053\077\054\143\055\131\056\125" + + "\057\116\060\104\061\140\062\067\063\060\064\127\065" + + "\132\066\072\001\002\000\110\004\061\005\111\011\071" + + "\013\103\015\134\016\066\017\106\021\070\031\075\032" + + "\031\033\040\035\057\036\034\037\113\040\141\041\142" + + "\042\145\045\063\046\062\047\065\050\115\051\123\052" + + "\136\053\077\054\143\055\131\056\125\057\116\060\104" + + "\061\140\062\067\063\060\064\127\065\132\066\072\001" + + "\002\000\044\002\uffc8\007\uffc8\012\uffc8\014\uffc8\022\uffc8" + + "\023\uffc8\024\uffc8\025\uffc8\026\uffc8\027\uffc8\030\uffc8\031" + + "\uffc8\032\uffc8\033\uffc8\034\uffc8\043\uffc8\044\uffc8\001\002" + + "\000\044\002\uffc9\007\uffc9\012\uffc9\014\uffc9\022\uffc9\023" + + "\uffc9\024\uffc9\025\uffc9\026\uffc9\027\uffc9\030\uffc9\031\uffc9" + + "\032\uffc9\033\uffc9\034\uffc9\043\uffc9\044\uffc9\001\002\000" + + "\044\002\uffc7\007\uffc7\012\uffc7\014\uffc7\022\uffc7\023\uffc7" + + "\024\uffc7\025\uffc7\026\uffc7\027\uffc7\030\uffc7\031\uffc7\032" + + "\uffc7\033\uffc7\034\uffc7\043\uffc7\044\uffc7\001\002\000\054" + + "\002\uff90\004\uff90\006\uff90\007\uff90\010\uff90\012\uff90\014" + + "\uff90\021\uff90\022\uff90\023\uff90\024\uff90\025\uff90\026\uff90" + + "\027\uff90\030\uff90\031\uff90\032\uff90\033\uff90\034\uff90\043" + + "\uff90\044\uff90\001\002\000\054\002\uff80\004\uff80\006\uff80" + + "\007\uff80\010\uff80\012\uff80\014\uff80\021\uff80\022\uff80\023" + + "\uff80\024\uff80\025\uff80\026\uff80\027\uff80\030\uff80\031\uff80" + + "\032\uff80\033\uff80\034\uff80\043\uff80\044\uff80\001\002\000" + + "\054\002\uff96\004\uff96\006\uff96\007\uff96\010\uff96\012\uff96" + + "\014\uff96\021\uff96\022\uff96\023\uff96\024\uff96\025\uff96\026" + + "\uff96\027\uff96\030\uff96\031\uff96\032\uff96\033\uff96\034\uff96" + + "\043\uff96\044\uff96\001\002\000\054\002\uff7f\004\uff7f\006" + + "\uff7f\007\uff7f\010\uff7f\012\uff7f\014\uff7f\021\uff7f\022\uff7f" + + "\023\uff7f\024\uff7f\025\uff7f\026\uff7f\027\uff7f\030\uff7f\031" + + "\uff7f\032\uff7f\033\uff7f\034\uff7f\043\uff7f\044\uff7f\001\002" + + "\000\054\002\uffdb\004\uffdb\006\uffdb\007\uffdb\010\uffdb\012" + + "\uffdb\014\uffdb\021\uffdb\022\uffdb\023\uffdb\024\uffdb\025\uffdb" + + "\026\uffdb\027\uffdb\030\uffdb\031\uffdb\032\uffdb\033\uffdb\034" + + "\uffdb\043\uffdb\044\uffdb\001\002\000\070\005\111\013\103" + + "\016\066\017\106\032\031\033\040\036\034\037\113\040" + + "\141\041\142\042\145\045\063\046\062\047\065\050\115" + + "\051\123\052\136\053\077\054\143\055\131\056\125\057" + + "\116\060\104\061\140\062\067\063\060\064\127\001\002" + + "\000\070\005\111\013\103\016\066\017\106\032\031\033" + + "\040\036\034\037\113\040\141\041\142\042\145\045\063" + + "\046\062\047\065\050\115\051\123\052\136\053\077\054" + + "\143\055\131\056\125\057\116\060\104\061\140\062\067" + + "\063\060\064\127\001\002\000\052\002\uffc0\004\153\007" + + "\uffc0\010\uffc0\012\uffc0\014\uffc0\021\152\022\uffc0\023\uffc0" + + "\024\uffc0\025\uffc0\026\uffc0\027\uffc0\030\uffc0\031\uffc0\032" + + "\uffc0\033\uffc0\034\uffc0\043\uffc0\044\uffc0\001\002\000\052" + + "\002\uffbf\004\153\007\uffbf\010\uffbf\012\uffbf\014\uffbf\021" + + "\152\022\uffbf\023\uffbf\024\uffbf\025\uffbf\026\uffbf\027\uffbf" + + "\030\uffbf\031\uffbf\032\uffbf\033\uffbf\034\uffbf\043\uffbf\044" + + "\uffbf\001\002\000\106\004\061\005\111\011\071\013\103" + + "\015\134\016\066\017\106\021\070\032\031\033\040\035" + + "\057\036\034\037\113\040\141\041\142\042\145\045\063" + + "\046\062\047\065\050\115\051\123\052\136\053\077\054" + + "\143\055\131\056\125\057\116\060\104\061\140\062\067" + + "\063\060\064\127\065\132\066\072\001\002\000\044\002" + + "\uffc3\007\uffc3\012\uffc3\014\uffc3\022\uffc3\023\uffc3\024\uffc3" + + "\025\uffc3\026\uffc3\027\uffc3\030\uffc3\031\uffc3\032\uffc3\033" + + "\uffc3\034\uffc3\043\uffc3\044\uffc3\001\002\000\052\002\uff9d" + + "\004\uff9d\007\uff9d\010\uff9d\012\uff9d\014\uff9d\021\uff9d\022" + + "\uff9d\023\uff9d\024\uff9d\025\uff9d\026\uff9d\027\uff9d\030\uff9d" + + "\031\uff9d\032\uff9d\033\uff9d\034\uff9d\043\uff9d\044\uff9d\001" + + "\002\000\112\004\061\005\111\011\071\012\202\013\103" + + "\015\134\016\066\017\106\021\070\031\075\032\031\033" + + "\040\035\057\036\034\037\113\040\141\041\142\042\145" + + "\045\063\046\062\047\065\050\115\051\123\052\136\053" + + "\077\054\143\055\131\056\125\057\116\060\104\061\140" + + "\062\067\063\060\064\127\065\132\066\072\001\002\000" + + "\054\002\uff95\004\uff95\006\uff95\007\uff95\010\uff95\012\uff95" + + "\014\uff95\021\uff95\022\uff95\023\uff95\024\uff95\025\uff95\026" + + "\uff95\027\uff95\030\uff95\031\uff95\032\uff95\033\uff95\034\uff95" + + "\043\uff95\044\uff95\001\002\000\006\012\uff93\014\207\001" + + "\002\000\006\012\uff8f\014\uff8f\001\002\000\004\012\206" + + "\001\002\000\054\002\uff94\004\uff94\006\uff94\007\uff94\010" + + "\uff94\012\uff94\014\uff94\021\uff94\022\uff94\023\uff94\024\uff94" + + "\025\uff94\026\uff94\027\uff94\030\uff94\031\uff94\032\uff94\033" + + "\uff94\034\uff94\043\uff94\044\uff94\001\002\000\110\004\061" + + "\005\111\011\071\013\103\015\134\016\066\017\106\021" + + "\070\031\075\032\031\033\040\035\057\036\034\037\113" + + "\040\141\041\142\042\145\045\063\046\062\047\065\050" + + "\115\051\123\052\136\053\077\054\143\055\131\056\125" + + "\057\116\060\104\061\140\062\067\063\060\064\127\065" + + "\132\066\072\001\002\000\004\012\uff92\001\002\000\110" + + "\004\061\005\111\011\071\013\103\015\134\016\066\017" + + "\106\021\070\031\075\032\031\033\040\035\057\036\034" + + "\037\113\040\141\041\142\042\145\045\063\046\062\047" + + "\065\050\115\051\123\052\136\053\077\054\143\055\131" + + "\056\125\057\116\060\104\061\140\062\067\063\060\064" + + "\127\065\132\066\072\001\002\000\110\004\061\005\111" + + "\011\071\013\103\015\134\016\066\017\106\021\070\031" + + "\075\032\031\033\040\035\057\036\034\037\113\040\141" + + "\041\142\042\145\045\063\046\062\047\065\050\115\051" + + "\123\052\136\053\077\054\143\055\131\056\125\057\116" + + "\060\104\061\140\062\067\063\060\064\127\065\132\066" + + "\072\001\002\000\044\002\uffcb\007\uffcb\012\uffcb\014\uffcb" + + "\022\uffcb\023\uffcb\024\uffcb\025\uffcb\026\uffcb\027\uffcb\030" + + "\uffcb\031\uffcb\032\161\033\157\034\160\043\uffcb\044\uffcb" + + "\001\002\000\044\002\uffcc\007\uffcc\012\uffcc\014\uffcc\022" + + "\uffcc\023\uffcc\024\uffcc\025\uffcc\026\uffcc\027\uffcc\030\uffcc" + + "\031\uffcc\032\161\033\157\034\160\043\uffcc\044\uffcc\001" + + "\002\000\052\002\uffb3\004\uffb3\007\uffb3\010\uffb3\012\uffb3" + + "\014\uffb3\021\uffb3\022\uffb3\023\uffb3\024\uffb3\025\uffb3\026" + + "\uffb3\027\uffb3\030\uffb3\031\uffb3\032\uffb3\033\uffb3\034\uffb3" + + "\043\uffb3\044\uffb3\001\002\000\110\004\061\005\111\011" + + "\071\013\103\015\134\016\066\017\106\021\070\031\075" + + "\032\031\033\040\035\057\036\034\037\113\040\141\041" + + "\142\042\145\045\063\046\062\047\065\050\115\051\123" + + "\052\136\053\077\054\143\055\131\056\125\057\116\060" + + "\104\061\140\062\067\063\060\064\127\065\132\066\072" + + "\001\002\000\110\004\061\005\111\011\071\013\103\015" + + "\134\016\066\017\106\021\070\031\075\032\031\033\040" + + "\035\057\036\034\037\113\040\141\041\142\042\145\045" + + "\063\046\062\047\065\050\115\051\123\052\136\053\077" + + "\054\143\055\131\056\125\057\116\060\104\061\140\062" + + "\067\063\060\064\127\065\132\066\072\001\002\000\032" + + "\002\uffd3\007\uffd3\012\uffd3\014\uffd3\022\uffd3\023\uffd3\024" + + "\221\025\222\026\223\027\224\043\uffd3\044\uffd3\001\002" + + "\000\110\004\061\005\111\011\071\013\103\015\134\016" + + "\066\017\106\021\070\031\075\032\031\033\040\035\057" + + "\036\034\037\113\040\141\041\142\042\145\045\063\046" + + "\062\047\065\050\115\051\123\052\136\053\077\054\143" + + "\055\131\056\125\057\116\060\104\061\140\062\067\063" + + "\060\064\127\065\132\066\072\001\002\000\110\004\061" + + "\005\111\011\071\013\103\015\134\016\066\017\106\021" + + "\070\031\075\032\031\033\040\035\057\036\034\037\113" + + "\040\141\041\142\042\145\045\063\046\062\047\065\050" + + "\115\051\123\052\136\053\077\054\143\055\131\056\125" + + "\057\116\060\104\061\140\062\067\063\060\064\127\065" + + "\132\066\072\001\002\000\110\004\061\005\111\011\071" + + "\013\103\015\134\016\066\017\106\021\070\031\075\032" + + "\031\033\040\035\057\036\034\037\113\040\141\041\142" + + "\042\145\045\063\046\062\047\065\050\115\051\123\052" + + "\136\053\077\054\143\055\131\056\125\057\116\060\104" + + "\061\140\062\067\063\060\064\127\065\132\066\072\001" + + "\002\000\110\004\061\005\111\011\071\013\103\015\134" + + "\016\066\017\106\021\070\031\075\032\031\033\040\035" + + "\057\036\034\037\113\040\141\041\142\042\145\045\063" + + "\046\062\047\065\050\115\051\123\052\136\053\077\054" + + "\143\055\131\056\125\057\116\060\104\061\140\062\067" + + "\063\060\064\127\065\132\066\072\001\002\000\036\002" + + "\uffce\007\uffce\012\uffce\014\uffce\022\uffce\023\uffce\024\uffce" + + "\025\uffce\026\uffce\027\uffce\030\211\031\212\043\uffce\044" + + "\uffce\001\002\000\036\002\uffcf\007\uffcf\012\uffcf\014\uffcf" + + "\022\uffcf\023\uffcf\024\uffcf\025\uffcf\026\uffcf\027\uffcf\030" + + "\211\031\212\043\uffcf\044\uffcf\001\002\000\036\002\uffd0" + + "\007\uffd0\012\uffd0\014\uffd0\022\uffd0\023\uffd0\024\uffd0\025" + + "\uffd0\026\uffd0\027\uffd0\030\211\031\212\043\uffd0\044\uffd0" + + "\001\002\000\036\002\uffd1\007\uffd1\012\uffd1\014\uffd1\022" + + "\uffd1\023\uffd1\024\uffd1\025\uffd1\026\uffd1\027\uffd1\030\211" + + "\031\212\043\uffd1\044\uffd1\001\002\000\032\002\uffd4\007" + + "\uffd4\012\uffd4\014\uffd4\022\uffd4\023\uffd4\024\221\025\222" + + "\026\223\027\224\043\uffd4\044\uffd4\001\002\000\110\004" + + "\061\005\111\011\071\013\103\015\134\016\066\017\106" + + "\021\070\031\075\032\031\033\040\035\057\036\034\037" + + "\113\040\141\041\142\042\145\045\063\046\062\047\065" + + "\050\115\051\123\052\136\053\077\054\143\055\131\056" + + "\125\057\116\060\104\061\140\062\067\063\060\064\127" + + "\065\132\066\072\001\002\000\016\002\uffd8\007\uffd8\012" + + "\uffd8\014\uffd8\043\uffd8\044\234\001\002\000\110\004\061" + + "\005\111\011\071\013\103\015\134\016\066\017\106\021" + + "\070\031\075\032\031\033\040\035\057\036\034\037\113" + + "\040\141\041\142\042\145\045\063\046\062\047\065\050" + + "\115\051\123\052\136\053\077\054\143\055\131\056\125" + + "\057\116\060\104\061\140\062\067\063\060\064\127\065" + + "\132\066\072\001\002\000\022\002\uffd6\007\uffd6\012\uffd6" + + "\014\uffd6\022\216\023\217\043\uffd6\044\uffd6\001\002\000" + + "\062\013\uffaf\032\uffaf\033\uffaf\036\uffaf\037\uffaf\040\uffaf" + + "\041\uffaf\042\uffaf\045\uffaf\046\uffaf\047\uffaf\050\uffaf\051" + + "\uffaf\052\uffaf\053\uffaf\054\uffaf\055\uffaf\056\uffaf\057\uffaf" + + "\060\uffaf\061\uffaf\062\uffaf\063\uffaf\064\uffaf\001\002\000" + + "\054\002\uffb1\004\uffb1\006\055\007\uffb1\010\uffb1\012\uffb1" + + "\014\uffb1\021\uffb1\022\uffb1\023\uffb1\024\uffb1\025\uffb1\026" + + "\uffb1\027\uffb1\030\uffb1\031\uffb1\032\uffb1\033\uffb1\034\uffb1" + + "\043\uffb1\044\uffb1\001\002\000\052\002\uffb2\004\uffb2\007" + + "\uffb2\010\uffb2\012\uffb2\014\uffb2\021\uffb2\022\uffb2\023\uffb2" + + "\024\uffb2\025\uffb2\026\uffb2\027\uffb2\030\uffb2\031\uffb2\032" + + "\uffb2\033\uffb2\034\uffb2\043\uffb2\044\uffb2\001\002\000\044" + + "\002\uffc5\007\uffc5\012\uffc5\014\uffc5\022\uffc5\023\uffc5\024" + + "\uffc5\025\uffc5\026\uffc5\027\uffc5\030\uffc5\031\uffc5\032\uffc5" + + "\033\uffc5\034\uffc5\043\uffc5\044\uffc5\001\002\000\004\012" + + "\243\001\002\000\054\002\uff9b\004\uff9b\006\uff9b\007\uff9b" + + "\010\uff9b\012\uff9b\014\uff9b\021\uff9b\022\uff9b\023\uff9b\024" + + "\uff9b\025\uff9b\026\uff9b\027\uff9b\030\uff9b\031\uff9b\032\uff9b" + + "\033\uff9b\034\uff9b\043\uff9b\044\uff9b\001\002\000\052\002" + + "\uffb5\004\153\007\uffb5\010\uffb5\012\uffb5\014\uffb5\021\152" + + "\022\uffb5\023\uffb5\024\uffb5\025\uffb5\026\uffb5\027\uffb5\030" + + "\uffb5\031\uffb5\032\uffb5\033\uffb5\034\uffb5\043\uffb5\044\uffb5" + + "\001\002\000\004\035\246\001\002\000\004\012\247\001" + + "\002\000\054\002\uff8a\004\uff8a\006\uff8a\007\uff8a\010\uff8a" + + "\012\uff8a\014\uff8a\021\uff8a\022\uff8a\023\uff8a\024\uff8a\025" + + "\uff8a\026\uff8a\027\uff8a\030\uff8a\031\uff8a\032\uff8a\033\uff8a" + + "\034\uff8a\043\uff8a\044\uff8a\001\002\000\052\002\uffb8\004" + + "\153\007\uffb8\010\uffb8\012\uffb8\014\uffb8\021\152\022\uffb8" + + "\023\uffb8\024\uffb8\025\uffb8\026\uffb8\027\uffb8\030\uffb8\031" + + "\uffb8\032\uffb8\033\uffb8\034\uffb8\043\uffb8\044\uffb8\001\002" + + "\000\052\002\uffdc\004\uffdc\007\uffdc\010\uffdc\012\uffdc\014" + + "\uffdc\021\uffdc\022\uffdc\023\uffdc\024\uffdc\025\uffdc\026\uffdc" + + "\027\uffdc\030\uffdc\031\uffdc\032\uffdc\033\uffdc\034\uffdc\043" + + "\uffdc\044\uffdc\001\002\000\062\013\uffde\032\uffde\033\uffde" + + "\036\uffde\037\uffde\040\uffde\041\uffde\042\uffde\045\uffde\046" + + "\uffde\047\uffde\050\uffde\051\uffde\052\uffde\053\uffde\054\uffde" + + "\055\uffde\056\uffde\057\uffde\060\uffde\061\uffde\062\uffde\063" + + "\uffde\064\uffde\001\002\000\004\035\254\001\002\000\004" + + "\014\255\001\002\000\004\035\256\001\002\000\004\012" + + "\257\001\002\000\012\002\ufff4\004\ufff4\010\ufff4\021\ufff4" + + "\001\002\000\004\035\261\001\002\000\004\012\262\001" + + "\002\000\012\002\ufff5\004\ufff5\010\ufff5\021\ufff5\001\002" + + "\000\012\002\uffec\004\uffec\010\uffec\021\uffec\001\002\000" + + "\062\013\uffdf\032\uffdf\033\uffdf\036\uffdf\037\uffdf\040\uffdf" + + "\041\uffdf\042\uffdf\045\uffdf\046\uffdf\047\uffdf\050\uffdf\051" + + "\uffdf\052\uffdf\053\uffdf\054\uffdf\055\uffdf\056\uffdf\057\uffdf" + + "\060\uffdf\061\uffdf\062\uffdf\063\uffdf\064\uffdf\001\002\000" + + "\064\013\027\016\020\032\031\033\040\036\034\037\113" + + "\040\141\041\047\042\051\045\015\046\014\047\016\050" + + "\036\051\037\052\044\053\025\054\050\055\043\056\041" + + "\057\035\060\030\061\045\062\021\063\012\064\042\001" + + "\002\000\064\013\027\016\020\032\031\033\040\036\034" + + "\037\113\040\141\041\047\042\051\045\015\046\014\047" + + "\016\050\036\051\037\052\044\053\025\054\050\055\043" + + "\056\041\057\035\060\030\061\045\062\021\063\012\064" + + "\042\001\002\000\006\002\ufff1\010\ufff1\001\002\000\006" + + "\002\ufff0\010\ufff0\001\002\000\006\002\ufff7\010\ufff7\001" + + "\002\000\014\002\uffe9\004\uffe9\006\055\010\uffe9\021\uffe9" + + "\001\002\000\014\002\uffeb\004\uffeb\006\055\010\uffeb\021" + + "\uffeb\001\002\000\012\002\uffea\004\uffea\010\uffea\021\uffea" + + "\001\002\000\012\002\uffe8\004\uffe8\010\uffe8\021\uffe8\001" + + "\002\000\064\013\027\016\020\032\031\033\040\036\034" + + "\037\113\040\141\041\047\042\051\045\015\046\014\047" + + "\016\050\036\051\037\052\044\053\025\054\050\055\043" + + "\056\041\057\035\060\030\061\045\062\021\063\012\064" + + "\042\001\002\000\064\013\027\016\020\032\031\033\040" + + "\036\034\037\113\040\141\041\047\042\051\045\015\046" + + "\014\047\016\050\036\051\037\052\044\053\025\054\050" + + "\055\043\056\041\057\035\060\030\061\045\062\021\063" + + "\012\064\042\001\002\000\006\002\ufff9\010\ufff9\001\002" + + "\000\006\002\ufff8\010\ufff8\001\002\000\004\035\303\001" + + "\002\000\004\012\304\001\002\000\014\002\ufff3\004\ufff3" + + "\006\ufff3\010\ufff3\021\ufff3\001\002\000\006\002\ufffb\010" + + "\ufffb\001\002\000\070\004\013\013\027\016\020\021\023" + + "\032\031\033\040\036\034\037\033\040\046\041\047\042" + + "\051\045\015\046\014\047\016\050\036\051\037\052\044" + + "\053\025\054\050\055\043\056\041\057\035\060\030\061" + + "\045\062\021\063\012\064\042\001\002\000\004\002\ufffd" + + "\001\002\000\004\002\uffff\001\002\000\004\002\001\001" + + "\002" }); + + /** Access to parse-action table. */ + public short[][] action_table() {return _action_table;} + + /** reduce_goto table. */ + protected static final short[][] _reduce_table = + unpackFromStrings(new String[] { + "\000\307\000\004\003\003\001\001\000\002\001\001\000" + + "\070\004\307\006\120\010\127\011\117\012\101\013\075" + + "\014\104\015\063\016\111\017\145\020\113\021\125\022" + + "\073\023\121\024\143\025\123\026\136\027\146\030\134" + + "\031\107\032\072\033\106\034\147\047\150\050\116\052" + + "\100\053\077\001\001\000\026\035\016\036\007\037\006" + + "\040\031\041\025\042\023\043\052\044\010\047\051\054" + + "\021\001\001\000\002\001\001\000\002\001\001\000\002" + + "\001\001\000\002\001\001\000\020\040\031\041\304\042" + + "\023\043\052\044\010\047\051\054\021\001\001\000\002" + + "\001\001\000\002\001\001\000\002\001\001\000\002\001" + + "\001\000\002\001\001\000\002\001\001\000\012\040\271" + + "\043\272\044\010\047\051\001\001\000\020\040\031\041" + + "\270\042\023\043\052\044\010\047\051\054\021\001\001" + + "\000\002\001\001\000\002\001\001\000\002\001\001\000" + + "\002\001\001\000\002\001\001\000\002\001\001\000\006" + + "\007\053\045\262\001\001\000\002\001\001\000\002\001" + + "\001\000\002\001\001\000\002\001\001\000\002\001\001" + + "\000\002\001\001\000\002\001\001\000\002\001\001\000" + + "\002\001\001\000\002\001\001\000\002\001\001\000\002" + + "\001\001\000\002\001\001\000\002\001\001\000\002\001" + + "\001\000\002\001\001\000\006\007\053\045\055\001\001" + + "\000\006\007\053\045\250\001\001\000\070\004\132\006" + + "\120\010\127\011\117\012\101\013\075\014\104\015\063" + + "\016\111\017\145\020\113\021\125\022\073\023\121\024" + + "\143\025\123\026\136\027\146\030\134\031\107\032\072" + + "\033\106\034\147\047\150\050\116\052\100\053\077\001" + + "\001\000\002\001\001\000\002\001\001\000\002\001\001" + + "\000\024\011\117\026\136\027\247\030\134\033\106\034" + + "\147\047\153\052\100\053\077\001\001\000\002\001\001" + + "\000\002\001\001\000\002\001\001\000\002\001\001\000" + + "\002\001\001\000\002\001\001\000\024\011\117\026\136" + + "\027\243\030\134\033\106\034\147\047\153\052\100\053" + + "\077\001\001\000\070\004\241\006\120\010\127\011\117" + + "\012\101\013\075\014\104\015\063\016\111\017\145\020" + + "\113\021\125\022\073\023\121\024\143\025\123\026\136" + + "\027\146\030\134\031\107\032\072\033\106\034\147\047" + + "\150\050\116\052\100\053\077\001\001\000\002\001\001" + + "\000\002\001\001\000\002\001\001\000\052\006\120\010" + + "\127\011\117\020\240\021\125\022\073\023\121\024\143" + + "\025\123\026\136\027\146\030\134\031\107\032\072\033" + + "\106\034\147\047\150\050\116\052\100\053\077\001\001" + + "\000\002\001\001\000\002\001\001\000\010\033\236\034" + + "\147\047\153\001\001\000\002\001\001\000\002\001\001" + + "\000\002\001\001\000\002\001\001\000\002\001\001\000" + + "\002\001\001\000\006\007\053\045\214\001\001\000\002" + + "\001\001\000\002\001\001\000\002\001\001\000\002\001" + + "\001\000\002\001\001\000\002\001\001\000\002\001\001" + + "\000\002\001\001\000\002\001\001\000\002\001\001\000" + + "\006\007\053\045\177\001\001\000\002\001\001\000\002" + + "\001\001\000\002\001\001\000\002\001\001\000\002\001" + + "\001\000\002\001\001\000\002\001\001\000\002\001\001" + + "\000\002\001\001\000\006\047\164\051\166\001\001\000" + + "\002\001\001\000\002\001\001\000\002\001\001\000\002" + + "\001\001\000\002\001\001\000\002\001\001\000\002\001" + + "\001\000\002\001\001\000\002\001\001\000\002\001\001" + + "\000\002\001\001\000\002\001\001\000\002\001\001\000" + + "\020\011\155\026\136\033\106\034\147\047\153\052\100" + + "\053\077\001\001\000\020\011\154\026\136\033\106\034" + + "\147\047\153\052\100\053\077\001\001\000\002\001\001" + + "\000\002\001\001\000\002\001\001\000\052\006\120\010" + + "\127\011\117\020\163\021\125\022\073\023\121\024\143" + + "\025\123\026\136\027\146\030\134\031\107\032\072\033" + + "\106\034\147\047\150\050\116\052\100\053\077\001\001" + + "\000\052\006\120\010\127\011\117\020\162\021\125\022" + + "\073\023\121\024\143\025\123\026\136\027\146\030\134" + + "\031\107\032\072\033\106\034\147\047\150\050\116\052" + + "\100\053\077\001\001\000\052\006\120\010\127\011\117" + + "\020\161\021\125\022\073\023\121\024\143\025\123\026" + + "\136\027\146\030\134\031\107\032\072\033\106\034\147" + + "\047\150\050\116\052\100\053\077\001\001\000\002\001" + + "\001\000\002\001\001\000\002\001\001\000\002\001\001" + + "\000\002\001\001\000\002\001\001\000\002\001\001\000" + + "\002\001\001\000\024\011\117\026\136\027\174\030\134" + + "\033\106\034\147\047\153\052\100\053\077\001\001\000" + + "\024\011\117\026\136\027\173\030\134\033\106\034\147" + + "\047\153\052\100\053\077\001\001\000\002\001\001\000" + + "\002\001\001\000\050\006\120\010\127\011\117\021\125" + + "\022\073\023\121\024\176\025\123\026\136\027\146\030" + + "\134\031\107\032\072\033\106\034\147\047\150\050\116" + + "\052\100\053\077\001\001\000\002\001\001\000\002\001" + + "\001\000\074\004\203\005\202\006\120\010\127\011\117" + + "\012\101\013\075\014\104\015\063\016\111\017\145\020" + + "\113\021\125\022\073\023\121\024\143\025\123\026\136" + + "\027\146\030\134\031\107\032\072\033\106\034\147\046" + + "\204\047\150\050\116\052\100\053\077\001\001\000\002" + + "\001\001\000\002\001\001\000\002\001\001\000\002\001" + + "\001\000\002\001\001\000\074\004\203\005\202\006\120" + + "\010\127\011\117\012\101\013\075\014\104\015\063\016" + + "\111\017\145\020\113\021\125\022\073\023\121\024\143" + + "\025\123\026\136\027\146\030\134\031\107\032\072\033" + + "\106\034\147\046\207\047\150\050\116\052\100\053\077" + + "\001\001\000\002\001\001\000\054\006\120\010\127\011" + + "\117\017\213\020\113\021\125\022\073\023\121\024\143" + + "\025\123\026\136\027\146\030\134\031\107\032\072\033" + + "\106\034\147\047\150\050\116\052\100\053\077\001\001" + + "\000\054\006\120\010\127\011\117\017\212\020\113\021" + + "\125\022\073\023\121\024\143\025\123\026\136\027\146" + + "\030\134\031\107\032\072\033\106\034\147\047\150\050" + + "\116\052\100\053\077\001\001\000\002\001\001\000\002" + + "\001\001\000\002\001\001\000\060\006\120\010\127\011" + + "\117\015\230\016\111\017\145\020\113\021\125\022\073" + + "\023\121\024\143\025\123\026\136\027\146\030\134\031" + + "\107\032\072\033\106\034\147\047\150\050\116\052\100" + + "\053\077\001\001\000\060\006\120\010\127\011\117\015" + + "\217\016\111\017\145\020\113\021\125\022\073\023\121" + + "\024\143\025\123\026\136\027\146\030\134\031\107\032" + + "\072\033\106\034\147\047\150\050\116\052\100\053\077" + + "\001\001\000\002\001\001\000\056\006\120\010\127\011" + + "\117\016\227\017\145\020\113\021\125\022\073\023\121" + + "\024\143\025\123\026\136\027\146\030\134\031\107\032" + + "\072\033\106\034\147\047\150\050\116\052\100\053\077" + + "\001\001\000\056\006\120\010\127\011\117\016\226\017" + + "\145\020\113\021\125\022\073\023\121\024\143\025\123" + + "\026\136\027\146\030\134\031\107\032\072\033\106\034" + + "\147\047\150\050\116\052\100\053\077\001\001\000\056" + + "\006\120\010\127\011\117\016\225\017\145\020\113\021" + + "\125\022\073\023\121\024\143\025\123\026\136\027\146" + + "\030\134\031\107\032\072\033\106\034\147\047\150\050" + + "\116\052\100\053\077\001\001\000\056\006\120\010\127" + + "\011\117\016\224\017\145\020\113\021\125\022\073\023" + + "\121\024\143\025\123\026\136\027\146\030\134\031\107" + + "\032\072\033\106\034\147\047\150\050\116\052\100\053" + + "\077\001\001\000\002\001\001\000\002\001\001\000\002" + + "\001\001\000\002\001\001\000\002\001\001\000\064\006" + + "\120\010\127\011\117\013\232\014\104\015\063\016\111" + + "\017\145\020\113\021\125\022\073\023\121\024\143\025" + + "\123\026\136\027\146\030\134\031\107\032\072\033\106" + + "\034\147\047\150\050\116\052\100\053\077\001\001\000" + + "\002\001\001\000\062\006\120\010\127\011\117\014\234" + + "\015\063\016\111\017\145\020\113\021\125\022\073\023" + + "\121\024\143\025\123\026\136\027\146\030\134\031\107" + + "\032\072\033\106\034\147\047\150\050\116\052\100\053" + + "\077\001\001\000\002\001\001\000\002\001\001\000\006" + + "\007\053\045\237\001\001\000\002\001\001\000\002\001" + + "\001\000\002\001\001\000\002\001\001\000\002\001\001" + + "\000\002\001\001\000\002\001\001\000\002\001\001\000" + + "\002\001\001\000\002\001\001\000\002\001\001\000\002" + + "\001\001\000\002\001\001\000\002\001\001\000\002\001" + + "\001\000\002\001\001\000\002\001\001\000\002\001\001" + + "\000\002\001\001\000\002\001\001\000\002\001\001\000" + + "\020\040\031\041\267\042\023\043\052\044\010\047\051" + + "\054\021\001\001\000\020\040\031\041\266\042\023\043" + + "\052\044\010\047\051\054\021\001\001\000\002\001\001" + + "\000\002\001\001\000\002\001\001\000\006\007\053\045" + + "\274\001\001\000\006\007\053\045\273\001\001\000\002" + + "\001\001\000\002\001\001\000\020\040\031\041\300\042" + + "\023\043\052\044\010\047\051\054\021\001\001\000\020" + + "\040\031\041\277\042\023\043\052\044\010\047\051\054" + + "\021\001\001\000\002\001\001\000\002\001\001\000\002" + + "\001\001\000\002\001\001\000\002\001\001\000\002\001" + + "\001\000\026\035\016\036\306\037\006\040\031\041\025" + + "\042\023\043\052\044\010\047\051\054\021\001\001\000" + + "\002\001\001\000\002\001\001\000\002\001\001" }); + + /** Access to reduce_goto table. */ + public short[][] reduce_table() {return _reduce_table;} + + /** Instance of action encapsulation class. */ + protected CUP$XPathParser$actions action_obj; + + /** Action encapsulation object initializer. */ + protected void init_actions() + { + action_obj = new CUP$XPathParser$actions(this); + } + + /** Invoke a user supplied parse action. */ + public java_cup.runtime.Symbol do_action( + int act_num, + java_cup.runtime.lr_parser parser, + java.util.Stack stack, + int top) + throws java.lang.Exception + { + /* call code in generated class */ + return action_obj.CUP$XPathParser$do_action(act_num, parser, stack, top); + } + + /** Indicates start state. */ + public int start_state() {return 0;} + /** Indicates start production. */ + public int start_production() {return 0;} + + /** EOF Symbol index. */ + public int EOF_sym() {return 0;} + + /** error Symbol index. */ + public int error_sym() {return 1;} + + + + /** + * Used by function calls with no args. + */ + static public final Vector EmptyArgs = new Vector(0); + + /** + * Reference to non-existing variable. + */ + static public final VariableRef DummyVarRef = null; + + /** + * Reference to the Parser class. + */ + private Parser _parser; + private XSLTC _xsltc; + + /** + * String representation of the expression being parsed. + */ + private String _expression; + + /** + * Line number where this expression/pattern was declared. + */ + private int _lineNumber = 0; + + /** + * Reference to the symbol table. + */ + public SymbolTable _symbolTable; + + public XPathParser(Parser parser) { + _parser = parser; + _xsltc = parser.getXSLTC(); + _symbolTable = parser.getSymbolTable(); + } + + public int getLineNumber() { + return _lineNumber; + } + + public QName getQNameIgnoreDefaultNs(String name) { + return _parser.getQNameIgnoreDefaultNs(name); + } + + public QName getQName(String namespace, String prefix, String localname) { + return _parser.getQName(namespace, prefix, localname); + } + + public void setMultiDocument(boolean flag) { + _xsltc.setMultiDocument(flag); + } + + public void setCallsNodeset(boolean flag) { + _xsltc.setCallsNodeset(flag); + } + + public void setHasIdCall(boolean flag) { + _xsltc.setHasIdCall(flag); + } + + + /** + * This method is similar to findNodeType(int, Object) except that it + * creates a StepPattern instead of just returning a node type. It also + * differs in the way it handles "{uri}:*" and "{uri}:@*". The last two + * patterns are expanded as "*[namespace-uri() = 'uri']" and + * "@*[namespace-uri() = 'uri']", respectively. This expansion considerably + * simplifies the grouping of patterns in the Mode class. For this + * expansion to be correct, the priority of the pattern/template must be + * set to -0.25 (when no other predicates are present). + */ + public StepPattern createStepPattern(int axis, Object test, Vector predicates) { + int nodeType; + + if (test == null) { // "*" + nodeType = (axis == Axis.ATTRIBUTE) ? NodeTest.ATTRIBUTE : + (axis == Axis.NAMESPACE) ? -1 : NodeTest.ELEMENT; + + return new StepPattern(axis, nodeType, predicates); + } + else if (test instanceof Integer) { + nodeType = ((Integer) test).intValue(); + + return new StepPattern(axis, nodeType, predicates); + } + else { + QName name = (QName)test; + boolean setPriority = false; + + if (axis == Axis.NAMESPACE) { + nodeType = (name.toString().equals("*")) ? -1 + : _xsltc.registerNamespacePrefix(name);; + } + else { + final String uri = name.getNamespace(); + final String local = name.getLocalPart(); + final QName namespace_uri = + _parser.getQNameIgnoreDefaultNs("namespace-uri"); + + // Expand {uri}:* to *[namespace-uri() = 'uri'] - same for @* + if (uri != null && (local.equals("*") || local.equals("@*"))) { + if (predicates == null) { + predicates = new Vector(2); + } + + // Priority is set by hand if no other predicates exist + setPriority = (predicates.size() == 0); + + predicates.add( + new Predicate( + new EqualityExpr(Operators.EQ, + new NamespaceUriCall(namespace_uri), + new LiteralExpr(uri)))); + } + + if (local.equals("*")) { + nodeType = (axis == Axis.ATTRIBUTE) ? NodeTest.ATTRIBUTE + : NodeTest.ELEMENT; + } + else if (local.equals("@*")) { + nodeType = NodeTest.ATTRIBUTE; + } + else { + nodeType = (axis == Axis.ATTRIBUTE) ? _xsltc.registerAttribute(name) + : _xsltc.registerElement(name); + } + } + + final StepPattern result = new StepPattern(axis, nodeType, predicates); + + // Set priority for case prefix:* and prefix:@* (no predicates) + if (setPriority) { + result.setPriority(-0.25); + } + + return result; + } + } + + public int findNodeType(int axis, Object test) { + if (test == null) { // * + return (axis == Axis.ATTRIBUTE) ? + NodeTest.ATTRIBUTE : + (axis == Axis.NAMESPACE) ? -1 : NodeTest.ELEMENT; + } + else if (test instanceof Integer) { + return ((Integer)test).intValue(); + } + else { + QName name = (QName)test; + + if (axis == Axis.NAMESPACE) { + return (name.toString().equals("*")) ? -1 + : _xsltc.registerNamespacePrefix(name); + } + + if (name.getNamespace() == null) { + final String local = name.getLocalPart(); + + if (local.equals("*")) { + return (axis == Axis.ATTRIBUTE) ? NodeTest.ATTRIBUTE + : NodeTest.ELEMENT; + } + else if (local.equals("@*")) { + return NodeTest.ATTRIBUTE; + } + } + + return (axis == Axis.ATTRIBUTE) ? _xsltc.registerAttribute(name) + : _xsltc.registerElement(name); + } + } + + /** + * Parse the expression passed to the current scanner. If this + * expression contains references to local variables and it will be + * compiled in an external module (not in the main class) request + * the current template to create a new variable stack frame. + * + * @param lineNumber Line where the current expression is defined. + * @param external Set to true if this expression is + * compiled in a separate module. + * + */ + public Symbol parse(String expression, int lineNumber) throws Exception { + try { + _expression = expression; + _lineNumber = lineNumber; + return super.parse(); + } + catch (IllegalCharException e) { + ErrorMsg err = new ErrorMsg(ErrorMsg.ILLEGAL_CHAR_ERR, + lineNumber, e.getMessage()); + _parser.reportError(Constants.FATAL, err); + } + return null; + } + + /** + * Lookup a variable or parameter in the symbol table given its name. + * + * @param name Name of the symbol being looked up. + */ + final SyntaxTreeNode lookupName(QName name) { + // Is it a local var or param ? + final SyntaxTreeNode result = _parser.lookupVariable(name); + if (result != null) + return(result); + else + return(_symbolTable.lookupName(name)); + } + + public final void addError(ErrorMsg error) { + _parser.reportError(Constants.ERROR, error); + } + + public void report_error(String message, Object info) { + final ErrorMsg err = new ErrorMsg(ErrorMsg.SYNTAX_ERR, _lineNumber, + _expression); + _parser.reportError(Constants.FATAL, err); + } + + public void report_fatal_error(String message, Object info) { + // empty + } + + public RelativeLocationPath insertStep(Step step, RelativeLocationPath rlp) { + if (rlp instanceof Step) { + return new ParentLocationPath(step, (Step) rlp); + } + else if (rlp instanceof ParentLocationPath) { + final ParentLocationPath plp = (ParentLocationPath) rlp; + final RelativeLocationPath newrlp = insertStep(step, plp.getPath()); + return new ParentLocationPath(newrlp, plp.getStep()); + } + else { + addError(new ErrorMsg(ErrorMsg.INTERNAL_ERR, "XPathParser.insertStep")); + return rlp; + } + } + + /** + * Returns true if the axis applies to elements only. The axes + * child, attribute, namespace, descendant result in non-empty + * nodesets only if the context node is of type element. + */ + public boolean isElementAxis(int axis) { + return (axis == Axis.CHILD || axis == Axis.ATTRIBUTE || + axis == Axis.NAMESPACE || axis == Axis.DESCENDANT); + } + +} + +/** Cup generated class to encapsulate user supplied action code.*/ +class CUP$XPathParser$actions { + private final XPathParser parser; + + /** Constructor */ + CUP$XPathParser$actions(XPathParser parser) { + this.parser = parser; + } + + /** Method with the actual generated action code. */ + public final java_cup.runtime.Symbol CUP$XPathParser$do_action( + int CUP$XPathParser$act_num, + java_cup.runtime.lr_parser CUP$XPathParser$parser, + java.util.Stack CUP$XPathParser$stack, + int CUP$XPathParser$top) + throws java.lang.Exception + { + /* Symbol object for return from actions */ + java_cup.runtime.Symbol CUP$XPathParser$result; + + /* select the action based on the action number */ + switch (CUP$XPathParser$act_num) + { + /*. . . . . . . . . . . . . . . . . . . .*/ + case 140: // QName ::= ID + { + QName RESULT = null; + RESULT = parser.getQNameIgnoreDefaultNs("id"); + CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 139: // QName ::= SELF + { + QName RESULT = null; + RESULT = parser.getQNameIgnoreDefaultNs("self"); + CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 138: // QName ::= PRECEDINGSIBLING + { + QName RESULT = null; + RESULT = parser.getQNameIgnoreDefaultNs("preceding-sibling"); + CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 137: // QName ::= PRECEDING + { + QName RESULT = null; + RESULT = parser.getQNameIgnoreDefaultNs("preceding"); + CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 136: // QName ::= PARENT + { + QName RESULT = null; + RESULT = parser.getQNameIgnoreDefaultNs("parent"); + CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 135: // QName ::= NAMESPACE + { + QName RESULT = null; + RESULT = parser.getQNameIgnoreDefaultNs("namespace"); + CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 134: // QName ::= FOLLOWINGSIBLING + { + QName RESULT = null; + RESULT = parser.getQNameIgnoreDefaultNs("following-sibling"); + CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 133: // QName ::= FOLLOWING + { + QName RESULT = null; + RESULT = parser.getQNameIgnoreDefaultNs("following"); + CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 132: // QName ::= DESCENDANTORSELF + { + QName RESULT = null; + RESULT = parser.getQNameIgnoreDefaultNs("decendant-or-self"); + CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 131: // QName ::= DESCENDANT + { + QName RESULT = null; + RESULT = parser.getQNameIgnoreDefaultNs("decendant"); + CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 130: // QName ::= CHILD + { + QName RESULT = null; + RESULT = parser.getQNameIgnoreDefaultNs("child"); + CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 129: // QName ::= ATTRIBUTE + { + QName RESULT = null; + RESULT = parser.getQNameIgnoreDefaultNs("attribute"); + CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 128: // QName ::= ANCESTORORSELF + { + QName RESULT = null; + RESULT = parser.getQNameIgnoreDefaultNs("ancestor-or-self"); + CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 127: // QName ::= ANCESTOR + { + QName RESULT = null; + RESULT = parser.getQNameIgnoreDefaultNs("child"); + CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 126: // QName ::= KEY + { + QName RESULT = null; + RESULT = parser.getQNameIgnoreDefaultNs("key"); + CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 125: // QName ::= MOD + { + QName RESULT = null; + RESULT = parser.getQNameIgnoreDefaultNs("mod"); + CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 124: // QName ::= DIV + { + QName RESULT = null; + RESULT = parser.getQNameIgnoreDefaultNs("div"); + CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 123: // QName ::= QNAME + { + QName RESULT = null; + int qnameleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int qnameright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + String qname = (String)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = parser.getQNameIgnoreDefaultNs(qname); + CUP$XPathParser$result = new java_cup.runtime.Symbol(37/*QName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 122: // NameTest ::= QName + { + Object RESULT = null; + int qnleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int qnright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + QName qn = (QName)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = qn; + CUP$XPathParser$result = new java_cup.runtime.Symbol(26/*NameTest*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 121: // NameTest ::= STAR + { + Object RESULT = null; + RESULT = null; + CUP$XPathParser$result = new java_cup.runtime.Symbol(26/*NameTest*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 120: // NodeTest ::= PI + { + Object RESULT = null; + RESULT = new Integer(NodeTest.PI); + CUP$XPathParser$result = new java_cup.runtime.Symbol(25/*NodeTest*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 119: // NodeTest ::= PIPARAM LPAREN Literal RPAREN + { + Object RESULT = null; + int lleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int lright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + String l = (String)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + + QName name = parser.getQNameIgnoreDefaultNs("name"); + Expression exp = new EqualityExpr(Operators.EQ, + new NameCall(name), + new LiteralExpr(l)); + Vector predicates = new Vector(); + predicates.addElement(new Predicate(exp)); + RESULT = new Step(Axis.CHILD, NodeTest.PI, predicates); + + CUP$XPathParser$result = new java_cup.runtime.Symbol(25/*NodeTest*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 118: // NodeTest ::= COMMENT + { + Object RESULT = null; + RESULT = new Integer(NodeTest.COMMENT); + CUP$XPathParser$result = new java_cup.runtime.Symbol(25/*NodeTest*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 117: // NodeTest ::= TEXT + { + Object RESULT = null; + RESULT = new Integer(NodeTest.TEXT); + CUP$XPathParser$result = new java_cup.runtime.Symbol(25/*NodeTest*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 116: // NodeTest ::= NODE + { + Object RESULT = null; + RESULT = new Integer(NodeTest.ANODE); + CUP$XPathParser$result = new java_cup.runtime.Symbol(25/*NodeTest*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 115: // NodeTest ::= NameTest + { + Object RESULT = null; + int ntleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ntright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Object nt = (Object)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = nt; + CUP$XPathParser$result = new java_cup.runtime.Symbol(25/*NodeTest*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 114: // Argument ::= Expr + { + Expression RESULT = null; + int exleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int exright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression ex = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = ex; + CUP$XPathParser$result = new java_cup.runtime.Symbol(3/*Argument*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 113: // VariableName ::= QName + { + QName RESULT = null; + int vnameleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int vnameright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + QName vname = (QName)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + + RESULT = vname; + + CUP$XPathParser$result = new java_cup.runtime.Symbol(39/*VariableName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 112: // FunctionName ::= QName + { + QName RESULT = null; + int fnameleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int fnameright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + QName fname = (QName)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + + RESULT = fname; + + CUP$XPathParser$result = new java_cup.runtime.Symbol(38/*FunctionName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 111: // NonemptyArgumentList ::= Argument COMMA NonemptyArgumentList + { + Vector RESULT = null; + int argleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int argright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Expression arg = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int arglleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int arglright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Vector argl = (Vector)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + argl.insertElementAt(arg, 0); RESULT = argl; + CUP$XPathParser$result = new java_cup.runtime.Symbol(36/*NonemptyArgumentList*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 110: // NonemptyArgumentList ::= Argument + { + Vector RESULT = null; + int argleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int argright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression arg = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + + Vector temp = new Vector(); + temp.addElement(arg); + RESULT = temp; + + CUP$XPathParser$result = new java_cup.runtime.Symbol(36/*NonemptyArgumentList*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 109: // FunctionCall ::= FunctionName LPAREN NonemptyArgumentList RPAREN + { + Expression RESULT = null; + int fnameleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).left; + int fnameright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).right; + QName fname = (QName)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).value; + int arglleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int arglright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + Vector argl = (Vector)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + + if (parser.getQNameIgnoreDefaultNs("concat").equals(fname)) { + RESULT = new ConcatCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("number").equals(fname)) { + RESULT = new NumberCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("document").equals(fname)) { + parser.setMultiDocument(true); + RESULT = new DocumentCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("string").equals(fname)) { + RESULT = new StringCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("boolean").equals(fname)) { + RESULT = new BooleanCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("name").equals(fname)) { + RESULT = new NameCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("generate-id").equals(fname)) { + RESULT = new GenerateIdCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("not").equals(fname)) { + RESULT = new NotCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("format-number").equals(fname)) { + RESULT = new FormatNumberCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("unparsed-entity-uri").equals(fname)) { + RESULT = new UnparsedEntityUriCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("key").equals(fname)) { + RESULT = new KeyCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("id").equals(fname)) { + RESULT = new KeyCall(fname, argl); + parser.setHasIdCall(true); + } + else if (parser.getQNameIgnoreDefaultNs("ceiling").equals(fname)) { + RESULT = new CeilingCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("round").equals(fname)) { + RESULT = new RoundCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("floor").equals(fname)) { + RESULT = new FloorCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("contains").equals(fname)) { + RESULT = new ContainsCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("string-length").equals(fname)) { + RESULT = new StringLengthCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("starts-with").equals(fname)) { + RESULT = new StartsWithCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("function-available").equals(fname)) { + RESULT = new FunctionAvailableCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("element-available").equals(fname)) { + RESULT = new ElementAvailableCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("local-name").equals(fname)) { + RESULT = new LocalNameCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("lang").equals(fname)) { + RESULT = new LangCall(fname, argl); + } + else if (parser.getQNameIgnoreDefaultNs("namespace-uri").equals(fname)) { + RESULT = new NamespaceUriCall(fname, argl); + } + else if (parser.getQName(Constants.TRANSLET_URI, "xsltc", "cast").equals(fname)) { + RESULT = new CastCall(fname, argl); + } + // Special case for extension function nodeset() + else if (fname.getLocalPart().equals("nodeset") || fname.getLocalPart().equals("node-set")) { + parser.setCallsNodeset(true); // implies MultiDOM + RESULT = new FunctionCall(fname, argl); + } + else { + RESULT = new FunctionCall(fname, argl); + } + + CUP$XPathParser$result = new java_cup.runtime.Symbol(16/*FunctionCall*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 108: // FunctionCall ::= FunctionName LPAREN RPAREN + { + Expression RESULT = null; + int fnameleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int fnameright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + QName fname = (QName)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + + + if (parser.getQNameIgnoreDefaultNs("current").equals(fname)) { + RESULT = new CurrentCall(fname); + } + else if (parser.getQNameIgnoreDefaultNs("number").equals(fname)) { + RESULT = new NumberCall(fname, parser.EmptyArgs); + } + else if (parser.getQNameIgnoreDefaultNs("string").equals(fname)) { + RESULT = new StringCall(fname, parser.EmptyArgs); + } + else if (parser.getQNameIgnoreDefaultNs("concat").equals(fname)) { + RESULT = new ConcatCall(fname, parser.EmptyArgs); + } + else if (parser.getQNameIgnoreDefaultNs("true").equals(fname)) { + RESULT = new BooleanExpr(true); + } + else if (parser.getQNameIgnoreDefaultNs("false").equals(fname)) { + RESULT = new BooleanExpr(false); + } + else if (parser.getQNameIgnoreDefaultNs("name").equals(fname)) { + RESULT = new NameCall(fname); + } + else if (parser.getQNameIgnoreDefaultNs("generate-id").equals(fname)) { + RESULT = new GenerateIdCall(fname, parser.EmptyArgs); + } + else if (parser.getQNameIgnoreDefaultNs("string-length").equals(fname)) { + RESULT = new StringLengthCall(fname, parser.EmptyArgs); + } + else if (parser.getQNameIgnoreDefaultNs("position").equals(fname)) { + RESULT = new PositionCall(fname); + } + else if (parser.getQNameIgnoreDefaultNs("last").equals(fname)) { + RESULT = new LastCall(fname); + } + else if (parser.getQNameIgnoreDefaultNs("local-name").equals(fname)) { + RESULT = new LocalNameCall(fname); + } + else if (parser.getQNameIgnoreDefaultNs("namespace-uri").equals(fname)) { + RESULT = new NamespaceUriCall(fname); + } + else { + RESULT = new FunctionCall(fname, parser.EmptyArgs); + } + + CUP$XPathParser$result = new java_cup.runtime.Symbol(16/*FunctionCall*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 107: // VariableReference ::= DOLLAR VariableName + { + Expression RESULT = null; + int varNameleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int varNameright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + QName varName = (QName)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + + // An empty qname prefix for a variable or parameter reference + // should map to the null namespace and not the default URI. + SyntaxTreeNode node = parser.lookupName(varName); + + if (node != null) { + if (node instanceof Variable) { + RESULT = new VariableRef((Variable)node); + } + else if (node instanceof Param) { + RESULT = new ParameterRef((Param)node); + } + else { + RESULT = new UnresolvedRef(varName); + } + } + + if (node == null) { + RESULT = new UnresolvedRef(varName); + } + + CUP$XPathParser$result = new java_cup.runtime.Symbol(15/*VariableReference*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 106: // PrimaryExpr ::= FunctionCall + { + Expression RESULT = null; + int fcleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int fcright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression fc = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = fc; + CUP$XPathParser$result = new java_cup.runtime.Symbol(17/*PrimaryExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 105: // PrimaryExpr ::= REAL + { + Expression RESULT = null; + int numleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int numright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Double num = (Double)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new RealExpr(num.doubleValue()); + CUP$XPathParser$result = new java_cup.runtime.Symbol(17/*PrimaryExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 104: // PrimaryExpr ::= INT + { + Expression RESULT = null; + int numleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int numright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Long num = (Long)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + + long value = num.longValue(); + if (value < Integer.MIN_VALUE || value > Integer.MAX_VALUE) { + RESULT = new RealExpr(value); + } + else { + if (num.doubleValue() == -0) + RESULT = new RealExpr(num.doubleValue()); + else if (num.intValue() == 0) + RESULT = new IntExpr(num.intValue()); + else if (num.doubleValue() == 0.0) + RESULT = new RealExpr(num.doubleValue()); + else + RESULT = new IntExpr(num.intValue()); + } + + CUP$XPathParser$result = new java_cup.runtime.Symbol(17/*PrimaryExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 103: // PrimaryExpr ::= Literal + { + Expression RESULT = null; + int stringleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int stringright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + String string = (String)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + + /* + * If the string appears to have the syntax of a QName, store + * namespace info in the literal expression. This is used for + * element-available and function-available functions, among + * others. Also, the default namespace must be ignored. + */ + String namespace = null; + final int index = string.lastIndexOf(':'); + + if (index > 0) { + final String prefix = string.substring(0, index); + namespace = parser._symbolTable.lookupNamespace(prefix); + } + RESULT = (namespace == null) ? new LiteralExpr(string) + : new LiteralExpr(string, namespace); + + CUP$XPathParser$result = new java_cup.runtime.Symbol(17/*PrimaryExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 102: // PrimaryExpr ::= LPAREN Expr RPAREN + { + Expression RESULT = null; + int exleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int exright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + Expression ex = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + RESULT = ex; + CUP$XPathParser$result = new java_cup.runtime.Symbol(17/*PrimaryExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 101: // PrimaryExpr ::= VariableReference + { + Expression RESULT = null; + int vrleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int vrright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression vr = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = vr; + CUP$XPathParser$result = new java_cup.runtime.Symbol(17/*PrimaryExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 100: // FilterExpr ::= PrimaryExpr Predicates + { + Expression RESULT = null; + int primaryleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int primaryright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + Expression primary = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + int ppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Vector pp = (Vector)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new FilterExpr(primary, pp); + CUP$XPathParser$result = new java_cup.runtime.Symbol(6/*FilterExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 99: // FilterExpr ::= PrimaryExpr + { + Expression RESULT = null; + int primaryleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int primaryright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression primary = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = primary; + CUP$XPathParser$result = new java_cup.runtime.Symbol(6/*FilterExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 98: // AbbreviatedStep ::= DDOT + { + Expression RESULT = null; + RESULT = new Step(Axis.PARENT, NodeTest.ANODE, null); + CUP$XPathParser$result = new java_cup.runtime.Symbol(20/*AbbreviatedStep*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 97: // AbbreviatedStep ::= DOT + { + Expression RESULT = null; + RESULT = new Step(Axis.SELF, NodeTest.ANODE, null); + CUP$XPathParser$result = new java_cup.runtime.Symbol(20/*AbbreviatedStep*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 96: // AxisName ::= SELF + { + Integer RESULT = null; + RESULT = new Integer(Axis.SELF); + CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 95: // AxisName ::= PRECEDINGSIBLING + { + Integer RESULT = null; + RESULT = new Integer(Axis.PRECEDINGSIBLING); + CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 94: // AxisName ::= PRECEDING + { + Integer RESULT = null; + RESULT = new Integer(Axis.PRECEDING); + CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 93: // AxisName ::= PARENT + { + Integer RESULT = null; + RESULT = new Integer(Axis.PARENT); + CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 92: // AxisName ::= NAMESPACE + { + Integer RESULT = null; + RESULT = new Integer(Axis.NAMESPACE); + CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 91: // AxisName ::= FOLLOWINGSIBLING + { + Integer RESULT = null; + RESULT = new Integer(Axis.FOLLOWINGSIBLING); + CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 90: // AxisName ::= FOLLOWING + { + Integer RESULT = null; + RESULT = new Integer(Axis.FOLLOWING); + CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 89: // AxisName ::= DESCENDANTORSELF + { + Integer RESULT = null; + RESULT = new Integer(Axis.DESCENDANTORSELF); + CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 88: // AxisName ::= DESCENDANT + { + Integer RESULT = null; + RESULT = new Integer(Axis.DESCENDANT); + CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 87: // AxisName ::= CHILD + { + Integer RESULT = null; + RESULT = new Integer(Axis.CHILD); + CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 86: // AxisName ::= ATTRIBUTE + { + Integer RESULT = null; + RESULT = new Integer(Axis.ATTRIBUTE); + CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 85: // AxisName ::= ANCESTORORSELF + { + Integer RESULT = null; + RESULT = new Integer(Axis.ANCESTORORSELF); + CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 84: // AxisName ::= ANCESTOR + { + Integer RESULT = null; + RESULT = new Integer(Axis.ANCESTOR); + CUP$XPathParser$result = new java_cup.runtime.Symbol(40/*AxisName*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 83: // AxisSpecifier ::= ATSIGN + { + Integer RESULT = null; + RESULT = new Integer(Axis.ATTRIBUTE); + CUP$XPathParser$result = new java_cup.runtime.Symbol(41/*AxisSpecifier*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 82: // AxisSpecifier ::= AxisName DCOLON + { + Integer RESULT = null; + int anleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int anright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + Integer an = (Integer)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + RESULT = an; + CUP$XPathParser$result = new java_cup.runtime.Symbol(41/*AxisSpecifier*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 81: // Step ::= AbbreviatedStep + { + Expression RESULT = null; + int abbrevleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int abbrevright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression abbrev = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = abbrev; + CUP$XPathParser$result = new java_cup.runtime.Symbol(7/*Step*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 80: // Step ::= AxisSpecifier NodeTest + { + Expression RESULT = null; + int axisleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int axisright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + Integer axis = (Integer)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + int ntestleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ntestright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Object ntest = (Object)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new Step(axis.intValue(), + parser.findNodeType(axis.intValue(), ntest), + null); + + CUP$XPathParser$result = new java_cup.runtime.Symbol(7/*Step*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 79: // Step ::= AxisSpecifier NodeTest Predicates + { + Expression RESULT = null; + int axisleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int axisright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Integer axis = (Integer)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int ntestleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int ntestright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + Object ntest = (Object)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + int ppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Vector pp = (Vector)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new Step(axis.intValue(), + parser.findNodeType(axis.intValue(), ntest), + pp); + + CUP$XPathParser$result = new java_cup.runtime.Symbol(7/*Step*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 78: // Step ::= NodeTest Predicates + { + Expression RESULT = null; + int ntestleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int ntestright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + Object ntest = (Object)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + int ppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Vector pp = (Vector)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + + if (ntest instanceof Step) { + Step step = (Step)ntest; + step.addPredicates(pp); + RESULT = (Step)ntest; + } + else { + RESULT = new Step(Axis.CHILD, + parser.findNodeType(Axis.CHILD, ntest), pp); + } + + CUP$XPathParser$result = new java_cup.runtime.Symbol(7/*Step*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 77: // Step ::= NodeTest + { + Expression RESULT = null; + int ntestleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ntestright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Object ntest = (Object)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + + if (ntest instanceof Step) { + RESULT = (Step)ntest; + } + else { + RESULT = new Step(Axis.CHILD, + parser.findNodeType(Axis.CHILD, ntest), + null); + } + + CUP$XPathParser$result = new java_cup.runtime.Symbol(7/*Step*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 76: // AbbreviatedAbsoluteLocationPath ::= DSLASH RelativeLocationPath + { + Expression RESULT = null; + int rlpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int rlpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression rlp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + + // + // Expand '//' into '/descendant-or-self::node()/' or + // into /descendant-or-self::*/ + // + int nodeType = DOM.NO_TYPE; + if (rlp instanceof Step && + parser.isElementAxis(((Step) rlp).getAxis())) + { + nodeType = DTM.ELEMENT_NODE; + } + final Step step = new Step(Axis.DESCENDANTORSELF, nodeType, null); + RESULT = new AbsoluteLocationPath(parser.insertStep(step, + (RelativeLocationPath) rlp)); + + CUP$XPathParser$result = new java_cup.runtime.Symbol(24/*AbbreviatedAbsoluteLocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 75: // AbbreviatedRelativeLocationPath ::= RelativeLocationPath DSLASH Step + { + Expression RESULT = null; + int rlpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int rlpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Expression rlp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int stepleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int stepright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression step = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + + final Step right = (Step)step; + final int axis = right.getAxis(); + final int type = right.getNodeType(); + final Vector predicates = right.getPredicates(); + + if ((axis == Axis.CHILD) && (type != NodeTest.ATTRIBUTE)) { + // Compress './/child:E' into 'descendant::E' - if possible + if (predicates == null) { + right.setAxis(Axis.DESCENDANT); + if (rlp instanceof Step && ((Step)rlp).isAbbreviatedDot()) { + RESULT = right; + } + else { + // Expand 'rlp//child::E' into 'rlp/descendant::E' + RelativeLocationPath left = (RelativeLocationPath)rlp; + RESULT = new ParentLocationPath(left, right); + } + } + else { + // Expand './/step' -> 'descendant-or-self::*/step' + if (rlp instanceof Step && ((Step)rlp).isAbbreviatedDot()) { + Step left = new Step(Axis.DESCENDANTORSELF, + DTM.ELEMENT_NODE, null); + RESULT = new ParentLocationPath(left, right); + } + else { + // Expand 'rlp//step' -> 'rlp/descendant-or-self::*/step' + RelativeLocationPath left = (RelativeLocationPath)rlp; + Step mid = new Step(Axis.DESCENDANTORSELF, + DTM.ELEMENT_NODE, null); + ParentLocationPath ppl = new ParentLocationPath(mid, right); + RESULT = new ParentLocationPath(left, ppl); + } + } + } + else if ((axis == Axis.ATTRIBUTE) || (type == NodeTest.ATTRIBUTE)) { + // Expand 'rlp//step' -> 'rlp/descendant-or-self::*/step' + RelativeLocationPath left = (RelativeLocationPath)rlp; + Step middle = new Step(Axis.DESCENDANTORSELF, + DTM.ELEMENT_NODE, null); + ParentLocationPath ppl = new ParentLocationPath(middle, right); + RESULT = new ParentLocationPath(left, ppl); + } + else { + // Expand 'rlp//step' -> 'rlp/descendant-or-self::node()/step' + RelativeLocationPath left = (RelativeLocationPath)rlp; + Step middle = new Step(Axis.DESCENDANTORSELF, + DOM.NO_TYPE, null); + ParentLocationPath ppl = new ParentLocationPath(middle, right); + RESULT = new ParentLocationPath(left, ppl); + } + + CUP$XPathParser$result = new java_cup.runtime.Symbol(22/*AbbreviatedRelativeLocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 74: // AbsoluteLocationPath ::= AbbreviatedAbsoluteLocationPath + { + Expression RESULT = null; + int aalpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int aalpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression aalp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = aalp; + CUP$XPathParser$result = new java_cup.runtime.Symbol(23/*AbsoluteLocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 73: // AbsoluteLocationPath ::= SLASH RelativeLocationPath + { + Expression RESULT = null; + int rlpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int rlpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression rlp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new AbsoluteLocationPath(rlp); + CUP$XPathParser$result = new java_cup.runtime.Symbol(23/*AbsoluteLocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 72: // AbsoluteLocationPath ::= SLASH + { + Expression RESULT = null; + RESULT = new AbsoluteLocationPath(); + CUP$XPathParser$result = new java_cup.runtime.Symbol(23/*AbsoluteLocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 71: // RelativeLocationPath ::= AbbreviatedRelativeLocationPath + { + Expression RESULT = null; + int arlpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int arlpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression arlp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = arlp; + CUP$XPathParser$result = new java_cup.runtime.Symbol(21/*RelativeLocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 70: // RelativeLocationPath ::= RelativeLocationPath SLASH Step + { + Expression RESULT = null; + int rlpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int rlpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Expression rlp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int stepleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int stepright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression step = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + + if (rlp instanceof Step && ((Step) rlp).isAbbreviatedDot()) { + RESULT = step; // Remove './' from the middle + } + else if (((Step) step).isAbbreviatedDot()) { + RESULT = rlp; // Remove '/.' from the end + } + else { + RESULT = + new ParentLocationPath((RelativeLocationPath) rlp, step); + } + + CUP$XPathParser$result = new java_cup.runtime.Symbol(21/*RelativeLocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 69: // RelativeLocationPath ::= Step + { + Expression RESULT = null; + int stepleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int stepright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression step = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = step; + CUP$XPathParser$result = new java_cup.runtime.Symbol(21/*RelativeLocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 68: // LocationPath ::= AbsoluteLocationPath + { + Expression RESULT = null; + int alpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int alpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression alp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = alp; + CUP$XPathParser$result = new java_cup.runtime.Symbol(4/*LocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 67: // LocationPath ::= RelativeLocationPath + { + Expression RESULT = null; + int rlpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int rlpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression rlp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = rlp; + CUP$XPathParser$result = new java_cup.runtime.Symbol(4/*LocationPath*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 66: // PathExpr ::= FilterExpr DSLASH RelativeLocationPath + { + Expression RESULT = null; + int fexpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int fexpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Expression fexp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int rlpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int rlpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression rlp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + + // + // Expand '//' into '/descendant-or-self::node()/' or + // into /descendant-or-self::*/ + // + int nodeType = DOM.NO_TYPE; + if (rlp instanceof Step && + parser.isElementAxis(((Step) rlp).getAxis())) + { + nodeType = DTM.ELEMENT_NODE; + } + final Step step = new Step(Axis.DESCENDANTORSELF, nodeType, null); + FilterParentPath fpp = new FilterParentPath(fexp, step); + fpp = new FilterParentPath(fpp, rlp); + if (fexp instanceof KeyCall == false) { + fpp.setDescendantAxis(); + } + RESULT = fpp; + + CUP$XPathParser$result = new java_cup.runtime.Symbol(19/*PathExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 65: // PathExpr ::= FilterExpr SLASH RelativeLocationPath + { + Expression RESULT = null; + int fexpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int fexpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Expression fexp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int rlpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int rlpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression rlp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new FilterParentPath(fexp, rlp); + CUP$XPathParser$result = new java_cup.runtime.Symbol(19/*PathExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 64: // PathExpr ::= FilterExpr + { + Expression RESULT = null; + int fexpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int fexpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression fexp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = fexp; + CUP$XPathParser$result = new java_cup.runtime.Symbol(19/*PathExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 63: // PathExpr ::= LocationPath + { + Expression RESULT = null; + int lpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int lpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression lp = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = lp; + CUP$XPathParser$result = new java_cup.runtime.Symbol(19/*PathExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 62: // UnionExpr ::= PathExpr VBAR UnionExpr + { + Expression RESULT = null; + int peleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int peright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Expression pe = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int restleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int restright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression rest = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new UnionPathExpr(pe, rest); + CUP$XPathParser$result = new java_cup.runtime.Symbol(18/*UnionExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 61: // UnionExpr ::= PathExpr + { + Expression RESULT = null; + int peleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int peright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression pe = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = pe; + CUP$XPathParser$result = new java_cup.runtime.Symbol(18/*UnionExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 60: // UnaryExpr ::= MINUS UnaryExpr + { + Expression RESULT = null; + int ueleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ueright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression ue = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new UnaryOpExpr(ue); + CUP$XPathParser$result = new java_cup.runtime.Symbol(14/*UnaryExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 59: // UnaryExpr ::= UnionExpr + { + Expression RESULT = null; + int ueleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ueright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression ue = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = ue; + CUP$XPathParser$result = new java_cup.runtime.Symbol(14/*UnaryExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 58: // MultiplicativeExpr ::= MultiplicativeExpr MOD UnaryExpr + { + Expression RESULT = null; + int meleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int meright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Expression me = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int ueleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ueright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression ue = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new BinOpExpr(BinOpExpr.MOD, me, ue); + CUP$XPathParser$result = new java_cup.runtime.Symbol(13/*MultiplicativeExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 57: // MultiplicativeExpr ::= MultiplicativeExpr DIV UnaryExpr + { + Expression RESULT = null; + int meleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int meright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Expression me = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int ueleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ueright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression ue = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new BinOpExpr(BinOpExpr.DIV, me, ue); + CUP$XPathParser$result = new java_cup.runtime.Symbol(13/*MultiplicativeExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 56: // MultiplicativeExpr ::= MultiplicativeExpr MULT UnaryExpr + { + Expression RESULT = null; + int meleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int meright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Expression me = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int ueleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ueright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression ue = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new BinOpExpr(BinOpExpr.TIMES, me, ue); + CUP$XPathParser$result = new java_cup.runtime.Symbol(13/*MultiplicativeExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 55: // MultiplicativeExpr ::= UnaryExpr + { + Expression RESULT = null; + int ueleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ueright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression ue = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = ue; + CUP$XPathParser$result = new java_cup.runtime.Symbol(13/*MultiplicativeExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 54: // AdditiveExpr ::= AdditiveExpr MINUS MultiplicativeExpr + { + Expression RESULT = null; + int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int meleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int meright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression me = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new BinOpExpr(BinOpExpr.MINUS, ae, me); + CUP$XPathParser$result = new java_cup.runtime.Symbol(12/*AdditiveExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 53: // AdditiveExpr ::= AdditiveExpr PLUS MultiplicativeExpr + { + Expression RESULT = null; + int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int meleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int meright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression me = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new BinOpExpr(BinOpExpr.PLUS, ae, me); + CUP$XPathParser$result = new java_cup.runtime.Symbol(12/*AdditiveExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 52: // AdditiveExpr ::= MultiplicativeExpr + { + Expression RESULT = null; + int meleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int meright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression me = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = me; + CUP$XPathParser$result = new java_cup.runtime.Symbol(12/*AdditiveExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 51: // RelationalExpr ::= RelationalExpr GE AdditiveExpr + { + Expression RESULT = null; + int releft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int reright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Expression re = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new RelationalExpr(Operators.GE, re, ae); + CUP$XPathParser$result = new java_cup.runtime.Symbol(11/*RelationalExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 50: // RelationalExpr ::= RelationalExpr LE AdditiveExpr + { + Expression RESULT = null; + int releft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int reright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Expression re = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new RelationalExpr(Operators.LE, re, ae); + CUP$XPathParser$result = new java_cup.runtime.Symbol(11/*RelationalExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 49: // RelationalExpr ::= RelationalExpr GT AdditiveExpr + { + Expression RESULT = null; + int releft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int reright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Expression re = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new RelationalExpr(Operators.GT, re, ae); + CUP$XPathParser$result = new java_cup.runtime.Symbol(11/*RelationalExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 48: // RelationalExpr ::= RelationalExpr LT AdditiveExpr + { + Expression RESULT = null; + int releft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int reright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Expression re = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new RelationalExpr(Operators.LT, re, ae); + CUP$XPathParser$result = new java_cup.runtime.Symbol(11/*RelationalExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 47: // RelationalExpr ::= AdditiveExpr + { + Expression RESULT = null; + int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = ae; + CUP$XPathParser$result = new java_cup.runtime.Symbol(11/*RelationalExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 46: // EqualityExpr ::= EqualityExpr NE RelationalExpr + { + Expression RESULT = null; + int eeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int eeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Expression ee = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int releft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int reright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression re = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new EqualityExpr(Operators.NE, ee, re); + CUP$XPathParser$result = new java_cup.runtime.Symbol(10/*EqualityExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 45: // EqualityExpr ::= EqualityExpr EQ RelationalExpr + { + Expression RESULT = null; + int eeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int eeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Expression ee = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int releft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int reright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression re = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new EqualityExpr(Operators.EQ, ee, re); + CUP$XPathParser$result = new java_cup.runtime.Symbol(10/*EqualityExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 44: // EqualityExpr ::= RelationalExpr + { + Expression RESULT = null; + int releft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int reright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression re = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = re; + CUP$XPathParser$result = new java_cup.runtime.Symbol(10/*EqualityExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 43: // AndExpr ::= AndExpr AND EqualityExpr + { + Expression RESULT = null; + int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int eeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int eeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression ee = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new LogicalExpr(LogicalExpr.AND, ae, ee); + CUP$XPathParser$result = new java_cup.runtime.Symbol(9/*AndExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 42: // AndExpr ::= EqualityExpr + { + Expression RESULT = null; + int eleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int eright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression e = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = e; + CUP$XPathParser$result = new java_cup.runtime.Symbol(9/*AndExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 41: // OrExpr ::= OrExpr OR AndExpr + { + Expression RESULT = null; + int oeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int oeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Expression oe = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new LogicalExpr(LogicalExpr.OR, oe, ae); + CUP$XPathParser$result = new java_cup.runtime.Symbol(8/*OrExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 40: // OrExpr ::= AndExpr + { + Expression RESULT = null; + int aeleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int aeright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression ae = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = ae; + CUP$XPathParser$result = new java_cup.runtime.Symbol(8/*OrExpr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 39: // Expr ::= OrExpr + { + Expression RESULT = null; + int exleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int exright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression ex = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = ex; + CUP$XPathParser$result = new java_cup.runtime.Symbol(2/*Expr*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 38: // Predicate ::= LBRACK Expr RBRACK + { + Expression RESULT = null; + int eleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int eright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + Expression e = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + + RESULT = new Predicate(e); + + CUP$XPathParser$result = new java_cup.runtime.Symbol(5/*Predicate*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 37: // Predicates ::= Predicate Predicates + { + Vector RESULT = null; + int pleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int pright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + Expression p = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + int ppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Vector pp = (Vector)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + pp.insertElementAt(p, 0); RESULT = pp; + CUP$XPathParser$result = new java_cup.runtime.Symbol(35/*Predicates*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 36: // Predicates ::= Predicate + { + Vector RESULT = null; + int pleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int pright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression p = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + + Vector temp = new Vector(); + temp.addElement(p); + RESULT = temp; + + CUP$XPathParser$result = new java_cup.runtime.Symbol(35/*Predicates*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 35: // ChildOrAttributeAxisSpecifier ::= ATTRIBUTE DCOLON + { + Integer RESULT = null; + RESULT = new Integer(Axis.ATTRIBUTE); + CUP$XPathParser$result = new java_cup.runtime.Symbol(42/*ChildOrAttributeAxisSpecifier*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 34: // ChildOrAttributeAxisSpecifier ::= CHILD DCOLON + { + Integer RESULT = null; + RESULT = new Integer(Axis.CHILD); + CUP$XPathParser$result = new java_cup.runtime.Symbol(42/*ChildOrAttributeAxisSpecifier*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 33: // ChildOrAttributeAxisSpecifier ::= ATSIGN + { + Integer RESULT = null; + RESULT = new Integer(Axis.ATTRIBUTE); + CUP$XPathParser$result = new java_cup.runtime.Symbol(42/*ChildOrAttributeAxisSpecifier*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 32: // NameTestPattern ::= QName + { + Object RESULT = null; + int qnleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int qnright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + QName qn = (QName)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = qn; + CUP$XPathParser$result = new java_cup.runtime.Symbol(34/*NameTestPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 31: // NameTestPattern ::= STAR + { + Object RESULT = null; + RESULT = null; + CUP$XPathParser$result = new java_cup.runtime.Symbol(34/*NameTestPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 30: // NodeTestPattern ::= PI + { + Object RESULT = null; + RESULT = new Integer(NodeTest.PI); + CUP$XPathParser$result = new java_cup.runtime.Symbol(33/*NodeTestPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 29: // NodeTestPattern ::= COMMENT + { + Object RESULT = null; + RESULT = new Integer(NodeTest.COMMENT); + CUP$XPathParser$result = new java_cup.runtime.Symbol(33/*NodeTestPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 28: // NodeTestPattern ::= TEXT + { + Object RESULT = null; + RESULT = new Integer(NodeTest.TEXT); + CUP$XPathParser$result = new java_cup.runtime.Symbol(33/*NodeTestPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 27: // NodeTestPattern ::= NODE + { + Object RESULT = null; + RESULT = new Integer(NodeTest.ANODE); + CUP$XPathParser$result = new java_cup.runtime.Symbol(33/*NodeTestPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 26: // NodeTestPattern ::= NameTestPattern + { + Object RESULT = null; + int ntleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ntright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Object nt = (Object)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = nt; + CUP$XPathParser$result = new java_cup.runtime.Symbol(33/*NodeTestPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 25: // StepPattern ::= ChildOrAttributeAxisSpecifier ProcessingInstructionPattern Predicates + { + StepPattern RESULT = null; + int axisleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int axisright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Integer axis = (Integer)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int pipleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int pipright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + StepPattern pip = (StepPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + int ppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Vector pp = (Vector)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + + // TODO: report error if axis is attribute + RESULT = (ProcessingInstructionPattern)pip.setPredicates(pp); + + CUP$XPathParser$result = new java_cup.runtime.Symbol(32/*StepPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 24: // StepPattern ::= ChildOrAttributeAxisSpecifier ProcessingInstructionPattern + { + StepPattern RESULT = null; + int axisleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int axisright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + Integer axis = (Integer)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + int pipleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int pipright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + StepPattern pip = (StepPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + + RESULT = pip; // TODO: report error if axis is attribute + + CUP$XPathParser$result = new java_cup.runtime.Symbol(32/*StepPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 23: // StepPattern ::= ChildOrAttributeAxisSpecifier NodeTestPattern Predicates + { + StepPattern RESULT = null; + int axisleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int axisright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Integer axis = (Integer)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int ntleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int ntright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + Object nt = (Object)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + int ppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Vector pp = (Vector)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + + RESULT = parser.createStepPattern(axis.intValue(), nt, pp); + + CUP$XPathParser$result = new java_cup.runtime.Symbol(32/*StepPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 22: // StepPattern ::= ChildOrAttributeAxisSpecifier NodeTestPattern + { + StepPattern RESULT = null; + int axisleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int axisright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + Integer axis = (Integer)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + int ntleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ntright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Object nt = (Object)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + + RESULT = parser.createStepPattern(axis.intValue(), nt, null); + + CUP$XPathParser$result = new java_cup.runtime.Symbol(32/*StepPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 21: // StepPattern ::= ProcessingInstructionPattern Predicates + { + StepPattern RESULT = null; + int pipleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int pipright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + StepPattern pip = (StepPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + int ppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Vector pp = (Vector)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = (ProcessingInstructionPattern)pip.setPredicates(pp); + CUP$XPathParser$result = new java_cup.runtime.Symbol(32/*StepPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 20: // StepPattern ::= ProcessingInstructionPattern + { + StepPattern RESULT = null; + int pipleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int pipright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + StepPattern pip = (StepPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = pip; + CUP$XPathParser$result = new java_cup.runtime.Symbol(32/*StepPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 19: // StepPattern ::= NodeTestPattern Predicates + { + StepPattern RESULT = null; + int ntleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int ntright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + Object nt = (Object)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + int ppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Vector pp = (Vector)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + + RESULT = parser.createStepPattern(Axis.CHILD, nt, pp); + + CUP$XPathParser$result = new java_cup.runtime.Symbol(32/*StepPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 18: // StepPattern ::= NodeTestPattern + { + StepPattern RESULT = null; + int ntleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ntright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Object nt = (Object)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + + RESULT = parser.createStepPattern(Axis.CHILD, nt, null); + + CUP$XPathParser$result = new java_cup.runtime.Symbol(32/*StepPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 17: // RelativePathPattern ::= StepPattern DSLASH RelativePathPattern + { + RelativePathPattern RESULT = null; + int spleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int spright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + StepPattern sp = (StepPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int rppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int rppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + RelativePathPattern rpp = (RelativePathPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new AncestorPattern(sp, rpp); + CUP$XPathParser$result = new java_cup.runtime.Symbol(31/*RelativePathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 16: // RelativePathPattern ::= StepPattern SLASH RelativePathPattern + { + RelativePathPattern RESULT = null; + int spleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int spright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + StepPattern sp = (StepPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int rppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int rppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + RelativePathPattern rpp = (RelativePathPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new ParentPattern(sp, rpp); + CUP$XPathParser$result = new java_cup.runtime.Symbol(31/*RelativePathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 15: // RelativePathPattern ::= StepPattern + { + RelativePathPattern RESULT = null; + int spleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int spright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + StepPattern sp = (StepPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = sp; + CUP$XPathParser$result = new java_cup.runtime.Symbol(31/*RelativePathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 14: // ProcessingInstructionPattern ::= PIPARAM LPAREN Literal RPAREN + { + StepPattern RESULT = null; + int lleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int lright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + String l = (String)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + RESULT = new ProcessingInstructionPattern(l); + CUP$XPathParser$result = new java_cup.runtime.Symbol(30/*ProcessingInstructionPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 13: // IdKeyPattern ::= KEY LPAREN Literal COMMA Literal RPAREN + { + IdKeyPattern RESULT = null; + int l1left = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).left; + int l1right = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).right; + String l1 = (String)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).value; + int l2left = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int l2right = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + String l2 = (String)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + RESULT = new KeyPattern(l1, l2); + CUP$XPathParser$result = new java_cup.runtime.Symbol(27/*IdKeyPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-5)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 12: // IdKeyPattern ::= ID LPAREN Literal RPAREN + { + IdKeyPattern RESULT = null; + int lleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int lright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + String l = (String)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + RESULT = new IdPattern(l); + parser.setHasIdCall(true); + + CUP$XPathParser$result = new java_cup.runtime.Symbol(27/*IdKeyPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-3)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 11: // LocationPathPattern ::= RelativePathPattern + { + Pattern RESULT = null; + int rppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int rppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + RelativePathPattern rpp = (RelativePathPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = rpp; + CUP$XPathParser$result = new java_cup.runtime.Symbol(29/*LocationPathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 10: // LocationPathPattern ::= DSLASH RelativePathPattern + { + Pattern RESULT = null; + int rppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int rppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + RelativePathPattern rpp = (RelativePathPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new AncestorPattern(rpp); + CUP$XPathParser$result = new java_cup.runtime.Symbol(29/*LocationPathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 9: // LocationPathPattern ::= IdKeyPattern DSLASH RelativePathPattern + { + Pattern RESULT = null; + int ikpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int ikpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + IdKeyPattern ikp = (IdKeyPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int rppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int rppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + RelativePathPattern rpp = (RelativePathPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new AncestorPattern(ikp, rpp); + CUP$XPathParser$result = new java_cup.runtime.Symbol(29/*LocationPathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 8: // LocationPathPattern ::= IdKeyPattern SLASH RelativePathPattern + { + Pattern RESULT = null; + int ikpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int ikpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + IdKeyPattern ikp = (IdKeyPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int rppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int rppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + RelativePathPattern rpp = (RelativePathPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new ParentPattern(ikp, rpp); + CUP$XPathParser$result = new java_cup.runtime.Symbol(29/*LocationPathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 7: // LocationPathPattern ::= IdKeyPattern + { + Pattern RESULT = null; + int ikpleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int ikpright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + IdKeyPattern ikp = (IdKeyPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = ikp; + CUP$XPathParser$result = new java_cup.runtime.Symbol(29/*LocationPathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 6: // LocationPathPattern ::= SLASH RelativePathPattern + { + Pattern RESULT = null; + int rppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int rppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + RelativePathPattern rpp = (RelativePathPattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new AbsolutePathPattern(rpp); + CUP$XPathParser$result = new java_cup.runtime.Symbol(29/*LocationPathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 5: // LocationPathPattern ::= SLASH + { + Pattern RESULT = null; + RESULT = new AbsolutePathPattern(null); + CUP$XPathParser$result = new java_cup.runtime.Symbol(29/*LocationPathPattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 4: // Pattern ::= LocationPathPattern VBAR Pattern + { + Pattern RESULT = null; + int lppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left; + int lppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).right; + Pattern lpp = (Pattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).value; + int pleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int pright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Pattern p = (Pattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = new AlternativePattern(lpp, p); + CUP$XPathParser$result = new java_cup.runtime.Symbol(28/*Pattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 3: // Pattern ::= LocationPathPattern + { + Pattern RESULT = null; + int lppleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int lppright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Pattern lpp = (Pattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = lpp; + CUP$XPathParser$result = new java_cup.runtime.Symbol(28/*Pattern*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 2: // TopLevel ::= EXPRESSION Expr + { + SyntaxTreeNode RESULT = null; + int exprleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int exprright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Expression expr = (Expression)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = expr; + CUP$XPathParser$result = new java_cup.runtime.Symbol(1/*TopLevel*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 1: // TopLevel ::= PATTERN Pattern + { + SyntaxTreeNode RESULT = null; + int patternleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).left; + int patternright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right; + Pattern pattern = (Pattern)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).value; + RESULT = pattern; + CUP$XPathParser$result = new java_cup.runtime.Symbol(1/*TopLevel*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + return CUP$XPathParser$result; + + /*. . . . . . . . . . . . . . . . . . . .*/ + case 0: // $START ::= TopLevel EOF + { + Object RESULT = null; + int start_valleft = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left; + int start_valright = ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).right; + SyntaxTreeNode start_val = (SyntaxTreeNode)((java_cup.runtime.Symbol) CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).value; + RESULT = start_val; + CUP$XPathParser$result = new java_cup.runtime.Symbol(0/*$START*/, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-1)).left, ((java_cup.runtime.Symbol)CUP$XPathParser$stack.elementAt(CUP$XPathParser$top-0)).right, RESULT); + } + /* ACCEPT */ + CUP$XPathParser$parser.done_parsing(); + return CUP$XPathParser$result; + + /* . . . . . .*/ + default: + throw new Exception( + "Invalid action number found in internal parse table"); + + } + } +} + diff --git a/src/org/apache/xalan/xsltc/compiler/XSLTC.java b/src/org/apache/xalan/xsltc/compiler/XSLTC.java index b859af43c..c548538f0 100644 --- a/src/org/apache/xalan/xsltc/compiler/XSLTC.java +++ b/src/org/apache/xalan/xsltc/compiler/XSLTC.java @@ -377,7 +377,7 @@ else if (systemId != null && systemId.length() != 0) { _parser.reportError(Constants.FATAL, new ErrorMsg(e)); } catch (Error e) { - if (_debug) e.printStackTrace(); + // if (_debug) e.printStackTrace(); _parser.reportError(Constants.FATAL, new ErrorMsg(e)); } finally { @@ -825,49 +825,70 @@ public String getHelperClassName() { public void dumpClass(JavaClass clazz) { - if (_outputType == FILE_OUTPUT || - _outputType == BYTEARRAY_AND_FILE_OUTPUT) - { - File outFile = getOutputFile(clazz.getClassName()); - String parentDir = outFile.getParent(); - if (parentDir != null) { - File parentFile = new File(parentDir); - if (!parentFile.exists()) - parentFile.mkdirs(); - } - } + if (_outputType == FILE_OUTPUT || + _outputType == BYTEARRAY_AND_FILE_OUTPUT) + { + File outFile = getOutputFile(clazz.getClassName()); + String parentDir = outFile.getParent(); + if (parentDir != null) { + File parentFile = new File(parentDir); + if (!parentFile.exists()) + parentFile.mkdirs(); + } + } + + try { + switch (_outputType) { + case FILE_OUTPUT: + clazz.dump( + new BufferedOutputStream( + new FileOutputStream( + getOutputFile(clazz.getClassName())))); + break; + case JAR_OUTPUT: + _bcelClasses.addElement(clazz); + break; + case BYTEARRAY_OUTPUT: + case BYTEARRAY_AND_FILE_OUTPUT: + case BYTEARRAY_AND_JAR_OUTPUT: + case CLASSLOADER_OUTPUT: + ByteArrayOutputStream out = new ByteArrayOutputStream(2048); + clazz.dump(out); + _classes.addElement(out.toByteArray()); + + if (_outputType == BYTEARRAY_AND_FILE_OUTPUT) { + // check that the, class to be serialized to filesystem, is of the valid format. + // check with the native JVM class loader + byte[] classByteArray = clazz.getBytes(); + ByteArrayClassLoader classLoader = new ByteArrayClassLoader(classByteArray); + Class clz = classLoader.findClass(clazz.getClassName()); + + clazz.dump(new BufferedOutputStream( + new FileOutputStream(getOutputFile(clazz.getClassName())))); + } + else if (_outputType == BYTEARRAY_AND_JAR_OUTPUT) + _bcelClasses.addElement(clazz); + + break; + } + } + catch (Exception e) { + e.printStackTrace(); + } + } + + public class ByteArrayClassLoader extends ClassLoader { + + byte[] ba; + + public ByteArrayClassLoader(byte[] bArray) { + ba = bArray; + } + + public Class findClass(String name) { + return defineClass(name, ba, 0, ba.length); + } - try { - switch (_outputType) { - case FILE_OUTPUT: - clazz.dump( - new BufferedOutputStream( - new FileOutputStream( - getOutputFile(clazz.getClassName())))); - break; - case JAR_OUTPUT: - _bcelClasses.addElement(clazz); - break; - case BYTEARRAY_OUTPUT: - case BYTEARRAY_AND_FILE_OUTPUT: - case BYTEARRAY_AND_JAR_OUTPUT: - case CLASSLOADER_OUTPUT: - ByteArrayOutputStream out = new ByteArrayOutputStream(2048); - clazz.dump(out); - _classes.addElement(out.toByteArray()); - - if (_outputType == BYTEARRAY_AND_FILE_OUTPUT) - clazz.dump(new BufferedOutputStream( - new FileOutputStream(getOutputFile(clazz.getClassName())))); - else if (_outputType == BYTEARRAY_AND_JAR_OUTPUT) - _bcelClasses.addElement(clazz); - - break; - } - } - catch (Exception e) { - e.printStackTrace(); - } } /** diff --git a/src/org/apache/xalan/xsltc/compiler/sym.java b/src/org/apache/xalan/xsltc/compiler/sym.java new file mode 100644 index 000000000..6c68f58d7 --- /dev/null +++ b/src/org/apache/xalan/xsltc/compiler/sym.java @@ -0,0 +1,68 @@ + +//---------------------------------------------------- +// The following code was generated by CUP v0.10k +// Fri Sep 16 18:02:07 IST 2022 +//---------------------------------------------------- + +package org.apache.xalan.xsltc.compiler; + +/** CUP generated class containing symbol constants. */ +public class sym { + /* terminals */ + public static final int MULT = 26; + public static final int Literal = 27; + public static final int GE = 21; + public static final int NAMESPACE = 49; + public static final int SLASH = 2; + public static final int PI = 36; + public static final int COMMENT = 35; + public static final int PIPARAM = 37; + public static final int FOLLOWINGSIBLING = 48; + public static final int ATSIGN = 12; + public static final int DSLASH = 15; + public static final int LPAREN = 7; + public static final int EXPRESSION = 54; + public static final int INT = 52; + public static final int CHILD = 41; + public static final int MINUS = 23; + public static final int STAR = 9; + public static final int DESCENDANTORSELF = 46; + public static final int RPAREN = 8; + public static final int AND = 34; + public static final int LT = 18; + public static final int OR = 33; + public static final int COMMA = 10; + public static final int DDOT = 13; + public static final int DIV = 24; + public static final int PLUS = 22; + public static final int DOT = 3; + public static final int ID = 29; + public static final int LE = 20; + public static final int QNAME = 28; + public static final int DESCENDANT = 45; + public static final int PRECEDINGSIBLING = 38; + public static final int EOF = 0; + public static final int error = 1; + public static final int SELF = 39; + public static final int VBAR = 6; + public static final int MOD = 25; + public static final int ANCESTORORSELF = 44; + public static final int PRECEDING = 50; + public static final int EQ = 16; + public static final int PATTERN = 53; + public static final int LBRACK = 4; + public static final int REAL = 51; + public static final int ANCESTOR = 43; + public static final int RBRACK = 5; + public static final int DCOLON = 14; + public static final int DOLLAR = 11; + public static final int NE = 17; + public static final int PARENT = 40; + public static final int FOLLOWING = 47; + public static final int KEY = 30; + public static final int TEXT = 31; + public static final int ATTRIBUTE = 42; + public static final int GT = 19; + public static final int NODE = 32; +} + diff --git a/src/org/apache/xalan/xsltc/compiler/util/ErrorMsg.java b/src/org/apache/xalan/xsltc/compiler/util/ErrorMsg.java index 41106fa2e..acd55a56f 100644 --- a/src/org/apache/xalan/xsltc/compiler/util/ErrorMsg.java +++ b/src/org/apache/xalan/xsltc/compiler/util/ErrorMsg.java @@ -184,7 +184,12 @@ public ErrorMsg(String code) { public ErrorMsg(Throwable e) { _code = null; - _message = e.getMessage(); + if (e instanceof ClassFormatError) { + _message = "Aborting serializing the generated bytecode, because verification of generated bytecode failed. " + e.getMessage(); + } + else { + _message = e.getMessage(); + } _line = 0; } diff --git a/src/org/apache/xalan/xsltc/runtime/BasisLibrary.java b/src/org/apache/xalan/xsltc/runtime/BasisLibrary.java index 7c31f6ef0..d049df2c0 100644 --- a/src/org/apache/xalan/xsltc/runtime/BasisLibrary.java +++ b/src/org/apache/xalan/xsltc/runtime/BasisLibrary.java @@ -64,7 +64,7 @@ public final class BasisLibrary { * Standard function count(node-set) */ public static int countF(DTMAxisIterator iterator) { - return(iterator.getLast()); + return iterator.getLast(); } /** diff --git a/src/org/apache/xalan/xsltc/trax/TemplatesHandlerImpl.java b/src/org/apache/xalan/xsltc/trax/TemplatesHandlerImpl.java index 8088c7d8f..cda21d3bd 100644 --- a/src/org/apache/xalan/xsltc/trax/TemplatesHandlerImpl.java +++ b/src/org/apache/xalan/xsltc/trax/TemplatesHandlerImpl.java @@ -341,4 +341,3 @@ public void setDocumentLocator(Locator locator) { } } - diff --git a/src/org/apache/xalan/xsltc/trax/TemplatesImpl.java b/src/org/apache/xalan/xsltc/trax/TemplatesImpl.java index f108af2f8..76df1ce70 100644 --- a/src/org/apache/xalan/xsltc/trax/TemplatesImpl.java +++ b/src/org/apache/xalan/xsltc/trax/TemplatesImpl.java @@ -407,4 +407,4 @@ public DOM getStylesheetDOM() { public void setStylesheetDOM(DOM sdom) { _sdom.set(sdom); } -} +} \ No newline at end of file diff --git a/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java b/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java index cef35440c..106167bdd 100644 --- a/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java +++ b/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java @@ -1410,4 +1410,4 @@ private String getStylesheetFileName(Source source) protected Class getDTMManagerClass() { return m_DTMManagerClass; } -} +} \ No newline at end of file diff --git a/src/org/apache/xml/dtm/ref/DTMStringPool.java b/src/org/apache/xml/dtm/ref/DTMStringPool.java index 2538a64ad..757446200 100644 --- a/src/org/apache/xml/dtm/ref/DTMStringPool.java +++ b/src/org/apache/xml/dtm/ref/DTMStringPool.java @@ -21,10 +21,10 @@ package org.apache.xml.dtm.ref; +import java.util.HashMap; +import java.util.Map; import java.util.Vector; -import org.apache.xml.utils.IntVector; - /**

DTMStringPool is an "interning" mechanism for strings. It will * create a stable 1:1 mapping between a set of string values and a set of * integer index values, so the integers can be used to reliably and @@ -57,9 +57,7 @@ public class DTMStringPool { Vector m_intToString; - static final int HASHPRIME=101; - int[] m_hashStart=new int[HASHPRIME]; - IntVector m_hashChain; + Map m_stringToInt; public static final int NULL=-1; /** @@ -70,7 +68,7 @@ public class DTMStringPool public DTMStringPool(int chainSize) { m_intToString=new Vector(); - m_hashChain=new IntVector(chainSize); + m_stringToInt=new HashMap(); removeAllElements(); // -sb Add this to force empty strings to be index 0. @@ -85,9 +83,7 @@ public DTMStringPool() public void removeAllElements() { m_intToString.removeAllElements(); - for(int i=0;iSee also the Document Object Model (DOM) Level 3 XPath Specification.

diff --git a/src/org/apache/xpath/functions/FuncSystemProperty.java b/src/org/apache/xpath/functions/FuncSystemProperty.java index 4d94a760f..1787f3bbc 100644 --- a/src/org/apache/xpath/functions/FuncSystemProperty.java +++ b/src/org/apache/xpath/functions/FuncSystemProperty.java @@ -57,7 +57,7 @@ public XObject execute(XPathContext xctxt) throws javax.xml.transform.Transforme String fullName = m_arg0.execute(xctxt).str(); int indexOfNSSep = fullName.indexOf(':'); - String result; + String result = null; String propName = ""; // List of properties where the name of the @@ -97,14 +97,20 @@ public XObject execute(XPathContext xctxt) throws javax.xml.transform.Transforme try { - result = System.getProperty(propName); - - if (null == result) - { - - // result = System.getenv(propName); - return XString.EMPTYSTRING; - } + //if secure procession is enabled only handle required properties do not not map any valid system property + if(!xctxt.isSecureProcessing()) + { + result = System.getProperty(propName); + } + else + { + warn(xctxt, XPATHErrorResources.WG_SECURITY_EXCEPTION, + new Object[]{ fullName }); //"SecurityException when trying to access XSL system property: "+fullName); + } + if (null == result) + { + return XString.EMPTYSTRING; + } } catch (SecurityException se) { @@ -119,14 +125,20 @@ public XObject execute(XPathContext xctxt) throws javax.xml.transform.Transforme { try { - result = System.getProperty(fullName); - - if (null == result) - { - - // result = System.getenv(fullName); - return XString.EMPTYSTRING; - } + //if secure procession is enabled only handle required properties do not not map any valid system property + if(!xctxt.isSecureProcessing()) + { + result = System.getProperty(fullName); + } + else + { + warn(xctxt, XPATHErrorResources.WG_SECURITY_EXCEPTION, + new Object[]{ fullName }); //"SecurityException when trying to access XSL system property: "+fullName); + } + if (null == result) + { + return XString.EMPTYSTRING; + } } catch (SecurityException se) { diff --git a/xdocs/sources/design/design2_0_0.xml b/xdocs/sources/design/design2_0_0.xml index e043ad057..e91b69f24 100644 --- a/xdocs/sources/design/design2_0_0.xml +++ b/xdocs/sources/design/design2_0_0.xml @@ -74,7 +74,7 @@ expect that the code will be faster once this work is complete.

How well we've achieved the goals will be measured by feedback from the - Xalan-dev list, and by software metrics tools.

+ Xalan-dev list, and by software metrics tools.

Please note that the diagrams in this design document are meant to be useful abstractions, and may not always be exact.

diff --git a/xdocs/sources/xalan-apache-org-site.xml b/xdocs/sources/xalan-apache-org-site.xml index ee59067c0..3dc90e16b 100644 --- a/xdocs/sources/xalan-apache-org-site.xml +++ b/xdocs/sources/xalan-apache-org-site.xml @@ -19,7 +19,7 @@ --> - + diff --git a/xdocs/sources/xalan-jlocal.xml b/xdocs/sources/xalan-jlocal.xml index 0b2843205..1c536a97d 100644 --- a/xdocs/sources/xalan-jlocal.xml +++ b/xdocs/sources/xalan-jlocal.xml @@ -19,7 +19,7 @@ --> - + diff --git a/xdocs/sources/xalan-jsite.xml b/xdocs/sources/xalan-jsite.xml index cab7983cb..469811eee 100644 --- a/xdocs/sources/xalan-jsite.xml +++ b/xdocs/sources/xalan-jsite.xml @@ -19,11 +19,11 @@ --> - + - + diff --git a/xdocs/sources/xalan/builds.xml b/xdocs/sources/xalan/builds.xml index 915c68364..0203d3122 100644 --- a/xdocs/sources/xalan/builds.xml +++ b/xdocs/sources/xalan/builds.xml @@ -60,16 +60,16 @@ This section is meant to become a set of guidelines for all &xslt4j; -committers and developers who wish to submit patches. It's still in progress; -suggestions to xalan-dev@xml.apache.org appreciated. +committers and developers who wish to submit patches. It's still in progress; +suggestions to dev@xalan.apache.org appreciated.

The project's technical mailing list for all committers and developers interested in the API and inner workings is - xalan-dev@xml.apache.org; + dev@xalan.apache.org; it's a good idea to subscribe - if you plan to work on &xslt4j;. Logs of all Subversion - commits are automatically sent to xalan-cvs@xml.apache.org, although - discussions should happen on xalan-dev. You can read more about mailing lists.

+ if you plan to work on &xslt4j;. Logs of all git + commits are automatically sent to commits@xalan.apache.org, although + discussions should happen on dev@xalan.apache.org. You can read more about mailing lists.

&xslt4j; is a fairly mature project; one where most committers and many users expect that the daily build will be mostly functional. Very risky changes or major architecture updates should be discussed ahead of time or committed onto @@ -82,20 +82,16 @@ suggestions to xalan-dev@xml.apache.org appreciated. tests that ensure basic functionality. You can also read a full set of documentation about the tests.

- (Smoketest doc is TBD!) -cvs co xml-xalan/java xml-xalan/test -cd xml-xalan/java -build smoketest -# Ant build will fail if smoketest fails. - -

+ XalanJ team is maintaining a build and tests process documentation, currently at the location : + XalanJ build and test process. +

Official builds of &xslt4j; require a few more steps than simply doing -'build fulldist'. This is a quick checklist of the steps; if you are -not comfortable following this list, then please seek help on xalan-dev.

+'build fulldist'. This is a quick checklist of the steps; if you are +not comfortable following this list, then please seek help on dev@xalan.apache.org.

Official builds come in several flavors:

@@ -110,7 +106,7 @@ adding new functionality; these go from 2.3 to 2.3.1. They should be done on a branch if the mainline development has already moved forward; the point is to make critical bugfixes for existing customers who want to stay on the stable release.

  • Developer releases are very ad hoc; they represent a chunk of progress along the -HEAD of our CVS tree towards a new major or minor release. The developer release +HEAD of our Subversion tree towards a new major or minor release. The developer release versions would be going from 2.3 to a new 2.4.D1 - the developer release is somewhat like a 'beta' towards a new 2.4 minor version release. Quality standards for developer releases are much less stringent than other releases.

  • @@ -210,15 +206,15 @@ xml-xalan/java/src/org/apache/xalan/xslt/EnvironmentCheck.java
    • Do a clean checkout and tag the sources.
    -

    Of course, you checked in all your earlier work to the CVS repository, right?

    +

    Of course, you checked in all your earlier work to the Subversion repository, right?

    The safest way to perform a build for distribution is to check out a fresh -new copy of the repository from CVS. This avoids any potential problems with +new copy of the repository from Subversion. This avoids any potential problems with uncommitted changes or extra files on your local machine.

    Check out a new copy of both xml-xalan/java and xml-xalan/test repositories to a blank directory on your local machine. You then need to tag the files in the repository with a marker noting that these versions are the actual ones being used in the build (you could actually do this after running the build below). -Use the CVS tag command to add the tag to both repositories (/java and /test). +Use the Subversion tag command to add the tag to both repositories (/java and /test). The tag name should be something like 'xalan-j_2_4'; look at the log of any file to see the exact format of previous builds.

    @@ -317,7 +313,7 @@ either scp them or login to the apache machines and use scp or pftp from there outbound to some server that you've copied them to.

    (Subject to change as www.apache.org/dist gets ready for mirroring) You'll need to log on to xml.apache.org (which is a separate machine -from cvs.apache.org) and upload the files to /www/xml.apache.org/xalan-j/dist

    +from svn.apache.org) and upload the files to /www/xml.apache.org/xalan-j/dist

    You should also update the distribution directory's html files to note the new build numbers. Carefully edit the .htaccess file to update the 'Latest Stable Build' and 'Latest Developers Build' lines @@ -396,7 +392,7 @@ a couple of the highlights of the new build, and a link to the distribution area.

    Make the subject something like: [ANN] Xalan-J 2.x Point/Developers/Whatever Release posted to xml.apache.org -and send your email to: general@xml.apache.org, xalan-dev@xml.apache.org, xalan-j-users@xml.apache.org. Note +and send your email to: general@xml.apache.org, dev@xalan.apache.org, xalan-j-users@apache.org. Note that for developers releases, you can omit the general@xml.apache.org address if you don't think it will be of interest to the larger audience.

    diff --git a/xdocs/sources/xalan/downloads.xml b/xdocs/sources/xalan/downloads.xml index 6d86af513..8d4d9ac8d 100644 --- a/xdocs/sources/xalan/downloads.xml +++ b/xdocs/sources/xalan/downloads.xml @@ -86,7 +86,7 @@ if you downloaded a source distribution, you have the option to use Ant to build &xslt4j;, including xalan.jar, xsltc.jar, serializer.jar - and other things, see Using ant for more + and other things, see Using Ant for more details.

    diff --git a/xdocs/sources/xalan/extensions.xml b/xdocs/sources/xalan/extensions.xml index 18c57df35..3b3ceea15 100644 --- a/xdocs/sources/xalan/extensions.xml +++ b/xdocs/sources/xalan/extensions.xml @@ -75,15 +75,15 @@ more information.

    by the BSF implementation you are using. If you are using Jakarta BSF, please refer to Jakarta BSF Supported Languages for other scripting languages with BSF support.

    -

    BSF requires bsf.jar on the classpath. This JAR file is no longer shipped with &xslt4j;. It can be - downloaded from the Apache Jakarta BSF project - web site. It is required only if you have extensions written in languages other than Java. +

    BSF requires the file bsf.jar on the classpath. The bsf.jar file is provided, by the XalanJ src + distribution. If required, that can also be downloaded from the + Apache Commons BSF project web site. The BSF jar file is required only if you have extensions written in languages other than Java. The additional JAR files or DLLs required to support extensions written in other languages are - listed at the Jakarta BSF web site as - Related Projects . These files are available from the sources indicated and are not shipped + listed at the Apache Commons BSF project web site at + Related Projects. These files are available from the sources indicated and are not shipped with &xslt4j;.

    -

    By default Xalan-Java assumes BSF support is provided by the Jakarta BSF implementation. There are three +

    By default Xalan-Java assumes BSF support is provided by the Apache Commons BSF implementation. There are three ways of specifying the class that provides the BSF Manager service:.

    • Set the system property org.apache.xalan.extensions.bsf.BSFManager;
    • In the property file "/lib/xalan.properties" in the JRE directory, add the key @@ -169,9 +169,12 @@ more information.

      -

      To run the preceding example, bsf.jar and js.jar must be on the classpath. Remember that bsf.jar - must be on the classpath to run any extension written in a language other than Java. For extensions - implemented in a scripting language, see the additional requirements in +

      To run the preceding example, bsf.jar and Mozilla Rhino jar must be on the classpath. + The Mozilla Rhino jar, is provided by the XalanJ src distribution. Mozilla Rhino is an + implementation of JavaScript in Java (please see, + Mozilla Rhino project page for more information, about Mozilla Rhino project). Remember that + bsf.jar must be on the classpath to run any extension written in a language other than Java. + For extensions implemented in a scripting language, see the additional requirements in Supported languages.

      diff --git a/xdocs/sources/xalan/getstarted.xml b/xdocs/sources/xalan/getstarted.xml index a91283fba..497dafda9 100644 --- a/xdocs/sources/xalan/getstarted.xml +++ b/xdocs/sources/xalan/getstarted.xml @@ -65,7 +65,7 @@ the &xslt4j; Interpretive processor. See Getting Start

      For example, go to the SimpleTransform subdirectory and issue the following command:

      java SimpleTransform

      -

      The sample writes the transformation result to a file (birds.out). To see how the example works, +

      The sample writes the transformation result to a file (birds.out). To see how the example works, examine the source files: birds.xml, birds.xsl, and SimpleTransform.java.

      The extensions examples require additional JAR files on the classpath, and the procedure for running the sample applet and sample servlet is different. For more information about all the diff --git a/xdocs/sources/xalan/readme.xml b/xdocs/sources/xalan/readme.xml index 52405c486..b87f9e828 100644 --- a/xdocs/sources/xalan/readme.xml +++ b/xdocs/sources/xalan/readme.xml @@ -21,7 +21,9 @@

        -
      • Release notes for version 2.7.1
      • +
      • Release notes for version 2.7.3
      • +
      • Release notes for version 2.7.2
      • +
      • Release notes for version 2.7.1
      • Release notes for version 2.7.0
      • Release notes for version 2.6.0
      • Release notes for version 2.5.2
      • @@ -33,7 +35,113 @@
      • Other points of interest
      - + + +

      + &xslt4j; 2.7.3 was released in April 2023. +

      + + This XalanJ release, requires users to use Java minimum version 8 for working with XalanJ. + + + This issue was fixed within XalanJ's XSLTC processor. This XalanJ issue, when present causes following problems: + Malicious XSLT stylesheets may be written, which could result in XalanJ invalid translet Java byte code to be + produced by XalanJ XSLTC processor. The XalanJ translet is a Java byte code compiled representation, of an XSLT + transformation. + + + This XalanJ release, contains upgraded version of Apache Commons BCEL library [Gary Gregory]. + + + The XalanJ users, can now make XalanJ builds and perform XalanJ tests from the XalanJ source + distribution. The XalanJ build scripts for the implementation and the tests, both for the Windows and + Linux platforms, were enhanced to support building XalanJ with JDK 1.8. [Gary Gregory, Joseph Kessselman, + Mukul Gandhi] + + + This XalanJ release, contains upgraded versions of xercesImpl.jar + and xml-apis.jar (Xerces-J 2.12.2). + + +

      XALANJ Jira bug fixes: + 2638, + 2623, + 2607, + 2601, + 2600, + 2584, + 2346 +

      +
      +
      + + +

      + &xslt4j; 2.7.2 was released in April 2014. +

      + + +

      + When using FEATURE_SECURE_PROCESSING ("http://javax.xml.XMLConstants/feature/secure-processing") on a TransformerFactory, the output properties: +

      +
        +
      • {http://xml.apache.org/xalan}content-handler
      • +
      • {http://xml.apache.org/xalan}entities
      • +
      • {http://xml.apache.org/xslt}content-handler
      • +
      • {http://xml.apache.org/xslt}entities
      • +
      +

      + should be ignored (see http://xml.apache.org/xalan-j/usagepatterns.html#outputprops) +

      +

      + These properties can be used to load an arbitrary class or access an arbitrary URL/resource so are problematic when secure processing is desired. +

      +

      + + <xsl:output xalan:content-handler="org.example.BadClass" ... + +

      +

      + + <xsl:output xalan:entities="http://example.org/reallyLargeFile.bin" ... + +

      +

      + These features could be used to load a class that had undesirable side-effects or to load a large file and exhaust memory, etc. +

      +

      + See XALANJ-2435. +

      +
      + + + The distributions contain upgraded versions of xercesImpl.jar + (Xerces-J 2.11.0) and xml-apis.jar (XML Commons External 1.4.01). + + + +

      XALANJ Jira bug fixes: + 2435, + 2580, + 2546, + 2581, + 2582, + 2583, + 2473, + 2495, + 2493, + 2424, + 2446, + 2447 +

      +

      You can also view the list in + Jira +

      +
      + +
      + +

      &xslt4j; 2.7.1 was released in August 2007.

      diff --git a/xdocs/sources/xalan/whatsnew.xml b/xdocs/sources/xalan/whatsnew.xml index 505218b25..ffaa11f8a 100644 --- a/xdocs/sources/xalan/whatsnew.xml +++ b/xdocs/sources/xalan/whatsnew.xml @@ -20,37 +20,23 @@ -

       

      +

      + Here's what's new in &xslt4j-current;. +

      - -

      - The serializer now has support for DOM Level 3 serialization - (LSSerializer) - for an XML parser. These changes are seen in the new class - - org.apache.xml.serializer.DOM3Serializer - and the new package - org.apache.xml.serializer.dom3 - as well as a new method, - asDOM3Serializer() on the older - - org.apache.xml.serializer.Serializer interface. -

      -

      - More details are in the javadoc of those classes and interfaces -

      + - - The distributions contain upgraded versions of xml-apis.jar - (Xerces-J 2.9.0) and xml-apis.jar (XML Commons External 1.3.04). + + The distributions contain upgraded versions of xercesImpl.jar and + xml-apis.jar (Xerces-J 2.12.2). - Of course the 2.7.1 release contains performance enhancements - and other bug fixes since 2.7.0 and a list of these can be found in - the release notes. + &xslt4j-current; contains performance enhancements and other bug fixes since 2.7.2. You can find the list + in the release notes.
      +
      diff --git a/xdocs/sources/xalandesign.xml b/xdocs/sources/xalandesign.xml index 1a88b7703..eef7f51b1 100644 --- a/xdocs/sources/xalandesign.xml +++ b/xdocs/sources/xalandesign.xml @@ -19,7 +19,7 @@ --> - + - +