Bug 444952: update oracleddlparser project
Review by: David McCann

Signed-off-by: Lukas Jungmann <lukas.jungmann@oracle.com>
diff --git a/oracleddl.parent/pom.xml b/oracleddl.parent/pom.xml
index a43c9c6..57a9084 100644
--- a/oracleddl.parent/pom.xml
+++ b/oracleddl.parent/pom.xml
@@ -18,14 +18,13 @@
     <properties>
         <!-- TOOL Properties -->
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <tycho.version>0.15.0</tycho.version>
-        <junit4-version>4.8.1</junit4-version>
+        <tycho.version>0.21.0</tycho.version>
+        <junit4-version>4.8.2</junit4-version>
         <!-- PROJECT Properties -->
         <release.version>1.0.0</release.version>
         <!-- maven.build.timestamp.format>yyyyMMddHHmm</maven.build.timestamp.format> Seems it must be in settings.xml -->
         <build.qualifier>v${maven.build.timestamp}</build.qualifier>
         <forceContextQualifier>${build.qualifier}</forceContextQualifier>
-        <src>./src/main/java,./src/test/java</src>
     </properties>
 
     <organization>
@@ -38,6 +37,12 @@
         <plugins>
             <plugin>
                 <groupId>org.eclipse.tycho</groupId>
+                <artifactId>tycho-maven-plugin</artifactId>
+                <version>${tycho.version}</version>
+                <extensions>true</extensions>
+            </plugin>
+            <plugin>
+                <groupId>org.eclipse.tycho</groupId>
                 <artifactId>tycho-compiler-plugin</artifactId>
                 <version>${tycho.version}</version>
                 <configuration>
@@ -53,15 +58,6 @@
             </plugin>
             <plugin>
                 <groupId>org.eclipse.tycho</groupId>
-                <artifactId>tycho-maven-plugin</artifactId>
-                <version>${tycho.version}</version>
-                <extensions>true</extensions>
-                <configuration>
-                    <resolver>p2</resolver>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.eclipse.tycho</groupId>
                 <artifactId>target-platform-configuration</artifactId>
                 <version>${tycho.version}</version>
                 <configuration>
@@ -119,23 +115,21 @@
                     </execution>
                 </executions>
             </plugin>
+            <plugin>
+                <groupId>org.eclipse.tycho</groupId>
+                <artifactId>tycho-p2-plugin</artifactId>
+                <version>${tycho.version}</version>
+                <executions>
+                    <execution>
+                        <id>attach-p2-metadata</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>p2-metadata</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
         <finalName>${project.artifactId}_${release.version}.${build.qualifier}</finalName>
     </build>
-
-    <pluginRepositories>
-        <pluginRepository>
-            <id>tycho-0.15.0-staged</id>
-            <url>https://oss.sonatype.org/content/repositories/orgeclipsetycho-255/</url>
-        </pluginRepository>
-        <!-- pluginRepository>
-            <id>tycho-public</id>
-            <url>https://oss.sonatype.org/content/groups/public/</url>
-        </pluginRepository -->
-        <pluginRepository>
-            <id>maven-eclipse</id>
-            <url>http://repo1.maven.org</url>
-        </pluginRepository>
-    </pluginRepositories>
-
 </project>
diff --git "a/oracleddlparser/\050maven\051Oracle DDL Parser tests.launch" "b/oracleddlparser/\050maven\051Oracle DDL Parser tests.launch"
index 5ad2e19..06ee922 100644
--- "a/oracleddlparser/\050maven\051Oracle DDL Parser tests.launch"
+++ "b/oracleddlparser/\050maven\051Oracle DDL Parser tests.launch"
@@ -7,7 +7,6 @@
 <stringAttribute key="M2_PROFILES" value=""/>

 <listAttribute key="M2_PROPERTIES">

 <listEntry value="db.oracle.driver=${db.oracle.driver}"/>

-<listEntry value="db.oracle.platform=${db.oracle.platform}"/>

 <listEntry value="db.oracle.pwd=${db.oracle.pwd}"/>

 <listEntry value="db.oracle.url=${db.oracle.url}"/>

 <listEntry value="db.oracle.user=${db.oracle.user}"/>

diff --git a/oracleddlparser/.classpath b/oracleddlparser/.classpath
index ddd8f96..5664297 100644
--- a/oracleddlparser/.classpath
+++ b/oracleddlparser/.classpath
@@ -1,9 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<classpath>

-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

-	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>

-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

-	<classpathentry kind="src" path="src/main/java"/>

-	<classpathentry kind="src" path="src/test/java"/>

-	<classpathentry kind="output" path="target/classes"/>

-</classpath>

+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry kind="src" path="src/main/jjtree"/>
+	<classpathentry kind="src" path="target/generated-sources/javacc"/>
+	<classpathentry kind="src" path="target/generated-sources/jjtree"/>
+	<classpathentry kind="src" path="src/main/resources"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/oracleddlparser/.settings/org.eclipse.core.resources.prefs b/oracleddlparser/.settings/org.eclipse.core.resources.prefs
index c26d42d..30b8b67 100644
--- a/oracleddlparser/.settings/org.eclipse.core.resources.prefs
+++ b/oracleddlparser/.settings/org.eclipse.core.resources.prefs
@@ -1,3 +1,4 @@
-#Mon Jan 09 20:25:20 EST 2012

 eclipse.preferences.version=1

+encoding//src/main/resources=UTF-8

+encoding//src/test/java=UTF-8

 encoding/<project>=UTF-8

diff --git "a/oracleddlparser/Oracle DDL Parser \050All\051 tests.launch" "b/oracleddlparser/Oracle DDL Parser \050All\051 tests.launch"
index dedb85d..b3c7e08 100644
--- "a/oracleddlparser/Oracle DDL Parser \050All\051 tests.launch"
+++ "b/oracleddlparser/Oracle DDL Parser \050All\051 tests.launch"
@@ -21,5 +21,5 @@
 <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.persistence.tools.oracleddl.test.AllTests"/>

 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.persistence.oracleddlparser"/>

 <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>

-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddb.user=${db.oracle.user} -Ddb.pwd=${db.oracle.pwd} -Ddb.url=${db.oracle.url} -Ddb.platform=${db.oracle.platform} -Ddb.driver=${db.oracle.driver} -Ddb.ddl.create=${db.ddl.create} -Ddb.ddl.drop=${db.ddl.drop} -Ddb.ddl.debug=${db.ddl.debug}"/>

+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddb.user=${db.oracle.user} -Ddb.pwd=${db.oracle.pwd} -Ddb.url=${db.oracle.url} -Ddb.driver=${db.oracle.driver} -Ddb.ddl.create=${db.ddl.create} -Ddb.ddl.drop=${db.ddl.drop} -Ddb.ddl.debug=${db.ddl.debug}"/>

 </launchConfiguration>

diff --git "a/oracleddlparser/Oracle DDL Parser \050just DatabaseTypeBuilder\051 tests.launch" "b/oracleddlparser/Oracle DDL Parser \050just DatabaseTypeBuilder\051 tests.launch"
index 8b97ac3..219511c 100644
--- "a/oracleddlparser/Oracle DDL Parser \050just DatabaseTypeBuilder\051 tests.launch"
+++ "b/oracleddlparser/Oracle DDL Parser \050just DatabaseTypeBuilder\051 tests.launch"
@@ -21,5 +21,5 @@
 <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.persistence.tools.oracleddl.test.databasetypebuilder.DatabaseTypeBuilderTestSuite"/>

 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.persistence.oracleddlparser"/>

 <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>

-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddb.user=${db.oracle.user} -Ddb.pwd=${db.oracle.pwd} -Ddb.url=${db.oracle.url} -Ddb.platform=${db.oracle.platform} -Ddb.driver=${db.oracle.driver} -Ddb.ddl.create=${db.ddl.create} -Ddb.ddl.drop=${db.ddl.drop} -Ddb.ddl.debug=${db.ddl.debug}"/>

+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddb.user=${db.oracle.user} -Ddb.pwd=${db.oracle.pwd} -Ddb.url=${db.oracle.url} -Ddb.driver=${db.oracle.driver} -Ddb.ddl.create=${db.ddl.create} -Ddb.ddl.drop=${db.ddl.drop} -Ddb.ddl.debug=${db.ddl.debug}"/>

 </launchConfiguration>

diff --git "a/oracleddlparser/Oracle DDL Parser \050just Parser\051 tests.launch" "b/oracleddlparser/Oracle DDL Parser \050just Parser\051 tests.launch"
index c2adc92..095dadb 100644
--- "a/oracleddlparser/Oracle DDL Parser \050just Parser\051 tests.launch"
+++ "b/oracleddlparser/Oracle DDL Parser \050just Parser\051 tests.launch"
@@ -14,5 +14,5 @@
 <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.persistence.tools.oracleddl.test.ddlparser.DDLParserTestSuite"/>
 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.persistence.oracleddlparser"/>
 <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddb.user=${db.oracle.user} -Ddb.pwd=${db.oracle.pwd} -Ddb.url=${db.oracle.url} -Ddb.platform=${db.oracle.platform} -Ddb.driver=${db.oracle.driver} -Ddb.ddl.create=${db.ddl.create} -Ddb.ddl.drop=${db.ddl.drop} -Ddb.ddl.debug=${db.ddl.debug}"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddb.user=${db.oracle.user} -Ddb.pwd=${db.oracle.pwd} -Ddb.url=${db.oracle.url} -Ddb.driver=${db.oracle.driver} -Ddb.ddl.create=${db.ddl.create} -Ddb.ddl.drop=${db.ddl.drop} -Ddb.ddl.debug=${db.ddl.debug}"/>
 </launchConfiguration>
\ No newline at end of file
diff --git "a/oracleddlparser/Oracle DDL Parser \050just Visitors\051 tests.launch" "b/oracleddlparser/Oracle DDL Parser \050just Visitors\051 tests.launch"
index 3a09b6c..bf59577 100644
--- "a/oracleddlparser/Oracle DDL Parser \050just Visitors\051 tests.launch"
+++ "b/oracleddlparser/Oracle DDL Parser \050just Visitors\051 tests.launch"
@@ -14,5 +14,5 @@
 <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.persistence.tools.oracleddl.test.visit.VisitorsTestSuite"/>
 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.persistence.oracleddlparser"/>
 <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddb.user=${db.oracle.user} -Ddb.pwd=${db.oracle.pwd} -Ddb.url=${db.oracle.url} -Ddb.platform=${db.oracle.platform} -Ddb.driver=${db.oracle.driver} -Ddb.ddl.create=${db.ddl.create} -Ddb.ddl.drop=${db.ddl.drop} -Ddb.ddl.debug=${db.ddl.debug}"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Ddb.user=${db.oracle.user} -Ddb.pwd=${db.oracle.pwd} -Ddb.url=${db.oracle.url} -Ddb.driver=${db.oracle.driver} -Ddb.ddl.create=${db.ddl.create} -Ddb.ddl.drop=${db.ddl.drop} -Ddb.ddl.debug=${db.ddl.debug}"/>
 </launchConfiguration>
\ No newline at end of file
diff --git a/oracleddlparser/build.properties b/oracleddlparser/build.properties
index 58edf37..494fefd 100644
--- a/oracleddlparser/build.properties
+++ b/oracleddlparser/build.properties
@@ -1,5 +1,9 @@
 bin.includes = .,\

                META-INF/

 jars.compile.order = .

-source.. = src/main/java/

+source.. = src/main/java/,\

+           src/main/jjtree/,\

+           src/main/resources/,\

+           target/generated-sources/javacc,\

+           target/generated-sources/jjtree

 output.. = ./target/classes

diff --git a/oracleddlparser/pom.xml b/oracleddlparser/pom.xml
index a1037b7..304c7dd 100644
--- a/oracleddlparser/pom.xml
+++ b/oracleddlparser/pom.xml
@@ -19,19 +19,23 @@
       <maven-surefire-plugin.version>2.11</maven-surefire-plugin.version>
       <maven-surefire-report-plugin.version>2.11</maven-surefire-report-plugin.version>
       <jxr-maven-plugin.version>2.3</jxr-maven-plugin.version>
+      <!-- tests related properties -->
+      <db.oracle.url>jdbc:oracle:thin:@localhost:1521:ORCL</db.oracle.url>
+      <db.oracle.user>scott</db.oracle.user>
+      <db.oracle.pwd>tiger</db.oracle.pwd>
+      <db.oracle.driver>oracle.jdbc.OracleDriver</db.oracle.driver>
+      <db.ddl.create>false</db.ddl.create>
+      <db.ddl.drop>false</db.ddl.drop>
+      <db.ddl.debug>false</db.ddl.debug>
+      <!-- enable debugger on port 5005 -->
+      <test.debug>false</test.debug>
     </properties>
 
     <dependencies>
       <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
-        <version>4.8.2</version>
-        <scope>test</scope>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle</groupId>
-        <artifactId>ojdbc6</artifactId>
-        <version>11.2.0</version>
+        <version>${junit4-version}</version>
         <scope>test</scope>
       </dependency>
     </dependencies>
@@ -39,6 +43,19 @@
     <build>
       <plugins>
         <plugin>
+          <groupId>org.codehaus.mojo</groupId>
+          <artifactId>javacc-maven-plugin</artifactId>
+          <version>2.6</version>
+          <executions>
+            <execution>
+              <id>jjtree-javacc</id>
+              <goals>
+                <goal>jjtree-javacc</goal>
+              </goals>
+            </execution>
+          </executions>
+        </plugin>
+        <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-project-info-reports-plugin</artifactId>
           <version>${maven-project-info-reports-plugin.version}</version>
@@ -53,13 +70,13 @@
           <artifactId>maven-compiler-plugin</artifactId>
           <version>2.5.1</version>
           <executions>
-            <execution>
-			  <id>test</id>
-			  <phase>test</phase>
-			  <goals>
-				<goal>testCompile</goal>
-			  </goals>
-            </execution>
+              <execution>
+                  <id>test</id>
+                  <phase>test</phase>
+                  <goals>
+                      <goal>testCompile</goal>
+                  </goals>
+              </execution>
           </executions>
         </plugin>
         <plugin>
@@ -75,7 +92,6 @@
                    <db.user>${db.oracle.user}</db.user>
                    <db.pwd>${db.oracle.pwd}</db.pwd>
                    <db.url>${db.oracle.url}</db.url>
-                   <db.platform>${db.oracle.platform}</db.platform>
                    <db.driver>${db.oracle.driver}</db.driver>
                    <db.ddl.create>${db.ddl.create}</db.ddl.create>
                    <db.ddl.drop>${db.ddl.drop}</db.ddl.drop>
@@ -86,6 +102,7 @@
                   <includes>
                       <include>**/AllTests.java</include>
                   </includes>
+                  <debugForkedProcess>${test.debug}</debugForkedProcess>
               </configuration>
               <goals>
                 <goal>test</goal>
@@ -107,35 +124,12 @@
             </execution>
           </executions>
         </plugin>
-        <plugin>
-          <artifactId>maven-antrun-plugin</artifactId>
-          <version>1.6</version>
-          <executions>
-            <execution>
-              <id>inject-resources-into-src-bundles</id>
-              <phase>package</phase>
-              <configuration>
-                <target>
-                  <zip file="target/${project.artifactId}.source_${release.version}.${build.qualifier}.jar" duplicate="preserve">
-                    <zipgroupfileset dir="target">
-                      <include name="${project.artifactId}_${release.version}.${build.qualifier}-sources.jar"/>
-                    </zipgroupfileset>
-                    <fileset dir="src/main/resources" includes="**"/>
-                  </zip>
-                </target>
-              </configuration>
-              <goals>
-                <goal>run</goal>
-              </goals>
-            </execution>
-          </executions>
-        </plugin>
       </plugins>
     </build>
 
     <reporting>
       <plugins>
-	    <plugin>
+        <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-jxr-plugin</artifactId>
           <version>${jxr-maven-plugin.version}</version>
@@ -155,4 +149,39 @@
       </plugins>
     </reporting>
 
+    <profiles>
+        <profile>
+            <id>system-jdbc-driver</id>
+            <activation>
+                <file>
+                    <exists>${basedir}/../../extension.lib.external/ojdbc6.jar</exists>
+                </file>
+            </activation>
+            <dependencies>
+                <dependency>
+                    <groupId>com.oracle</groupId>
+                    <artifactId>ojdbc6</artifactId>
+                    <version>11.2.0</version>
+                    <scope>system</scope>
+                    <systemPath>${basedir}/../../extension.lib.external/ojdbc6.jar</systemPath>
+                </dependency>
+            </dependencies>
+        </profile>
+        <profile>
+            <id>repo-jdbc-driver</id>
+            <activation>
+                <file>
+                    <missing>${basedir}/../../extension.lib.external/ojdbc6.jar</missing>
+                </file>
+            </activation>
+            <dependencies>
+                <dependency>
+                    <groupId>com.oracle</groupId>
+                    <artifactId>ojdbc6</artifactId>
+                    <version>11.2.0</version>
+                    <scope>test</scope>
+                </dependency>
+            </dependencies>
+        </profile>
+    </profiles>
 </project>
\ No newline at end of file
diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.java b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.java
deleted file mode 100644
index 8339187..0000000
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.java
+++ /dev/null
@@ -1,4794 +0,0 @@
-/* Generated By:JJTree&JavaCC: Do not edit this line. DDLParser.java */

-/*******************************************************************************

- * Copyright (c) 2011 Oracle. All rights reserved.

- * This program and the accompanying materials are made available under the

- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0

- * which accompanies this distribution.

- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html

- * and the Eclipse Distribution License is available at

- * http://www.eclipse.org/org/documents/edl-v10.php.

- *

- * Contributors:

- *     Mike Norman - June 10 2011, created DDL parser package

- ******************************************************************************/

-package org.eclipse.persistence.tools.oracleddl.parser;

-

-//javase imports

-import java.io.InputStream;

-import java.util.List;

-import java.util.HashMap;

-import java.util.Map;

-import java.util.StringTokenizer;

-

-//metadata imports

-import org.eclipse.persistence.tools.oracleddl.metadata.ArgumentType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ArgumentTypeDirection;

-import org.eclipse.persistence.tools.oracleddl.metadata.BlobType;

-import org.eclipse.persistence.tools.oracleddl.metadata.CharType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ClobType;

-import org.eclipse.persistence.tools.oracleddl.metadata.CompositeDatabaseType;

-import org.eclipse.persistence.tools.oracleddl.metadata.DatabaseType;

-import org.eclipse.persistence.tools.oracleddl.metadata.DecimalType;

-import org.eclipse.persistence.tools.oracleddl.metadata.DoubleType;

-import org.eclipse.persistence.tools.oracleddl.metadata.FieldType;

-import org.eclipse.persistence.tools.oracleddl.metadata.FloatType;

-import org.eclipse.persistence.tools.oracleddl.metadata.FunctionType;

-import org.eclipse.persistence.tools.oracleddl.metadata.IntervalDayToSecond;

-import org.eclipse.persistence.tools.oracleddl.metadata.IntervalYearToMonth;

-import org.eclipse.persistence.tools.oracleddl.metadata.LongType;

-import org.eclipse.persistence.tools.oracleddl.metadata.LongRawType;

-import org.eclipse.persistence.tools.oracleddl.metadata.NCharType;

-import org.eclipse.persistence.tools.oracleddl.metadata.NClobType;

-import org.eclipse.persistence.tools.oracleddl.metadata.NumericType;

-import org.eclipse.persistence.tools.oracleddl.metadata.NVarChar2Type;

-import org.eclipse.persistence.tools.oracleddl.metadata.ObjectType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ObjectTableType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLCollectionType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLCursorType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLPackageType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLRecordType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLSubType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ProcedureType;

-import org.eclipse.persistence.tools.oracleddl.metadata.RawType;

-import org.eclipse.persistence.tools.oracleddl.metadata.RealType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ROWTYPEType;

-import org.eclipse.persistence.tools.oracleddl.metadata.TableType;

-import org.eclipse.persistence.tools.oracleddl.metadata.TimeStampType;

-import org.eclipse.persistence.tools.oracleddl.metadata.TYPEType;

-import org.eclipse.persistence.tools.oracleddl.metadata.URowIdType;

-import org.eclipse.persistence.tools.oracleddl.metadata.UnresolvedSizedType;

-import org.eclipse.persistence.tools.oracleddl.metadata.UnresolvedType;

-import org.eclipse.persistence.tools.oracleddl.metadata.VarCharType;

-import org.eclipse.persistence.tools.oracleddl.metadata.VarChar2Type;

-import org.eclipse.persistence.tools.oracleddl.metadata.VArrayType;

-import org.eclipse.persistence.tools.oracleddl.util.DatabaseTypesRepository;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BFILE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_INTEGER_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_FLOAT_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_DOUBLE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BOOLEAN_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.DATE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.INTEGER_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.MLSLABEL_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.NATURAL_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.PLS_INTEGER_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.POSITIVE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.ROWID_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIGN_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIMPLE_INTEGER_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIMPLE_DOUBLE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIMPLE_FLOAT_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SMALLINT_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SYS_REFCURSOR_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.TIME_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.XMLTYPE_TYPE;

-

-@SuppressWarnings("all")

-public class DDLParser/*@bgen(jjtree)*/implements DDLParserTreeConstants, DDLParserConstants {/*@bgen(jjtree)*/

-  protected JJTDDLParserState jjtree = new JJTDDLParserState();

-    protected Map<String, DatabaseType> localTypes = new HashMap<String, DatabaseType>();

-    protected List<String> schemaPatterns = null;

-

-    protected DatabaseTypesRepository typesRepository = new DatabaseTypesRepository();

-

-    public DDLParser() {

-        super();

-    }

-

-    public void setTypesRepository(DatabaseTypesRepository typesRepository) {

-        this.typesRepository = typesRepository;

-    }

-    public DatabaseTypesRepository getTypesRepository() {

-        return typesRepository;

-    }

-

-    public void setSchemaPatterns(List<String> schemaPatterns) {

-        this.schemaPatterns = schemaPatterns;

-    }

-

-    protected String removeQuotes(String quotedString) {

-        return quotedString.substring(1, quotedString.length() - 1);

-    }

-

-  final public String keywords() throws ParseException {

- Token t = null;

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_ARRAY:

-      t = jj_consume_token(K_ARRAY);

-      break;

-    case K_AUTHID:

-      t = jj_consume_token(K_AUTHID);

-      break;

-    case K_BFILE:

-      t = jj_consume_token(K_BFILE);

-      break;

-    case K_BINARY_DOUBLE:

-      t = jj_consume_token(K_BINARY_DOUBLE);

-      break;

-    case K_BINARY_FLOAT:

-      t = jj_consume_token(K_BINARY_FLOAT);

-      break;

-    case K_BINARY_INTEGER:

-      t = jj_consume_token(K_BINARY_INTEGER);

-      break;

-    case K_BLOB:

-      t = jj_consume_token(K_BLOB);

-      break;

-    case K_BOOLEAN:

-      t = jj_consume_token(K_BOOLEAN);

-      break;

-    case K_BYTE:

-      t = jj_consume_token(K_BYTE);

-      break;

-    case K_CHAR:

-      t = jj_consume_token(K_CHAR);

-      break;

-    case K_CHARACTER:

-      t = jj_consume_token(K_CHARACTER);

-      break;

-    case K_CLOB:

-      t = jj_consume_token(K_CLOB);

-      break;

-    case K_COMMIT:

-      t = jj_consume_token(K_COMMIT);

-      break;

-    case K_CONSTANT:

-      t = jj_consume_token(K_CONSTANT);

-      break;

-    case K_CONSTRUCTOR:

-      t = jj_consume_token(K_CONSTRUCTOR);

-      break;

-    case K_CURRENT_USER:

-      t = jj_consume_token(K_CURRENT_USER);

-      break;

-    case K_DATE:

-      t = jj_consume_token(K_DATE);

-      break;

-    case K_DAY:

-      t = jj_consume_token(K_DAY);

-      break;

-    case K_DEC:

-      t = jj_consume_token(K_DEC);

-      break;

-    case K_DECIMAL:

-      t = jj_consume_token(K_DECIMAL);

-      break;

-    case K_DEFINER:

-      t = jj_consume_token(K_DEFINER);

-      break;

-    case K_DELETE:

-      t = jj_consume_token(K_DELETE);

-      break;

-    case K_DETERMINISTIC:

-      t = jj_consume_token(K_DETERMINISTIC);

-      break;

-    case K_DOUBLE:

-      t = jj_consume_token(K_DOUBLE);

-      break;

-    case K_ENABLE:

-      t = jj_consume_token(K_ENABLE);

-      break;

-    case K_FINAL:

-      t = jj_consume_token(K_FINAL);

-      break;

-    case K_FLOAT:

-      t = jj_consume_token(K_FLOAT);

-      break;

-    case K_FORCE:

-      t = jj_consume_token(K_FORCE);

-      break;

-    case K_GLOBAL:

-      t = jj_consume_token(K_GLOBAL);

-      break;

-    case K_INSTANTIABLE:

-      t = jj_consume_token(K_INSTANTIABLE);

-      break;

-    case K_INT:

-      t = jj_consume_token(K_INT);

-      break;

-    case K_INTEGER:

-      t = jj_consume_token(K_INTEGER);

-      break;

-    case K_INTERVAL:

-      t = jj_consume_token(K_INTERVAL);

-      break;

-    case K_KEY:

-      t = jj_consume_token(K_KEY);

-      break;

-    case K_LOCAL:

-      t = jj_consume_token(K_LOCAL);

-      break;

-    case K_LONG:

-      t = jj_consume_token(K_LONG);

-      break;

-    case K_MLSLABEL:

-      t = jj_consume_token(K_MLSLABEL);

-      break;

-    case K_MONTH:

-      t = jj_consume_token(K_MONTH);

-      break;

-    case K_NATIONAL:

-      t = jj_consume_token(K_NATIONAL);

-      break;

-    case K_NATURAL:

-      t = jj_consume_token(K_NATURAL);

-      break;

-    case K_NCHAR:

-      t = jj_consume_token(K_NCHAR);

-      break;

-    case K_NCLOB:

-      t = jj_consume_token(K_NCLOB);

-      break;

-    case K_NOCOPY:

-      t = jj_consume_token(K_NOCOPY);

-      break;

-    case K_NUMBER:

-      t = jj_consume_token(K_NUMBER);

-      break;

-    case K_NUMERIC:

-      t = jj_consume_token(K_NUMERIC);

-      break;

-    case K_NVARCHAR2:

-      t = jj_consume_token(K_NVARCHAR2);

-      break;

-    case K_NVARCHAR:

-      t = jj_consume_token(K_NVARCHAR);

-      break;

-    case K_OBJECT:

-      t = jj_consume_token(K_OBJECT);

-      break;

-    case K_OID:

-      t = jj_consume_token(K_OID);

-      break;

-    case K_ORGANIZATION:

-      t = jj_consume_token(K_ORGANIZATION);

-      break;

-    case K_OUT:

-      t = jj_consume_token(K_OUT);

-      break;

-    case K_OVERFLOW:

-      t = jj_consume_token(K_OVERFLOW);

-      break;

-    case K_PACKAGE:

-      t = jj_consume_token(K_PACKAGE);

-      break;

-    case K_PARALLEL_ENABLE:

-      t = jj_consume_token(K_PARALLEL_ENABLE);

-      break;

-    case K_PIPELINED:

-      t = jj_consume_token(K_PIPELINED);

-      break;

-    case K_PLS_INTEGER:

-      t = jj_consume_token(K_PLS_INTEGER);

-      break;

-    case K_POSITIVE:

-      t = jj_consume_token(K_POSITIVE);

-      break;

-    case K_PRAGMA:

-      t = jj_consume_token(K_PRAGMA);

-      break;

-    case K_PRECISION:

-      t = jj_consume_token(K_PRECISION);

-      break;

-    case K_PRESERVE:

-      t = jj_consume_token(K_PRESERVE);

-      break;

-    case K_RANGE:

-      t = jj_consume_token(K_RANGE);

-      break;

-    case K_RAW:

-      t = jj_consume_token(K_RAW);

-      break;

-    case K_REAL:

-      t = jj_consume_token(K_REAL);

-      break;

-    case K_RECORD:

-      t = jj_consume_token(K_RECORD);

-      break;

-    case K_REF:

-      t = jj_consume_token(K_REF);

-      break;

-    case K_REPLACE:

-      t = jj_consume_token(K_REPLACE);

-      break;

-    case K_RESULT:

-      t = jj_consume_token(K_RESULT);

-      break;

-    case K_RESULT_CACHE:

-      t = jj_consume_token(K_RESULT_CACHE);

-      break;

-    case K_RETURN:

-      t = jj_consume_token(K_RETURN);

-      break;

-    case K_ROWID:

-      t = jj_consume_token(K_ROWID);

-      break;

-    case K_ROWS:

-      t = jj_consume_token(K_ROWS);

-      break;

-    case K_SECOND:

-      t = jj_consume_token(K_SECOND);

-      break;

-    case K_SELF:

-      t = jj_consume_token(K_SELF);

-      break;

-    case K_SET:

-      t = jj_consume_token(K_SET);

-      break;

-    case K_SIGNTYPE:

-      t = jj_consume_token(K_SIGNTYPE);

-      break;

-    case K_SIMPLE_DOUBLE:

-      t = jj_consume_token(K_SIMPLE_DOUBLE);

-      break;

-    case K_SIMPLE_FLOAT:

-      t = jj_consume_token(K_SIMPLE_FLOAT);

-      break;

-    case K_SIMPLE_INTEGER:

-      t = jj_consume_token(K_SIMPLE_INTEGER);

-      break;

-    case K_SMALLINT:

-      t = jj_consume_token(K_SMALLINT);

-      break;

-    case K_STRING:

-      t = jj_consume_token(K_STRING);

-      break;

-    case K_SYS_REFCURSOR:

-      t = jj_consume_token(K_SYS_REFCURSOR);

-      break;

-    case K_TEMPORARY:

-      t = jj_consume_token(K_TEMPORARY);

-      break;

-    case K_TIME:

-      t = jj_consume_token(K_TIME);

-      break;

-    case K_TIMESTAMP:

-      t = jj_consume_token(K_TIMESTAMP);

-      break;

-    case K_UROWID:

-      t = jj_consume_token(K_UROWID);

-      break;

-    case K_VARCHAR2:

-      t = jj_consume_token(K_VARCHAR2);

-      break;

-    case K_VARCHAR:

-      t = jj_consume_token(K_VARCHAR);

-      break;

-    case K_VARRAY:

-      t = jj_consume_token(K_VARRAY);

-      break;

-    case K_VARYING:

-      t = jj_consume_token(K_VARYING);

-      break;

-    case K_XMLTYPE:

-      t = jj_consume_token(K_XMLTYPE);

-      break;

-    case K_SYSXMLTYPE:

-      t = jj_consume_token(K_SYSXMLTYPE);

-      break;

-    case K_YEAR:

-      t = jj_consume_token(K_YEAR);

-      break;

-    case K_ZONE:

-      t = jj_consume_token(K_ZONE);

-      break;

-    default:

-      jj_consume_token(-1);

-      throw new ParseException();

-    }

-      {if (true) return t.image;}

-    throw new Error("Missing return statement in function");

-  }

-

-// stripped-down version of PLSQL grammar: only parses package/top-level DDL specifications

-

-// PLSQLPackage at 'top-level'

-  final public PLSQLPackageType parsePLSQLPackage() throws ParseException {

- PLSQLPackageType packageType = new PLSQLPackageType();

- String dottedName = null;

- String schema = null;

- String packageName = null;

-    jj_consume_token(R_CREATE);

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_OR:

-      orReplace();

-      break;

-    default:

-      ;

-    }

-    jj_consume_token(K_PACKAGE);

-    dottedName = OracleObjectNamePossiblyDotted();

-          packageName = dottedName;

-          if (dottedName.contains(".")) {

-              int idx = dottedName.indexOf(".");

-              schema = dottedName.substring(0, idx);

-              packageName = dottedName.substring(idx+1, dottedName.length());

-          }

-          if (schema != null) {

-            packageType.setSchema(schema);

-          }

-          packageType.setPackageName(packageName);

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_AUTHID:

-      invokerRights();

-      break;

-    default:

-      ;

-    }

-    as();

-    label_1:

-    while (true) {

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case R_CURSOR:

-      case R_FUNCTION:

-      case R_PROCEDURE:

-      case R_SUBTYPE:

-      case R_TYPE:

-      case K_ARRAY:

-      case K_AUTHID:

-      case K_BFILE:

-      case K_BINARY_DOUBLE:

-      case K_BINARY_FLOAT:

-      case K_BINARY_INTEGER:

-      case K_BLOB:

-      case K_BOOLEAN:

-      case K_BYTE:

-      case K_CHAR:

-      case K_CHARACTER:

-      case K_CLOB:

-      case K_COMMIT:

-      case K_CONSTANT:

-      case K_CONSTRUCTOR:

-      case K_CURRENT_USER:

-      case K_DATE:

-      case K_DAY:

-      case K_DEC:

-      case K_DECIMAL:

-      case K_DEFINER:

-      case K_DELETE:

-      case K_DETERMINISTIC:

-      case K_DOUBLE:

-      case K_ENABLE:

-      case K_FINAL:

-      case K_FLOAT:

-      case K_FORCE:

-      case K_GLOBAL:

-      case K_INSTANTIABLE:

-      case K_INT:

-      case K_INTEGER:

-      case K_INTERVAL:

-      case K_KEY:

-      case K_LOCAL:

-      case K_LONG:

-      case K_MLSLABEL:

-      case K_MONTH:

-      case K_NATIONAL:

-      case K_NATURAL:

-      case K_NCHAR:

-      case K_NCLOB:

-      case K_NOCOPY:

-      case K_NUMBER:

-      case K_NUMERIC:

-      case K_NVARCHAR2:

-      case K_NVARCHAR:

-      case K_OBJECT:

-      case K_OID:

-      case K_ORGANIZATION:

-      case K_OUT:

-      case K_OVERFLOW:

-      case K_PACKAGE:

-      case K_PARALLEL_ENABLE:

-      case K_PIPELINED:

-      case K_PLS_INTEGER:

-      case K_POSITIVE:

-      case K_PRAGMA:

-      case K_PRECISION:

-      case K_PRESERVE:

-      case K_RANGE:

-      case K_RAW:

-      case K_REAL:

-      case K_RECORD:

-      case K_REF:

-      case K_REPLACE:

-      case K_RESULT:

-      case K_RESULT_CACHE:

-      case K_RETURN:

-      case K_ROWID:

-      case K_ROWS:

-      case K_SECOND:

-      case K_SELF:

-      case K_SET:

-      case K_SIGNTYPE:

-      case K_SIMPLE_DOUBLE:

-      case K_SIMPLE_FLOAT:

-      case K_SIMPLE_INTEGER:

-      case K_SMALLINT:

-      case K_STRING:

-      case K_SYS_REFCURSOR:

-      case K_TEMPORARY:

-      case K_TIME:

-      case K_TIMESTAMP:

-      case K_UROWID:

-      case K_VARCHAR2:

-      case K_VARCHAR:

-      case K_VARRAY:

-      case K_VARYING:

-      case K_XMLTYPE:

-      case K_SYSXMLTYPE:

-      case K_YEAR:

-      case K_ZONE:

-      case S_IDENTIFIER:

-      case S_QUOTED_IDENTIFIER:

-        ;

-        break;

-      default:

-        break label_1;

-      }

-      packageDeclaration(packageType);

-    }

-    jj_consume_token(R_END);

-    skipToEnd();

-      typesRepository.setDatabaseType(packageName, packageType);

-      {if (true) return packageType;}

-    throw new Error("Missing return statement in function");

-  }

-

-// procedure at 'top-level'

-  final public ProcedureType parseTopLevelProcedure() throws ParseException {

- ProcedureType procedureType = null;

- String dottedName = null;

- String schema = null;

- String procedureName = null;

-    jj_consume_token(R_CREATE);

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_OR:

-      orReplace();

-      break;

-    default:

-      ;

-    }

-    jj_consume_token(R_PROCEDURE);

-    dottedName = OracleObjectNamePossiblyDotted();

-          procedureName = dottedName;

-          if (dottedName.contains(".")) {

-              int idx = dottedName.indexOf(".");

-              schema = dottedName.substring(0, idx);

-              procedureName = dottedName.substring(idx+1, dottedName.length());

-          }

-          procedureType = new ProcedureType(procedureName);

-              if (schema != null) {

-                  procedureType.setSchema(schema);

-              }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case O_OPENPAREN:

-      jj_consume_token(O_OPENPAREN);

-      argumentList(procedureType);

-      jj_consume_token(O_CLOSEPAREN);

-      break;

-    default:

-      ;

-    }

-    as();

-    skipToEnd();

-      typesRepository.setDatabaseType(procedureName, procedureType);

-      {if (true) return procedureType;}

-    throw new Error("Missing return statement in function");

-  }

-

-// function at 'top-level'

-  final public FunctionType parseTopLevelFunction() throws ParseException {

- FunctionType functionType = null;

- String dottedName = null;

- String schema = null;

- String functionName = null;

- ArgumentType returnType = null;

-    jj_consume_token(R_CREATE);

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_OR:

-      orReplace();

-      break;

-    default:

-      ;

-    }

-    jj_consume_token(R_FUNCTION);

-    dottedName = OracleObjectNamePossiblyDotted();

-          functionName = dottedName;

-          if (dottedName.contains(".")) {

-              int idx = dottedName.indexOf(".");

-              schema = dottedName.substring(0, idx);

-              functionName = dottedName.substring(idx+1, dottedName.length());

-          }

-              functionType = new FunctionType(functionName);

-          if (schema != null) {

-              functionType.setSchema(schema);

-          }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case O_OPENPAREN:

-      jj_consume_token(O_OPENPAREN);

-      argumentList(functionType);

-      jj_consume_token(O_CLOSEPAREN);

-      break;

-    default:

-      ;

-    }

-    returnType = functionReturnSpec(functionType);

-    as();

-    skipToEnd();

-      functionType.setReturnArgument(returnType);

-      typesRepository.setDatabaseType(functionName, functionType);

-      {if (true) return functionType;}

-    throw new Error("Missing return statement in function");

-  }

-

-// table at 'top-level'

-  final public TableType parseTable() throws ParseException {

- TableType tableType = null;

- String dottedName = null;

- String schema = null;

- String tableName = null;

- Token iot = null;

-    jj_consume_token(R_CREATE);

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_GLOBAL:

-      jj_consume_token(K_GLOBAL);

-      jj_consume_token(K_TEMPORARY);

-      break;

-    default:

-      ;

-    }

-    jj_consume_token(R_TABLE);

-    dottedName = OracleObjectNamePossiblyDotted();

-          tableName = dottedName;

-          if (dottedName.contains(".")) {

-              int idx = dottedName.indexOf(".");

-              schema = dottedName.substring(0, idx);

-              tableName = dottedName.substring(idx+1, dottedName.length());

-          }

-          tableType = new TableType(tableName);

-                  if (schema != null) {

-                       tableType.setSchema(schema);

-                  }

-    jj_consume_token(O_OPENPAREN);

-    columnDeclarations(tableType);

-    jj_consume_token(O_CLOSEPAREN);

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_ORGANIZATION:

-      jj_consume_token(K_ORGANIZATION);

-      break;

-    default:

-      ;

-    }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_INDEX:

-      iot = jj_consume_token(R_INDEX);

-      break;

-    default:

-      ;

-    }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_NOCOMPRESS:

-      jj_consume_token(R_NOCOMPRESS);

-      break;

-    default:

-      ;

-    }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_OVERFLOW:

-      jj_consume_token(K_OVERFLOW);

-      break;

-    default:

-      ;

-    }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_ON:

-      onCommit();

-      break;

-    default:

-      ;

-    }

-    jj_consume_token(O_SEMICOLON);

-    jj_consume_token(0);

-         if (iot != null) {

-             tableType.setIOT(true);

-         }

-         typesRepository.setDatabaseType(tableName, tableType);

-         {if (true) return tableType;}

-    throw new Error("Missing return statement in function");

-  }

-

-// type at 'top-level'

-  final public CompositeDatabaseType parseType() throws ParseException {

- CompositeDatabaseType databaseType = null;

- DatabaseType enclosedType = null;

- String dottedName = null;

- String schema = null;

- String typeName = null;

- Token vsize = null;

- boolean varray = false;

- boolean nestedTable = false;

-    jj_consume_token(R_CREATE);

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_OR:

-      orReplace();

-      break;

-    default:

-      ;

-    }

-    jj_consume_token(R_TYPE);

-    dottedName = OracleObjectNamePossiblyDotted();

-          typeName = dottedName;

-          if (dottedName.contains(".")) {

-              int idx = dottedName.indexOf(".");

-              schema = dottedName.substring(0, idx);

-              typeName = dottedName.substring(idx+1, dottedName.length());

-          }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_FORCE:

-      jj_consume_token(K_FORCE);

-      break;

-    default:

-      ;

-    }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_OID:

-      jj_consume_token(K_OID);

-      jj_consume_token(S_CHAR_LITERAL);

-      break;

-    default:

-      ;

-    }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_AUTHID:

-      invokerRights();

-      break;

-    default:

-      ;

-    }

-    as();

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_TABLE:

-    case K_OBJECT:

-    case K_VARRAY:

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_OBJECT:

-        jj_consume_token(K_OBJECT);

-        jj_consume_token(O_OPENPAREN);

-                databaseType = new ObjectType(typeName);

-                if (schema != null) {

-                    ((ObjectType)databaseType).setSchema(schema);

-                }

-        columnDeclarations(databaseType);

-        constructorDeclaration();

-        jj_consume_token(O_CLOSEPAREN);

-        break;

-      case K_VARRAY:

-        jj_consume_token(K_VARRAY);

-        jj_consume_token(O_OPENPAREN);

-        vsize = jj_consume_token(S_NUMBER);

-        jj_consume_token(O_CLOSEPAREN);

-        jj_consume_token(R_OF);

-                databaseType = new VArrayType(typeName);

-                if (schema != null) {

-                    ((VArrayType)databaseType).setSchema(schema);

-                }

-                if (vsize != null) {

-                    Long size = Long.decode(vsize.image);

-                    ((VArrayType)databaseType).setSize(size);

-                }

-        enclosedType = columnTypeSpec(databaseType);

-        break;

-      case R_TABLE:

-        jj_consume_token(R_TABLE);

-        jj_consume_token(R_OF);

-                databaseType = new ObjectTableType(typeName);

-                if (schema != null) {

-                    ((ObjectTableType)databaseType).setSchema(schema);

-                }

-        enclosedType = columnTypeSpec(databaseType);

-        break;

-      default:

-        jj_consume_token(-1);

-        throw new ParseException();

-      }

-      break;

-    default:

-      ;

-    }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_NOT:

-    case K_FINAL:

-    case K_INSTANTIABLE:

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case R_NOT:

-        jj_consume_token(R_NOT);

-        break;

-      default:

-        ;

-      }

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_FINAL:

-        jj_consume_token(K_FINAL);

-        break;

-      case K_INSTANTIABLE:

-        jj_consume_token(K_INSTANTIABLE);

-        break;

-      default:

-        jj_consume_token(-1);

-        throw new ParseException();

-      }

-      break;

-    default:

-      ;

-    }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case O_SEMICOLON:

-      jj_consume_token(O_SEMICOLON);

-      break;

-    default:

-      ;

-    }

-    jj_consume_token(0);

-        if (enclosedType != null) {

-            ((CompositeDatabaseType)databaseType).setEnclosedType(enclosedType);

-        }

-        typesRepository.setDatabaseType(typeName, databaseType);

-        {if (true) return databaseType;}

-    throw new Error("Missing return statement in function");

-  }

-

-  final public void columnDeclarations(CompositeDatabaseType enclosingType) throws ParseException {

-    if (jj_2_1(2)) {

-      constructor();

-    } else {

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_ARRAY:

-      case K_AUTHID:

-      case K_BFILE:

-      case K_BINARY_DOUBLE:

-      case K_BINARY_FLOAT:

-      case K_BINARY_INTEGER:

-      case K_BLOB:

-      case K_BOOLEAN:

-      case K_BYTE:

-      case K_CHAR:

-      case K_CHARACTER:

-      case K_CLOB:

-      case K_COMMIT:

-      case K_CONSTANT:

-      case K_CONSTRUCTOR:

-      case K_CURRENT_USER:

-      case K_DATE:

-      case K_DAY:

-      case K_DEC:

-      case K_DECIMAL:

-      case K_DEFINER:

-      case K_DELETE:

-      case K_DETERMINISTIC:

-      case K_DOUBLE:

-      case K_ENABLE:

-      case K_FINAL:

-      case K_FLOAT:

-      case K_FORCE:

-      case K_GLOBAL:

-      case K_INSTANTIABLE:

-      case K_INT:

-      case K_INTEGER:

-      case K_INTERVAL:

-      case K_KEY:

-      case K_LOCAL:

-      case K_LONG:

-      case K_MLSLABEL:

-      case K_MONTH:

-      case K_NATIONAL:

-      case K_NATURAL:

-      case K_NCHAR:

-      case K_NCLOB:

-      case K_NOCOPY:

-      case K_NUMBER:

-      case K_NUMERIC:

-      case K_NVARCHAR2:

-      case K_NVARCHAR:

-      case K_OBJECT:

-      case K_OID:

-      case K_ORGANIZATION:

-      case K_OUT:

-      case K_OVERFLOW:

-      case K_PACKAGE:

-      case K_PARALLEL_ENABLE:

-      case K_PIPELINED:

-      case K_PLS_INTEGER:

-      case K_POSITIVE:

-      case K_PRAGMA:

-      case K_PRECISION:

-      case K_PRESERVE:

-      case K_RANGE:

-      case K_RAW:

-      case K_REAL:

-      case K_RECORD:

-      case K_REF:

-      case K_REPLACE:

-      case K_RESULT:

-      case K_RESULT_CACHE:

-      case K_RETURN:

-      case K_ROWID:

-      case K_ROWS:

-      case K_SECOND:

-      case K_SELF:

-      case K_SET:

-      case K_SIGNTYPE:

-      case K_SIMPLE_DOUBLE:

-      case K_SIMPLE_FLOAT:

-      case K_SIMPLE_INTEGER:

-      case K_SMALLINT:

-      case K_STRING:

-      case K_SYS_REFCURSOR:

-      case K_TEMPORARY:

-      case K_TIME:

-      case K_TIMESTAMP:

-      case K_UROWID:

-      case K_VARCHAR2:

-      case K_VARCHAR:

-      case K_VARRAY:

-      case K_VARYING:

-      case K_XMLTYPE:

-      case K_SYSXMLTYPE:

-      case K_YEAR:

-      case K_ZONE:

-      case S_IDENTIFIER:

-      case S_QUOTED_IDENTIFIER:

-        columnDeclaration(enclosingType);

-        break;

-      case R_CHECK:

-      case R_CONSTRAINT:

-      case R_PRIMARY:

-      case R_UNIQUE:

-        constraintDeclaration(enclosingType);

-        break;

-      default:

-        jj_consume_token(-1);

-        throw new ParseException();

-      }

-    }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case O_COMMA:

-      jj_consume_token(O_COMMA);

-      columnDeclarations(enclosingType);

-      break;

-    default:

-      ;

-    }

-  }

-

-  final public void columnDeclaration(CompositeDatabaseType enclosingType) throws ParseException {

- String s = null;

- String pk = null;

- boolean notNull = false;

- DatabaseType columnType = null;

- FieldType column = null;

-    s = OracleObjectName();

-    columnType = columnTypeSpec(enclosingType);

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_NOT:

-      notNull = notNull();

-      break;

-    default:

-      ;

-    }

-          column = new FieldType(s);

-          if (enclosingType != null) {

-              if (enclosingType.isPLSQLRecordType()) {

-                  ((PLSQLRecordType)enclosingType).addField(column);

-              }

-              else if (enclosingType.isTableType()) {

-                  ((TableType)enclosingType).addColumn(column);

-              }

-              else if (enclosingType.isObjectType()) {

-                  ((ObjectType)enclosingType).addField(column);

-              }

-          }

-          column.setEnclosedType(columnType);

-          if (columnType instanceof UnresolvedType) {

-              ((UnresolvedType)columnType).setOwningType(column);

-          }

-          if (notNull) {

-              column.setNotNull();

-          }

-  }

-

-  final public void constraintDeclaration(CompositeDatabaseType enclosingType) throws ParseException {

- String s = null;

- String pk = null;

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_CONSTRAINT:

-      jj_consume_token(R_CONSTRAINT);

-      break;

-    default:

-      ;

-    }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_ARRAY:

-    case K_AUTHID:

-    case K_BFILE:

-    case K_BINARY_DOUBLE:

-    case K_BINARY_FLOAT:

-    case K_BINARY_INTEGER:

-    case K_BLOB:

-    case K_BOOLEAN:

-    case K_BYTE:

-    case K_CHAR:

-    case K_CHARACTER:

-    case K_CLOB:

-    case K_COMMIT:

-    case K_CONSTANT:

-    case K_CONSTRUCTOR:

-    case K_CURRENT_USER:

-    case K_DATE:

-    case K_DAY:

-    case K_DEC:

-    case K_DECIMAL:

-    case K_DEFINER:

-    case K_DELETE:

-    case K_DETERMINISTIC:

-    case K_DOUBLE:

-    case K_ENABLE:

-    case K_FINAL:

-    case K_FLOAT:

-    case K_FORCE:

-    case K_GLOBAL:

-    case K_INSTANTIABLE:

-    case K_INT:

-    case K_INTEGER:

-    case K_INTERVAL:

-    case K_KEY:

-    case K_LOCAL:

-    case K_LONG:

-    case K_MLSLABEL:

-    case K_MONTH:

-    case K_NATIONAL:

-    case K_NATURAL:

-    case K_NCHAR:

-    case K_NCLOB:

-    case K_NOCOPY:

-    case K_NUMBER:

-    case K_NUMERIC:

-    case K_NVARCHAR2:

-    case K_NVARCHAR:

-    case K_OBJECT:

-    case K_OID:

-    case K_ORGANIZATION:

-    case K_OUT:

-    case K_OVERFLOW:

-    case K_PACKAGE:

-    case K_PARALLEL_ENABLE:

-    case K_PIPELINED:

-    case K_PLS_INTEGER:

-    case K_POSITIVE:

-    case K_PRAGMA:

-    case K_PRECISION:

-    case K_PRESERVE:

-    case K_RANGE:

-    case K_RAW:

-    case K_REAL:

-    case K_RECORD:

-    case K_REF:

-    case K_REPLACE:

-    case K_RESULT:

-    case K_RESULT_CACHE:

-    case K_RETURN:

-    case K_ROWID:

-    case K_ROWS:

-    case K_SECOND:

-    case K_SELF:

-    case K_SET:

-    case K_SIGNTYPE:

-    case K_SIMPLE_DOUBLE:

-    case K_SIMPLE_FLOAT:

-    case K_SIMPLE_INTEGER:

-    case K_SMALLINT:

-    case K_STRING:

-    case K_SYS_REFCURSOR:

-    case K_TEMPORARY:

-    case K_TIME:

-    case K_TIMESTAMP:

-    case K_UROWID:

-    case K_VARCHAR2:

-    case K_VARCHAR:

-    case K_VARRAY:

-    case K_VARYING:

-    case K_XMLTYPE:

-    case K_SYSXMLTYPE:

-    case K_YEAR:

-    case K_ZONE:

-    case S_IDENTIFIER:

-    case S_QUOTED_IDENTIFIER:

-      OracleObjectName();

-      break;

-    default:

-      ;

-    }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_PRIMARY:

-      jj_consume_token(R_PRIMARY);

-      jj_consume_token(K_KEY);

-      jj_consume_token(O_OPENPAREN);

-      pkList((TableType)enclosingType);

-      jj_consume_token(O_CLOSEPAREN);

-      break;

-    case R_CHECK:

-      jj_consume_token(R_CHECK);

-      jj_consume_token(O_OPENPAREN);

-      skipToClosingParen();

-      jj_consume_token(O_CLOSEPAREN);

-      break;

-    case R_UNIQUE:

-      jj_consume_token(R_UNIQUE);

-      jj_consume_token(O_OPENPAREN);

-      uniqList();

-      jj_consume_token(O_CLOSEPAREN);

-      break;

-    default:

-      jj_consume_token(-1);

-      throw new ParseException();

-    }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_ENABLE:

-      jj_consume_token(K_ENABLE);

-      break;

-    default:

-      ;

-    }

-  }

-

-  final public DatabaseType columnTypeSpec(CompositeDatabaseType enclosingType) throws ParseException {

- String s = null;

- Token t = null;

- DatabaseType dt = null;

-    if (jj_2_2(2)) {

-      dt = datatype();

-    } else {

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_ARRAY:

-      case K_AUTHID:

-      case K_BFILE:

-      case K_BINARY_DOUBLE:

-      case K_BINARY_FLOAT:

-      case K_BINARY_INTEGER:

-      case K_BLOB:

-      case K_BOOLEAN:

-      case K_BYTE:

-      case K_CHAR:

-      case K_CHARACTER:

-      case K_CLOB:

-      case K_COMMIT:

-      case K_CONSTANT:

-      case K_CONSTRUCTOR:

-      case K_CURRENT_USER:

-      case K_DATE:

-      case K_DAY:

-      case K_DEC:

-      case K_DECIMAL:

-      case K_DEFINER:

-      case K_DELETE:

-      case K_DETERMINISTIC:

-      case K_DOUBLE:

-      case K_ENABLE:

-      case K_FINAL:

-      case K_FLOAT:

-      case K_FORCE:

-      case K_GLOBAL:

-      case K_INSTANTIABLE:

-      case K_INT:

-      case K_INTEGER:

-      case K_INTERVAL:

-      case K_KEY:

-      case K_LOCAL:

-      case K_LONG:

-      case K_MLSLABEL:

-      case K_MONTH:

-      case K_NATIONAL:

-      case K_NATURAL:

-      case K_NCHAR:

-      case K_NCLOB:

-      case K_NOCOPY:

-      case K_NUMBER:

-      case K_NUMERIC:

-      case K_NVARCHAR2:

-      case K_NVARCHAR:

-      case K_OBJECT:

-      case K_OID:

-      case K_ORGANIZATION:

-      case K_OUT:

-      case K_OVERFLOW:

-      case K_PACKAGE:

-      case K_PARALLEL_ENABLE:

-      case K_PIPELINED:

-      case K_PLS_INTEGER:

-      case K_POSITIVE:

-      case K_PRAGMA:

-      case K_PRECISION:

-      case K_PRESERVE:

-      case K_RANGE:

-      case K_RAW:

-      case K_REAL:

-      case K_RECORD:

-      case K_REF:

-      case K_REPLACE:

-      case K_RESULT:

-      case K_RESULT_CACHE:

-      case K_RETURN:

-      case K_ROWID:

-      case K_ROWS:

-      case K_SECOND:

-      case K_SELF:

-      case K_SET:

-      case K_SIGNTYPE:

-      case K_SIMPLE_DOUBLE:

-      case K_SIMPLE_FLOAT:

-      case K_SIMPLE_INTEGER:

-      case K_SMALLINT:

-      case K_STRING:

-      case K_SYS_REFCURSOR:

-      case K_TEMPORARY:

-      case K_TIME:

-      case K_TIMESTAMP:

-      case K_UROWID:

-      case K_VARCHAR2:

-      case K_VARCHAR:

-      case K_VARRAY:

-      case K_VARYING:

-      case K_XMLTYPE:

-      case K_SYSXMLTYPE:

-      case K_YEAR:

-      case K_ZONE:

-      case S_IDENTIFIER:

-      case S_QUOTED_IDENTIFIER:

-        s = columnSpec();

-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-        case O_OPENPAREN:

-          jj_consume_token(O_OPENPAREN);

-          t = jj_consume_token(S_NUMBER);

-          jj_consume_token(O_CLOSEPAREN);

-          break;

-        default:

-          ;

-        }

-        break;

-      default:

-        jj_consume_token(-1);

-        throw new ParseException();

-      }

-    }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_CONSTRAINT:

-      jj_consume_token(R_CONSTRAINT);

-      jj_consume_token(S_QUOTED_IDENTIFIER);

-      break;

-    default:

-      ;

-    }

-      if (s != null) {

-          if (s.contains(".")) {

-              int dotIdx = s.indexOf(".");

-              String namePart1 = s.substring(0, dotIdx);

-              String namePart2 = s.substring(dotIdx+1, s.length());

-              String schemaName = null;

-              if (enclosingType.isTableType()) {

-                 schemaName = ((TableType)enclosingType).getSchema();

-              } else if (enclosingType.isObjectTableType()) {

-                 schemaName = ((ObjectTableType)enclosingType).getSchema();

-              } else if (enclosingType.isObjectType()) {

-                 schemaName = ((ObjectType)enclosingType).getSchema();

-              } else if (enclosingType.isPLSQLType()) {

-                 schemaName = ((PLSQLType)enclosingType).getParentType().getSchema();

-              } else if (enclosingType.isVArrayType()) {

-                 schemaName = ((VArrayType)enclosingType).getSchema();

-              }

-              if (schemaName != null && schemaName.equals(namePart1)) {

-                  s = namePart2;

-              }

-          }

-          for (String typeName : localTypes.keySet()) {

-              if (typeName.equals(s)) {

-                  dt = localTypes.get(s);

-                  break;

-              }

-          }

-          if (dt == null) {

-              if (t != null) {

-                  Long size = Long.decode(t.image);

-                  dt = new UnresolvedSizedType(s, size);

-              }

-              else {

-                  dt = new UnresolvedType(s);

-              }

-              ((UnresolvedType)dt).setOwningType(enclosingType);

-          }

-      }

-      {if (true) return dt;}

-    throw new Error("Missing return statement in function");

-  }

-

-  final public void constructorDeclaration() throws ParseException {

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_CONSTRUCTOR:

-      jj_consume_token(K_CONSTRUCTOR);

-      skipToReturn();

-      jj_consume_token(K_SELF);

-      jj_consume_token(R_AS);

-      jj_consume_token(K_RESULT);

-      break;

-    default:

-      ;

-    }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case O_COMMA:

-      jj_consume_token(O_COMMA);

-      constructorDeclaration();

-      break;

-    default:

-      ;

-    }

-  }

-

-  final public void uniqList() throws ParseException {

-    OracleObjectName();

-    label_2:

-    while (true) {

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case O_COMMA:

-        ;

-        break;

-      default:

-        break label_2;

-      }

-      jj_consume_token(O_COMMA);

-      OracleObjectName();

-    }

-  }

-

-  final public void pkList(TableType tableType) throws ParseException {

-    pk(tableType);

-    label_3:

-    while (true) {

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case O_COMMA:

-        ;

-        break;

-      default:

-        break label_3;

-      }

-      jj_consume_token(O_COMMA);

-      pk(tableType);

-    }

-  }

-

-  final public void pk(TableType tableType) throws ParseException {

-String s = null;

-    s = OracleObjectName();

-       List<FieldType> columns = tableType.getColumns();

-       for (FieldType column : columns) {

-            if (column.getFieldName().equals(s)) {

-                column.setPk();

-                break;

-            }

-       }

-  }

-

-  final public void packageDeclaration(PLSQLPackageType packageType) throws ParseException {

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_SUBTYPE:

-    case R_TYPE:

-      typeOrSubTypeDeclaration(packageType);

-      break;

-    case R_CURSOR:

-      cursorDeclaration(packageType);

-      break;

-    case R_PROCEDURE:

-      procedureSpec(packageType);

-      break;

-    case R_FUNCTION:

-      functionSpec(packageType);

-      break;

-    default:

-      if (jj_2_3(2)) {

-        variableDeclaration(packageType);

-      } else {

-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-        case K_PRAGMA:

-          pragmaDeclaration();

-          break;

-        default:

-          jj_consume_token(-1);

-          throw new ParseException();

-        }

-      }

-    }

-  }

-

-  final public void variableDeclaration(PLSQLPackageType packageType) throws ParseException {

- String varName = null;

- DatabaseType varType=null;

-    varName = OracleObjectName();

-    if (jj_2_5(2)) {

-      jj_consume_token(R_EXCEPTION);

-    } else {

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_ARRAY:

-      case K_AUTHID:

-      case K_BFILE:

-      case K_BINARY_DOUBLE:

-      case K_BINARY_FLOAT:

-      case K_BINARY_INTEGER:

-      case K_BLOB:

-      case K_BOOLEAN:

-      case K_BYTE:

-      case K_CHAR:

-      case K_CHARACTER:

-      case K_CLOB:

-      case K_COMMIT:

-      case K_CONSTANT:

-      case K_CONSTRUCTOR:

-      case K_CURRENT_USER:

-      case K_DATE:

-      case K_DAY:

-      case K_DEC:

-      case K_DECIMAL:

-      case K_DEFINER:

-      case K_DELETE:

-      case K_DETERMINISTIC:

-      case K_DOUBLE:

-      case K_ENABLE:

-      case K_FINAL:

-      case K_FLOAT:

-      case K_FORCE:

-      case K_GLOBAL:

-      case K_INSTANTIABLE:

-      case K_INT:

-      case K_INTEGER:

-      case K_INTERVAL:

-      case K_KEY:

-      case K_LOCAL:

-      case K_LONG:

-      case K_MLSLABEL:

-      case K_MONTH:

-      case K_NATIONAL:

-      case K_NATURAL:

-      case K_NCHAR:

-      case K_NCLOB:

-      case K_NOCOPY:

-      case K_NUMBER:

-      case K_NUMERIC:

-      case K_NVARCHAR2:

-      case K_NVARCHAR:

-      case K_OBJECT:

-      case K_OID:

-      case K_ORGANIZATION:

-      case K_OUT:

-      case K_OVERFLOW:

-      case K_PACKAGE:

-      case K_PARALLEL_ENABLE:

-      case K_PIPELINED:

-      case K_PLS_INTEGER:

-      case K_POSITIVE:

-      case K_PRAGMA:

-      case K_PRECISION:

-      case K_PRESERVE:

-      case K_RANGE:

-      case K_RAW:

-      case K_REAL:

-      case K_RECORD:

-      case K_REF:

-      case K_REPLACE:

-      case K_RESULT:

-      case K_RESULT_CACHE:

-      case K_RETURN:

-      case K_ROWID:

-      case K_ROWS:

-      case K_SECOND:

-      case K_SELF:

-      case K_SET:

-      case K_SIGNTYPE:

-      case K_SIMPLE_DOUBLE:

-      case K_SIMPLE_FLOAT:

-      case K_SIMPLE_INTEGER:

-      case K_SMALLINT:

-      case K_STRING:

-      case K_SYS_REFCURSOR:

-      case K_TEMPORARY:

-      case K_TIME:

-      case K_TIMESTAMP:

-      case K_UROWID:

-      case K_VARCHAR2:

-      case K_VARCHAR:

-      case K_VARRAY:

-      case K_VARYING:

-      case K_XMLTYPE:

-      case K_SYSXMLTYPE:

-      case K_YEAR:

-      case K_ZONE:

-      case S_IDENTIFIER:

-      case S_QUOTED_IDENTIFIER:

-        if (jj_2_4(2)) {

-          jj_consume_token(K_CONSTANT);

-        } else {

-          ;

-        }

-        varType = typeSpec();

-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-        case R_NOT:

-          jj_consume_token(R_NOT);

-          jj_consume_token(R_NULL);

-          break;

-        default:

-          ;

-        }

-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-        case O_ASSIGN:

-        case R_DEFAULT:

-          variableDefaultAssignment();

-          break;

-        default:

-          ;

-        }

-        break;

-      default:

-        jj_consume_token(-1);

-        throw new ParseException();

-      }

-    }

-    jj_consume_token(O_SEMICOLON);

-        FieldType variable = new FieldType(varName);

-        variable.setEnclosedType(varType);

-        packageType.addLocalVariable(variable);

-        if (varType.isROWTYPEType()) {

-            ((ROWTYPEType)varType).setPackageType(packageType);

-        }

-  }

-

-  final public void variableDefaultAssignment() throws ParseException {

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case O_ASSIGN:

-      jj_consume_token(O_ASSIGN);

-      break;

-    case R_DEFAULT:

-      jj_consume_token(R_DEFAULT);

-      break;

-    default:

-      jj_consume_token(-1);

-      throw new ParseException();

-    }

-    skipToSemiColon();

-  }

-

-  final public DatabaseType datatype() throws ParseException {

- Token t = null;

- DatabaseType dt = null;

- Token precision = null;

- Long sl;

- Long pl;

- Token scale = null;

- Token withTimeZone = null;

- Token withLocalTimeZone = null;

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_BINARY_INTEGER:

-      jj_consume_token(K_BINARY_INTEGER);

-                          {if (true) return BINARY_INTEGER_TYPE;}

-      break;

-    case K_BINARY_FLOAT:

-      jj_consume_token(K_BINARY_FLOAT);

-                          {if (true) return BINARY_FLOAT_TYPE;}

-      break;

-    case K_BINARY_DOUBLE:

-      jj_consume_token(K_BINARY_DOUBLE);

-                          {if (true) return BINARY_DOUBLE_TYPE;}

-      break;

-    case K_NATURAL:

-      jj_consume_token(K_NATURAL);

-                          {if (true) return NATURAL_TYPE;}

-      break;

-    case K_POSITIVE:

-      jj_consume_token(K_POSITIVE);

-                          {if (true) return POSITIVE_TYPE;}

-      break;

-    case K_SIGNTYPE:

-      jj_consume_token(K_SIGNTYPE);

-                          {if (true) return SIGN_TYPE;}

-      break;

-    case K_DEC:

-    case K_DECIMAL:

-    case K_NUMBER:

-    case K_NUMERIC:

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_NUMBER:

-        t = jj_consume_token(K_NUMBER);

-        break;

-      case K_NUMERIC:

-        t = jj_consume_token(K_NUMERIC);

-        break;

-      case K_DECIMAL:

-        t = jj_consume_token(K_DECIMAL);

-        break;

-      case K_DEC:

-        t = jj_consume_token(K_DEC);

-        break;

-      default:

-        jj_consume_token(-1);

-        throw new ParseException();

-      }

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case O_OPENPAREN:

-        jj_consume_token(O_OPENPAREN);

-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-        case O_ASTERISK:

-        case S_NUMBER:

-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-          case O_ASTERISK:

-            precision = jj_consume_token(O_ASTERISK);

-            break;

-          case S_NUMBER:

-            precision = jj_consume_token(S_NUMBER);

-            break;

-          default:

-            jj_consume_token(-1);

-            throw new ParseException();

-          }

-          break;

-        default:

-          ;

-        }

-        label_4:

-        while (true) {

-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-          case O_COMMA:

-            ;

-            break;

-          default:

-            break label_4;

-          }

-          jj_consume_token(O_COMMA);

-          scale = jj_consume_token(S_NUMBER);

-        }

-        jj_consume_token(O_CLOSEPAREN);

-        break;

-      default:

-        ;

-      }

-            if (t.kind == K_NUMBER || t.kind == K_NUMERIC) {

-                if (precision != null && precision.image.equals("*")) {

-                    precision = null;

-                }

-                if (precision == null) {

-                    if (scale != null && scale.image.equals("0")) {

-                        dt = INTEGER_TYPE;

-                    }

-                    else {

-                        dt = new NumericType();

-                    }

-                }

-                    else {

-                        pl = Long.decode(precision.image);

-                        if (scale == null) {

-                        dt = new NumericType(pl);

-                    }

-                    else {

-                        sl = Long.decode(scale.image);

-                        dt = new NumericType(pl, sl);

-                        }

-                    }

-                //sometimes need to know difference between NUMERIC and NUMBER

-                if (dt != INTEGER_TYPE && t.kind == K_NUMBER) {

-                    ((NumericType)dt).setNumberSynonym(true);

-                }

-            }

-            else  if (t.kind == K_DECIMAL || t.kind == K_DEC) {

-                if (precision != null && precision.image.equals("*")) {

-                    precision = null;

-                }

-                if (precision == null) {

-                    dt = new DecimalType();

-                }

-                else {

-                    pl = Long.decode(precision.image);

-                    if (scale == null) {

-                        dt = new DecimalType(pl);

-                    }

-                    else {

-                        sl = Long.decode(scale.image);

-                        dt = new DecimalType(pl, sl);

-                    }

-                }

-            }

-            {if (true) return dt;}

-      break;

-    case K_LONG:

-      jj_consume_token(K_LONG);

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_RAW:

-        t = jj_consume_token(K_RAW);

-        break;

-      default:

-        ;

-      }

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case O_OPENPAREN:

-        jj_consume_token(O_OPENPAREN);

-        precision = jj_consume_token(S_NUMBER);

-        jj_consume_token(O_CLOSEPAREN);

-        break;

-      default:

-        ;

-      }

-              if (t == null) {

-              if (precision == null) {

-                  dt = new LongType();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  dt = new LongType(pl);

-              }

-              }

-              else {

-              if (precision == null) {

-                  dt = new LongRawType();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  dt = new LongRawType(pl);

-              }

-            }

-            {if (true) return dt;}

-      break;

-    case K_RAW:

-      jj_consume_token(K_RAW);

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case O_OPENPAREN:

-        jj_consume_token(O_OPENPAREN);

-        precision = jj_consume_token(S_NUMBER);

-        jj_consume_token(O_CLOSEPAREN);

-        break;

-      default:

-        ;

-      }

-            if (precision == null) {

-                dt = new RawType();

-            }

-            else {

-                pl = Long.decode(precision.image);

-                dt = new RawType(pl);

-            }

-            {if (true) return dt;}

-      break;

-    case K_BOOLEAN:

-      jj_consume_token(K_BOOLEAN);

-                    {if (true) return BOOLEAN_TYPE;}

-      break;

-    case K_XMLTYPE:

-      jj_consume_token(K_XMLTYPE);

-                    {if (true) return XMLTYPE_TYPE;}

-      break;

-    case K_SYSXMLTYPE:

-      jj_consume_token(K_SYSXMLTYPE);

-                       {if (true) return XMLTYPE_TYPE;}

-      break;

-    case K_DATE:

-      jj_consume_token(K_DATE);

-                 {if (true) return DATE_TYPE;}

-      break;

-    case K_INTERVAL:

-      jj_consume_token(K_INTERVAL);

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_DAY:

-        jj_consume_token(K_DAY);

-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-        case O_OPENPAREN:

-          jj_consume_token(O_OPENPAREN);

-          precision = jj_consume_token(S_NUMBER);

-          jj_consume_token(O_CLOSEPAREN);

-          break;

-        default:

-          ;

-        }

-        jj_consume_token(R_TO);

-        jj_consume_token(K_SECOND);

-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-        case O_OPENPAREN:

-          jj_consume_token(O_OPENPAREN);

-          scale = jj_consume_token(S_NUMBER);

-          jj_consume_token(O_CLOSEPAREN);

-          break;

-        default:

-          ;

-        }

-                if (precision == null) {

-                        dt = new IntervalDayToSecond();

-                    }

-                    else {

-                        pl = Long.decode(precision.image);

-                        if (scale == null) {

-                            dt = new IntervalDayToSecond(pl);

-                        }

-                        else {

-                            sl = Long.decode(scale.image);

-                            dt = new IntervalDayToSecond(pl, sl);

-                        }

-                    }

-                {if (true) return dt;}

-        break;

-      case K_YEAR:

-        jj_consume_token(K_YEAR);

-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-        case O_OPENPAREN:

-          jj_consume_token(O_OPENPAREN);

-          jj_consume_token(S_NUMBER);

-          jj_consume_token(O_CLOSEPAREN);

-          break;

-        default:

-          ;

-        }

-        jj_consume_token(R_TO);

-        jj_consume_token(K_MONTH);

-                if (precision == null) {

-                    dt = new IntervalYearToMonth();

-                }

-                else {

-                    pl = Long.decode(precision.image);

-                    dt = new IntervalYearToMonth(pl);

-                }

-                {if (true) return dt;}

-        break;

-      default:

-        jj_consume_token(-1);

-        throw new ParseException();

-      }

-      break;

-    case K_TIME:

-      jj_consume_token(K_TIME);

-                 {if (true) return TIME_TYPE;}

-      break;

-    case K_TIMESTAMP:

-      jj_consume_token(K_TIMESTAMP);

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case O_OPENPAREN:

-        jj_consume_token(O_OPENPAREN);

-        precision = jj_consume_token(S_NUMBER);

-        jj_consume_token(O_CLOSEPAREN);

-        break;

-      default:

-        ;

-      }

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case R_WITH:

-        jj_consume_token(R_WITH);

-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-        case K_LOCAL:

-          withLocalTimeZone = jj_consume_token(K_LOCAL);

-          break;

-        default:

-          ;

-        }

-        withTimeZone = jj_consume_token(K_TIME);

-        jj_consume_token(K_ZONE);

-        break;

-      default:

-        ;

-      }

-          if (precision == null) {

-              dt = new TimeStampType();

-          }

-          else {

-              pl = Long.decode(precision.image);

-              dt = new TimeStampType(pl);

-          }

-          if (withLocalTimeZone !=  null) {

-              ((TimeStampType)dt).setWithLocalTimeZone();

-          }

-          else if (withTimeZone != null) {

-              ((TimeStampType)dt).setWithTimeZone();

-          }

-          {if (true) return dt;}

-      break;

-    case K_INTEGER:

-      jj_consume_token(K_INTEGER);

-                     {if (true) return INTEGER_TYPE;}

-      break;

-    case K_INT:

-      jj_consume_token(K_INT);

-                     {if (true) return INTEGER_TYPE;}

-      break;

-    case K_SMALLINT:

-      jj_consume_token(K_SMALLINT);

-                     {if (true) return SMALLINT_TYPE;}

-      break;

-    case K_FLOAT:

-      jj_consume_token(K_FLOAT);

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case O_OPENPAREN:

-        jj_consume_token(O_OPENPAREN);

-        precision = jj_consume_token(S_NUMBER);

-        jj_consume_token(O_CLOSEPAREN);

-        break;

-      default:

-        ;

-      }

-          if (precision == null) {

-              {if (true) return new FloatType();}

-          }

-          else {

-              pl = Long.decode(precision.image);

-              FloatType ft = new FloatType(pl);

-              {if (true) return ft;}

-          }

-      break;

-    case K_REAL:

-      jj_consume_token(K_REAL);

-                 {if (true) return new RealType();}

-      break;

-    case K_MLSLABEL:

-      jj_consume_token(K_MLSLABEL);

-                     {if (true) return MLSLABEL_TYPE;}

-      break;

-    case K_PLS_INTEGER:

-      jj_consume_token(K_PLS_INTEGER);

-                        {if (true) return PLS_INTEGER_TYPE;}

-      break;

-    case K_SIMPLE_INTEGER:

-      jj_consume_token(K_SIMPLE_INTEGER);

-                           {if (true) return SIMPLE_INTEGER_TYPE;}

-      break;

-    case K_SIMPLE_FLOAT:

-      jj_consume_token(K_SIMPLE_FLOAT);

-                         {if (true) return SIMPLE_FLOAT_TYPE;}

-      break;

-    case K_SIMPLE_DOUBLE:

-      jj_consume_token(K_SIMPLE_DOUBLE);

-                          {if (true) return SIMPLE_DOUBLE_TYPE;}

-      break;

-    case K_SYS_REFCURSOR:

-      jj_consume_token(K_SYS_REFCURSOR);

-                           {if (true) return SYS_REFCURSOR_TYPE;}

-      break;

-    case K_BLOB:

-      jj_consume_token(K_BLOB);

-                  {if (true) return new BlobType();}

-      break;

-    case K_NCLOB:

-      jj_consume_token(K_NCLOB);

-                  {if (true) return new NClobType();}

-      break;

-    case K_BFILE:

-      jj_consume_token(K_BFILE);

-                   {if (true) return BFILE_TYPE;}

-      break;

-    case K_ROWID:

-      jj_consume_token(K_ROWID);

-                  {if (true) return ROWID_TYPE;}

-      break;

-    case K_UROWID:

-      jj_consume_token(K_UROWID);

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case O_OPENPAREN:

-        jj_consume_token(O_OPENPAREN);

-        precision = jj_consume_token(S_NUMBER);

-        jj_consume_token(O_CLOSEPAREN);

-        break;

-      default:

-        ;

-      }

-          if (precision == null) {

-              {if (true) return new URowIdType();}

-          }

-          else {

-              pl = Long.decode(precision.image);

-              {if (true) return new URowIdType(pl);}

-          }

-      break;

-    case K_DOUBLE:

-      jj_consume_token(K_DOUBLE);

-      jj_consume_token(K_PRECISION);

-                                 {if (true) return new DoubleType();}

-      break;

-    case K_CHAR:

-      jj_consume_token(K_CHAR);

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_VARYING:

-        t = jj_consume_token(K_VARYING);

-        break;

-      default:

-        ;

-      }

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case O_OPENPAREN:

-        jj_consume_token(O_OPENPAREN);

-        precision = jj_consume_token(S_NUMBER);

-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-        case K_BYTE:

-        case K_CHAR:

-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-          case K_BYTE:

-            jj_consume_token(K_BYTE);

-            break;

-          case K_CHAR:

-            jj_consume_token(K_CHAR);

-            break;

-          default:

-            jj_consume_token(-1);

-            throw new ParseException();

-          }

-          break;

-        default:

-          ;

-        }

-        jj_consume_token(O_CLOSEPAREN);

-        break;

-      default:

-        ;

-      }

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_CHARACTER:

-        jj_consume_token(K_CHARACTER);

-        jj_consume_token(K_SET);

-        jj_consume_token(S_IDENTIFIER);

-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-        case R_CHARSET:

-          jj_consume_token(R_CHARSET);

-          break;

-        default:

-          ;

-        }

-        break;

-      default:

-        ;

-      }

-          if (t == null) {

-              if (precision == null) {

-                  {if (true) return new CharType();}

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  {if (true) return new CharType(pl);}

-              }

-          }

-          else {

-              // ANSI syntax for VARCHAR2

-              if (precision == null) {

-                  {if (true) return new VarChar2Type();}

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  {if (true) return new VarChar2Type(pl);}

-              }

-          }

-      break;

-    case K_VARCHAR:

-      jj_consume_token(K_VARCHAR);

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_VARYING:

-        jj_consume_token(K_VARYING);

-        break;

-      default:

-        ;

-      }

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case O_OPENPAREN:

-        jj_consume_token(O_OPENPAREN);

-        precision = jj_consume_token(S_NUMBER);

-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-        case K_BYTE:

-        case K_CHAR:

-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-          case K_BYTE:

-            jj_consume_token(K_BYTE);

-            break;

-          case K_CHAR:

-            jj_consume_token(K_CHAR);

-            break;

-          default:

-            jj_consume_token(-1);

-            throw new ParseException();

-          }

-          break;

-        default:

-          ;

-        }

-        jj_consume_token(O_CLOSEPAREN);

-        break;

-      default:

-        ;

-      }

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_CHARACTER:

-        jj_consume_token(K_CHARACTER);

-        jj_consume_token(K_SET);

-        jj_consume_token(S_IDENTIFIER);

-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-        case R_CHARSET:

-          jj_consume_token(R_CHARSET);

-          break;

-        default:

-          ;

-        }

-        break;

-      default:

-        ;

-      }

-          if (precision == null) {

-              {if (true) return new VarCharType();}

-          }

-          else {

-              pl = Long.decode(precision.image);

-              {if (true) return new VarCharType(pl);}

-          }

-      break;

-    case K_VARCHAR2:

-      jj_consume_token(K_VARCHAR2);

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_VARYING:

-        jj_consume_token(K_VARYING);

-        break;

-      default:

-        ;

-      }

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case O_OPENPAREN:

-        jj_consume_token(O_OPENPAREN);

-        precision = jj_consume_token(S_NUMBER);

-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-        case K_BYTE:

-        case K_CHAR:

-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-          case K_BYTE:

-            jj_consume_token(K_BYTE);

-            break;

-          case K_CHAR:

-            jj_consume_token(K_CHAR);

-            break;

-          default:

-            jj_consume_token(-1);

-            throw new ParseException();

-          }

-          break;

-        default:

-          ;

-        }

-        jj_consume_token(O_CLOSEPAREN);

-        break;

-      default:

-        ;

-      }

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_CHARACTER:

-        jj_consume_token(K_CHARACTER);

-        jj_consume_token(K_SET);

-        jj_consume_token(S_IDENTIFIER);

-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-        case R_CHARSET:

-          jj_consume_token(R_CHARSET);

-          break;

-        default:

-          ;

-        }

-        break;

-      default:

-        ;

-      }

-            if (precision == null) {

-                {if (true) return new VarChar2Type();}

-            }

-            else {

-                pl = Long.decode(precision.image);

-                {if (true) return new VarChar2Type(pl);}

-            }

-      break;

-    case K_CHARACTER:

-      jj_consume_token(K_CHARACTER);

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_VARYING:

-        t = jj_consume_token(K_VARYING);

-        break;

-      default:

-        ;

-      }

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case O_OPENPAREN:

-        jj_consume_token(O_OPENPAREN);

-        precision = jj_consume_token(S_NUMBER);

-        jj_consume_token(O_CLOSEPAREN);

-        break;

-      default:

-        ;

-      }

-          if (t == null) {

-              if (precision == null) {

-                  {if (true) return new CharType();}

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  {if (true) return new CharType(pl);}

-              }

-          }

-          else {

-              // ANSI syntax for VARCHAR

-              if (precision == null) {

-                  {if (true) return new VarCharType();}

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  {if (true) return new VarCharType(pl);}

-              }

-          }

-      break;

-    case K_NCHAR:

-      jj_consume_token(K_NCHAR);

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_VARYING:

-        t = jj_consume_token(K_VARYING);

-        break;

-      default:

-        ;

-      }

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case O_OPENPAREN:

-        jj_consume_token(O_OPENPAREN);

-        precision = jj_consume_token(S_NUMBER);

-        jj_consume_token(O_CLOSEPAREN);

-        break;

-      default:

-        ;

-      }

-          if (t == null) {

-              if (precision == null) {

-                  {if (true) return new NCharType();}

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  {if (true) return new NCharType(pl);}

-              }

-          }

-          else {

-              // ANSI syntax for NVARCHAR2

-              if (precision == null) {

-                  {if (true) return new NVarChar2Type();}

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  {if (true) return new NVarChar2Type(pl);}

-              }

-          }

-      break;

-    case K_NVARCHAR:

-      jj_consume_token(K_NVARCHAR);

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case O_OPENPAREN:

-        jj_consume_token(O_OPENPAREN);

-        precision = jj_consume_token(S_NUMBER);

-        jj_consume_token(O_CLOSEPAREN);

-        break;

-      default:

-        ;

-      }

-            if (precision == null) {

-                {if (true) return new NVarChar2Type();}

-            }

-            else {

-                pl = Long.decode(precision.image);

-                {if (true) return new NVarChar2Type(pl);}

-            }

-      break;

-    case K_NVARCHAR2:

-      jj_consume_token(K_NVARCHAR2);

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case O_OPENPAREN:

-        jj_consume_token(O_OPENPAREN);

-        precision = jj_consume_token(S_NUMBER);

-        jj_consume_token(O_CLOSEPAREN);

-        break;

-      default:

-        ;

-      }

-            if (precision == null) {

-                {if (true) return new NVarChar2Type();}

-            }

-            else {

-                pl = Long.decode(precision.image);

-                {if (true) return new NVarChar2Type(pl);}

-            }

-      break;

-    case K_NATIONAL:

-      jj_consume_token(K_NATIONAL);

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_CHARACTER:

-        jj_consume_token(K_CHARACTER);

-        break;

-      case K_CHAR:

-        jj_consume_token(K_CHAR);

-        break;

-      default:

-        jj_consume_token(-1);

-        throw new ParseException();

-      }

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_VARYING:

-        t = jj_consume_token(K_VARYING);

-        break;

-      default:

-        ;

-      }

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case O_OPENPAREN:

-        jj_consume_token(O_OPENPAREN);

-        precision = jj_consume_token(S_NUMBER);

-        jj_consume_token(O_CLOSEPAREN);

-        break;

-      default:

-        ;

-      }

-          if (t == null) {

-              if (precision == null) {

-                  {if (true) return new NCharType();}

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  {if (true) return new NCharType(pl);}

-              }

-          }

-          else {

-              // ANSI syntax for NVARCHAR2

-              if (precision == null) {

-                  {if (true) return new NVarChar2Type();}

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  {if (true) return new NVarChar2Type(pl);}

-              }

-          }

-      break;

-    case K_CLOB:

-      jj_consume_token(K_CLOB);

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_CHARACTER:

-        jj_consume_token(K_CHARACTER);

-        jj_consume_token(K_SET);

-        jj_consume_token(S_IDENTIFIER);

-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-        case R_CHARSET:

-          jj_consume_token(R_CHARSET);

-          break;

-        default:

-          ;

-        }

-        break;

-      default:

-        ;

-      }

-                                                                          {if (true) return new ClobType();}

-      break;

-    default:

-      jj_consume_token(-1);

-      throw new ParseException();

-    }

-    throw new Error("Missing return statement in function");

-  }

-

-  final public DatabaseType typeSpec() throws ParseException {

- boolean isTYPEType = false;

- boolean isROWTYPEType = false;

- DatabaseType dataType = null;

- String spec = null;

- String s = null;

-    if (jj_2_6(3)) {

-      dataType = datatype();

-    } else {

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_ARRAY:

-      case K_AUTHID:

-      case K_BFILE:

-      case K_BINARY_DOUBLE:

-      case K_BINARY_FLOAT:

-      case K_BINARY_INTEGER:

-      case K_BLOB:

-      case K_BOOLEAN:

-      case K_BYTE:

-      case K_CHAR:

-      case K_CHARACTER:

-      case K_CLOB:

-      case K_COMMIT:

-      case K_CONSTANT:

-      case K_CONSTRUCTOR:

-      case K_CURRENT_USER:

-      case K_DATE:

-      case K_DAY:

-      case K_DEC:

-      case K_DECIMAL:

-      case K_DEFINER:

-      case K_DELETE:

-      case K_DETERMINISTIC:

-      case K_DOUBLE:

-      case K_ENABLE:

-      case K_FINAL:

-      case K_FLOAT:

-      case K_FORCE:

-      case K_GLOBAL:

-      case K_INSTANTIABLE:

-      case K_INT:

-      case K_INTEGER:

-      case K_INTERVAL:

-      case K_KEY:

-      case K_LOCAL:

-      case K_LONG:

-      case K_MLSLABEL:

-      case K_MONTH:

-      case K_NATIONAL:

-      case K_NATURAL:

-      case K_NCHAR:

-      case K_NCLOB:

-      case K_NOCOPY:

-      case K_NUMBER:

-      case K_NUMERIC:

-      case K_NVARCHAR2:

-      case K_NVARCHAR:

-      case K_OBJECT:

-      case K_OID:

-      case K_ORGANIZATION:

-      case K_OUT:

-      case K_OVERFLOW:

-      case K_PACKAGE:

-      case K_PARALLEL_ENABLE:

-      case K_PIPELINED:

-      case K_PLS_INTEGER:

-      case K_POSITIVE:

-      case K_PRAGMA:

-      case K_PRECISION:

-      case K_PRESERVE:

-      case K_RANGE:

-      case K_RAW:

-      case K_REAL:

-      case K_RECORD:

-      case K_REF:

-      case K_REPLACE:

-      case K_RESULT:

-      case K_RESULT_CACHE:

-      case K_RETURN:

-      case K_ROWID:

-      case K_ROWS:

-      case K_SECOND:

-      case K_SELF:

-      case K_SET:

-      case K_SIGNTYPE:

-      case K_SIMPLE_DOUBLE:

-      case K_SIMPLE_FLOAT:

-      case K_SIMPLE_INTEGER:

-      case K_SMALLINT:

-      case K_STRING:

-      case K_SYS_REFCURSOR:

-      case K_TEMPORARY:

-      case K_TIME:

-      case K_TIMESTAMP:

-      case K_UROWID:

-      case K_VARCHAR2:

-      case K_VARCHAR:

-      case K_VARRAY:

-      case K_VARYING:

-      case K_XMLTYPE:

-      case K_SYSXMLTYPE:

-      case K_YEAR:

-      case K_ZONE:

-      case S_IDENTIFIER:

-      case S_QUOTED_IDENTIFIER:

-        spec = columnSpec();

-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-        case O_OPENPAREN:

-        case R_ANCHORED_ROWTYPE:

-        case R_ANCHORED_TYPE:

-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-          case O_OPENPAREN:

-            jj_consume_token(O_OPENPAREN);

-            jj_consume_token(S_NUMBER);

-            jj_consume_token(O_CLOSEPAREN);

-            break;

-          case R_ANCHORED_TYPE:

-            jj_consume_token(R_ANCHORED_TYPE);

-              isTYPEType=true;

-              s = spec + removeQuotes(tokenImage[R_ANCHORED_TYPE]);

-            break;

-          case R_ANCHORED_ROWTYPE:

-            jj_consume_token(R_ANCHORED_ROWTYPE);

-              isROWTYPEType =true;

-              s = spec + removeQuotes(tokenImage[R_ANCHORED_ROWTYPE]);

-            break;

-          default:

-            jj_consume_token(-1);

-            throw new ParseException();

-          }

-          break;

-        default:

-          ;

-        }

-        break;

-      default:

-        jj_consume_token(-1);

-        throw new ParseException();

-      }

-    }

-      if (dataType == null && localTypes != null) {

-          // spec may need schema/catalog stripped off

-          String tName = spec;

-          StringTokenizer stok = new StringTokenizer(spec, ".");

-          while (stok.hasMoreTokens()) {

-              tName = stok.nextToken();

-          }

-          for (String typeName : localTypes.keySet()) {

-              if (typeName.equals(spec)) {

-                  dataType = localTypes.get(spec);

-                  break;

-              } else if (typeName.equals(tName)) {

-                  dataType = localTypes.get(tName);

-                  break;

-              }

-          }

-      }

-      if (dataType == null) {

-          UnresolvedType uType = new UnresolvedType(spec);

-          if (isTYPEType) {

-              TYPEType tType = new TYPEType(s);

-              tType.setEnclosedType(uType);

-              uType.setOwningType(tType);

-              dataType = tType;

-              localTypes.put(spec, dataType);

-          }

-          else if (isROWTYPEType) {

-              ROWTYPEType rType = new ROWTYPEType(s);

-              rType.setEnclosedType(uType);

-              uType.setOwningType(rType);

-              dataType = rType;

-              localTypes.put(spec, dataType);

-          }

-          else {

-              dataType = uType;

-          }

-      }

-      {if (true) return dataType;}

-    throw new Error("Missing return statement in function");

-  }

-

-  final public String columnSpec() throws ParseException {

- String s1 = null;

- String s2 = null;

- String s3 = null;

-    s1 = OracleObjectName();

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case O_DOT:

-      jj_consume_token(O_DOT);

-      s2 = OracleObjectName();

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case O_DOT:

-        jj_consume_token(O_DOT);

-        s3 = OracleObjectName();

-        break;

-      default:

-        ;

-      }

-      break;

-    default:

-      ;

-    }

-      StringBuilder sb = new StringBuilder(s1);

-      if (s2 != null) {

-          sb.append('.');

-          sb.append(s2);

-          if (s3 != null) {

-              sb.append('.');

-              sb.append(s3);

-          }

-      }

-      {if (true) return sb.toString();}

-    throw new Error("Missing return statement in function");

-  }

-

-  final public String tableSpec() throws ParseException {

-    OracleObjectName();

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case O_DOT:

-      jj_consume_token(O_DOT);

-      OracleObjectName();

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case O_ATSIGN:

-        jj_consume_token(O_ATSIGN);

-        jj_consume_token(S_IDENTIFIER);

-        break;

-      default:

-        ;

-      }

-      break;

-    default:

-      ;

-    }

-     {if (true) return token.image;}

-    throw new Error("Missing return statement in function");

-  }

-

-  final public String typeName() throws ParseException {

-    OracleObjectName();

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case O_DOT:

-      jj_consume_token(O_DOT);

-      OracleObjectName();

-      break;

-    default:

-      ;

-    }

-     {if (true) return token.image;}

-    throw new Error("Missing return statement in function");

-  }

-

-  final public void typeOrSubTypeDeclaration(PLSQLPackageType packageType) throws ParseException {

- String s = null;

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_TYPE:

-      typeDeclaration(packageType);

-      break;

-    case R_SUBTYPE:

-      subtypeDeclaration(packageType);

-      break;

-    default:

-      jj_consume_token(-1);

-      throw new ParseException();

-    }

-  }

-

-  final public void typeDeclaration(PLSQLPackageType packageType) throws ParseException {

- String s = null;

-    jj_consume_token(R_TYPE);

-    s = typeName();

-    jj_consume_token(R_IS);

-    aTypeDeclaration(packageType, s);

-    jj_consume_token(O_SEMICOLON);

-  }

-

-  final public void aTypeDeclaration(PLSQLPackageType packageType, String typeName) throws ParseException {

- String spec = null;

- String anchoredTypeName = null;

- boolean isTYPEType = false;

- boolean isROWTYPEType = false;

-    if (jj_2_7(2)) {

-      recordDeclaration(packageType, typeName);

-    } else {

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case R_TABLE:

-        plsqlTableDeclaration(packageType, typeName);

-        break;

-      default:

-        if (jj_2_8(2)) {

-          varrayDeclaration(packageType);

-        } else if (jj_2_9(2)) {

-          refCursorDeclaration(packageType, typeName);

-        } else if (jj_2_10(2)) {

-          spec = columnSpec();

-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-          case R_ANCHORED_TYPE:

-            jj_consume_token(R_ANCHORED_TYPE);

-            isTYPEType=true;

-            anchoredTypeName = spec + removeQuotes(tokenImage[R_ANCHORED_TYPE]);

-            break;

-          case R_ANCHORED_ROWTYPE:

-            jj_consume_token(R_ANCHORED_ROWTYPE);

-            isROWTYPEType =true;

-            anchoredTypeName = spec + removeQuotes(tokenImage[R_ANCHORED_ROWTYPE]);

-            break;

-          default:

-            jj_consume_token(-1);

-            throw new ParseException();

-          }

-         DatabaseType dataType = null;

-         UnresolvedType uType = new UnresolvedType(anchoredTypeName);

-         if (isTYPEType) {

-             TYPEType tType = new TYPEType(anchoredTypeName);

-             tType.setEnclosedType(uType);

-             uType.setOwningType(tType);

-             dataType = tType;

-         }

-         else if (isROWTYPEType) {

-             ROWTYPEType rType = new ROWTYPEType(anchoredTypeName);

-             rType.setEnclosedType(uType);

-             rType.setPackageType(packageType);

-             uType.setOwningType(rType);

-             dataType = rType;

-         }

-         PLSQLType newType = new PLSQLType(typeName);

-         newType.setEnclosedType(dataType);

-         packageType.addType(newType);

-         localTypes.put(typeName, newType);

-        } else {

-          jj_consume_token(-1);

-          throw new ParseException();

-        }

-      }

-    }

-  }

-

-  final public void recordDeclaration(PLSQLPackageType packageType, String typeName) throws ParseException {

-  PLSQLRecordType plsqlRecordType = new PLSQLRecordType(typeName);

-  plsqlRecordType.setParentType(packageType);

-    jj_consume_token(K_RECORD);

-    jj_consume_token(O_OPENPAREN);

-    fieldDeclarations(plsqlRecordType);

-    jj_consume_token(O_CLOSEPAREN);

-      packageType.addType(plsqlRecordType);

-      localTypes.put(typeName, plsqlRecordType);

-  }

-

-  final public void fieldDeclarations(PLSQLRecordType plsqlRecordType) throws ParseException {

-    fieldDeclaration(plsqlRecordType);

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case O_COMMA:

-      jj_consume_token(O_COMMA);

-      fieldDeclarations(plsqlRecordType);

-      break;

-    default:

-      ;

-    }

-  }

-

-  final public void fieldDeclaration(PLSQLRecordType plsqlRecordType) throws ParseException {

-  String s = null;

-  DatabaseType dataType = null;

-  FieldType fieldType = null;

-    s = typeName();

-    dataType = typeSpec();

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_NOT:

-      jj_consume_token(R_NOT);

-      jj_consume_token(R_NULL);

-      break;

-    default:

-      ;

-    }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case O_ASSIGN:

-    case R_DEFAULT:

-      fieldDefaultAssignment();

-      break;

-    default:

-      ;

-    }

-      fieldType = new FieldType(s);

-      fieldType.setEnclosedType(dataType);

-      plsqlRecordType.addField(fieldType);

-      if (dataType instanceof UnresolvedType) {

-          ((UnresolvedType)dataType).setOwningType(plsqlRecordType);

-      }

-  }

-

-  final public void fieldDefaultAssignment() throws ParseException {

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case O_ASSIGN:

-      jj_consume_token(O_ASSIGN);

-      break;

-    case R_DEFAULT:

-      jj_consume_token(R_DEFAULT);

-      break;

-    default:

-      jj_consume_token(-1);

-      throw new ParseException();

-    }

-    skipToNextArg();

-  }

-

-  final public void subtypeDeclaration(PLSQLPackageType packageType) throws ParseException {

- String subtypeName;

-DatabaseType subtype;

-Token notNull = null;

-Token rangeStart = null;

-Token rangeEnd = null;

-    jj_consume_token(R_SUBTYPE);

-    subtypeName = OracleObjectName();

-    jj_consume_token(R_IS);

-    subtype = typeSpec();

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_RANGE:

-      jj_consume_token(K_RANGE);

-      rangeStart = jj_consume_token(S_NUMBER);

-      jj_consume_token(O_DOUBLEDOT);

-      rangeEnd = jj_consume_token(S_NUMBER);

-      break;

-    default:

-      ;

-    }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_NOT:

-      jj_consume_token(R_NOT);

-      notNull = jj_consume_token(R_NULL);

-      break;

-    default:

-      ;

-    }

-    jj_consume_token(O_SEMICOLON);

-      PLSQLSubType newPLSQLSubType = new PLSQLSubType(subtypeName);

-      newPLSQLSubType.setEnclosedType(subtype);

-      if (subtype instanceof UnresolvedType) {

-          ((UnresolvedType)subtype).setOwningType(newPLSQLSubType);

-      }

-      if (subtype.isROWTYPEType()) {

-         ((ROWTYPEType)subtype).setPackageType(packageType);

-      }

-      packageType.addType(newPLSQLSubType);

-      if (notNull != null) {

-          newPLSQLSubType.setNotNull(true);

-      }

-      if (rangeStart != null) {

-          long rStart = Long.decode(rangeStart.image).longValue();

-          long rEnd = Long.decode(rangeEnd.image).longValue();

-          newPLSQLSubType.setHasRange(true);

-          newPLSQLSubType.setRangeStart(rStart);

-          newPLSQLSubType.setRangeEnd(rEnd);

-      }

-      localTypes.put(subtypeName, newPLSQLSubType);

-  }

-

-  final public void plsqlTableDeclaration(PLSQLPackageType packageType, String typeName) throws ParseException {

-  PLSQLCollectionType plsqlTable = new PLSQLCollectionType(typeName);

-  plsqlTable.setParentType(packageType);

-  DatabaseType nestedType;

-    jj_consume_token(R_TABLE);

-    jj_consume_token(R_OF);

-    nestedType = typeSpec();

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_NOT:

-      jj_consume_token(R_NOT);

-      jj_consume_token(R_NULL);

-      break;

-    default:

-      ;

-    }

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_INDEX:

-      jj_consume_token(R_INDEX);

-      jj_consume_token(R_BY);

-      plsqlTableIndexByDeclaration(plsqlTable);

-      break;

-    default:

-      ;

-    }

-      if (nestedType instanceof UnresolvedType) {

-        ((UnresolvedType)nestedType).setOwningType(plsqlTable);

-      }

-      plsqlTable.setEnclosedType(nestedType);

-      packageType.addType(plsqlTable);

-      localTypes.put(typeName, plsqlTable);

-  }

-

-  final public void plsqlTableIndexByDeclaration(PLSQLCollectionType plsqlTable) throws ParseException {

-  DatabaseType indexType = null;

-  Token precision = null;

-  Token otherIndexByType = null;

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_PLS_INTEGER:

-      jj_consume_token(K_PLS_INTEGER);

-                       indexType = PLS_INTEGER_TYPE;

-      break;

-    case K_BINARY_INTEGER:

-      jj_consume_token(K_BINARY_INTEGER);

-                           indexType = BINARY_INTEGER_TYPE;

-      break;

-    case K_VARCHAR2:

-      jj_consume_token(K_VARCHAR2);

-      jj_consume_token(O_OPENPAREN);

-      precision = jj_consume_token(S_NUMBER);

-      jj_consume_token(O_CLOSEPAREN);

-        if (precision == null) {

-            indexType = new VarChar2Type();

-        }

-        else {

-            Long pl = Long.decode(precision.image);

-            indexType = new VarChar2Type(pl);

-        }

-      break;

-    case K_STRING:

-      otherIndexByType = jj_consume_token(K_STRING);

-      jj_consume_token(O_OPENPAREN);

-      jj_consume_token(S_NUMBER);

-      jj_consume_token(O_CLOSEPAREN);

-        String indexTypename = otherIndexByType.image;

-        for (String typeName : localTypes.keySet()) {

-            if (typeName.equals(indexTypename)) {

-                indexType = localTypes.get(indexTypename);

-                break;

-            }

-        }

-        //what else can INDEX BY be? Unresolved for now ...

-        if (indexType == null) {

-            indexType = new UnresolvedType(indexTypename);

-            ((UnresolvedType)indexType).setOwningType(plsqlTable);

-        }

-      break;

-    default:

-      jj_consume_token(-1);

-      throw new ParseException();

-    }

-      plsqlTable.setIndexed(true);

-      plsqlTable.setIndexType(indexType);

-  }

-

-  final public void varrayDeclaration(PLSQLPackageType packageType) throws ParseException {

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_VARRAY:

-      jj_consume_token(K_VARRAY);

-      break;

-    case K_VARYING:

-      jj_consume_token(K_VARYING);

-      jj_consume_token(K_ARRAY);

-      break;

-    default:

-      jj_consume_token(-1);

-      throw new ParseException();

-    }

-    jj_consume_token(O_OPENPAREN);

-    jj_consume_token(S_NUMBER);

-    jj_consume_token(O_CLOSEPAREN);

-    jj_consume_token(R_OF);

-    datatype();

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_NOT:

-      jj_consume_token(R_NOT);

-      jj_consume_token(R_NULL);

-      break;

-    default:

-      ;

-    }

-  }

-

-  final public void refCursorDeclaration(PLSQLPackageType packageType, String cursorTypeName) throws ParseException {

- PLSQLCursorType cursorType = null;

-    jj_consume_token(K_REF);

-    jj_consume_token(R_CURSOR);

-        cursorType = new PLSQLCursorType(cursorTypeName);

-        cursorType.setParentType(packageType);

-        packageType.addCursor(cursorType);

-        localTypes.put(cursorTypeName, cursorType);

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_RETURN:

-      refCursorTypeSpec(cursorType, packageType);

-      break;

-    default:

-      ;

-    }

-  }

-

-  final public void refCursorTypeSpec(PLSQLCursorType cursorType, PLSQLPackageType packageType) throws ParseException {

- String s = null;

- String spec = null;

- boolean isTYPEType = false;

- boolean isROWTYPEType = false;

- DatabaseType localType = null;

-    jj_consume_token(K_RETURN);

-    spec = OracleObjectName();

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_ANCHORED_ROWTYPE:

-    case R_ANCHORED_TYPE:

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case R_ANCHORED_TYPE:

-        jj_consume_token(R_ANCHORED_TYPE);

-                  isTYPEType = true;

-                  s = spec + removeQuotes(tokenImage[R_ANCHORED_TYPE]);

-        break;

-      case R_ANCHORED_ROWTYPE:

-        jj_consume_token(R_ANCHORED_ROWTYPE);

-              isROWTYPEType = true;

-              s = spec + removeQuotes(tokenImage[R_ANCHORED_ROWTYPE]);

-        break;

-      default:

-        jj_consume_token(-1);

-        throw new ParseException();

-      }

-      break;

-    default:

-      ;

-    }

-      //check local variables first

-      for (FieldType varField : packageType.getLocalVariables()) {

-          if (spec.equals(varField.getFieldName())) {

-                  if (isTYPEType) {

-                      TYPEType tType = new TYPEType(s);

-                      UnresolvedType uType = new UnresolvedType(s);

-                      tType.setEnclosedType(uType);

-                      uType.setOwningType(tType);

-                      localType = tType;

-                  }

-                  else if (isROWTYPEType) {

-                      ROWTYPEType rType = new ROWTYPEType(s);

-                      rType.setPackageType(packageType);

-                      UnresolvedType uType = new UnresolvedType(s);

-                      rType.setEnclosedType(uType);

-                      uType.setOwningType(rType);

-                      localType = rType;

-                  }

-                  else {

-                      localType = varField.getEnclosedType();

-                  }

-                  cursorType.setEnclosedType(localType);

-              break;

-          }

-      }

-      if (localType == null) {

-          localType = localTypes.get(spec);

-          if (localType == null) {

-              UnresolvedType uType = new UnresolvedType(spec);

-              if (isTYPEType) {

-                  TYPEType tType = new TYPEType(s);

-                  tType.setEnclosedType(uType);

-                  uType.setOwningType(tType);

-                  cursorType.setEnclosedType(tType);

-              }

-              else if (isROWTYPEType) {

-                  ROWTYPEType rType = new ROWTYPEType(s);

-                  rType.setEnclosedType(uType);

-                  rType.setPackageType(packageType);

-                  uType.setOwningType(rType);

-                  cursorType.setEnclosedType(rType);

-              }

-              else {

-                  uType.setOwningType(cursorType);

-                  cursorType.setEnclosedType(uType);

-              }

-          }

-          else {

-              cursorType.setEnclosedType(localType);

-         }

-      }

-  }

-

-  final public void cursorDeclaration(PLSQLPackageType packageType) throws ParseException {

- Token t = null;

-    jj_consume_token(R_CURSOR);

-    skipToSemiColon();

-  }

-

-// Procedure Specification

-  final public void procedureSpec(PLSQLPackageType packageType) throws ParseException {

- String procedureName= null;

- ProcedureType procedureType = null;

-    jj_consume_token(R_PROCEDURE);

-    procedureName = OracleObjectName();

-            procedureType = new ProcedureType(procedureName);

-            procedureType.setCatalogName(packageType.getPackageName());

-            procedureType.setSchema(packageType.getSchema());

-            procedureType.setParentType(packageType);

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case O_OPENPAREN:

-      jj_consume_token(O_OPENPAREN);

-      argumentList(procedureType);

-      jj_consume_token(O_CLOSEPAREN);

-      break;

-    default:

-      ;

-    }

-    jj_consume_token(O_SEMICOLON);

-      packageType.addProcedure(procedureType);

-      for (ArgumentType argumentType : procedureType.getArguments()) {

-          DatabaseType databaseType = argumentType.getEnclosedType();

-          if (databaseType.isROWTYPEType()) {

-              ((ROWTYPEType)databaseType).setPackageType(packageType);

-          }

-      }

-  }

-

-  final public void argumentList(ProcedureType procedureType) throws ParseException {

-    argument(procedureType);

-    label_5:

-    while (true) {

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case O_COMMA:

-        ;

-        break;

-      default:

-        break label_5;

-      }

-      jj_consume_token(O_COMMA);

-      argument(procedureType);

-    }

-  }

-

-// Function Specification

-  final public void functionSpec(PLSQLPackageType packageType) throws ParseException {

- String functionName= null;

- FunctionType functionType = null;

- ArgumentType returnDataType = null;

-    jj_consume_token(R_FUNCTION);

-    functionName = OracleObjectName();

-            functionType = new FunctionType(functionName);

-            functionType.setCatalogName(packageType.getPackageName());

-            functionType.setSchema(packageType.getSchema());

-            functionType.setParentType(packageType);

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case O_OPENPAREN:

-      jj_consume_token(O_OPENPAREN);

-      argumentList(functionType);

-      jj_consume_token(O_CLOSEPAREN);

-      break;

-    default:

-      ;

-    }

-    returnDataType = functionReturnSpec(functionType);

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_DETERMINISTIC:

-    case K_PARALLEL_ENABLE:

-    case K_PIPELINED:

-    case K_RESULT_CACHE:

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_DETERMINISTIC:

-        jj_consume_token(K_DETERMINISTIC);

-        break;

-      case K_PIPELINED:

-        jj_consume_token(K_PIPELINED);

-        break;

-      case K_PARALLEL_ENABLE:

-        jj_consume_token(K_PARALLEL_ENABLE);

-        break;

-      case K_RESULT_CACHE:

-        jj_consume_token(K_RESULT_CACHE);

-        break;

-      default:

-        jj_consume_token(-1);

-        throw new ParseException();

-      }

-      break;

-    default:

-      ;

-    }

-    jj_consume_token(O_SEMICOLON);

-      functionType.setReturnArgument(returnDataType);

-      packageType.addProcedure(functionType);

-      for (ArgumentType argumentType : functionType.getArguments()) {

-          DatabaseType databaseType = argumentType.getEnclosedType();

-          if (databaseType.isROWTYPEType()) {

-              ((ROWTYPEType)databaseType).setPackageType(packageType);

-          }

-      }

-      if (returnDataType.getEnclosedType().isROWTYPEType()) {

-          ((ROWTYPEType)returnDataType.getEnclosedType()).setPackageType(packageType);

-      }

-  }

-

-  final public ArgumentType functionReturnSpec(FunctionType functionType) throws ParseException {

- DatabaseType dataType = null;

-    jj_consume_token(K_RETURN);

-    dataType = typeSpec();

-      ArgumentType returnType = new ArgumentType(null);

-      returnType.setDirection(ArgumentTypeDirection.RETURN);

-      // may need to strip off schema/catalog name

-      if (dataType.getTypeName().contains(".")) {

-          String dataTypeName = dataType.getTypeName();

-          int dotIdx = dataTypeName.indexOf(".");

-          String namePart1 = dataTypeName.substring(0, dotIdx);

-          String namePart2 = dataTypeName.substring(dotIdx+1, dataTypeName.length());

-          if (namePart1.equals(functionType.getCatalogName()) || namePart1.equals(functionType.getSchema())) {

-              dataType.setTypeName(namePart2);

-          } else if (schemaPatterns != null) {

-              for (String possibleSchemaName : schemaPatterns) {

-                  if (namePart1.equals(possibleSchemaName)) {

-                      dataType.setTypeName(namePart2);

-                      break;

-                  }

-              }

-          }

-      }

-      returnType.setEnclosedType(dataType);

-      if (dataType instanceof UnresolvedType) {

-          ((UnresolvedType)dataType).setOwningType(returnType);

-      }

-      {if (true) return returnType;}

-    throw new Error("Missing return statement in function");

-  }

-

-  final public void argument(ProcedureType procedureType) throws ParseException {

- String s = null;

- ArgumentType argumentType = null;

- DatabaseType argumentDataType = null;

- ArgumentTypeDirection argDirection = ArgumentTypeDirection.IN; // by default, arguments are IN

- String direction = null;

- boolean defaultAssignment = false;

-    s = OracleObjectName();

-    if (jj_2_11(2)) {

-      direction = direction();

-    } else {

-      ;

-    }

-    if (jj_2_12(2)) {

-      jj_consume_token(K_NOCOPY);

-    } else {

-      ;

-    }

-    argumentDataType = typeSpec();

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case O_ASSIGN:

-    case R_DEFAULT:

-      defaultAssignment = argumentDefaultAssignment();

-      break;

-    default:

-      ;

-    }

-      // may need to strip off schema/catalog name

-      if (argumentDataType.getTypeName().contains(".")) {

-          String argumentDataTypeName = argumentDataType.getTypeName();

-          int dotIdx = argumentDataTypeName.indexOf(".");

-          String namePart1 = argumentDataTypeName.substring(0, dotIdx);

-          String namePart2 = argumentDataTypeName.substring(dotIdx+1, argumentDataTypeName.length());

-          if (namePart1.equals(procedureType.getCatalogName()) || namePart1.equals(procedureType.getSchema())) {

-              argumentDataType.setTypeName(namePart2);

-          } else if (schemaPatterns != null) {

-              for (String possibleSchemaName : schemaPatterns) {

-                  if (namePart1.equals(possibleSchemaName)) {

-                      argumentDataType.setTypeName(namePart2);

-                      break;

-                  }

-              }

-          }

-      }

-      argumentType = new ArgumentType(s);

-      argumentType.setEnclosedType(argumentDataType);

-      if (argumentDataType instanceof UnresolvedType) {

-          ((UnresolvedType)argumentDataType).setOwningType(argumentType);

-      }

-      if (direction != null) {

-          if ("OUT".equals(direction)) {

-              argDirection = ArgumentTypeDirection.OUT;

-          }

-          else if ("IN OUT".equals(direction)) {

-              argDirection = ArgumentTypeDirection.INOUT;

-          }

-      }

-      argumentType.setDirection(argDirection);

-      if (defaultAssignment) {

-          argumentType.setOptional();

-      }

-      procedureType.addArgument(argumentType);

-  }

-

-  final public boolean argumentDefaultAssignment() throws ParseException {

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case O_ASSIGN:

-      jj_consume_token(O_ASSIGN);

-      break;

-    case R_DEFAULT:

-      jj_consume_token(R_DEFAULT);

-      break;

-    default:

-      jj_consume_token(-1);

-      throw new ParseException();

-    }

-    skipToNextArg();

-      {if (true) return true;}

-    throw new Error("Missing return statement in function");

-  }

-

-  final public void exceptionDeclaration() throws ParseException {

-    jj_consume_token(S_IDENTIFIER);

-    jj_consume_token(R_EXCEPTION);

-    jj_consume_token(O_SEMICOLON);

-  }

-

-  final public void pragmaDeclaration() throws ParseException {

-    jj_consume_token(K_PRAGMA);

-    skipToSemiColon();

-  }

-

-  final public void orReplace() throws ParseException {

-    jj_consume_token(R_OR);

-    jj_consume_token(K_REPLACE);

-  }

-

-  final public void invokerRights() throws ParseException {

-    jj_consume_token(K_AUTHID);

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_CURRENT_USER:

-      jj_consume_token(K_CURRENT_USER);

-      break;

-    case K_DEFINER:

-      jj_consume_token(K_DEFINER);

-      break;

-    default:

-      jj_consume_token(-1);

-      throw new ParseException();

-    }

-  }

-

-  final public void as() throws ParseException {

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case R_AS:

-      jj_consume_token(R_AS);

-      break;

-    case R_IS:

-      jj_consume_token(R_IS);

-      break;

-    default:

-      jj_consume_token(-1);

-      throw new ParseException();

-    }

-  }

-

-  final public void onCommit() throws ParseException {

-    jj_consume_token(R_ON);

-    jj_consume_token(K_COMMIT);

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_DELETE:

-      jj_consume_token(K_DELETE);

-      break;

-    case K_PRESERVE:

-      jj_consume_token(K_PRESERVE);

-      break;

-    default:

-      jj_consume_token(-1);

-      throw new ParseException();

-    }

-    jj_consume_token(K_ROWS);

-  }

-

-  final public boolean notNull() throws ParseException {

-    jj_consume_token(R_NOT);

-    jj_consume_token(R_NULL);

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case K_ENABLE:

-      jj_consume_token(K_ENABLE);

-      break;

-    default:

-      ;

-    }

-      {if (true) return true;}

-    throw new Error("Missing return statement in function");

-  }

-

-  final public String direction() throws ParseException {

- String dir = "";

-    if (jj_2_14(2)) {

-      jj_consume_token(R_IN);

-                dir = "IN";

-      if (jj_2_13(2)) {

-        jj_consume_token(K_OUT);

-                                                     dir += " OUT";

-      } else {

-        ;

-      }

-    } else {

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case K_OUT:

-        jj_consume_token(K_OUT);

-                 dir = "OUT";

-        break;

-      default:

-        jj_consume_token(-1);

-        throw new ParseException();

-      }

-    }

-      {if (true) return dir;}

-    throw new Error("Missing return statement in function");

-  }

-

-  final public String OracleObjectName() throws ParseException {

- String keyword=null;

-    if (jj_2_15(2)) {

-      keyword = keywords();

-                          {if (true) return keyword;}

-    } else {

-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-      case S_IDENTIFIER:

-        jj_consume_token(S_IDENTIFIER);

-                      {if (true) return token.image;}

-        break;

-      case S_QUOTED_IDENTIFIER:

-        jj_consume_token(S_QUOTED_IDENTIFIER);

-                              {if (true) return removeQuotes(token.image);}

-        break;

-      default:

-        jj_consume_token(-1);

-        throw new ParseException();

-      }

-    }

-    throw new Error("Missing return statement in function");

-  }

-

-  final public String OracleObjectNamePossiblyDotted() throws ParseException {

- String possiblyDottedName = "";

- String afterDot = null;

-    possiblyDottedName = OracleObjectName();

-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {

-    case O_DOT:

-      jj_consume_token(O_DOT);

-      afterDot = OracleObjectName();

-      break;

-    default:

-      ;

-    }

-      if (afterDot != null) {

-          possiblyDottedName += "." + afterDot;

-      }

-      {if (true) return possiblyDottedName;}

-    throw new Error("Missing return statement in function");

-  }

-

-  final public void skipToSemiColon() throws ParseException {

-        Token t = getNextToken();

-        while (t.kind != O_SEMICOLON) {

-                t = getNextToken();

-        }

-        token_source.input_stream.backup(1);

-  }

-

-  final public void skipToClosingParen() throws ParseException {

-        Token t = getNextToken();

-        while (t.kind != O_CLOSEPAREN) {

-            t = getNextToken();

-        }

-        token_source.input_stream.backup(1);

-  }

-

-  final public void skipToNextArg() throws ParseException {

-        Token t = getNextToken();

-        while (t.kind != O_COMMA && t.kind != O_CLOSEPAREN) {

-            t = getNextToken();

-        }

-        token_source.input_stream.backup(1);

-  }

-

-  final public void skipToEnd() throws ParseException {

-      /** skip through all the tokens. */

-      Token t = getNextToken();

-      while (t.kind != EOF) {

-          t = getNextToken();

-      }

-  }

-

-  final public void skipToReturn() throws ParseException {

-        Token t = getNextToken();

-        while (t.kind != K_RETURN) {

-                t = getNextToken();

-        }

-  }

-

-  final public void constructor() throws ParseException {

-     Token t = token;

-    jj_consume_token(K_CONSTRUCTOR);

-    token = t;

-  }

-

-  private boolean jj_2_1(int xla) {

-    jj_la = xla; jj_lastpos = jj_scanpos = token;

-    try { return !jj_3_1(); }

-    catch(LookaheadSuccess ls) { return true; }

-  }

-

-  private boolean jj_2_2(int xla) {

-    jj_la = xla; jj_lastpos = jj_scanpos = token;

-    try { return !jj_3_2(); }

-    catch(LookaheadSuccess ls) { return true; }

-  }

-

-  private boolean jj_2_3(int xla) {

-    jj_la = xla; jj_lastpos = jj_scanpos = token;

-    try { return !jj_3_3(); }

-    catch(LookaheadSuccess ls) { return true; }

-  }

-

-  private boolean jj_2_4(int xla) {

-    jj_la = xla; jj_lastpos = jj_scanpos = token;

-    try { return !jj_3_4(); }

-    catch(LookaheadSuccess ls) { return true; }

-  }

-

-  private boolean jj_2_5(int xla) {

-    jj_la = xla; jj_lastpos = jj_scanpos = token;

-    try { return !jj_3_5(); }

-    catch(LookaheadSuccess ls) { return true; }

-  }

-

-  private boolean jj_2_6(int xla) {

-    jj_la = xla; jj_lastpos = jj_scanpos = token;

-    try { return !jj_3_6(); }

-    catch(LookaheadSuccess ls) { return true; }

-  }

-

-  private boolean jj_2_7(int xla) {

-    jj_la = xla; jj_lastpos = jj_scanpos = token;

-    try { return !jj_3_7(); }

-    catch(LookaheadSuccess ls) { return true; }

-  }

-

-  private boolean jj_2_8(int xla) {

-    jj_la = xla; jj_lastpos = jj_scanpos = token;

-    try { return !jj_3_8(); }

-    catch(LookaheadSuccess ls) { return true; }

-  }

-

-  private boolean jj_2_9(int xla) {

-    jj_la = xla; jj_lastpos = jj_scanpos = token;

-    try { return !jj_3_9(); }

-    catch(LookaheadSuccess ls) { return true; }

-  }

-

-  private boolean jj_2_10(int xla) {

-    jj_la = xla; jj_lastpos = jj_scanpos = token;

-    try { return !jj_3_10(); }

-    catch(LookaheadSuccess ls) { return true; }

-  }

-

-  private boolean jj_2_11(int xla) {

-    jj_la = xla; jj_lastpos = jj_scanpos = token;

-    try { return !jj_3_11(); }

-    catch(LookaheadSuccess ls) { return true; }

-  }

-

-  private boolean jj_2_12(int xla) {

-    jj_la = xla; jj_lastpos = jj_scanpos = token;

-    try { return !jj_3_12(); }

-    catch(LookaheadSuccess ls) { return true; }

-  }

-

-  private boolean jj_2_13(int xla) {

-    jj_la = xla; jj_lastpos = jj_scanpos = token;

-    try { return !jj_3_13(); }

-    catch(LookaheadSuccess ls) { return true; }

-  }

-

-  private boolean jj_2_14(int xla) {

-    jj_la = xla; jj_lastpos = jj_scanpos = token;

-    try { return !jj_3_14(); }

-    catch(LookaheadSuccess ls) { return true; }

-  }

-

-  private boolean jj_2_15(int xla) {

-    jj_la = xla; jj_lastpos = jj_scanpos = token;

-    try { return !jj_3_15(); }

-    catch(LookaheadSuccess ls) { return true; }

-  }

-

-  private boolean jj_3R_61() {

-    if (jj_scan_token(K_VARYING)) return true;

-    if (jj_scan_token(K_ARRAY)) return true;

-    return false;

-  }

-

-  private boolean jj_3_2() {

-    if (jj_3R_7()) return true;

-    return false;

-  }

-

-  private boolean jj_3_10() {

-    if (jj_3R_12()) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_13()) {

-    jj_scanpos = xsp;

-    if (jj_3R_14()) return true;

-    }

-    return false;

-  }

-

-  private boolean jj_3_9() {

-    if (jj_3R_11()) return true;

-    return false;

-  }

-

-  private boolean jj_3_8() {

-    if (jj_3R_10()) return true;

-    return false;

-  }

-

-  private boolean jj_3R_24() {

-    if (jj_scan_token(K_LONG)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_scan_token(189)) jj_scanpos = xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_65()) jj_scanpos = xsp;

-    return false;

-  }

-

-  private boolean jj_3R_54() {

-    if (jj_scan_token(K_NCHAR)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_scan_token(216)) jj_scanpos = xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_80()) jj_scanpos = xsp;

-    return false;

-  }

-

-  private boolean jj_3R_77() {

-    if (jj_scan_token(O_OPENPAREN)) return true;

-    if (jj_scan_token(S_NUMBER)) return true;

-    return false;

-  }

-

-  private boolean jj_3_7() {

-    if (jj_3R_9()) return true;

-    return false;

-  }

-

-  private boolean jj_3R_11() {

-    if (jj_scan_token(K_REF)) return true;

-    if (jj_scan_token(R_CURSOR)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_10() {

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_scan_token(215)) {

-    jj_scanpos = xsp;

-    if (jj_3R_61()) return true;

-    }

-    if (jj_scan_token(O_OPENPAREN)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_75() {

-    if (jj_scan_token(O_OPENPAREN)) return true;

-    if (jj_scan_token(S_NUMBER)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_53() {

-    if (jj_scan_token(K_CHARACTER)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_scan_token(216)) jj_scanpos = xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_79()) jj_scanpos = xsp;

-    return false;

-  }

-

-  private boolean jj_3R_89() {

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_scan_token(9)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(35)) return true;

-    }

-    return false;

-  }

-

-  private boolean jj_3R_78() {

-    if (jj_scan_token(K_CHARACTER)) return true;

-    if (jj_scan_token(K_SET)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_62() {

-    if (jj_scan_token(O_DOT)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_52() {

-    if (jj_scan_token(K_VARCHAR2)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_scan_token(216)) jj_scanpos = xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_77()) jj_scanpos = xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_78()) jj_scanpos = xsp;

-    return false;

-  }

-

-  private boolean jj_3R_73() {

-    if (jj_scan_token(O_OPENPAREN)) return true;

-    if (jj_scan_token(S_NUMBER)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_76() {

-    if (jj_scan_token(K_CHARACTER)) return true;

-    if (jj_scan_token(K_SET)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_64() {

-    if (jj_scan_token(O_OPENPAREN)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_89()) jj_scanpos = xsp;

-    while (true) {

-      xsp = jj_scanpos;

-      if (jj_3R_90()) { jj_scanpos = xsp; break; }

-    }

-    if (jj_scan_token(O_CLOSEPAREN)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_51() {

-    if (jj_scan_token(K_VARCHAR)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_scan_token(216)) jj_scanpos = xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_75()) jj_scanpos = xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_76()) jj_scanpos = xsp;

-    return false;

-  }

-

-  private boolean jj_3R_23() {

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_scan_token(171)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(172)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(147)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(146)) return true;

-    }

-    }

-    }

-    xsp = jj_scanpos;

-    if (jj_3R_64()) jj_scanpos = xsp;

-    return false;

-  }

-

-  private boolean jj_3R_22() {

-    if (jj_scan_token(K_SIGNTYPE)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_12() {

-    if (jj_3R_59()) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_62()) jj_scanpos = xsp;

-    return false;

-  }

-

-  private boolean jj_3_1() {

-    if (jj_3R_6()) return true;

-    return false;

-  }

-

-  private boolean jj_3R_21() {

-    if (jj_scan_token(K_POSITIVE)) return true;

-    return false;

-  }

-

-  private boolean jj_3_13() {

-    if (jj_scan_token(K_OUT)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_20() {

-    if (jj_scan_token(K_NATURAL)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_19() {

-    if (jj_scan_token(K_BINARY_DOUBLE)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_18() {

-    if (jj_scan_token(K_BINARY_FLOAT)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_17() {

-    if (jj_scan_token(K_BINARY_INTEGER)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_7() {

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_17()) {

-    jj_scanpos = xsp;

-    if (jj_3R_18()) {

-    jj_scanpos = xsp;

-    if (jj_3R_19()) {

-    jj_scanpos = xsp;

-    if (jj_3R_20()) {

-    jj_scanpos = xsp;

-    if (jj_3R_21()) {

-    jj_scanpos = xsp;

-    if (jj_3R_22()) {

-    jj_scanpos = xsp;

-    if (jj_3R_23()) {

-    jj_scanpos = xsp;

-    if (jj_3R_24()) {

-    jj_scanpos = xsp;

-    if (jj_3R_25()) {

-    jj_scanpos = xsp;

-    if (jj_3R_26()) {

-    jj_scanpos = xsp;

-    if (jj_3R_27()) {

-    jj_scanpos = xsp;

-    if (jj_3R_28()) {

-    jj_scanpos = xsp;

-    if (jj_3R_29()) {

-    jj_scanpos = xsp;

-    if (jj_3R_30()) {

-    jj_scanpos = xsp;

-    if (jj_3R_31()) {

-    jj_scanpos = xsp;

-    if (jj_3R_32()) {

-    jj_scanpos = xsp;

-    if (jj_3R_33()) {

-    jj_scanpos = xsp;

-    if (jj_3R_34()) {

-    jj_scanpos = xsp;

-    if (jj_3R_35()) {

-    jj_scanpos = xsp;

-    if (jj_3R_36()) {

-    jj_scanpos = xsp;

-    if (jj_3R_37()) {

-    jj_scanpos = xsp;

-    if (jj_3R_38()) {

-    jj_scanpos = xsp;

-    if (jj_3R_39()) {

-    jj_scanpos = xsp;

-    if (jj_3R_40()) {

-    jj_scanpos = xsp;

-    if (jj_3R_41()) {

-    jj_scanpos = xsp;

-    if (jj_3R_42()) {

-    jj_scanpos = xsp;

-    if (jj_3R_43()) {

-    jj_scanpos = xsp;

-    if (jj_3R_44()) {

-    jj_scanpos = xsp;

-    if (jj_3R_45()) {

-    jj_scanpos = xsp;

-    if (jj_3R_46()) {

-    jj_scanpos = xsp;

-    if (jj_3R_47()) {

-    jj_scanpos = xsp;

-    if (jj_3R_48()) {

-    jj_scanpos = xsp;

-    if (jj_3R_49()) {

-    jj_scanpos = xsp;

-    if (jj_3R_50()) {

-    jj_scanpos = xsp;

-    if (jj_3R_51()) {

-    jj_scanpos = xsp;

-    if (jj_3R_52()) {

-    jj_scanpos = xsp;

-    if (jj_3R_53()) {

-    jj_scanpos = xsp;

-    if (jj_3R_54()) {

-    jj_scanpos = xsp;

-    if (jj_3R_55()) {

-    jj_scanpos = xsp;

-    if (jj_3R_56()) {

-    jj_scanpos = xsp;

-    if (jj_3R_57()) {

-    jj_scanpos = xsp;

-    if (jj_3R_58()) return true;

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    return false;

-  }

-

-  private boolean jj_3R_74() {

-    if (jj_scan_token(K_CHARACTER)) return true;

-    if (jj_scan_token(K_SET)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_85() {

-    if (jj_scan_token(S_QUOTED_IDENTIFIER)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_72() {

-    if (jj_scan_token(O_OPENPAREN)) return true;

-    if (jj_scan_token(S_NUMBER)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_84() {

-    if (jj_scan_token(S_IDENTIFIER)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_50() {

-    if (jj_scan_token(K_CHAR)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_scan_token(216)) jj_scanpos = xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_73()) jj_scanpos = xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_74()) jj_scanpos = xsp;

-    return false;

-  }

-

-  private boolean jj_3R_49() {

-    if (jj_scan_token(K_DOUBLE)) return true;

-    if (jj_scan_token(K_PRECISION)) return true;

-    return false;

-  }

-

-  private boolean jj_3_15() {

-    if (jj_3R_16()) return true;

-    return false;

-  }

-

-  private boolean jj_3R_59() {

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3_15()) {

-    jj_scanpos = xsp;

-    if (jj_3R_84()) {

-    jj_scanpos = xsp;

-    if (jj_3R_85()) return true;

-    }

-    }

-    return false;

-  }

-

-  private boolean jj_3R_63() {

-    if (jj_scan_token(K_OUT)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_48() {

-    if (jj_scan_token(K_UROWID)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_72()) jj_scanpos = xsp;

-    return false;

-  }

-

-  private boolean jj_3_14() {

-    if (jj_scan_token(R_IN)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3_13()) jj_scanpos = xsp;

-    return false;

-  }

-

-  private boolean jj_3R_47() {

-    if (jj_scan_token(K_ROWID)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_46() {

-    if (jj_scan_token(K_BFILE)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_45() {

-    if (jj_scan_token(K_NCLOB)) return true;

-    return false;

-  }

-

-  private boolean jj_3_4() {

-    if (jj_scan_token(K_CONSTANT)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_44() {

-    if (jj_scan_token(K_BLOB)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_43() {

-    if (jj_scan_token(K_SYS_REFCURSOR)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_15() {

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3_14()) {

-    jj_scanpos = xsp;

-    if (jj_3R_63()) return true;

-    }

-    return false;

-  }

-

-  private boolean jj_3R_60() {

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3_4()) jj_scanpos = xsp;

-    if (jj_3R_86()) return true;

-    return false;

-  }

-

-  private boolean jj_3R_42() {

-    if (jj_scan_token(K_SIMPLE_DOUBLE)) return true;

-    return false;

-  }

-

-  private boolean jj_3_5() {

-    if (jj_scan_token(R_EXCEPTION)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_41() {

-    if (jj_scan_token(K_SIMPLE_FLOAT)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_40() {

-    if (jj_scan_token(K_SIMPLE_INTEGER)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_87() {

-    if (jj_scan_token(O_OPENPAREN)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_39() {

-    if (jj_scan_token(K_PLS_INTEGER)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_71() {

-    if (jj_scan_token(O_OPENPAREN)) return true;

-    if (jj_scan_token(S_NUMBER)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_38() {

-    if (jj_scan_token(K_MLSLABEL)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_37() {

-    if (jj_scan_token(K_REAL)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_8() {

-    if (jj_3R_59()) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3_5()) {

-    jj_scanpos = xsp;

-    if (jj_3R_60()) return true;

-    }

-    return false;

-  }

-

-  private boolean jj_3_3() {

-    if (jj_3R_8()) return true;

-    return false;

-  }

-

-  private boolean jj_3R_36() {

-    if (jj_scan_token(K_FLOAT)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_71()) jj_scanpos = xsp;

-    return false;

-  }

-

-  private boolean jj_3R_35() {

-    if (jj_scan_token(K_SMALLINT)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_34() {

-    if (jj_scan_token(K_INT)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_33() {

-    if (jj_scan_token(K_INTEGER)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_69() {

-    if (jj_scan_token(O_OPENPAREN)) return true;

-    if (jj_scan_token(S_NUMBER)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_88() {

-    if (jj_3R_12()) return true;

-    return false;

-  }

-

-  private boolean jj_3_6() {

-    if (jj_3R_7()) return true;

-    return false;

-  }

-

-  private boolean jj_3R_92() {

-    if (jj_scan_token(O_OPENPAREN)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_83() {

-    if (jj_scan_token(K_CHARACTER)) return true;

-    if (jj_scan_token(K_SET)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_70() {

-    if (jj_scan_token(R_WITH)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_scan_token(162)) jj_scanpos = xsp;

-    if (jj_scan_token(K_TIME)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_86() {

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3_6()) {

-    jj_scanpos = xsp;

-    if (jj_3R_88()) return true;

-    }

-    return false;

-  }

-

-  private boolean jj_3R_32() {

-    if (jj_scan_token(K_TIMESTAMP)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_69()) jj_scanpos = xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_70()) jj_scanpos = xsp;

-    return false;

-  }

-

-  private boolean jj_3R_31() {

-    if (jj_scan_token(K_TIME)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_68() {

-    if (jj_scan_token(K_YEAR)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_92()) jj_scanpos = xsp;

-    if (jj_scan_token(R_TO)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_58() {

-    if (jj_scan_token(K_CLOB)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_83()) jj_scanpos = xsp;

-    return false;

-  }

-

-  private boolean jj_3R_91() {

-    if (jj_scan_token(O_OPENPAREN)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_82() {

-    if (jj_scan_token(O_OPENPAREN)) return true;

-    if (jj_scan_token(S_NUMBER)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_67() {

-    if (jj_scan_token(K_DAY)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_91()) jj_scanpos = xsp;

-    if (jj_scan_token(R_TO)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_9() {

-    if (jj_scan_token(K_RECORD)) return true;

-    if (jj_scan_token(O_OPENPAREN)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_57() {

-    if (jj_scan_token(K_NATIONAL)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_scan_token(138)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(137)) return true;

-    }

-    xsp = jj_scanpos;

-    if (jj_scan_token(216)) jj_scanpos = xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_87()) jj_scanpos = xsp;

-    return false;

-  }

-

-  private boolean jj_3R_30() {

-    if (jj_scan_token(K_INTERVAL)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_67()) {

-    jj_scanpos = xsp;

-    if (jj_3R_68()) return true;

-    }

-    return false;

-  }

-

-  private boolean jj_3R_81() {

-    if (jj_scan_token(O_OPENPAREN)) return true;

-    if (jj_scan_token(S_NUMBER)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_29() {

-    if (jj_scan_token(K_DATE)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_28() {

-    if (jj_scan_token(K_SYSXMLTYPE)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_27() {

-    if (jj_scan_token(K_XMLTYPE)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_26() {

-    if (jj_scan_token(K_BOOLEAN)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_66() {

-    if (jj_scan_token(O_OPENPAREN)) return true;

-    if (jj_scan_token(S_NUMBER)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_56() {

-    if (jj_scan_token(K_NVARCHAR2)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_82()) jj_scanpos = xsp;

-    return false;

-  }

-

-  private boolean jj_3R_80() {

-    if (jj_scan_token(O_OPENPAREN)) return true;

-    if (jj_scan_token(S_NUMBER)) return true;

-    return false;

-  }

-

-  private boolean jj_3_11() {

-    if (jj_3R_15()) return true;

-    return false;

-  }

-

-  private boolean jj_3R_65() {

-    if (jj_scan_token(O_OPENPAREN)) return true;

-    if (jj_scan_token(S_NUMBER)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_16() {

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_scan_token(128)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(129)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(130)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(131)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(132)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(133)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(134)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(135)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(136)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(137)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(138)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(139)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(140)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(141)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(142)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(143)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(144)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(145)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(146)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(147)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(148)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(149)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(150)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(151)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(152)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(153)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(154)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(155)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(156)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(157)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(158)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(159)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(160)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(161)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(162)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(163)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(164)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(165)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(166)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(167)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(168)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(169)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(170)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(171)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(172)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(173)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(174)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(175)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(176)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(177)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(178)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(179)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(180)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(181)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(182)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(183)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(184)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(185)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(186)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(187)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(188)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(189)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(190)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(191)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(192)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(193)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(194)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(195)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(196)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(197)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(198)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(199)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(200)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(201)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(202)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(203)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(204)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(205)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(206)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(207)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(208)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(209)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(210)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(211)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(212)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(213)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(214)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(215)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(216)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(217)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(218)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(219)) {

-    jj_scanpos = xsp;

-    if (jj_scan_token(220)) return true;

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    }

-    return false;

-  }

-

-  private boolean jj_3R_90() {

-    if (jj_scan_token(O_COMMA)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_25() {

-    if (jj_scan_token(K_RAW)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_66()) jj_scanpos = xsp;

-    return false;

-  }

-

-  private boolean jj_3R_55() {

-    if (jj_scan_token(K_NVARCHAR)) return true;

-    Token xsp;

-    xsp = jj_scanpos;

-    if (jj_3R_81()) jj_scanpos = xsp;

-    return false;

-  }

-

-  private boolean jj_3R_14() {

-    if (jj_scan_token(R_ANCHORED_ROWTYPE)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_6() {

-    if (jj_scan_token(K_CONSTRUCTOR)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_79() {

-    if (jj_scan_token(O_OPENPAREN)) return true;

-    if (jj_scan_token(S_NUMBER)) return true;

-    return false;

-  }

-

-  private boolean jj_3_12() {

-    if (jj_scan_token(K_NOCOPY)) return true;

-    return false;

-  }

-

-  private boolean jj_3R_13() {

-    if (jj_scan_token(R_ANCHORED_TYPE)) return true;

-    return false;

-  }

-

-  /** Generated Token Manager. */

-  public DDLParserTokenManager token_source;

-  JavaCharStream jj_input_stream;

-  /** Current token. */

-  public Token token;

-  /** Next token. */

-  public Token jj_nt;

-  private int jj_ntk;

-  private Token jj_scanpos, jj_lastpos;

-  private int jj_la;

-

-  /** Constructor with InputStream. */

-  public DDLParser(java.io.InputStream stream) {

-     this(stream, null);

-  }

-  /** Constructor with InputStream and supplied encoding */

-  public DDLParser(java.io.InputStream stream, String encoding) {

-    try { jj_input_stream = new JavaCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }

-    token_source = new DDLParserTokenManager(jj_input_stream);

-    token = new Token();

-    jj_ntk = -1;

-  }

-

-  /** Reinitialise. */

-  public void ReInit(java.io.InputStream stream) {

-     ReInit(stream, null);

-  }

-  /** Reinitialise. */

-  public void ReInit(java.io.InputStream stream, String encoding) {

-    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }

-    token_source.ReInit(jj_input_stream);

-    token = new Token();

-    jj_ntk = -1;

-    jjtree.reset();

-  }

-

-  /** Constructor. */

-  public DDLParser(java.io.Reader stream) {

-    jj_input_stream = new JavaCharStream(stream, 1, 1);

-    token_source = new DDLParserTokenManager(jj_input_stream);

-    token = new Token();

-    jj_ntk = -1;

-  }

-

-  /** Reinitialise. */

-  public void ReInit(java.io.Reader stream) {

-    jj_input_stream.ReInit(stream, 1, 1);

-    token_source.ReInit(jj_input_stream);

-    token = new Token();

-    jj_ntk = -1;

-    jjtree.reset();

-  }

-

-  /** Constructor with generated Token Manager. */

-  public DDLParser(DDLParserTokenManager tm) {

-    token_source = tm;

-    token = new Token();

-    jj_ntk = -1;

-  }

-

-  /** Reinitialise. */

-  public void ReInit(DDLParserTokenManager tm) {

-    token_source = tm;

-    token = new Token();

-    jj_ntk = -1;

-    jjtree.reset();

-  }

-

-  private Token jj_consume_token(int kind) throws ParseException {

-    Token oldToken;

-    if ((oldToken = token).next != null) token = token.next;

-    else token = token.next = token_source.getNextToken();

-    jj_ntk = -1;

-    if (token.kind == kind) {

-      return token;

-    }

-    token = oldToken;

-    throw generateParseException();

-  }

-

-  static private final class LookaheadSuccess extends java.lang.Error { }

-  final private LookaheadSuccess jj_ls = new LookaheadSuccess();

-  private boolean jj_scan_token(int kind) {

-    if (jj_scanpos == jj_lastpos) {

-      jj_la--;

-      if (jj_scanpos.next == null) {

-        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();

-      } else {

-        jj_lastpos = jj_scanpos = jj_scanpos.next;

-      }

-    } else {

-      jj_scanpos = jj_scanpos.next;

-    }

-    if (jj_scanpos.kind != kind) return true;

-    if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;

-    return false;

-  }

-

-

-/** Get the next Token. */

-  final public Token getNextToken() {

-    if (token.next != null) token = token.next;

-    else token = token.next = token_source.getNextToken();

-    jj_ntk = -1;

-    return token;

-  }

-

-/** Get the specific Token. */

-  final public Token getToken(int index) {

-    Token t = token;

-    for (int i = 0; i < index; i++) {

-      if (t.next != null) t = t.next;

-      else t = t.next = token_source.getNextToken();

-    }

-    return t;

-  }

-

-  private int jj_ntk() {

-    if ((jj_nt=token.next) == null)

-      return (jj_ntk = (token.next=token_source.getNextToken()).kind);

-    else

-      return (jj_ntk = jj_nt.kind);

-  }

-

-  /** Generate ParseException. */

-  public ParseException generateParseException() {

-    Token errortok = token.next;

-    int line = errortok.beginLine, column = errortok.beginColumn;

-    String mess = (errortok.kind == 0) ? tokenImage[0] : errortok.image;

-    return new ParseException("Parse error at line " + line + ", column " + column + ".  Encountered: " + mess);

-  }

-

-  /** Enable tracing. */

-  final public void enable_tracing() {

-  }

-

-  /** Disable tracing. */

-  final public void disable_tracing() {

-  }

-

-}

diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jj b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jj
deleted file mode 100644
index 82d39c7..0000000
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jj
+++ /dev/null
@@ -1,1844 +0,0 @@
-/*@bgen(jjtree) Generated By:JJTree: Do not edit this line. DDLParser.jj */

-/*@egen*//*******************************************************************************

- * Copyright (c) 2011 Oracle. All rights reserved.

- * This program and the accompanying materials are made available under the

- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0

- * which accompanies this distribution.

- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html

- * and the Eclipse Distribution License is available at

- * http://www.eclipse.org/org/documents/edl-v10.php.

- *

- * Contributors:

- *     Mike Norman - June 10 2011, created DDL parser package

- ******************************************************************************/

-options {

-      STATIC = false;

-      SUPPORT_CLASS_VISIBILITY_PUBLIC = true;

-      ERROR_REPORTING = false;

-      JAVA_UNICODE_ESCAPE = true;

-      UNICODE_INPUT = true;

-                               

-                               

-                     

-      FORCE_LA_CHECK = true;

-}

-

-PARSER_BEGIN(DDLParser)

-/*******************************************************************************

- * Copyright (c) 2011 Oracle. All rights reserved.

- * This program and the accompanying materials are made available under the

- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0

- * which accompanies this distribution.

- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html

- * and the Eclipse Distribution License is available at

- * http://www.eclipse.org/org/documents/edl-v10.php.

- *

- * Contributors:

- *     Mike Norman - June 10 2011, created DDL parser package

- ******************************************************************************/

-package org.eclipse.persistence.tools.oracleddl.parser;

-

-//javase imports

-import java.io.InputStream;

-import java.util.List;

-import java.util.HashMap;

-import java.util.Map;

-import java.util.StringTokenizer;

-

-//metadata imports

-import org.eclipse.persistence.tools.oracleddl.metadata.ArgumentType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ArgumentTypeDirection;

-import org.eclipse.persistence.tools.oracleddl.metadata.BlobType;

-import org.eclipse.persistence.tools.oracleddl.metadata.CharType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ClobType;

-import org.eclipse.persistence.tools.oracleddl.metadata.CompositeDatabaseType;

-import org.eclipse.persistence.tools.oracleddl.metadata.DatabaseType;

-import org.eclipse.persistence.tools.oracleddl.metadata.DecimalType;

-import org.eclipse.persistence.tools.oracleddl.metadata.DoubleType;

-import org.eclipse.persistence.tools.oracleddl.metadata.FieldType;

-import org.eclipse.persistence.tools.oracleddl.metadata.FloatType;

-import org.eclipse.persistence.tools.oracleddl.metadata.FunctionType;

-import org.eclipse.persistence.tools.oracleddl.metadata.IntervalDayToSecond;

-import org.eclipse.persistence.tools.oracleddl.metadata.IntervalYearToMonth;

-import org.eclipse.persistence.tools.oracleddl.metadata.LongType;

-import org.eclipse.persistence.tools.oracleddl.metadata.LongRawType;

-import org.eclipse.persistence.tools.oracleddl.metadata.NCharType;

-import org.eclipse.persistence.tools.oracleddl.metadata.NClobType;

-import org.eclipse.persistence.tools.oracleddl.metadata.NumericType;

-import org.eclipse.persistence.tools.oracleddl.metadata.NVarChar2Type;

-import org.eclipse.persistence.tools.oracleddl.metadata.ObjectType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ObjectTableType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLCollectionType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLCursorType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLPackageType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLRecordType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLSubType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ProcedureType;

-import org.eclipse.persistence.tools.oracleddl.metadata.RawType;

-import org.eclipse.persistence.tools.oracleddl.metadata.RealType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ROWTYPEType;

-import org.eclipse.persistence.tools.oracleddl.metadata.TableType;

-import org.eclipse.persistence.tools.oracleddl.metadata.TimeStampType;

-import org.eclipse.persistence.tools.oracleddl.metadata.TYPEType;

-import org.eclipse.persistence.tools.oracleddl.metadata.URowIdType;

-import org.eclipse.persistence.tools.oracleddl.metadata.UnresolvedSizedType;

-import org.eclipse.persistence.tools.oracleddl.metadata.UnresolvedType;

-import org.eclipse.persistence.tools.oracleddl.metadata.VarCharType;

-import org.eclipse.persistence.tools.oracleddl.metadata.VarChar2Type;

-import org.eclipse.persistence.tools.oracleddl.metadata.VArrayType;

-import org.eclipse.persistence.tools.oracleddl.util.DatabaseTypesRepository;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BFILE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_INTEGER_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_FLOAT_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_DOUBLE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BOOLEAN_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.DATE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.INTEGER_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.MLSLABEL_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.NATURAL_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.PLS_INTEGER_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.POSITIVE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.ROWID_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIGN_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIMPLE_INTEGER_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIMPLE_DOUBLE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIMPLE_FLOAT_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SMALLINT_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SYS_REFCURSOR_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.TIME_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.XMLTYPE_TYPE;

-

-public class DDLParser/*@bgen(jjtree)*/implements DDLParserTreeConstants/*@egen*/ {/*@bgen(jjtree)*/

-  protected JJTDDLParserState jjtree = new JJTDDLParserState();

-

-/*@egen*/

-

-    protected Map<String, DatabaseType> localTypes = new HashMap<String, DatabaseType>();

-    protected List<String> schemaPatterns = null;

-

-    protected DatabaseTypesRepository typesRepository = new DatabaseTypesRepository();

-

-    public DDLParser() {

-        super();

-    }

-

-    public void setTypesRepository(DatabaseTypesRepository typesRepository) {

-        this.typesRepository = typesRepository;

-    }

-    public DatabaseTypesRepository getTypesRepository() {

-        return typesRepository;

-    }

-

-    public void setSchemaPatterns(List<String> schemaPatterns) {

-        this.schemaPatterns = schemaPatterns;
    }

-

-    protected String removeQuotes(String quotedString) {

-        return quotedString.substring(1, quotedString.length() - 1);

-    }

-}

-

-PARSER_END(DDLParser)

-

-// white-space

-SKIP: {

-      " " | "\t" | "\n" | "\r" | "\f"

-}

-

-// comments

-SKIP: {

-    <COMMENT_LINE: "--" (~["\n","\r"])* ("\n"|"\r"|"\r\n") >

-}

-SKIP:{

-    <COMMENT_BLOCK: "/*" (~["*"])* "*" ("*" | (~["*","/"] (~["*"])* "*"))* "/">

-}

-

-// token classes

-

-// separators and operators (prefix with O_ to avoid naming conflicts)

-TOKEN: {

-      <O_ASSIGN: ":=">

-    | <O_ASTERISK: "*">

-    | <O_ATSIGN: "@">

-    | <O_CLOSEPAREN: ")">

-    | <O_CONCAT: "||">

-    | <O_COLON: ":">

-    | <O_COMMA: ",">

-    | <O_DOT: ".">

-    | <O_DOUBLEDOT: "..">

-    | <O_DOLLAR: "$">

-    | <O_PERCENT: "%">

-    | <O_EQUAL: "=">

-    | <O_GREATER: ">">

-    | <O_GREATEREQUAL: ">=">

-    | <O_JOINPLUS: "(+)">

-    | <O_LESS: "<">

-    | <O_LESSEQUAL: "<=">

-    | <O_MINUS: "-">

-    | <O_NOTEQUAL2: "<>">

-    | <O_NOTEQUAL: "!=">

-    | <O_OPENPAREN: "(">

-    | <O_PLUS: "+">

-    | <O_POUND: "#">

-    | <O_QUESTIONMARK: "?">

-    | <O_SEMICOLON: ";">

-    | <O_SLASH: "/">

-    | <O_TILDE: "~">

-}

-

-// numeric literals

-TOKEN : {

-      <S_NUMBER: <FLOAT> | <FLOAT> ( ["e","E"] ([ "-","+"])? <FLOAT> )? >

-    | <#FLOAT: <INTEGER> | <INTEGER> ( "." <INTEGER> )? | "." <INTEGER> >

-    | <#INTEGER: ( <DIGIT> )+ >

-    | <#DIGIT: ["0" - "9"] >

-}

-

-//reserved words and keywords literals

-/*

-PLSQL reserved words (prefix with R_ ) and keyword (prefix with K_)

-http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/fundamentals.htm#CBJGBIGI

-"You cannot use reserved words as ordinary user-defined identifiers.

-You can use keywords as ordinary user-defined identifiers, but it is not recommended."

-*/

-

-TOKEN [IGNORE_CASE]: {

-    //reserved words

-      <R_ALL: "ALL">

-    | <R_ALTER: "ALTER">

-    | <R_ANCHORED_ROWTYPE: "%ROWTYPE">

-    | <R_ANCHORED_TYPE: "%TYPE">

-    | <R_AND: "AND">

-    | <R_AS: "AS">

-    | <R_ASC: "ASC">

-    | <R_AT: "AT">

-    | <R_BEGIN: "BEGIN">

-    | <R_BETWEEN: "BETWEEN">

-    | <R_BY: "BY">

-    | <R_CASE: "CASE">

-    | <R_CHARSET: "%CHARSET"> 

-    | <R_CHECK: "CHECK">

-    | <R_CLUSTERS: "CLUSTERS">

-    | <R_CLUSTER: "CLUSTER">

-    | <R_COLAUTH: "COLAUTH">

-    | <R_COLUMNS: "COLUMNS">

-    | <R_COMPRESS: "COMPRESS">

-    | <R_CONNECT: "CONNECT">

-    | <R_CONSTRAINT: "CONSTRAINT">

-    | <R_CRASH: "CRASH">

-    | <R_CREATE: "CREATE">

-    | <R_CURSOR: "CURSOR">

-    | <R_DECLARE: "DECLARE">

-    | <R_DEFAULT: "DEFAULT">

-    | <R_DESC: "DESC">

-    | <R_DISTINCT: "DISTINCT">

-    | <R_DROP: "DROP">

-    | <R_ELSE: "ELSE">

-    | <R_END: "END">

-    | <R_EXCEPTION: "EXCEPTION">

-    | <R_EXCLUSIVE: "EXCLUSIVE">

-    | <R_FETCH: "FETCH">

-    | <R_FOR: "FOR">

-    | <R_FROM: "FROM">

-    | <R_FUNCTION: "FUNCTION">

-    | <R_GOTO: "GOTO">

-    | <R_GRANT: "GRANT">

-    | <R_GROUP: "GROUP">

-    | <R_HAVING: "HAVING">

-    | <R_IDENTIFIED: "IDENTIFIED">

-    | <R_IF: "IF">

-    | <R_IN: "IN">

-    | <R_INDEX: "INDEX">

-    | <R_INDEXES: "INDEXES">

-    | <R_INSERT: "INSERT">

-    | <R_INTERSECT: "INTERSECT">

-    | <R_INTO: "INTO">

-    | <R_IS: "IS">

-    | <R_LIKE: "LIKE">

-    | <R_LOCK: "LOCK">

-    | <R_MINUS: "MINUS">

-    | <R_MODE: "MODE">

-    | <R_NOCOMPRESS: "NOCOMPRESS">

-    | <R_NOT: "NOT">

-    | <R_NOWAIT: "NOWAIT">

-    | <R_NULL: "NULL">

-    | <R_OF: "OF">

-    | <R_ON: "ON">

-    | <R_OPTION: "OPTION">

-    | <R_OR: "OR">

-    | <R_ORDER: "ORDER">

-    | <R_OVERLAPS: "OVERLAPS">

-    | <R_PRIMARY: "PRIMARY">

-    | <R_PROCEDURE: "PROCEDURE">

-    | <R_PUBLIC: "PUBLIC">

-    | <R_RESOURCE: "RESOURCE">

-    | <R_REVOKE: "REVOLE">

-    | <R_SELECT: "SELECT">

-    | <R_SHARE: "SHARE">

-    | <R_SIZE: "SIZE">

-    | <R_SQL: "SQL">

-    | <R_START: "START">

-    | <R_SUBTYPE: "SUBTYPE">

-    | <R_TABAUTH: "TABAUTH">

-    | <R_TABLE: "TABLE">

-    | <R_THEN: "THEN">

-    | <R_TO: "TO">

-    | <R_TYPE: "TYPE">

-    | <R_UNION: "UNION">

-    | <R_UNIQUE: "UNIQUE">

-    | <R_UPDATE: "UPDATE">

-    | <R_VALUES: "VALUES">

-    | <R_VIEW: "VIEW">

-    | <R_VIEWS: "VIEWS">

-    | <R_WHEN: "WHEN">

-    | <R_WHERE: "WHERE">

-    | <R_WITH: "WITH">

-

-    //keywords - not a complete list, just what is sufficient for this parser

-    | <K_ARRAY: "ARRAY">

-    | <K_AUTHID: "AUTHID">

-    | <K_BFILE: "BFILE">

-    | <K_BINARY_DOUBLE: "BINARY_DOUBLE">

-    | <K_BINARY_FLOAT: "BINARY_FLOAT">

-    | <K_BINARY_INTEGER: "BINARY_INTEGER">

-    | <K_BLOB: "BLOB">

-    | <K_BOOLEAN: "BOOLEAN">

-    | <K_BYTE: "BYTE">

-    | <K_CHAR: "CHAR">

-    | <K_CHARACTER: "CHARACTER">

-    | <K_CLOB: "CLOB">

-    | <K_COMMIT: "COMMIT">

-    | <K_CONSTANT: "CONSTANT">

-    | <K_CONSTRUCTOR: "CONSTRUCTOR">

-    | <K_CURRENT_USER: "CURRENT_USER">

-    | <K_DATE :"DATE">

-    | <K_DAY: "DAY">

-    | <K_DEC: "DEC">

-    | <K_DECIMAL: "DECIMAL">

-    | <K_DEFINER: "DEFINER">

-    | <K_DELETE: "DELETE">

-    | <K_DETERMINISTIC: "DETERMINISTIC">

-    | <K_DOUBLE: "DOUBLE">

-    | <K_ENABLE: "ENABLE">

-    | <K_FINAL: "FINAL">

-    | <K_FLOAT: "FLOAT">

-    | <K_FORCE: "FORCE">

-    | <K_GLOBAL: "GLOBAL">

-    | <K_INSTANTIABLE: "INSTANTIABLE">

-    | <K_INT: "INT">

-    | <K_INTEGER: "INTEGER">

-    | <K_INTERVAL: "INTERVAL">

-    | <K_KEY: "KEY">

-    | <K_LOCAL: "LOCAL">

-    | <K_LONG: "LONG">

-    | <K_MLSLABEL: "MLSLABEL">

-    | <K_MONTH: "MONTH">

-    | <K_NATIONAL: "NATIONAL">

-    | <K_NATURAL: "NATURAL">

-    | <K_NCHAR: "NCHAR">

-    | <K_NCLOB: "NCLOB">

-    | <K_NOCOPY: "NOCOPY">

-    | <K_NUMBER: "NUMBER">

-    | <K_NUMERIC: "NUMERIC">

-    | <K_NVARCHAR2: "NVARCHAR2">

-    | <K_NVARCHAR: "NVARCHAR">

-    | <K_OBJECT: "OBJECT">

-    | <K_OID: "OID">

-    | <K_ORGANIZATION: "ORGANIZATION">

-    | <K_OUT: "OUT">

-    | <K_OVERFLOW: "OVERFLOW">

-    | <K_PACKAGE: "PACKAGE">

-    | <K_PARALLEL_ENABLE: "PARALLEL_ENABLE">

-    | <K_PIPELINED: "PIPELINED">

-    | <K_PLS_INTEGER:"PLS_INTEGER">

-    | <K_POSITIVE: "POSITIVE">

-    | <K_PRAGMA: "PRAGMA">

-    | <K_PRECISION:"PRECISION">

-    | <K_PRESERVE: "PRESERVE">

-    | <K_RANGE: "RANGE">

-    | <K_RAW: "RAW">

-    | <K_REAL:"REAL">

-    | <K_RECORD: "RECORD">

-    | <K_REF: "REF">

-    | <K_REPLACE: "REPLACE">

-    | <K_RESULT: "RESULT">

-    | <K_RESULT_CACHE: "RESULT_CACHE">

-    | <K_RETURN: "RETURN">

-    | <K_ROWID:"ROWID">

-    | <K_ROWS: "ROWS">

-    | <K_SECOND: "SECOND">

-    | <K_SELF: "SELF">

-    | <K_SET: "SET">

-    | <K_SIGNTYPE: "SIGNTYPE">

-    | <K_SIMPLE_DOUBLE:"SIMPLE_DOUBLE">

-    | <K_SIMPLE_FLOAT:"SIMPLE_FLOAT">

-    | <K_SIMPLE_INTEGER:"SIMPLE_INTEGER">

-    | <K_SMALLINT:"SMALLINT">

-    | <K_STRING: "STRING">

-    | <K_SYS_REFCURSOR:"SYS_REFCURSOR">

-    | <K_TEMPORARY: "TEMPORARY">

-    | <K_TIME: "TIME">

-    | <K_TIMESTAMP: "TIMESTAMP">

-    | <K_UROWID:"UROWID">

-    | <K_VARCHAR2: "VARCHAR2">

-    | <K_VARCHAR: "VARCHAR">

-    | <K_VARRAY: "VARRAY">

-    | <K_VARYING: "VARYING">

-    | <K_XMLTYPE: "XMLTYPE">

-    | <K_SYSXMLTYPE: "SYS.XMLTYPE">

-    | <K_YEAR: "YEAR">

-    | <K_ZONE: "ZONE">

-}

-

-String keywords():

-{Token t = null;}

-{

-    (

-        t=<K_ARRAY>

-      | t=<K_AUTHID>

-      | t=<K_BFILE>

-      | t=<K_BINARY_DOUBLE>

-      | t=<K_BINARY_FLOAT>

-      | t=<K_BINARY_INTEGER>

-      | t=<K_BLOB>

-      | t=<K_BOOLEAN>

-      | t=<K_BYTE>

-      | t=<K_CHAR>

-      | t=<K_CHARACTER>

-      | t=<K_CLOB>

-      | t=<K_COMMIT>      

-      | t=<K_CONSTANT>

-      | t=<K_CONSTRUCTOR>

-      | t=<K_CURRENT_USER>

-      | t=<K_DATE>

-      | t=<K_DAY>

-      | t=<K_DEC>

-      | t=<K_DECIMAL>

-      | t=<K_DEFINER>

-      | t=<K_DELETE>

-      | t=<K_DETERMINISTIC>

-      | t=<K_DOUBLE>

-      | t=<K_ENABLE>

-      | t=<K_FINAL>

-      | t=<K_FLOAT>

-      | t=<K_FORCE>

-      | t=<K_GLOBAL>

-      | t=<K_INSTANTIABLE>

-      | t=<K_INT>

-      | t=<K_INTEGER>

-      | t=<K_INTERVAL>

-      | t=<K_KEY>

-      | t=<K_LOCAL>

-      | t=<K_LONG>

-      | t=<K_MLSLABEL>

-      | t=<K_MONTH>

-      | t=<K_NATIONAL>

-      | t=<K_NATURAL>

-      | t=<K_NCHAR>

-      | t=<K_NCLOB>

-      | t=<K_NOCOPY>

-      | t=<K_NUMBER>

-      | t=<K_NUMERIC>

-      | t=<K_NVARCHAR2>

-      | t=<K_NVARCHAR>

-      | t=<K_OBJECT>

-      | t=<K_OID>

-      | t=<K_ORGANIZATION>

-      | t=<K_OUT>

-      | t=<K_OVERFLOW>

-      | t=<K_PACKAGE>

-      | t=<K_PARALLEL_ENABLE>

-      | t=<K_PIPELINED>

-      | t=<K_PLS_INTEGER>

-      | t=<K_POSITIVE>

-      | t=<K_PRAGMA>

-      | t=<K_PRECISION>

-      | t=<K_PRESERVE>

-      | t=<K_RANGE>

-      | t=<K_RAW>

-      | t=<K_REAL>

-      | t=<K_RECORD>

-      | t=<K_REF>

-      | t=<K_REPLACE>

-      | t=<K_RESULT>

-      | t=<K_RESULT_CACHE>

-      | t=<K_RETURN>

-      | t=<K_ROWID>

-      | t=<K_ROWS>

-      | t=<K_SECOND>

-      | t=<K_SELF>

-      | t=<K_SET>

-      | t=<K_SIGNTYPE>

-      | t=<K_SIMPLE_DOUBLE>

-      | t=<K_SIMPLE_FLOAT>

-      | t=<K_SIMPLE_INTEGER>

-      | t=<K_SMALLINT>

-      | t=<K_STRING>

-      | t=<K_SYS_REFCURSOR>

-      | t=<K_TEMPORARY>

-      | t=<K_TIME>

-      | t=<K_TIMESTAMP>

-      | t=<K_UROWID>

-      | t=<K_VARCHAR2>

-      | t=<K_VARCHAR>

-      | t=<K_VARRAY>

-      | t=<K_VARYING>

-      | t=<K_XMLTYPE>

-      | t=<K_SYSXMLTYPE>

-      | t=<K_YEAR>

-      | t=<K_ZONE>      

-    )

-    {

-      return t.image;

-    }

-}

-

-// identifiers

-TOKEN:

-{

-      <S_IDENTIFIER: (<LETTER>)+ (<DIGIT> | <LETTER> | <SPECIAL_CHARS>)* >

-    | <#LETTER: ["a"-"z", "A"-"Z"] >

-    | <#SPECIAL_CHARS: "$" | "_" | "#" | "@" >

-    | <S_BIND: ":" ( <S_NUMBER> | <S_IDENTIFIER> ("." <S_IDENTIFIER>)?) >

-    | <S_CHAR_LITERAL: "'" (~["'"])* "'" ("'" (~["'"])* "'")*>

-    | <S_QUOTED_IDENTIFIER: "\"" (~["\n","\r","\""])* "\"" >

-}

-

-// stripped-down version of PLSQL grammar: only parses package/top-level DDL specifications

-

-// PLSQLPackage at 'top-level'

-PLSQLPackageType parsePLSQLPackage():

-{PLSQLPackageType packageType = new PLSQLPackageType();

- String dottedName = null;

- String schema = null;

- String packageName = null;

- }

-{

-    <R_CREATE> [ orReplace() ] <K_PACKAGE>

-      dottedName=OracleObjectNamePossiblyDotted()

-        {

-          packageName = dottedName;

-          if (dottedName.contains(".")) {

-              int idx = dottedName.indexOf(".");

-              schema = dottedName.substring(0, idx);

-              packageName = dottedName.substring(idx+1, dottedName.length());

-          }

-          if (schema != null) {

-            packageType.setSchema(schema);

-          }

-          packageType.setPackageName(packageName);

-        }

-        [ invokerRights() ] as()

-         ( packageDeclaration(packageType) )*

-    <R_END> skipToEnd()

-    {

-      typesRepository.setDatabaseType(packageName, packageType);

-      return packageType;

-    }

-}

-

-// procedure at 'top-level'

-ProcedureType parseTopLevelProcedure():

-{ProcedureType procedureType = null;

- String dottedName = null;

- String schema = null;

- String procedureName = null;}

-{

-    <R_CREATE> [ orReplace() ] <R_PROCEDURE>

-      dottedName=OracleObjectNamePossiblyDotted()

-        {

-          procedureName = dottedName;

-          if (dottedName.contains(".")) {

-              int idx = dottedName.indexOf(".");

-              schema = dottedName.substring(0, idx);

-              procedureName = dottedName.substring(idx+1, dottedName.length());

-          }

-          procedureType = new ProcedureType(procedureName);

-              if (schema != null) {

-                  procedureType.setSchema(schema);

-              }
       }

-    [ <O_OPENPAREN> argumentList(procedureType) <O_CLOSEPAREN> ] as()

-    skipToEnd()

-    {

-      typesRepository.setDatabaseType(procedureName, procedureType);

-      return procedureType;

-    }

-}

-

-// function at 'top-level'

-FunctionType parseTopLevelFunction():

-{FunctionType functionType = null;

- String dottedName = null;

- String schema = null;

- String functionName = null;

- ArgumentType returnType = null;}

-{

-    <R_CREATE> [ orReplace() ] <R_FUNCTION>

-      dottedName=OracleObjectNamePossiblyDotted()

-            {

-          functionName = dottedName;

-          if (dottedName.contains(".")) {

-              int idx = dottedName.indexOf(".");

-              schema = dottedName.substring(0, idx);

-              functionName = dottedName.substring(idx+1, dottedName.length());

-          }

-              functionType = new FunctionType(functionName);

-          if (schema != null) {

-              functionType.setSchema(schema);

-          }
      }

-    [ <O_OPENPAREN> argumentList(functionType) <O_CLOSEPAREN> ] returnType=functionReturnSpec(functionType) as()

-    skipToEnd()

-    {

-      functionType.setReturnArgument(returnType);

-      typesRepository.setDatabaseType(functionName, functionType);

-      return functionType;

-    }

-}

-

-// table at 'top-level'

-TableType parseTable():

-{TableType tableType = null;

- String dottedName = null;

- String schema = null;

- String tableName = null;

- Token iot = null;

-}

-{

-    <R_CREATE> [ <K_GLOBAL> <K_TEMPORARY> ] <R_TABLE>

-      dottedName=OracleObjectNamePossiblyDotted()

-        {

-          tableName = dottedName;

-          if (dottedName.contains(".")) {

-              int idx = dottedName.indexOf(".");

-              schema = dottedName.substring(0, idx);

-              tableName = dottedName.substring(idx+1, dottedName.length());

-          }

-          tableType = new TableType(tableName);

-                  if (schema != null) {

-                       tableType.setSchema(schema);

-                  }
        }

-        <O_OPENPAREN> columnDeclarations(tableType) <O_CLOSEPAREN>

-         [ <K_ORGANIZATION> ] [ iot=<R_INDEX> ] [ <R_NOCOMPRESS> ] [ <K_OVERFLOW> ]

-         [ onCommit() ] <O_SEMICOLON>

-     <EOF>

-     {

-         if (iot != null) {

-             tableType.setIOT(true);

-         }

-         typesRepository.setDatabaseType(tableName, tableType);

-         return tableType;

-     }

-}

-

-// type at 'top-level'

-CompositeDatabaseType parseType():

-{CompositeDatabaseType databaseType = null;

- DatabaseType enclosedType = null;

- String dottedName = null;

- String schema = null;

- String typeName = null;

- Token vsize = null;

- boolean varray = false;

- boolean nestedTable = false;

-}

-{

-    <R_CREATE> [ orReplace() ] <R_TYPE>

-      dottedName=OracleObjectNamePossiblyDotted()
        {

-          typeName = dottedName;

-          if (dottedName.contains(".")) {

-              int idx = dottedName.indexOf(".");

-              schema = dottedName.substring(0, idx);

-              typeName = dottedName.substring(idx+1, dottedName.length());

-          }
        }

-        [ <K_FORCE> ] [ <K_OID> <S_CHAR_LITERAL> ] [ invokerRights() ] as()

-        [ <K_OBJECT> <O_OPENPAREN>

-            {

-                databaseType = new ObjectType(typeName);

-                if (schema != null) {

-                    ((ObjectType)databaseType).setSchema(schema);
                }

-            } columnDeclarations(databaseType) constructorDeclaration() <O_CLOSEPAREN>

-          | <K_VARRAY> <O_OPENPAREN> vsize=<S_NUMBER> <O_CLOSEPAREN> <R_OF>

-            {
                databaseType = new VArrayType(typeName);

-                if (schema != null) {

-                    ((VArrayType)databaseType).setSchema(schema);

-                }

-                if (vsize != null) {

-                    Long size = Long.decode(vsize.image);

-                    ((VArrayType)databaseType).setSize(size);

-                }

-            } enclosedType=columnTypeSpec(databaseType)

-          | <R_TABLE> <R_OF>
           {

-                databaseType = new ObjectTableType(typeName);

-                if (schema != null) {

-                    ((ObjectTableType)databaseType).setSchema(schema);

-                }
              } enclosedType=columnTypeSpec(databaseType)

-        ]

-     [ [ <R_NOT> ] ( <K_FINAL> | <K_INSTANTIABLE> ) ] [ <O_SEMICOLON> ]

-     <EOF>

-    {

-        if (enclosedType != null) {

-            ((CompositeDatabaseType)databaseType).setEnclosedType(enclosedType);
        }

-        typesRepository.setDatabaseType(typeName, databaseType);

-        return databaseType;

-    }

-}

-

-void columnDeclarations(CompositeDatabaseType enclosingType):

-{}

-{

-    (LOOKAHEAD(2) constructor() | columnDeclaration(enclosingType) | constraintDeclaration(enclosingType) )

-    [ <O_COMMA> columnDeclarations(enclosingType) ]

-}

-

-void columnDeclaration(CompositeDatabaseType enclosingType):

-{String s = null;

- String pk = null;

- boolean notNull = false;

- DatabaseType columnType = null;

- FieldType column = null;

-}

-{

-    s=OracleObjectName() columnType=columnTypeSpec(enclosingType) [ notNull=notNull() ]

-        {

-          column = new FieldType(s);

-          if (enclosingType != null) {

-              if (enclosingType.isPLSQLRecordType()) {

-                  ((PLSQLRecordType)enclosingType).addField(column);

-              }

-              else if (enclosingType.isTableType()) {

-                  ((TableType)enclosingType).addColumn(column);

-              }

-              else if (enclosingType.isObjectType()) {

-                  ((ObjectType)enclosingType).addField(column);

-              }

-          }

-          column.setEnclosedType(columnType);

-          if (columnType instanceof UnresolvedType) {

-              ((UnresolvedType)columnType).setOwningType(column);

-          }

-          if (notNull) {

-              column.setNotNull();

-          }

-        }
}

-

-void constraintDeclaration(CompositeDatabaseType enclosingType):

-{String s = null;

- String pk = null;

-}

-{

-    [ <R_CONSTRAINT> ] [ OracleObjectName() ]

-      (

-          <R_PRIMARY> <K_KEY> <O_OPENPAREN> pkList((TableType)enclosingType) <O_CLOSEPAREN>

-        | <R_CHECK> <O_OPENPAREN> skipToClosingParen() <O_CLOSEPAREN>

-        | <R_UNIQUE> <O_OPENPAREN> uniqList() <O_CLOSEPAREN> 
      ) [ <K_ENABLE> ]

-}

-

-DatabaseType columnTypeSpec(CompositeDatabaseType enclosingType):

-{String s = null;

- Token t = null;

- DatabaseType dt = null;}

-{

-    (

-        LOOKAHEAD(2)

-        dt=datatype()

-      | s=columnSpec() [ <O_OPENPAREN> t=<S_NUMBER> <O_CLOSEPAREN> ]

-    ) [ <R_CONSTRAINT> <S_QUOTED_IDENTIFIER> ]

-    {

-      if (s != null) {

-          if (s.contains(".")) {

-              int dotIdx = s.indexOf(".");

-              String namePart1 = s.substring(0, dotIdx);

-              String namePart2 = s.substring(dotIdx+1, s.length());

-              String schemaName = null;

-              if (enclosingType.isTableType()) {

-                 schemaName = ((TableType)enclosingType).getSchema();

-              } else if (enclosingType.isObjectTableType()) {

-                 schemaName = ((ObjectTableType)enclosingType).getSchema();

-              } else if (enclosingType.isObjectType()) {
                 schemaName = ((ObjectType)enclosingType).getSchema();

-              } else if (enclosingType.isPLSQLType()) {

-                 schemaName = ((PLSQLType)enclosingType).getParentType().getSchema();

-              } else if (enclosingType.isVArrayType()) {

-                 schemaName = ((VArrayType)enclosingType).getSchema();

-              }

-              if (schemaName != null && schemaName.equals(namePart1)) {
                  s = namePart2;

-              }
          }

-          for (String typeName : localTypes.keySet()) {

-              if (typeName.equals(s)) {

-                  dt = localTypes.get(s);

-                  break;

-              }

-          }

-          if (dt == null) {

-              if (t != null) {

-                  Long size = Long.decode(t.image);

-                  dt = new UnresolvedSizedType(s, size);

-              }

-              else {

-                  dt = new UnresolvedType(s);

-              }
-              ((UnresolvedType)dt).setOwningType(enclosingType);
-          }

-      }

-      return dt;

-    }

-}

-

-void constructorDeclaration():

-{}

-{

-  [ <K_CONSTRUCTOR> skipToReturn() <K_SELF><R_AS><K_RESULT> ]

-  [ <O_COMMA> constructorDeclaration() ]

-}

-

-void uniqList():

-{}

-{

-    OracleObjectName() ( <O_COMMA> OracleObjectName() )*

-}

-

-void pkList(TableType tableType):

-{}

-{

-    pk(tableType) ( <O_COMMA> pk(tableType) )*

-}

-

-void pk(TableType tableType):

-{

-String s = null;

-}

-{

-    s=OracleObjectName()

-    {

-       List<FieldType> columns = tableType.getColumns();

-       for (FieldType column : columns) {

-            if (column.getFieldName().equals(s)) {

-                column.setPk();

-                break;

-            }

-       }
    }

-}

-

-void packageDeclaration(PLSQLPackageType packageType) :

-{}

-{

-      typeOrSubTypeDeclaration(packageType)

-    | cursorDeclaration(packageType)

-    | procedureSpec(packageType)

-    | functionSpec(packageType)

-    | LOOKAHEAD(2) variableDeclaration(packageType)

-    | pragmaDeclaration()

-}

-

-void variableDeclaration(PLSQLPackageType packageType):

-{String varName = null;

- DatabaseType varType=null;}

-{

-    varName=OracleObjectName()

-      (

-          LOOKAHEAD(2) <R_EXCEPTION>

-        | [ LOOKAHEAD(2) <K_CONSTANT> ] varType=typeSpec() [ <R_NOT> <R_NULL> ] [ variableDefaultAssignment() ]
      )

-    <O_SEMICOLON>

-    {

-        FieldType variable = new FieldType(varName);

-        variable.setEnclosedType(varType);

-        packageType.addLocalVariable(variable);

-        if (varType.isROWTYPEType()) {

-            ((ROWTYPEType)varType).setPackageType(packageType);

-        }
    }
}

-

-void variableDefaultAssignment():

-{}

-{

-    ( <O_ASSIGN> | <R_DEFAULT> ) skipToSemiColon()

-}

-

-DatabaseType datatype():

-{Token t = null;

- DatabaseType dt = null;

- Token precision = null;

- Long sl;

- Long pl;

- Token scale = null;

- Token withTimeZone = null;

- Token withLocalTimeZone = null;

-}

-{

-    <K_BINARY_INTEGER>  { return BINARY_INTEGER_TYPE;}

-    | <K_BINARY_FLOAT>  { return BINARY_FLOAT_TYPE;}

-    | <K_BINARY_DOUBLE> { return BINARY_DOUBLE_TYPE;}

-    | <K_NATURAL>       { return NATURAL_TYPE;}

-    | <K_POSITIVE>      { return POSITIVE_TYPE;}

-    | <K_SIGNTYPE>      { return SIGN_TYPE;}

-    | ( t=<K_NUMBER>

-        | t=<K_NUMERIC>

-        | t=<K_DECIMAL>

-        | t=<K_DEC>

-      ) [ <O_OPENPAREN> [ precision=<O_ASTERISK > | precision=<S_NUMBER> ] ( <O_COMMA> scale=<S_NUMBER> )* <O_CLOSEPAREN> ]

-        {

-            if (t.kind == K_NUMBER || t.kind == K_NUMERIC) {

-                if (precision != null && precision.image.equals("*")) {

-                    precision = null;
                }

-                if (precision == null) {

-                    if (scale != null && scale.image.equals("0")) {

-                        dt = INTEGER_TYPE;
                    }
                    else {

-                        dt = new NumericType();
                    }

-                }

-                    else {

-                        pl = Long.decode(precision.image);

-                        if (scale == null) {

-                        dt = new NumericType(pl);

-                    }

-                    else {

-                        sl = Long.decode(scale.image);

-                        dt = new NumericType(pl, sl);

-                        }

-                    }

-                //sometimes need to know difference between NUMERIC and NUMBER

-                if (dt != INTEGER_TYPE && t.kind == K_NUMBER) {

-                    ((NumericType)dt).setNumberSynonym(true);

-                }

-            }

-            else  if (t.kind == K_DECIMAL || t.kind == K_DEC) {

-                if (precision != null && precision.image.equals("*")) {

-                    precision = null;

-                }

-                if (precision == null) {

-                    dt = new DecimalType();

-                }

-                else {

-                    pl = Long.decode(precision.image);

-                    if (scale == null) {

-                        dt = new DecimalType(pl);

-                    }

-                    else {

-                        sl = Long.decode(scale.image);

-                        dt = new DecimalType(pl, sl);

-                    }

-                }

-            }
            return dt;
        }

-    | <K_LONG> [ t=<K_RAW> ] [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]
         {

-              if (t == null) {

-              if (precision == null) {

-                  dt = new LongType();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  dt = new LongType(pl);

-              }

-              }

-              else {

-              if (precision == null) {

-                  dt = new LongRawType();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  dt = new LongRawType(pl);

-              }

-            }

-            return dt;
     }

-    | <K_RAW> [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]
        {

-            if (precision == null) {

-                dt = new RawType();

-            }

-            else {

-                pl = Long.decode(precision.image);

-                dt = new RawType(pl);

-            }

-            return dt;

-            }

-    | <K_BOOLEAN> { return BOOLEAN_TYPE;}

-    | <K_XMLTYPE> { return XMLTYPE_TYPE;}

-    | <K_SYSXMLTYPE> { return XMLTYPE_TYPE;}

-    | <K_DATE> { return DATE_TYPE;}

-    | <K_INTERVAL>

-         (

-             <K_DAY> [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ] <R_TO> <K_SECOND> [ <O_OPENPAREN> scale=<S_NUMBER> <O_CLOSEPAREN> ]

-             {

-                if (precision == null) {

-                        dt = new IntervalDayToSecond();

-                    }

-                    else {

-                        pl = Long.decode(precision.image);

-                        if (scale == null) {

-                            dt = new IntervalDayToSecond(pl);

-                        }

-                        else {

-                            sl = Long.decode(scale.image);

-                            dt = new IntervalDayToSecond(pl, sl);

-                        }

-                    }

-                return dt;
             }

-           | <K_YEAR> [ <O_OPENPAREN> <S_NUMBER> <O_CLOSEPAREN> ] <R_TO> <K_MONTH>

-             {

-                if (precision == null) {

-                    dt = new IntervalYearToMonth();

-                }

-                else {

-                    pl = Long.decode(precision.image);

-                    dt = new IntervalYearToMonth(pl);

-                }

-                return dt;                 
             }
         )

-    | <K_TIME> { return TIME_TYPE;}

-    | <K_TIMESTAMP> [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]

-        [ <R_WITH> [ withLocalTimeZone=<K_LOCAL> ] withTimeZone=<K_TIME> <K_ZONE> ]

-        {

-          if (precision == null) {

-              dt = new TimeStampType();

-          }

-          else {

-              pl = Long.decode(precision.image);

-              dt = new TimeStampType(pl);

-          }

-          if (withLocalTimeZone !=  null) {

-              ((TimeStampType)dt).setWithLocalTimeZone();
          }

-          else if (withTimeZone != null) {

-              ((TimeStampType)dt).setWithTimeZone();
          }

-          return dt;
        }

-    | <K_INTEGER>  { return INTEGER_TYPE;}

-    | <K_INT>      { return INTEGER_TYPE;}

-    | <K_SMALLINT> { return SMALLINT_TYPE;}

-    | <K_FLOAT> [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]

-        {

-          if (precision == null) {

-              return new FloatType();

-          }

-          else {

-              pl = Long.decode(precision.image);

-              FloatType ft = new FloatType(pl);

-              return ft;
          }

-        }

-    | <K_REAL> { return new RealType();}

-    | <K_MLSLABEL> { return MLSLABEL_TYPE;}

-    | <K_PLS_INTEGER> { return PLS_INTEGER_TYPE;}

-    | <K_SIMPLE_INTEGER> { return SIMPLE_INTEGER_TYPE;}

-    | <K_SIMPLE_FLOAT> { return SIMPLE_FLOAT_TYPE;}

-    | <K_SIMPLE_DOUBLE> { return SIMPLE_DOUBLE_TYPE;}

-    | <K_SYS_REFCURSOR>  { return SYS_REFCURSOR_TYPE;}

-    | <K_BLOB > { return new BlobType();}

-    | <K_NCLOB> { return new NClobType();}

-    | <K_BFILE>  { return BFILE_TYPE;}

-    | <K_ROWID> { return ROWID_TYPE;}

-    | <K_UROWID> [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]

-        {

-          if (precision == null) {

-              return new URowIdType();

-          }

-          else {

-              pl = Long.decode(precision.image);

-              return new URowIdType(pl);

-          }
        }

-    | <K_DOUBLE> <K_PRECISION> { return new DoubleType();}

-    | <K_CHAR> [ t=<K_VARYING> ] [ <O_OPENPAREN> precision=<S_NUMBER> [ <K_BYTE> | <K_CHAR> ] <O_CLOSEPAREN> ]

-        [ <K_CHARACTER> <K_SET> <S_IDENTIFIER> [ <R_CHARSET> ] ]
        {

-          if (t == null) {

-              if (precision == null) {

-                  return new CharType();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  return new CharType(pl);
              }

-          }

-          else {

-              // ANSI syntax for VARCHAR2

-              if (precision == null) {

-                  return new VarChar2Type();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  return new VarChar2Type(pl);

-              }
          }
        }

-    | <K_VARCHAR> [ <K_VARYING> ] [ <O_OPENPAREN> precision=<S_NUMBER> [ <K_BYTE> | <K_CHAR> ] <O_CLOSEPAREN> ]

-       [ <K_CHARACTER> <K_SET> <S_IDENTIFIER> [ <R_CHARSET> ] ]

-        {

-          if (precision == null) {

-              return new VarCharType();

-          }

-          else {

-              pl = Long.decode(precision.image);

-              return new VarCharType(pl);

-          }

-        }

-    | <K_VARCHAR2> [ <K_VARYING> ] [ <O_OPENPAREN> precision=<S_NUMBER> [ <K_BYTE> | <K_CHAR> ] <O_CLOSEPAREN> ]

-        [ <K_CHARACTER> <K_SET> <S_IDENTIFIER> [ <R_CHARSET> ] ]

-        {

-            if (precision == null) {

-                return new VarChar2Type();

-            }

-            else {

-                pl = Long.decode(precision.image);

-                return new VarChar2Type(pl);
            }
        }

-    | <K_CHARACTER> [ t=<K_VARYING> ] [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]

-        {

-          if (t == null) {

-              if (precision == null) {

-                  return new CharType();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  return new CharType(pl);

-              }

-          }

-          else {

-              // ANSI syntax for VARCHAR

-              if (precision == null) {

-                  return new VarCharType();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  return new VarCharType(pl);

-              }

-          }

-        }

-    | <K_NCHAR> [ t=<K_VARYING> ] [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]

-        {

-          if (t == null) {

-              if (precision == null) {

-                  return new NCharType();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  return new NCharType(pl);

-              }

-          }

-          else {

-              // ANSI syntax for NVARCHAR2

-              if (precision == null) {

-                  return new NVarChar2Type();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  return new NVarChar2Type(pl);

-              }

-          }

-        }

-    | <K_NVARCHAR> [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]
           {

-            if (precision == null) {

-                return new NVarChar2Type();

-            }

-            else {

-                pl = Long.decode(precision.image);

-                return new NVarChar2Type(pl);

-            }
      }

-    | <K_NVARCHAR2> [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]

-        {

-            if (precision == null) {

-                return new NVarChar2Type();

-            }

-            else {

-                pl = Long.decode(precision.image);

-                return new NVarChar2Type(pl);

-            }

-        }

-    | <K_NATIONAL> ( <K_CHARACTER> | <K_CHAR> ) [ t=<K_VARYING> ] [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]

-        {

-          if (t == null) {

-              if (precision == null) {

-                  return new NCharType();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  return new NCharType(pl);

-              }

-          }

-          else {

-              // ANSI syntax for NVARCHAR2

-              if (precision == null) {

-                  return new NVarChar2Type();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  return new NVarChar2Type(pl);

-              }

-          }

-        }

-    | <K_CLOB> [ <K_CHARACTER> <K_SET> <S_IDENTIFIER> [ <R_CHARSET> ] ] { return new ClobType();}

-}

-

-DatabaseType typeSpec():

-{boolean isTYPEType = false;

- boolean isROWTYPEType = false;

- DatabaseType dataType = null;

- String spec = null;

- String s = null;}

-{

-    (   LOOKAHEAD(3)

-        dataType=datatype()

-      | spec=columnSpec()

-        [

-          ( <O_OPENPAREN> <S_NUMBER> <O_CLOSEPAREN> )

-          |

-          <R_ANCHORED_TYPE>

-            {

-              isTYPEType=true;

-              s = spec + removeQuotes(tokenImage[R_ANCHORED_TYPE]);

-            }

-          |

-          <R_ANCHORED_ROWTYPE>

-            {

-              isROWTYPEType =true;

-              s = spec + removeQuotes(tokenImage[R_ANCHORED_ROWTYPE]);

-            }

-        ]

-    )

-    {

-      if (dataType == null && localTypes != null) {

-          // spec may need schema/catalog stripped off

-          String tName = spec;

-          StringTokenizer stok = new StringTokenizer(spec, ".");

-          while (stok.hasMoreTokens()) {

-              tName = stok.nextToken();

-          }

-          for (String typeName : localTypes.keySet()) {

-              if (typeName.equals(spec)) {

-                  dataType = localTypes.get(spec);

-                  break;

-              } else if (typeName.equals(tName)) {

-                  dataType = localTypes.get(tName);

-                  break;

-              }

-          }

-      }

-      if (dataType == null) {

-          UnresolvedType uType = new UnresolvedType(spec);

-          if (isTYPEType) {

-              TYPEType tType = new TYPEType(s);

-              tType.setEnclosedType(uType);

-              uType.setOwningType(tType);

-              dataType = tType;

-              localTypes.put(spec, dataType);

-          }

-          else if (isROWTYPEType) {

-              ROWTYPEType rType = new ROWTYPEType(s);

-              rType.setEnclosedType(uType);

-              uType.setOwningType(rType);

-              dataType = rType;

-              localTypes.put(spec, dataType);

-          }

-          else {

-              dataType = uType;

-          }

-      }

-      return dataType;
    }

-}

-

-String columnSpec():

-{String s1 = null;

- String s2 = null;

- String s3 = null;}

-{

-    s1=OracleObjectName() [ <O_DOT> s2=OracleObjectName() [ <O_DOT> s3=OracleObjectName() ] ]

-    {

-      StringBuilder sb = new StringBuilder(s1);

-      if (s2 != null) {

-          sb.append('.');

-          sb.append(s2);

-          if (s3 != null) {

-              sb.append('.');

-              sb.append(s3);

-          }

-      }

-      return sb.toString();

-    }

-}

-

-String tableSpec():

-{}

-{

-    OracleObjectName() [ <O_DOT> OracleObjectName() [ <O_ATSIGN> <S_IDENTIFIER> ] ]

-    {return token.image;}

-}

-

-String typeName():

-{}

-{

-    OracleObjectName() [ <O_DOT> OracleObjectName() ]

-    {return token.image;}

-}

-

-void typeOrSubTypeDeclaration(PLSQLPackageType packageType) :

-{String s = null;}

-{

-      typeDeclaration(packageType)

-    | subtypeDeclaration(packageType)

-}

-

-void typeDeclaration(PLSQLPackageType packageType) :

-{String s = null;}

-{

-    <R_TYPE> s=typeName() <R_IS> aTypeDeclaration(packageType, s) <O_SEMICOLON>

-}

-

-void aTypeDeclaration(PLSQLPackageType packageType, String typeName) :

-{String spec = null;

- String anchoredTypeName = null;

- boolean isTYPEType = false;

- boolean isROWTYPEType = false;

-}

-{

-      LOOKAHEAD(2)

-      recordDeclaration(packageType, typeName)

-    | plsqlTableDeclaration(packageType, typeName)

-    | LOOKAHEAD(2) varrayDeclaration(packageType)

-    | LOOKAHEAD(2) refCursorDeclaration(packageType, typeName)

-    | LOOKAHEAD(2)

-      spec=columnSpec()

-      (

-        <R_ANCHORED_TYPE>

-          {

-            isTYPEType=true;

-            anchoredTypeName = spec + removeQuotes(tokenImage[R_ANCHORED_TYPE]);

-          }

-        |

-        <R_ANCHORED_ROWTYPE>

-          {

-            isROWTYPEType =true;

-            anchoredTypeName = spec + removeQuotes(tokenImage[R_ANCHORED_ROWTYPE]);

-          }
      )

-      {

-         DatabaseType dataType = null;

-         UnresolvedType uType = new UnresolvedType(anchoredTypeName);

-         if (isTYPEType) {

-             TYPEType tType = new TYPEType(anchoredTypeName);

-             tType.setEnclosedType(uType);

-             uType.setOwningType(tType);

-             dataType = tType;

-         }

-         else if (isROWTYPEType) {

-             ROWTYPEType rType = new ROWTYPEType(anchoredTypeName);

-             rType.setEnclosedType(uType);

-             rType.setPackageType(packageType);

-             uType.setOwningType(rType);

-             dataType = rType;

-         }

-         PLSQLType newType = new PLSQLType(typeName);

-         newType.setEnclosedType(dataType);

-         packageType.addType(newType);

-         localTypes.put(typeName, newType);
      }

-}

-

-void recordDeclaration(PLSQLPackageType packageType, String typeName) :

-{

-  PLSQLRecordType plsqlRecordType = new PLSQLRecordType(typeName);

-  plsqlRecordType.setParentType(packageType);

-}

-{

-    <K_RECORD> <O_OPENPAREN>

-        fieldDeclarations(plsqlRecordType)

-    <O_CLOSEPAREN>

-    {
      packageType.addType(plsqlRecordType);

-      localTypes.put(typeName, plsqlRecordType);

-    }

-}

-

-void fieldDeclarations(PLSQLRecordType plsqlRecordType) :

-{}

-{

-    fieldDeclaration(plsqlRecordType) [ <O_COMMA> fieldDeclarations(plsqlRecordType) ]

-}

-

-void fieldDeclaration(PLSQLRecordType plsqlRecordType):

-{

-  String s = null;

-  DatabaseType dataType = null;

-  FieldType fieldType = null;

-}

-{

-    s=typeName() dataType=typeSpec() [ <R_NOT> <R_NULL> ] [ fieldDefaultAssignment() ]

-    {

-      fieldType = new FieldType(s);

-      fieldType.setEnclosedType(dataType);

-      plsqlRecordType.addField(fieldType);

-      if (dataType instanceof UnresolvedType) {

-          ((UnresolvedType)dataType).setOwningType(plsqlRecordType);

-      }
    }

-}

-

-void fieldDefaultAssignment():

-{}

-{

-    ( <O_ASSIGN> | <R_DEFAULT> ) skipToNextArg()

-}

-

-void subtypeDeclaration(PLSQLPackageType packageType) :

-{String subtypeName;

-DatabaseType subtype;

-Token notNull = null;

-Token rangeStart = null;

-Token rangeEnd = null;}

-{

-    <R_SUBTYPE> subtypeName=OracleObjectName() <R_IS> subtype=typeSpec()

-        [ <K_RANGE> rangeStart=<S_NUMBER> <O_DOUBLEDOT> rangeEnd=<S_NUMBER> ]

-        [ <R_NOT> notNull=<R_NULL> ] <O_SEMICOLON>

-    {

-      PLSQLSubType newPLSQLSubType = new PLSQLSubType(subtypeName);

-      newPLSQLSubType.setEnclosedType(subtype);

-      if (subtype instanceof UnresolvedType) {

-          ((UnresolvedType)subtype).setOwningType(newPLSQLSubType);
      }

-      if (subtype.isROWTYPEType()) {

-         ((ROWTYPEType)subtype).setPackageType(packageType);

-      }

-      packageType.addType(newPLSQLSubType);

-      if (notNull != null) {

-          newPLSQLSubType.setNotNull(true);
      }

-      if (rangeStart != null) {

-          long rStart = Long.decode(rangeStart.image).longValue();

-          long rEnd = Long.decode(rangeEnd.image).longValue();

-          newPLSQLSubType.setHasRange(true);

-          newPLSQLSubType.setRangeStart(rStart);

-          newPLSQLSubType.setRangeEnd(rEnd);
      }

-      localTypes.put(subtypeName, newPLSQLSubType);

-    }

-}

-

-void plsqlTableDeclaration(PLSQLPackageType packageType, String typeName) :

-{

-  PLSQLCollectionType plsqlTable = new PLSQLCollectionType(typeName);

-  plsqlTable.setParentType(packageType);

-  DatabaseType nestedType;

-}

-{
-    <R_TABLE> <R_OF> nestedType = typeSpec() [ <R_NOT> <R_NULL> ]

-        [ <R_INDEX> <R_BY> plsqlTableIndexByDeclaration(plsqlTable) ]
-    {

-      if (nestedType instanceof UnresolvedType) {

-        ((UnresolvedType)nestedType).setOwningType(plsqlTable);
      }

-      plsqlTable.setEnclosedType(nestedType);

-      packageType.addType(plsqlTable);

-      localTypes.put(typeName, plsqlTable);

-    }

-}

-

-void plsqlTableIndexByDeclaration(PLSQLCollectionType plsqlTable) :

-{

-  DatabaseType indexType = null;

-  Token precision = null;

-  Token otherIndexByType = null;

-}

-{

-    ( <K_PLS_INTEGER> {indexType = PLS_INTEGER_TYPE; }

-    | <K_BINARY_INTEGER>  {indexType = BINARY_INTEGER_TYPE; }

-    | <K_VARCHAR2> <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN>

-      {

-        if (precision == null) {

-            indexType = new VarChar2Type();

-        }

-        else {

-            Long pl = Long.decode(precision.image);

-            indexType = new VarChar2Type(pl);

-        }

-      }

-    | otherIndexByType=<K_STRING> <O_OPENPAREN> <S_NUMBER> <O_CLOSEPAREN>

-      {

-        String indexTypename = otherIndexByType.image;

-        for (String typeName : localTypes.keySet()) {

-            if (typeName.equals(indexTypename)) {

-                indexType = localTypes.get(indexTypename);

-                break;

-            }

-        }

-        //what else can INDEX BY be? Unresolved for now ...

-        if (indexType == null) {

-            indexType = new UnresolvedType(indexTypename);
-            ((UnresolvedType)indexType).setOwningType(plsqlTable);
-        }

-      }

-    )

-    {
      plsqlTable.setIndexed(true);

-      plsqlTable.setIndexType(indexType);

-    }

-}

-

-void varrayDeclaration(PLSQLPackageType packageType) :

-{}

-{

-    ( <K_VARRAY> | <K_VARYING> <K_ARRAY> ) <O_OPENPAREN> <S_NUMBER> <O_CLOSEPAREN>

-        <R_OF> datatype() [ <R_NOT> <R_NULL> ]

-}

-

-void refCursorDeclaration(PLSQLPackageType packageType, String cursorTypeName) :

-{PLSQLCursorType cursorType = null;}

-{

-    <K_REF> <R_CURSOR>

-      {

-        cursorType = new PLSQLCursorType(cursorTypeName);

-        cursorType.setParentType(packageType);

-        packageType.addCursor(cursorType);

-        localTypes.put(cursorTypeName, cursorType);

-      }

-      [ refCursorTypeSpec(cursorType, packageType) ]

-}

-

-void refCursorTypeSpec(PLSQLCursorType cursorType, PLSQLPackageType packageType) :

-{String s = null;

- String spec = null;

- boolean isTYPEType = false;

- boolean isROWTYPEType = false;

- DatabaseType localType = null;

-}

-{

-    <K_RETURN> spec=OracleObjectName()

-      [

-          <R_ANCHORED_TYPE>
            {

-                  isTYPEType = true;

-                  s = spec + removeQuotes(tokenImage[R_ANCHORED_TYPE]);
            }

-        | <R_ANCHORED_ROWTYPE>

-            {

-              isROWTYPEType = true;

-              s = spec + removeQuotes(tokenImage[R_ANCHORED_ROWTYPE]);

-            }

-      ]

-    {

-      //check local variables first

-      for (FieldType varField : packageType.getLocalVariables()) {

-          if (spec.equals(varField.getFieldName())) {

-	          if (isTYPEType) {

-	              TYPEType tType = new TYPEType(s);

-	              UnresolvedType uType = new UnresolvedType(s);

-	              tType.setEnclosedType(uType);

-	              uType.setOwningType(tType);

-	              localType = tType;

-	          }

-	          else if (isROWTYPEType) {

-	              ROWTYPEType rType = new ROWTYPEType(s);

-	              rType.setPackageType(packageType);

-	              UnresolvedType uType = new UnresolvedType(s);

-	              rType.setEnclosedType(uType);

-	              uType.setOwningType(rType);

-	              localType = rType;

-	          }

-	          else {

-	              localType = varField.getEnclosedType();
	          }

-	          cursorType.setEnclosedType(localType);

-              break;

-          }

-      }

-      if (localType == null) {

-          localType = localTypes.get(spec);

-          if (localType == null) {

-              UnresolvedType uType = new UnresolvedType(spec);

-              if (isTYPEType) {

-                  TYPEType tType = new TYPEType(s);

-                  tType.setEnclosedType(uType);

-                  uType.setOwningType(tType);

-                  cursorType.setEnclosedType(tType);

-              }

-              else if (isROWTYPEType) {

-                  ROWTYPEType rType = new ROWTYPEType(s);

-                  rType.setEnclosedType(uType);

-                  rType.setPackageType(packageType);

-                  uType.setOwningType(rType);

-                  cursorType.setEnclosedType(rType);

-              }

-              else {

-                  uType.setOwningType(cursorType);

-                  cursorType.setEnclosedType(uType);

-              }

-          }

-          else {

-              cursorType.setEnclosedType(localType);
         }

-      }
    }

-}

-

-void cursorDeclaration(PLSQLPackageType packageType) :

-{Token t = null;}

-{

-    <R_CURSOR> skipToSemiColon()

-}

-

-// Procedure Specification

-void procedureSpec(PLSQLPackageType packageType) :

-{String procedureName= null;

- ProcedureType procedureType = null;

-}

-{

-    <R_PROCEDURE> procedureName=OracleObjectName() 
        {

-            procedureType = new ProcedureType(procedureName);

-            procedureType.setCatalogName(packageType.getPackageName());

-            procedureType.setSchema(packageType.getSchema());

-            procedureType.setParentType(packageType);
        }

-        [ <O_OPENPAREN> argumentList(procedureType) <O_CLOSEPAREN> ]

-    <O_SEMICOLON>

-    {
      packageType.addProcedure(procedureType);

-      for (ArgumentType argumentType : procedureType.getArguments()) {

-          DatabaseType databaseType = argumentType.getEnclosedType();

-          if (databaseType.isROWTYPEType()) {

-              ((ROWTYPEType)databaseType).setPackageType(packageType);

-          }

-      }

-    }

-}

-

-void argumentList(ProcedureType procedureType) :

-{}

-{

-   argument(procedureType) ( <O_COMMA> argument(procedureType) )*

-}

-

-// Function Specification

-void functionSpec(PLSQLPackageType packageType) :

-{String functionName= null;

- FunctionType functionType = null;

- ArgumentType returnDataType = null;

-}

-{

-    <R_FUNCTION> functionName=OracleObjectName()

-        {

-            functionType = new FunctionType(functionName);

-            functionType.setCatalogName(packageType.getPackageName());

-            functionType.setSchema(packageType.getSchema());

-            functionType.setParentType(packageType);

-        }

-        [ <O_OPENPAREN> argumentList(functionType) <O_CLOSEPAREN> ]

-        returnDataType = functionReturnSpec(functionType)

-        [ <K_DETERMINISTIC> | <K_PIPELINED> | <K_PARALLEL_ENABLE> | <K_RESULT_CACHE> ]

-    <O_SEMICOLON>

-    {

-      functionType.setReturnArgument(returnDataType);

-      packageType.addProcedure(functionType);

-      for (ArgumentType argumentType : functionType.getArguments()) {

-          DatabaseType databaseType = argumentType.getEnclosedType();

-          if (databaseType.isROWTYPEType()) {

-              ((ROWTYPEType)databaseType).setPackageType(packageType);

-          }

-      }

-      if (returnDataType.getEnclosedType().isROWTYPEType()) {

-          ((ROWTYPEType)returnDataType.getEnclosedType()).setPackageType(packageType);

-      }

-    }

-}

-

-ArgumentType functionReturnSpec(FunctionType functionType):

-{DatabaseType dataType = null;}
{
    (<K_RETURN> dataType=typeSpec())

-    {

-      ArgumentType returnType = new ArgumentType(null);

-      returnType.setDirection(ArgumentTypeDirection.RETURN);

-      // may need to strip off schema/catalog name

-      if (dataType.getTypeName().contains(".")) {

-          String dataTypeName = dataType.getTypeName();

-          int dotIdx = dataTypeName.indexOf(".");

-          String namePart1 = dataTypeName.substring(0, dotIdx);

-          String namePart2 = dataTypeName.substring(dotIdx+1, dataTypeName.length());

-          if (namePart1.equals(functionType.getCatalogName()) || namePart1.equals(functionType.getSchema())) {

-              dataType.setTypeName(namePart2);

-          } else if (schemaPatterns != null) {

-              for (String possibleSchemaName : schemaPatterns) {

-                  if (namePart1.equals(possibleSchemaName)) {

-                      dataType.setTypeName(namePart2);

-                      break;

-                  }

-              }

-          }

-      }

-      returnType.setEnclosedType(dataType);   

-      if (dataType instanceof UnresolvedType) {

-          ((UnresolvedType)dataType).setOwningType(returnType);
      }

-      return returnType;

-    }

-}

-

-void argument(ProcedureType procedureType) :

-{String s = null;

- ArgumentType argumentType = null;

- DatabaseType argumentDataType = null;

- ArgumentTypeDirection argDirection = ArgumentTypeDirection.IN; // by default, arguments are IN

- String direction = null;

- boolean defaultAssignment = false;

-}

-{

-    s=OracleObjectName() [ LOOKAHEAD(2) (direction=direction()) ]

-        [  LOOKAHEAD(2) <K_NOCOPY> ] argumentDataType=typeSpec() [ defaultAssignment=argumentDefaultAssignment() ]

-    {

-      // may need to strip off schema/catalog name

-      if (argumentDataType.getTypeName().contains(".")) {

-          String argumentDataTypeName = argumentDataType.getTypeName();

-          int dotIdx = argumentDataTypeName.indexOf(".");

-          String namePart1 = argumentDataTypeName.substring(0, dotIdx);

-          String namePart2 = argumentDataTypeName.substring(dotIdx+1, argumentDataTypeName.length());

-          if (namePart1.equals(procedureType.getCatalogName()) || namePart1.equals(procedureType.getSchema())) {

-              argumentDataType.setTypeName(namePart2);

-          } else if (schemaPatterns != null) {

-              for (String possibleSchemaName : schemaPatterns) {

-                  if (namePart1.equals(possibleSchemaName)) {

-                      argumentDataType.setTypeName(namePart2);

-                      break;

-                  }
              }

-          }
      }

-      argumentType = new ArgumentType(s);

-      argumentType.setEnclosedType(argumentDataType);

-      if (argumentDataType instanceof UnresolvedType) {

-          ((UnresolvedType)argumentDataType).setOwningType(argumentType);

-      }

-      if (direction != null) {

-          if ("OUT".equals(direction)) {

-              argDirection = ArgumentTypeDirection.OUT;

-          }

-          else if ("IN OUT".equals(direction)) {

-              argDirection = ArgumentTypeDirection.INOUT;
          }
      }

-      argumentType.setDirection(argDirection);
      if (defaultAssignment) {

-          argumentType.setOptional();
      }

-      procedureType.addArgument(argumentType);

-    }

-}

-

-boolean argumentDefaultAssignment():

-{}

-{

-    ( <O_ASSIGN> | <R_DEFAULT> ) skipToNextArg()

-    {

-      return true;

-    }

-}

-

-void exceptionDeclaration() :

-{}

-{

-    <S_IDENTIFIER> <R_EXCEPTION> <O_SEMICOLON>

-}

-

-void pragmaDeclaration() :

-{}

-{
    <K_PRAGMA> skipToSemiColon()

-}

-

-void orReplace():

-{

-}

-{

-    <R_OR> <K_REPLACE>

-}

-

-void invokerRights():

-{

-}

-{

-    <K_AUTHID> (<K_CURRENT_USER> | <K_DEFINER>)

-}

-

-void as():

-{

-}

-{

-    <R_AS> | <R_IS>

-}

-

-void onCommit():

-{

-}

-{

-    ( <R_ON> <K_COMMIT> ( <K_DELETE> | <K_PRESERVE> ) <K_ROWS> )

-}

-

-boolean notNull():

-{

-}

-{

-    <R_NOT> <R_NULL> [ <K_ENABLE> ]

-    {

-      return true;

-    }

-}

-

-String direction():

-{String dir = "";

-}

-{

-    (

-        LOOKAHEAD(2)

-        <R_IN> {dir = "IN";} [ LOOKAHEAD(2) <K_OUT> {dir += " OUT";} ]

-      | <K_OUT> {dir = "OUT";}

-    )

-    {

-      return dir;

-    }

-}

-

-String OracleObjectName():

-{String keyword=null;}

-{

-      LOOKAHEAD(2)

-      keyword=keywords() {return keyword;}

-    | <S_IDENTIFIER> {return token.image;}

-    | <S_QUOTED_IDENTIFIER> { return removeQuotes(token.image);}

-}

-

-String OracleObjectNamePossiblyDotted():

-{String possiblyDottedName = "";

- String afterDot = null;

-}

-{

-    possiblyDottedName=OracleObjectName() [ <O_DOT> afterDot=OracleObjectName() ]

-    {

-      if (afterDot != null) {

-          possiblyDottedName += "." + afterDot;

-      }

-      return possiblyDottedName;

-    }

-}

-

-void skipToSemiColon():

-{}

-{

-    {

-        Token t = getNextToken();

-        while (t.kind != O_SEMICOLON) {

-                t = getNextToken();

-        }

-        token_source.input_stream.backup(1);

-    }

-}

-

-void skipToClosingParen():

-{}

-{

-    {

-        Token t = getNextToken();

-        while (t.kind != O_CLOSEPAREN) {

-            t = getNextToken();

-        }

-        token_source.input_stream.backup(1);

-    }

-}

-

-void skipToNextArg():

-{}

-{

-    {

-        Token t = getNextToken();

-        while (t.kind != O_COMMA && t.kind != O_CLOSEPAREN) {

-            t = getNextToken();

-        }

-        token_source.input_stream.backup(1);

-    }

-}

-

-void skipToEnd():

-{}

-{

-    {

-      /** skip through all the tokens. */

-      Token t = getNextToken();

-      while (t.kind != EOF) {

-          t = getNextToken();

-      }

-  }

-}

-

-void skipToReturn():

-{}

-{

-    {

-        Token t = getNextToken();

-        while (t.kind != K_RETURN) {

-                t = getNextToken();

-        }

-    }

-}

-

-void constructor():

-{    Token t = token;

-}

-{
    < K_CONSTRUCTOR >

-    {
      

-    token = t;

-  }

-}
\ No newline at end of file
diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParserConstants.java b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParserConstants.java
deleted file mode 100644
index b6c355a..0000000
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParserConstants.java
+++ /dev/null
@@ -1,703 +0,0 @@
-/* Generated By:JJTree&JavaCC: Do not edit this line. DDLParserConstants.java */

-/*******************************************************************************

- * Copyright (c) 2011 Oracle. All rights reserved.

- * This program and the accompanying materials are made available under the

- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0

- * which accompanies this distribution.

- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html

- * and the Eclipse Distribution License is available at

- * http://www.eclipse.org/org/documents/edl-v10.php.

- *

- * Contributors:

- *     Mike Norman - June 10 2011, created DDL parser package

- ******************************************************************************/

-package org.eclipse.persistence.tools.oracleddl.parser;

-

-

-/**

- * Token literal values and constants.

- * Generated by org.javacc.parser.OtherFilesGen#start()

- */

-@SuppressWarnings("all")
-public interface DDLParserConstants {

-

-  /** End of File. */

-  int EOF = 0;

-  /** RegularExpression Id. */

-  int COMMENT_LINE = 6;

-  /** RegularExpression Id. */

-  int COMMENT_BLOCK = 7;

-  /** RegularExpression Id. */

-  int O_ASSIGN = 8;

-  /** RegularExpression Id. */

-  int O_ASTERISK = 9;

-  /** RegularExpression Id. */

-  int O_ATSIGN = 10;

-  /** RegularExpression Id. */

-  int O_CLOSEPAREN = 11;

-  /** RegularExpression Id. */

-  int O_CONCAT = 12;

-  /** RegularExpression Id. */

-  int O_COLON = 13;

-  /** RegularExpression Id. */

-  int O_COMMA = 14;

-  /** RegularExpression Id. */

-  int O_DOT = 15;

-  /** RegularExpression Id. */

-  int O_DOUBLEDOT = 16;

-  /** RegularExpression Id. */

-  int O_DOLLAR = 17;

-  /** RegularExpression Id. */

-  int O_PERCENT = 18;

-  /** RegularExpression Id. */

-  int O_EQUAL = 19;

-  /** RegularExpression Id. */

-  int O_GREATER = 20;

-  /** RegularExpression Id. */

-  int O_GREATEREQUAL = 21;

-  /** RegularExpression Id. */

-  int O_JOINPLUS = 22;

-  /** RegularExpression Id. */

-  int O_LESS = 23;

-  /** RegularExpression Id. */

-  int O_LESSEQUAL = 24;

-  /** RegularExpression Id. */

-  int O_MINUS = 25;

-  /** RegularExpression Id. */

-  int O_NOTEQUAL2 = 26;

-  /** RegularExpression Id. */

-  int O_NOTEQUAL = 27;

-  /** RegularExpression Id. */

-  int O_OPENPAREN = 28;

-  /** RegularExpression Id. */

-  int O_PLUS = 29;

-  /** RegularExpression Id. */

-  int O_POUND = 30;

-  /** RegularExpression Id. */

-  int O_QUESTIONMARK = 31;

-  /** RegularExpression Id. */

-  int O_SEMICOLON = 32;

-  /** RegularExpression Id. */

-  int O_SLASH = 33;

-  /** RegularExpression Id. */

-  int O_TILDE = 34;

-  /** RegularExpression Id. */

-  int S_NUMBER = 35;

-  /** RegularExpression Id. */

-  int FLOAT = 36;

-  /** RegularExpression Id. */

-  int INTEGER = 37;

-  /** RegularExpression Id. */

-  int DIGIT = 38;

-  /** RegularExpression Id. */

-  int R_ALL = 39;

-  /** RegularExpression Id. */

-  int R_ALTER = 40;

-  /** RegularExpression Id. */

-  int R_ANCHORED_ROWTYPE = 41;

-  /** RegularExpression Id. */

-  int R_ANCHORED_TYPE = 42;

-  /** RegularExpression Id. */

-  int R_AND = 43;

-  /** RegularExpression Id. */

-  int R_AS = 44;

-  /** RegularExpression Id. */

-  int R_ASC = 45;

-  /** RegularExpression Id. */

-  int R_AT = 46;

-  /** RegularExpression Id. */

-  int R_BEGIN = 47;

-  /** RegularExpression Id. */

-  int R_BETWEEN = 48;

-  /** RegularExpression Id. */

-  int R_BY = 49;

-  /** RegularExpression Id. */

-  int R_CASE = 50;

-  /** RegularExpression Id. */

-  int R_CHARSET = 51;

-  /** RegularExpression Id. */

-  int R_CHECK = 52;

-  /** RegularExpression Id. */

-  int R_CLUSTERS = 53;

-  /** RegularExpression Id. */

-  int R_CLUSTER = 54;

-  /** RegularExpression Id. */

-  int R_COLAUTH = 55;

-  /** RegularExpression Id. */

-  int R_COLUMNS = 56;

-  /** RegularExpression Id. */

-  int R_COMPRESS = 57;

-  /** RegularExpression Id. */

-  int R_CONNECT = 58;

-  /** RegularExpression Id. */

-  int R_CONSTRAINT = 59;

-  /** RegularExpression Id. */

-  int R_CRASH = 60;

-  /** RegularExpression Id. */

-  int R_CREATE = 61;

-  /** RegularExpression Id. */

-  int R_CURSOR = 62;

-  /** RegularExpression Id. */

-  int R_DECLARE = 63;

-  /** RegularExpression Id. */

-  int R_DEFAULT = 64;

-  /** RegularExpression Id. */

-  int R_DESC = 65;

-  /** RegularExpression Id. */

-  int R_DISTINCT = 66;

-  /** RegularExpression Id. */

-  int R_DROP = 67;

-  /** RegularExpression Id. */

-  int R_ELSE = 68;

-  /** RegularExpression Id. */

-  int R_END = 69;

-  /** RegularExpression Id. */

-  int R_EXCEPTION = 70;

-  /** RegularExpression Id. */

-  int R_EXCLUSIVE = 71;

-  /** RegularExpression Id. */

-  int R_FETCH = 72;

-  /** RegularExpression Id. */

-  int R_FOR = 73;

-  /** RegularExpression Id. */

-  int R_FROM = 74;

-  /** RegularExpression Id. */

-  int R_FUNCTION = 75;

-  /** RegularExpression Id. */

-  int R_GOTO = 76;

-  /** RegularExpression Id. */

-  int R_GRANT = 77;

-  /** RegularExpression Id. */

-  int R_GROUP = 78;

-  /** RegularExpression Id. */

-  int R_HAVING = 79;

-  /** RegularExpression Id. */

-  int R_IDENTIFIED = 80;

-  /** RegularExpression Id. */

-  int R_IF = 81;

-  /** RegularExpression Id. */

-  int R_IN = 82;

-  /** RegularExpression Id. */

-  int R_INDEX = 83;

-  /** RegularExpression Id. */

-  int R_INDEXES = 84;

-  /** RegularExpression Id. */

-  int R_INSERT = 85;

-  /** RegularExpression Id. */

-  int R_INTERSECT = 86;

-  /** RegularExpression Id. */

-  int R_INTO = 87;

-  /** RegularExpression Id. */

-  int R_IS = 88;

-  /** RegularExpression Id. */

-  int R_LIKE = 89;

-  /** RegularExpression Id. */

-  int R_LOCK = 90;

-  /** RegularExpression Id. */

-  int R_MINUS = 91;

-  /** RegularExpression Id. */

-  int R_MODE = 92;

-  /** RegularExpression Id. */

-  int R_NOCOMPRESS = 93;

-  /** RegularExpression Id. */

-  int R_NOT = 94;

-  /** RegularExpression Id. */

-  int R_NOWAIT = 95;

-  /** RegularExpression Id. */

-  int R_NULL = 96;

-  /** RegularExpression Id. */

-  int R_OF = 97;

-  /** RegularExpression Id. */

-  int R_ON = 98;

-  /** RegularExpression Id. */

-  int R_OPTION = 99;

-  /** RegularExpression Id. */

-  int R_OR = 100;

-  /** RegularExpression Id. */

-  int R_ORDER = 101;

-  /** RegularExpression Id. */

-  int R_OVERLAPS = 102;

-  /** RegularExpression Id. */

-  int R_PRIMARY = 103;

-  /** RegularExpression Id. */

-  int R_PROCEDURE = 104;

-  /** RegularExpression Id. */

-  int R_PUBLIC = 105;

-  /** RegularExpression Id. */

-  int R_RESOURCE = 106;

-  /** RegularExpression Id. */

-  int R_REVOKE = 107;

-  /** RegularExpression Id. */

-  int R_SELECT = 108;

-  /** RegularExpression Id. */

-  int R_SHARE = 109;

-  /** RegularExpression Id. */

-  int R_SIZE = 110;

-  /** RegularExpression Id. */

-  int R_SQL = 111;

-  /** RegularExpression Id. */

-  int R_START = 112;

-  /** RegularExpression Id. */

-  int R_SUBTYPE = 113;

-  /** RegularExpression Id. */

-  int R_TABAUTH = 114;

-  /** RegularExpression Id. */

-  int R_TABLE = 115;

-  /** RegularExpression Id. */

-  int R_THEN = 116;

-  /** RegularExpression Id. */

-  int R_TO = 117;

-  /** RegularExpression Id. */

-  int R_TYPE = 118;

-  /** RegularExpression Id. */

-  int R_UNION = 119;

-  /** RegularExpression Id. */

-  int R_UNIQUE = 120;

-  /** RegularExpression Id. */

-  int R_UPDATE = 121;

-  /** RegularExpression Id. */

-  int R_VALUES = 122;

-  /** RegularExpression Id. */

-  int R_VIEW = 123;

-  /** RegularExpression Id. */

-  int R_VIEWS = 124;

-  /** RegularExpression Id. */

-  int R_WHEN = 125;

-  /** RegularExpression Id. */

-  int R_WHERE = 126;

-  /** RegularExpression Id. */

-  int R_WITH = 127;

-  /** RegularExpression Id. */

-  int K_ARRAY = 128;

-  /** RegularExpression Id. */

-  int K_AUTHID = 129;

-  /** RegularExpression Id. */

-  int K_BFILE = 130;

-  /** RegularExpression Id. */

-  int K_BINARY_DOUBLE = 131;

-  /** RegularExpression Id. */

-  int K_BINARY_FLOAT = 132;

-  /** RegularExpression Id. */

-  int K_BINARY_INTEGER = 133;

-  /** RegularExpression Id. */

-  int K_BLOB = 134;

-  /** RegularExpression Id. */

-  int K_BOOLEAN = 135;

-  /** RegularExpression Id. */

-  int K_BYTE = 136;

-  /** RegularExpression Id. */

-  int K_CHAR = 137;

-  /** RegularExpression Id. */

-  int K_CHARACTER = 138;

-  /** RegularExpression Id. */

-  int K_CLOB = 139;

-  /** RegularExpression Id. */

-  int K_COMMIT = 140;

-  /** RegularExpression Id. */

-  int K_CONSTANT = 141;

-  /** RegularExpression Id. */

-  int K_CONSTRUCTOR = 142;

-  /** RegularExpression Id. */

-  int K_CURRENT_USER = 143;

-  /** RegularExpression Id. */

-  int K_DATE = 144;

-  /** RegularExpression Id. */

-  int K_DAY = 145;

-  /** RegularExpression Id. */

-  int K_DEC = 146;

-  /** RegularExpression Id. */

-  int K_DECIMAL = 147;

-  /** RegularExpression Id. */

-  int K_DEFINER = 148;

-  /** RegularExpression Id. */

-  int K_DELETE = 149;

-  /** RegularExpression Id. */

-  int K_DETERMINISTIC = 150;

-  /** RegularExpression Id. */

-  int K_DOUBLE = 151;

-  /** RegularExpression Id. */

-  int K_ENABLE = 152;

-  /** RegularExpression Id. */

-  int K_FINAL = 153;

-  /** RegularExpression Id. */

-  int K_FLOAT = 154;

-  /** RegularExpression Id. */

-  int K_FORCE = 155;

-  /** RegularExpression Id. */

-  int K_GLOBAL = 156;

-  /** RegularExpression Id. */

-  int K_INSTANTIABLE = 157;

-  /** RegularExpression Id. */

-  int K_INT = 158;

-  /** RegularExpression Id. */

-  int K_INTEGER = 159;

-  /** RegularExpression Id. */

-  int K_INTERVAL = 160;

-  /** RegularExpression Id. */

-  int K_KEY = 161;

-  /** RegularExpression Id. */

-  int K_LOCAL = 162;

-  /** RegularExpression Id. */

-  int K_LONG = 163;

-  /** RegularExpression Id. */

-  int K_MLSLABEL = 164;

-  /** RegularExpression Id. */

-  int K_MONTH = 165;

-  /** RegularExpression Id. */

-  int K_NATIONAL = 166;

-  /** RegularExpression Id. */

-  int K_NATURAL = 167;

-  /** RegularExpression Id. */

-  int K_NCHAR = 168;

-  /** RegularExpression Id. */

-  int K_NCLOB = 169;

-  /** RegularExpression Id. */

-  int K_NOCOPY = 170;

-  /** RegularExpression Id. */

-  int K_NUMBER = 171;

-  /** RegularExpression Id. */

-  int K_NUMERIC = 172;

-  /** RegularExpression Id. */

-  int K_NVARCHAR2 = 173;

-  /** RegularExpression Id. */

-  int K_NVARCHAR = 174;

-  /** RegularExpression Id. */

-  int K_OBJECT = 175;

-  /** RegularExpression Id. */

-  int K_OID = 176;

-  /** RegularExpression Id. */

-  int K_ORGANIZATION = 177;

-  /** RegularExpression Id. */

-  int K_OUT = 178;

-  /** RegularExpression Id. */

-  int K_OVERFLOW = 179;

-  /** RegularExpression Id. */

-  int K_PACKAGE = 180;

-  /** RegularExpression Id. */

-  int K_PARALLEL_ENABLE = 181;

-  /** RegularExpression Id. */

-  int K_PIPELINED = 182;

-  /** RegularExpression Id. */

-  int K_PLS_INTEGER = 183;

-  /** RegularExpression Id. */

-  int K_POSITIVE = 184;

-  /** RegularExpression Id. */

-  int K_PRAGMA = 185;

-  /** RegularExpression Id. */

-  int K_PRECISION = 186;

-  /** RegularExpression Id. */

-  int K_PRESERVE = 187;

-  /** RegularExpression Id. */

-  int K_RANGE = 188;

-  /** RegularExpression Id. */

-  int K_RAW = 189;

-  /** RegularExpression Id. */

-  int K_REAL = 190;

-  /** RegularExpression Id. */

-  int K_RECORD = 191;

-  /** RegularExpression Id. */

-  int K_REF = 192;

-  /** RegularExpression Id. */

-  int K_REPLACE = 193;

-  /** RegularExpression Id. */

-  int K_RESULT = 194;

-  /** RegularExpression Id. */

-  int K_RESULT_CACHE = 195;

-  /** RegularExpression Id. */

-  int K_RETURN = 196;

-  /** RegularExpression Id. */

-  int K_ROWID = 197;

-  /** RegularExpression Id. */

-  int K_ROWS = 198;

-  /** RegularExpression Id. */

-  int K_SECOND = 199;

-  /** RegularExpression Id. */

-  int K_SELF = 200;

-  /** RegularExpression Id. */

-  int K_SET = 201;

-  /** RegularExpression Id. */

-  int K_SIGNTYPE = 202;

-  /** RegularExpression Id. */

-  int K_SIMPLE_DOUBLE = 203;

-  /** RegularExpression Id. */

-  int K_SIMPLE_FLOAT = 204;

-  /** RegularExpression Id. */

-  int K_SIMPLE_INTEGER = 205;

-  /** RegularExpression Id. */

-  int K_SMALLINT = 206;

-  /** RegularExpression Id. */

-  int K_STRING = 207;

-  /** RegularExpression Id. */

-  int K_SYS_REFCURSOR = 208;

-  /** RegularExpression Id. */

-  int K_TEMPORARY = 209;

-  /** RegularExpression Id. */

-  int K_TIME = 210;

-  /** RegularExpression Id. */

-  int K_TIMESTAMP = 211;

-  /** RegularExpression Id. */

-  int K_UROWID = 212;

-  /** RegularExpression Id. */

-  int K_VARCHAR2 = 213;

-  /** RegularExpression Id. */

-  int K_VARCHAR = 214;

-  /** RegularExpression Id. */

-  int K_VARRAY = 215;

-  /** RegularExpression Id. */

-  int K_VARYING = 216;

-  /** RegularExpression Id. */

-  int K_XMLTYPE = 217;

-  /** RegularExpression Id. */

-  int K_SYSXMLTYPE = 218;

-  /** RegularExpression Id. */

-  int K_YEAR = 219;

-  /** RegularExpression Id. */

-  int K_ZONE = 220;

-  /** RegularExpression Id. */

-  int S_IDENTIFIER = 221;

-  /** RegularExpression Id. */

-  int LETTER = 222;

-  /** RegularExpression Id. */

-  int SPECIAL_CHARS = 223;

-  /** RegularExpression Id. */

-  int S_BIND = 224;

-  /** RegularExpression Id. */

-  int S_CHAR_LITERAL = 225;

-  /** RegularExpression Id. */

-  int S_QUOTED_IDENTIFIER = 226;

-

-  /** Lexical state. */

-  int DEFAULT = 0;

-

-  /** Literal token values. */

-  String[] tokenImage = {

-    "<EOF>",

-    "\" \"",

-    "\"\\t\"",

-    "\"\\n\"",

-    "\"\\r\"",

-    "\"\\f\"",

-    "<COMMENT_LINE>",

-    "<COMMENT_BLOCK>",

-    "\":=\"",

-    "\"*\"",

-    "\"@\"",

-    "\")\"",

-    "\"||\"",

-    "\":\"",

-    "\",\"",

-    "\".\"",

-    "\"..\"",

-    "\"$\"",

-    "\"%\"",

-    "\"=\"",

-    "\">\"",

-    "\">=\"",

-    "\"(+)\"",

-    "\"<\"",

-    "\"<=\"",

-    "\"-\"",

-    "\"<>\"",

-    "\"!=\"",

-    "\"(\"",

-    "\"+\"",

-    "\"#\"",

-    "\"?\"",

-    "\";\"",

-    "\"/\"",

-    "\"~\"",

-    "<S_NUMBER>",

-    "<FLOAT>",

-    "<INTEGER>",

-    "<DIGIT>",

-    "\"ALL\"",

-    "\"ALTER\"",

-    "\"%ROWTYPE\"",

-    "\"%TYPE\"",

-    "\"AND\"",

-    "\"AS\"",

-    "\"ASC\"",

-    "\"AT\"",

-    "\"BEGIN\"",

-    "\"BETWEEN\"",

-    "\"BY\"",

-    "\"CASE\"",

-    "\"%CHARSET\"",

-    "\"CHECK\"",

-    "\"CLUSTERS\"",

-    "\"CLUSTER\"",

-    "\"COLAUTH\"",

-    "\"COLUMNS\"",

-    "\"COMPRESS\"",

-    "\"CONNECT\"",

-    "\"CONSTRAINT\"",

-    "\"CRASH\"",

-    "\"CREATE\"",

-    "\"CURSOR\"",

-    "\"DECLARE\"",

-    "\"DEFAULT\"",

-    "\"DESC\"",

-    "\"DISTINCT\"",

-    "\"DROP\"",

-    "\"ELSE\"",

-    "\"END\"",

-    "\"EXCEPTION\"",

-    "\"EXCLUSIVE\"",

-    "\"FETCH\"",

-    "\"FOR\"",

-    "\"FROM\"",

-    "\"FUNCTION\"",

-    "\"GOTO\"",

-    "\"GRANT\"",

-    "\"GROUP\"",

-    "\"HAVING\"",

-    "\"IDENTIFIED\"",

-    "\"IF\"",

-    "\"IN\"",

-    "\"INDEX\"",

-    "\"INDEXES\"",

-    "\"INSERT\"",

-    "\"INTERSECT\"",

-    "\"INTO\"",

-    "\"IS\"",

-    "\"LIKE\"",

-    "\"LOCK\"",

-    "\"MINUS\"",

-    "\"MODE\"",

-    "\"NOCOMPRESS\"",

-    "\"NOT\"",

-    "\"NOWAIT\"",

-    "\"NULL\"",

-    "\"OF\"",

-    "\"ON\"",

-    "\"OPTION\"",

-    "\"OR\"",

-    "\"ORDER\"",

-    "\"OVERLAPS\"",

-    "\"PRIMARY\"",

-    "\"PROCEDURE\"",

-    "\"PUBLIC\"",

-    "\"RESOURCE\"",

-    "\"REVOLE\"",

-    "\"SELECT\"",

-    "\"SHARE\"",

-    "\"SIZE\"",

-    "\"SQL\"",

-    "\"START\"",

-    "\"SUBTYPE\"",

-    "\"TABAUTH\"",

-    "\"TABLE\"",

-    "\"THEN\"",

-    "\"TO\"",

-    "\"TYPE\"",

-    "\"UNION\"",

-    "\"UNIQUE\"",

-    "\"UPDATE\"",

-    "\"VALUES\"",

-    "\"VIEW\"",

-    "\"VIEWS\"",

-    "\"WHEN\"",

-    "\"WHERE\"",

-    "\"WITH\"",

-    "\"ARRAY\"",

-    "\"AUTHID\"",

-    "\"BFILE\"",

-    "\"BINARY_DOUBLE\"",

-    "\"BINARY_FLOAT\"",

-    "\"BINARY_INTEGER\"",

-    "\"BLOB\"",

-    "\"BOOLEAN\"",

-    "\"BYTE\"",

-    "\"CHAR\"",

-    "\"CHARACTER\"",

-    "\"CLOB\"",

-    "\"COMMIT\"",

-    "\"CONSTANT\"",

-    "\"CONSTRUCTOR\"",

-    "\"CURRENT_USER\"",

-    "\"DATE\"",

-    "\"DAY\"",

-    "\"DEC\"",

-    "\"DECIMAL\"",

-    "\"DEFINER\"",

-    "\"DELETE\"",

-    "\"DETERMINISTIC\"",

-    "\"DOUBLE\"",

-    "\"ENABLE\"",

-    "\"FINAL\"",

-    "\"FLOAT\"",

-    "\"FORCE\"",

-    "\"GLOBAL\"",

-    "\"INSTANTIABLE\"",

-    "\"INT\"",

-    "\"INTEGER\"",

-    "\"INTERVAL\"",

-    "\"KEY\"",

-    "\"LOCAL\"",

-    "\"LONG\"",

-    "\"MLSLABEL\"",

-    "\"MONTH\"",

-    "\"NATIONAL\"",

-    "\"NATURAL\"",

-    "\"NCHAR\"",

-    "\"NCLOB\"",

-    "\"NOCOPY\"",

-    "\"NUMBER\"",

-    "\"NUMERIC\"",

-    "\"NVARCHAR2\"",

-    "\"NVARCHAR\"",

-    "\"OBJECT\"",

-    "\"OID\"",

-    "\"ORGANIZATION\"",

-    "\"OUT\"",

-    "\"OVERFLOW\"",

-    "\"PACKAGE\"",

-    "\"PARALLEL_ENABLE\"",

-    "\"PIPELINED\"",

-    "\"PLS_INTEGER\"",

-    "\"POSITIVE\"",

-    "\"PRAGMA\"",

-    "\"PRECISION\"",

-    "\"PRESERVE\"",

-    "\"RANGE\"",

-    "\"RAW\"",

-    "\"REAL\"",

-    "\"RECORD\"",

-    "\"REF\"",

-    "\"REPLACE\"",

-    "\"RESULT\"",

-    "\"RESULT_CACHE\"",

-    "\"RETURN\"",

-    "\"ROWID\"",

-    "\"ROWS\"",

-    "\"SECOND\"",

-    "\"SELF\"",

-    "\"SET\"",

-    "\"SIGNTYPE\"",

-    "\"SIMPLE_DOUBLE\"",

-    "\"SIMPLE_FLOAT\"",

-    "\"SIMPLE_INTEGER\"",

-    "\"SMALLINT\"",

-    "\"STRING\"",

-    "\"SYS_REFCURSOR\"",

-    "\"TEMPORARY\"",

-    "\"TIME\"",

-    "\"TIMESTAMP\"",

-    "\"UROWID\"",

-    "\"VARCHAR2\"",

-    "\"VARCHAR\"",

-    "\"VARRAY\"",

-    "\"VARYING\"",

-    "\"XMLTYPE\"",

-    "\"SYS.XMLTYPE\"",

-    "\"YEAR\"",

-    "\"ZONE\"",

-    "<S_IDENTIFIER>",

-    "<LETTER>",

-    "<SPECIAL_CHARS>",

-    "<S_BIND>",

-    "<S_CHAR_LITERAL>",

-    "<S_QUOTED_IDENTIFIER>",

-  };

-

-}

diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParserTokenManager.java b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParserTokenManager.java
deleted file mode 100644
index 927299f..0000000
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParserTokenManager.java
+++ /dev/null
@@ -1,3896 +0,0 @@
-/* Generated By:JJTree&JavaCC: Do not edit this line. DDLParserTokenManager.java */

-/*******************************************************************************

- * Copyright (c) 2011 Oracle. All rights reserved.

- * This program and the accompanying materials are made available under the

- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0

- * which accompanies this distribution.

- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html

- * and the Eclipse Distribution License is available at

- * http://www.eclipse.org/org/documents/edl-v10.php.

- *

- * Contributors:

- *     Mike Norman - June 10 2011, created DDL parser package

- ******************************************************************************/

-package org.eclipse.persistence.tools.oracleddl.parser;

-//javase imports

-import java.io.InputStream;

-import java.util.List;

-import java.util.HashMap;

-import java.util.Map;

-import java.util.StringTokenizer;

-//metadata imports

-import org.eclipse.persistence.tools.oracleddl.metadata.ArgumentType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ArgumentTypeDirection;

-import org.eclipse.persistence.tools.oracleddl.metadata.BlobType;

-import org.eclipse.persistence.tools.oracleddl.metadata.CharType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ClobType;

-import org.eclipse.persistence.tools.oracleddl.metadata.CompositeDatabaseType;

-import org.eclipse.persistence.tools.oracleddl.metadata.DatabaseType;

-import org.eclipse.persistence.tools.oracleddl.metadata.DecimalType;

-import org.eclipse.persistence.tools.oracleddl.metadata.DoubleType;

-import org.eclipse.persistence.tools.oracleddl.metadata.FieldType;

-import org.eclipse.persistence.tools.oracleddl.metadata.FloatType;

-import org.eclipse.persistence.tools.oracleddl.metadata.FunctionType;

-import org.eclipse.persistence.tools.oracleddl.metadata.IntervalDayToSecond;

-import org.eclipse.persistence.tools.oracleddl.metadata.IntervalYearToMonth;

-import org.eclipse.persistence.tools.oracleddl.metadata.LongType;

-import org.eclipse.persistence.tools.oracleddl.metadata.LongRawType;

-import org.eclipse.persistence.tools.oracleddl.metadata.NCharType;

-import org.eclipse.persistence.tools.oracleddl.metadata.NClobType;

-import org.eclipse.persistence.tools.oracleddl.metadata.NumericType;

-import org.eclipse.persistence.tools.oracleddl.metadata.NVarChar2Type;

-import org.eclipse.persistence.tools.oracleddl.metadata.ObjectType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ObjectTableType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLCollectionType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLCursorType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLPackageType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLRecordType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLSubType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ProcedureType;

-import org.eclipse.persistence.tools.oracleddl.metadata.RawType;

-import org.eclipse.persistence.tools.oracleddl.metadata.RealType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ROWTYPEType;

-import org.eclipse.persistence.tools.oracleddl.metadata.TableType;

-import org.eclipse.persistence.tools.oracleddl.metadata.TimeStampType;

-import org.eclipse.persistence.tools.oracleddl.metadata.TYPEType;

-import org.eclipse.persistence.tools.oracleddl.metadata.URowIdType;

-import org.eclipse.persistence.tools.oracleddl.metadata.UnresolvedSizedType;

-import org.eclipse.persistence.tools.oracleddl.metadata.UnresolvedType;

-import org.eclipse.persistence.tools.oracleddl.metadata.VarCharType;

-import org.eclipse.persistence.tools.oracleddl.metadata.VarChar2Type;

-import org.eclipse.persistence.tools.oracleddl.metadata.VArrayType;

-import org.eclipse.persistence.tools.oracleddl.util.DatabaseTypesRepository;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BFILE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_INTEGER_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_FLOAT_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_DOUBLE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BOOLEAN_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.DATE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.INTEGER_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.MLSLABEL_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.NATURAL_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.PLS_INTEGER_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.POSITIVE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.ROWID_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIGN_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIMPLE_INTEGER_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIMPLE_DOUBLE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIMPLE_FLOAT_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SMALLINT_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SYS_REFCURSOR_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.TIME_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.XMLTYPE_TYPE;

-

-/** Token Manager. */

-@SuppressWarnings("all")
-public class DDLParserTokenManager implements DDLParserConstants

-{

-

-  /** Debug output. */

-  public  java.io.PrintStream debugStream = System.out;

-  /** Set debug output. */

-  public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }

-private int jjStopAtPos(int pos, int kind)

-{

-   jjmatchedKind = kind;

-   jjmatchedPos = pos;

-   return pos + 1;

-}

-private int jjMoveStringLiteralDfa0_0()

-{

-   switch(curChar)

-   {

-      case 9:

-         jjmatchedKind = 2;

-         return jjMoveNfa_0(5, 0);

-      case 10:

-         jjmatchedKind = 3;

-         return jjMoveNfa_0(5, 0);

-      case 12:

-         jjmatchedKind = 5;

-         return jjMoveNfa_0(5, 0);

-      case 13:

-         jjmatchedKind = 4;

-         return jjMoveNfa_0(5, 0);

-      case 32:

-         jjmatchedKind = 1;

-         return jjMoveNfa_0(5, 0);

-      case 33:

-         return jjMoveStringLiteralDfa1_0(0x8000000L, 0x0L, 0x0L, 0x0L);

-      case 35:

-         jjmatchedKind = 30;

-         return jjMoveNfa_0(5, 0);

-      case 36:

-         jjmatchedKind = 17;

-         return jjMoveNfa_0(5, 0);

-      case 37:

-         jjmatchedKind = 18;

-         return jjMoveStringLiteralDfa1_0(0x8060000000000L, 0x0L, 0x0L, 0x0L);

-      case 40:

-         jjmatchedKind = 28;

-         return jjMoveStringLiteralDfa1_0(0x400000L, 0x0L, 0x0L, 0x0L);

-      case 41:

-         jjmatchedKind = 11;

-         return jjMoveNfa_0(5, 0);

-      case 42:

-         jjmatchedKind = 9;

-         return jjMoveNfa_0(5, 0);

-      case 43:

-         jjmatchedKind = 29;

-         return jjMoveNfa_0(5, 0);

-      case 44:

-         jjmatchedKind = 14;

-         return jjMoveNfa_0(5, 0);

-      case 45:

-         jjmatchedKind = 25;

-         return jjMoveNfa_0(5, 0);

-      case 46:

-         jjmatchedKind = 15;

-         return jjMoveStringLiteralDfa1_0(0x10000L, 0x0L, 0x0L, 0x0L);

-      case 47:

-         jjmatchedKind = 33;

-         return jjMoveNfa_0(5, 0);

-      case 58:

-         jjmatchedKind = 13;

-         return jjMoveStringLiteralDfa1_0(0x100L, 0x0L, 0x0L, 0x0L);

-      case 59:

-         jjmatchedKind = 32;

-         return jjMoveNfa_0(5, 0);

-      case 60:

-         jjmatchedKind = 23;

-         return jjMoveStringLiteralDfa1_0(0x5000000L, 0x0L, 0x0L, 0x0L);

-      case 61:

-         jjmatchedKind = 19;

-         return jjMoveNfa_0(5, 0);

-      case 62:

-         jjmatchedKind = 20;

-         return jjMoveStringLiteralDfa1_0(0x200000L, 0x0L, 0x0L, 0x0L);

-      case 63:

-         jjmatchedKind = 31;

-         return jjMoveNfa_0(5, 0);

-      case 64:

-         jjmatchedKind = 10;

-         return jjMoveNfa_0(5, 0);

-      case 65:

-         return jjMoveStringLiteralDfa1_0(0x798000000000L, 0x0L, 0x3L, 0x0L);

-      case 66:

-         return jjMoveStringLiteralDfa1_0(0x3800000000000L, 0x0L, 0x1fcL, 0x0L);

-      case 67:

-         return jjMoveStringLiteralDfa1_0(0x7ff4000000000000L, 0x0L, 0xfe00L, 0x0L);

-      case 68:

-         return jjMoveStringLiteralDfa1_0(0x8000000000000000L, 0xfL, 0xff0000L, 0x0L);

-      case 69:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0xf0L, 0x1000000L, 0x0L);

-      case 70:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0xf00L, 0xe000000L, 0x0L);

-      case 71:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x7000L, 0x10000000L, 0x0L);

-      case 72:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x8000L, 0x0L, 0x0L);

-      case 73:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x1ff0000L, 0x1e0000000L, 0x0L);

-      case 75:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x200000000L, 0x0L);

-      case 76:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x6000000L, 0xc00000000L, 0x0L);

-      case 77:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x18000000L, 0x3000000000L, 0x0L);

-      case 78:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x1e0000000L, 0x7fc000000000L, 0x0L);

-      case 79:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x7e00000000L, 0xf800000000000L, 0x0L);

-      case 80:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x38000000000L, 0xff0000000000000L, 0x0L);

-      case 82:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0xc0000000000L, 0xf000000000000000L, 0x7fL);

-      case 83:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x3f00000000000L, 0x0L, 0x401ff80L);

-      case 84:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x7c000000000000L, 0x0L, 0xe0000L);

-      case 85:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x380000000000000L, 0x0L, 0x100000L);

-      case 86:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x1c00000000000000L, 0x0L, 0x1e00000L);

-      case 87:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0xe000000000000000L, 0x0L, 0x0L);

-      case 88:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x2000000L);

-      case 89:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x8000000L);

-      case 90:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x10000000L);

-      case 97:

-         return jjMoveStringLiteralDfa1_0(0x798000000000L, 0x0L, 0x3L, 0x0L);

-      case 98:

-         return jjMoveStringLiteralDfa1_0(0x3800000000000L, 0x0L, 0x1fcL, 0x0L);

-      case 99:

-         return jjMoveStringLiteralDfa1_0(0x7ff4000000000000L, 0x0L, 0xfe00L, 0x0L);

-      case 100:

-         return jjMoveStringLiteralDfa1_0(0x8000000000000000L, 0xfL, 0xff0000L, 0x0L);

-      case 101:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0xf0L, 0x1000000L, 0x0L);

-      case 102:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0xf00L, 0xe000000L, 0x0L);

-      case 103:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x7000L, 0x10000000L, 0x0L);

-      case 104:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x8000L, 0x0L, 0x0L);

-      case 105:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x1ff0000L, 0x1e0000000L, 0x0L);

-      case 107:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x200000000L, 0x0L);

-      case 108:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x6000000L, 0xc00000000L, 0x0L);

-      case 109:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x18000000L, 0x3000000000L, 0x0L);

-      case 110:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x1e0000000L, 0x7fc000000000L, 0x0L);

-      case 111:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x7e00000000L, 0xf800000000000L, 0x0L);

-      case 112:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x38000000000L, 0xff0000000000000L, 0x0L);

-      case 114:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0xc0000000000L, 0xf000000000000000L, 0x7fL);

-      case 115:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x3f00000000000L, 0x0L, 0x401ff80L);

-      case 116:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x7c000000000000L, 0x0L, 0xe0000L);

-      case 117:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x380000000000000L, 0x0L, 0x100000L);

-      case 118:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x1c00000000000000L, 0x0L, 0x1e00000L);

-      case 119:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0xe000000000000000L, 0x0L, 0x0L);

-      case 120:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x2000000L);

-      case 121:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x8000000L);

-      case 122:

-         return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x10000000L);

-      case 124:

-         return jjMoveStringLiteralDfa1_0(0x1000L, 0x0L, 0x0L, 0x0L);

-      case 126:

-         jjmatchedKind = 34;

-         return jjMoveNfa_0(5, 0);

-      default :

-         return jjMoveNfa_0(5, 0);

-   }

-}

-private int jjMoveStringLiteralDfa1_0(long active0, long active1, long active2, long active3)

-{

-   try { curChar = input_stream.readChar(); }

-   catch(java.io.IOException e) {

-   return jjMoveNfa_0(5, 0);

-   }

-   switch(curChar)

-   {

-      case 43:

-         return jjMoveStringLiteralDfa2_0(active0, 0x400000L, active1, 0L, active2, 0L, active3, 0L);

-      case 46:

-         if ((active0 & 0x10000L) != 0L)

-         {

-            jjmatchedKind = 16;

-            jjmatchedPos = 1;

-         }

-         break;

-      case 61:

-         if ((active0 & 0x100L) != 0L)

-         {

-            jjmatchedKind = 8;

-            jjmatchedPos = 1;

-         }

-         else if ((active0 & 0x200000L) != 0L)

-         {

-            jjmatchedKind = 21;

-            jjmatchedPos = 1;

-         }

-         else if ((active0 & 0x1000000L) != 0L)

-         {

-            jjmatchedKind = 24;

-            jjmatchedPos = 1;

-         }

-         else if ((active0 & 0x8000000L) != 0L)

-         {

-            jjmatchedKind = 27;

-            jjmatchedPos = 1;

-         }

-         break;

-      case 62:

-         if ((active0 & 0x4000000L) != 0L)

-         {

-            jjmatchedKind = 26;

-            jjmatchedPos = 1;

-         }

-         break;

-      case 65:

-         return jjMoveStringLiteralDfa2_0(active0, 0x4000000000000L, active1, 0x40c000000008000L, active2, 0x303000c000030000L, active3, 0x1e00000L);

-      case 66:

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 0x800000000000L, active3, 0L);

-      case 67:

-         return jjMoveStringLiteralDfa2_0(active0, 0x8000000000000L, active1, 0L, active2, 0x30000000000L, active3, 0L);

-      case 68:

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x10000L, active2, 0L, active3, 0L);

-      case 69:

-         return jjMoveStringLiteralDfa2_0(active0, 0x8001800000000000L, active1, 0x1c0000000103L, active2, 0xc0000002007c0000L, active3, 0x802039fL);

-      case 70:

-         if ((active1 & 0x20000L) != 0L)

-         {

-            jjmatchedKind = 81;

-            jjmatchedPos = 1;

-         }

-         else if ((active1 & 0x200000000L) != 0L)

-         {

-            jjmatchedKind = 97;

-            jjmatchedPos = 1;

-         }

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L);

-      case 72:

-         return jjMoveStringLiteralDfa2_0(active0, 0x10000000000000L, active1, 0x6010200000000000L, active2, 0x600L, active3, 0L);

-      case 73:

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x980040000a000004L, active2, 0x41000002000038L, active3, 0xc3c00L);

-      case 76:

-         return jjMoveStringLiteralDfa2_0(active0, 0x60018000000000L, active1, 0x10L, active2, 0x80001014000840L, active3, 0L);

-      case 77:

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x2004000L);

-      case 78:

-         if ((active1 & 0x40000L) != 0L)

-         {

-            jjmatchedKind = 82;

-            jjmatchedPos = 1;

-         }

-         else if ((active1 & 0x400000000L) != 0L)

-         {

-            jjmatchedKind = 98;

-            jjmatchedPos = 1;

-         }

-         return jjMoveStringLiteralDfa2_0(active0, 0x80000000000L, active1, 0x180000000f80020L, active2, 0x1e1000000L, active3, 0L);

-      case 79:

-         if ((active1 & 0x20000000000000L) != 0L)

-         {

-            jjmatchedKind = 117;

-            jjmatchedPos = 1;

-         }

-         return jjMoveStringLiteralDfa2_0(active0, 0xf80000000000000L, active1, 0xf4001200L, active2, 0x100042c08807080L, active3, 0x10000060L);

-      case 80:

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x200000800000000L, active2, 0L, active3, 0L);

-      case 81:

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x800000000000L, active2, 0L, active3, 0L);

-      case 82:

-         if ((active1 & 0x1000000000L) != 0L)

-         {

-            jjmatchedKind = 100;

-            jjmatchedPos = 1;

-         }

-         return jjMoveStringLiteralDfa2_0(active0, 0x3000020000000000L, active1, 0x1a000006408L, active2, 0xe02000000000001L, active3, 0x100000L);

-      case 83:

-         if ((active0 & 0x100000000000L) != 0L)

-         {

-            jjmatchedKind = 44;

-            jjmatchedPos = 1;

-         }

-         else if ((active1 & 0x1000000L) != 0L)

-         {

-            jjmatchedKind = 88;

-            jjmatchedPos = 1;

-         }

-         return jjMoveStringLiteralDfa2_0(active0, 0x200000000000L, active1, 0L, active2, 0L, active3, 0L);

-      case 84:

-         if ((active0 & 0x400000000000L) != 0L)

-         {

-            jjmatchedKind = 46;

-            jjmatchedPos = 1;

-         }

-         return jjMoveStringLiteralDfa2_0(active0, 0x40000000000L, active1, 0x1000000000000L, active2, 0L, active3, 0x8000L);

-      case 85:

-         return jjMoveStringLiteralDfa2_0(active0, 0x4000000000000000L, active1, 0x2020100000800L, active2, 0x4180000008002L, active3, 0L);

-      case 86:

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x4000000000L, active2, 0x8600000000000L, active3, 0L);

-      case 88:

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0xc0L, active2, 0L, active3, 0L);

-      case 89:

-         if ((active0 & 0x2000000000000L) != 0L)

-         {

-            jjmatchedKind = 49;

-            jjmatchedPos = 1;

-         }

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x40000000000000L, active2, 0x100L, active3, 0x4010000L);

-      case 97:

-         return jjMoveStringLiteralDfa2_0(active0, 0x4000000000000L, active1, 0x40c000000008000L, active2, 0x303000c000030000L, active3, 0x1e00000L);

-      case 98:

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 0x800000000000L, active3, 0L);

-      case 99:

-         return jjMoveStringLiteralDfa2_0(active0, 0x8000000000000L, active1, 0L, active2, 0x30000000000L, active3, 0L);

-      case 100:

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x10000L, active2, 0L, active3, 0L);

-      case 101:

-         return jjMoveStringLiteralDfa2_0(active0, 0x8001800000000000L, active1, 0x1c0000000103L, active2, 0xc0000002007c0000L, active3, 0x802039fL);

-      case 102:

-         if ((active1 & 0x20000L) != 0L)

-         {

-            jjmatchedKind = 81;

-            jjmatchedPos = 1;

-         }

-         else if ((active1 & 0x200000000L) != 0L)

-         {

-            jjmatchedKind = 97;

-            jjmatchedPos = 1;

-         }

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L);

-      case 104:

-         return jjMoveStringLiteralDfa2_0(active0, 0x10000000000000L, active1, 0x6010200000000000L, active2, 0x600L, active3, 0L);

-      case 105:

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x980040000a000004L, active2, 0x41000002000038L, active3, 0xc3c00L);

-      case 108:

-         return jjMoveStringLiteralDfa2_0(active0, 0x60018000000000L, active1, 0x10L, active2, 0x80001014000840L, active3, 0L);

-      case 109:

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x2004000L);

-      case 110:

-         if ((active1 & 0x40000L) != 0L)

-         {

-            jjmatchedKind = 82;

-            jjmatchedPos = 1;

-         }

-         else if ((active1 & 0x400000000L) != 0L)

-         {

-            jjmatchedKind = 98;

-            jjmatchedPos = 1;

-         }

-         return jjMoveStringLiteralDfa2_0(active0, 0x80000000000L, active1, 0x180000000f80020L, active2, 0x1e1000000L, active3, 0L);

-      case 111:

-         if ((active1 & 0x20000000000000L) != 0L)

-         {

-            jjmatchedKind = 117;

-            jjmatchedPos = 1;

-         }

-         return jjMoveStringLiteralDfa2_0(active0, 0xf80000000000000L, active1, 0xf4001200L, active2, 0x100042c08807080L, active3, 0x10000060L);

-      case 112:

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x200000800000000L, active2, 0L, active3, 0L);

-      case 113:

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x800000000000L, active2, 0L, active3, 0L);

-      case 114:

-         if ((active1 & 0x1000000000L) != 0L)

-         {

-            jjmatchedKind = 100;

-            jjmatchedPos = 1;

-         }

-         return jjMoveStringLiteralDfa2_0(active0, 0x3000020000000000L, active1, 0x1a000006408L, active2, 0xe02000000000001L, active3, 0x100000L);

-      case 115:

-         if ((active0 & 0x100000000000L) != 0L)

-         {

-            jjmatchedKind = 44;

-            jjmatchedPos = 1;

-         }

-         else if ((active1 & 0x1000000L) != 0L)

-         {

-            jjmatchedKind = 88;

-            jjmatchedPos = 1;

-         }

-         return jjMoveStringLiteralDfa2_0(active0, 0x200000000000L, active1, 0L, active2, 0L, active3, 0L);

-      case 116:

-         if ((active0 & 0x400000000000L) != 0L)

-         {

-            jjmatchedKind = 46;

-            jjmatchedPos = 1;

-         }

-         return jjMoveStringLiteralDfa2_0(active0, 0x40000000000L, active1, 0x1000000000000L, active2, 0L, active3, 0x8000L);

-      case 117:

-         return jjMoveStringLiteralDfa2_0(active0, 0x4000000000000000L, active1, 0x2020100000800L, active2, 0x4180000008002L, active3, 0L);

-      case 118:

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x4000000000L, active2, 0x8600000000000L, active3, 0L);

-      case 120:

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0xc0L, active2, 0L, active3, 0L);

-      case 121:

-         if ((active0 & 0x2000000000000L) != 0L)

-         {

-            jjmatchedKind = 49;

-            jjmatchedPos = 1;

-         }

-         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x40000000000000L, active2, 0x100L, active3, 0x4010000L);

-      case 124:

-         if ((active0 & 0x1000L) != 0L)

-         {

-            jjmatchedKind = 12;

-            jjmatchedPos = 1;

-         }

-         break;

-      default :

-         break;

-   }

-   return jjMoveNfa_0(5, 1);

-}

-private int jjMoveStringLiteralDfa2_0(long old0, long active0, long old1, long active1, long old2, long active2, long old3, long active3)

-{

-   if (((active0 &= old0) | (active1 &= old1) | (active2 &= old2) | (active3 &= old3)) == 0L)

-      return jjMoveNfa_0(5, 1);

-   try { curChar = input_stream.readChar(); }

-   catch(java.io.IOException e) {

-   return jjMoveNfa_0(5, 1);

-   }

-   switch(curChar)

-   {

-      case 41:

-         if ((active0 & 0x400000L) != 0L)

-         {

-            jjmatchedKind = 22;

-            jjmatchedPos = 2;

-         }

-         break;

-      case 65:

-         return jjMoveStringLiteralDfa3_0(active0, 0x1000000000000000L, active1, 0x1200000002000L, active2, 0x4200600001000600L, active3, 0x8004000L);

-      case 66:

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0xe020000000000L, active2, 0L, active3, 0L);

-      case 67:

-         if ((active0 & 0x200000000000L) != 0L)

-         {

-            jjmatchedKind = 45;

-            jjmatchedPos = 2;

-         }

-         else if ((active2 & 0x40000L) != 0L)

-         {

-            jjmatchedKind = 146;

-            jjmatchedPos = 2;

-         }

-         return jjMoveStringLiteralDfa3_0(active0, 0x8000000000000000L, active1, 0x240000c0L, active2, 0x8010040400080000L, active3, 0x80L);

-      case 68:

-         if ((active0 & 0x80000000000L) != 0L)

-         {

-            jjmatchedKind = 43;

-            jjmatchedPos = 2;

-         }

-         else if ((active1 & 0x20L) != 0L)

-         {

-            jjmatchedKind = 69;

-            jjmatchedPos = 2;

-         }

-         else if ((active2 & 0x1000000000000L) != 0L)

-         {

-            jjmatchedKind = 176;

-            jjmatchedPos = 2;

-         }

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x200002010180000L, active2, 0L, active3, 0L);

-      case 69:

-         return jjMoveStringLiteralDfa3_0(active0, 0x2010000000000000L, active1, 0x7810004000010000L, active2, 0xc08000000000000L, active3, 0L);

-      case 70:

-         if ((active3 & 0x1L) != 0L)

-         {

-            jjmatchedKind = 192;

-            jjmatchedPos = 2;

-         }

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x1L, active2, 0x100000L, active3, 0L);

-      case 71:

-         return jjMoveStringLiteralDfa3_0(active0, 0x800000000000L, active1, 0L, active2, 0x2000000000000L, active3, 0x400L);

-      case 72:

-         return jjMoveStringLiteralDfa3_0(active0, 0x8000000000000L, active1, 0L, active2, 0x10000000000L, active3, 0L);

-      case 73:

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x180008000000000L, active2, 0x4L, active3, 0L);

-      case 74:

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0L, active2, 0x800000000000L, active3, 0L);

-      case 75:

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x2000000L, active2, 0L, active3, 0L);

-      case 76:

-         if ((active0 & 0x8000000000L) != 0L)

-         {

-            jjmatchedKind = 39;

-            jjmatchedPos = 2;

-         }

-         else if ((active1 & 0x800000000000L) != 0L)

-         {

-            jjmatchedKind = 111;

-            jjmatchedPos = 2;

-         }

-         return jjMoveStringLiteralDfa3_0(active0, 0x180000000000000L, active1, 0x400100100000000L, active2, 0x20000200000L, active3, 0x2000100L);

-      case 77:

-         return jjMoveStringLiteralDfa3_0(active0, 0x200000000000000L, active1, 0L, active2, 0x180000001000L, active3, 0xe3800L);

-      case 78:

-         return jjMoveStringLiteralDfa3_0(active0, 0xc00000000000000L, active1, 0x8000800L, active2, 0x1000002802006038L, active3, 0x10000000L);

-      case 79:

-         return jjMoveStringLiteralDfa3_0(active0, 0x20000000000L, active1, 0x10000004408L, active2, 0x140008c0L, active3, 0x100000L);

-      case 80:

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x40000000000000L, active2, 0x40000000000000L, active3, 0x2L);

-      case 82:

-         if ((active1 & 0x200L) != 0L)

-         {

-            jjmatchedKind = 73;

-            jjmatchedPos = 2;

-         }

-         return jjMoveStringLiteralDfa3_0(active0, 0x4000000000000000L, active1, 0L, active2, 0x20000008008001L, active3, 0x1e08000L);

-      case 83:

-         return jjMoveStringLiteralDfa3_0(active0, 0x4000000000000L, active1, 0x40000200016L, active2, 0x180001020000000L, active3, 0x401000cL);

-      case 84:

-         if ((active1 & 0x40000000L) != 0L)

-         {

-            jjmatchedKind = 94;

-            jjmatchedPos = 2;

-         }

-         else if ((active2 & 0x40000000L) != 0L)

-         {

-            jjmatchedKind = 158;

-            jjmatchedPos = 2;

-         }

-         else if ((active2 & 0x4000000000000L) != 0L)

-         {

-            jjmatchedKind = 178;

-            jjmatchedPos = 2;

-         }

-         else if ((active3 & 0x200L) != 0L)

-         {

-            jjmatchedKind = 201;

-            jjmatchedPos = 2;

-         }

-         return jjMoveStringLiteralDfa3_0(active0, 0x1010000000000L, active1, 0x8000000800c01100L, active2, 0xc180410102L, active3, 0x10L);

-      case 85:

-         return jjMoveStringLiteralDfa3_0(active0, 0x60000000000000L, active1, 0L, active2, 0x800000L, active3, 0L);

-      case 86:

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x80000008000L, active2, 0L, active3, 0L);

-      case 87:

-         if ((active2 & 0x2000000000000000L) != 0L)

-         {

-            jjmatchedKind = 189;

-            jjmatchedPos = 2;

-         }

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x80000000L, active2, 0L, active3, 0x60L);

-      case 89:

-         if ((active2 & 0x20000L) != 0L)

-         {

-            jjmatchedKind = 145;

-            jjmatchedPos = 2;

-         }

-         else if ((active2 & 0x200000000L) != 0L)

-         {

-            jjmatchedKind = 161;

-            jjmatchedPos = 2;

-         }

-         return jjMoveStringLiteralDfa3_0(active0, 0x40000000000L, active1, 0L, active2, 0L, active3, 0L);

-      case 90:

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x400000000000L, active2, 0L, active3, 0L);

-      case 97:

-         return jjMoveStringLiteralDfa3_0(active0, 0x1000000000000000L, active1, 0x1200000002000L, active2, 0x4200600001000600L, active3, 0x8004000L);

-      case 98:

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0xe020000000000L, active2, 0L, active3, 0L);

-      case 99:

-         if ((active0 & 0x200000000000L) != 0L)

-         {

-            jjmatchedKind = 45;

-            jjmatchedPos = 2;

-         }

-         else if ((active2 & 0x40000L) != 0L)

-         {

-            jjmatchedKind = 146;

-            jjmatchedPos = 2;

-         }

-         return jjMoveStringLiteralDfa3_0(active0, 0x8000000000000000L, active1, 0x240000c0L, active2, 0x8010040400080000L, active3, 0x80L);

-      case 100:

-         if ((active0 & 0x80000000000L) != 0L)

-         {

-            jjmatchedKind = 43;

-            jjmatchedPos = 2;

-         }

-         else if ((active1 & 0x20L) != 0L)

-         {

-            jjmatchedKind = 69;

-            jjmatchedPos = 2;

-         }

-         else if ((active2 & 0x1000000000000L) != 0L)

-         {

-            jjmatchedKind = 176;

-            jjmatchedPos = 2;

-         }

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x200002010180000L, active2, 0L, active3, 0L);

-      case 101:

-         return jjMoveStringLiteralDfa3_0(active0, 0x2010000000000000L, active1, 0x7810004000010000L, active2, 0xc08000000000000L, active3, 0L);

-      case 102:

-         if ((active3 & 0x1L) != 0L)

-         {

-            jjmatchedKind = 192;

-            jjmatchedPos = 2;

-         }

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x1L, active2, 0x100000L, active3, 0L);

-      case 103:

-         return jjMoveStringLiteralDfa3_0(active0, 0x800000000000L, active1, 0L, active2, 0x2000000000000L, active3, 0x400L);

-      case 104:

-         return jjMoveStringLiteralDfa3_0(active0, 0x8000000000000L, active1, 0L, active2, 0x10000000000L, active3, 0L);

-      case 105:

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x180008000000000L, active2, 0x4L, active3, 0L);

-      case 106:

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0L, active2, 0x800000000000L, active3, 0L);

-      case 107:

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x2000000L, active2, 0L, active3, 0L);

-      case 108:

-         if ((active0 & 0x8000000000L) != 0L)

-         {

-            jjmatchedKind = 39;

-            jjmatchedPos = 2;

-         }

-         else if ((active1 & 0x800000000000L) != 0L)

-         {

-            jjmatchedKind = 111;

-            jjmatchedPos = 2;

-         }

-         return jjMoveStringLiteralDfa3_0(active0, 0x180000000000000L, active1, 0x400100100000000L, active2, 0x20000200000L, active3, 0x2000100L);

-      case 109:

-         return jjMoveStringLiteralDfa3_0(active0, 0x200000000000000L, active1, 0L, active2, 0x180000001000L, active3, 0xe3800L);

-      case 110:

-         return jjMoveStringLiteralDfa3_0(active0, 0xc00000000000000L, active1, 0x8000800L, active2, 0x1000002802006038L, active3, 0x10000000L);

-      case 111:

-         return jjMoveStringLiteralDfa3_0(active0, 0x20000000000L, active1, 0x10000004408L, active2, 0x140008c0L, active3, 0x100000L);

-      case 112:

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x40000000000000L, active2, 0x40000000000000L, active3, 0x2L);

-      case 114:

-         if ((active1 & 0x200L) != 0L)

-         {

-            jjmatchedKind = 73;

-            jjmatchedPos = 2;

-         }

-         return jjMoveStringLiteralDfa3_0(active0, 0x4000000000000000L, active1, 0L, active2, 0x20000008008001L, active3, 0x1e08000L);

-      case 115:

-         return jjMoveStringLiteralDfa3_0(active0, 0x4000000000000L, active1, 0x40000200016L, active2, 0x180001020000000L, active3, 0x401000cL);

-      case 116:

-         if ((active1 & 0x40000000L) != 0L)

-         {

-            jjmatchedKind = 94;

-            jjmatchedPos = 2;

-         }

-         else if ((active2 & 0x40000000L) != 0L)

-         {

-            jjmatchedKind = 158;

-            jjmatchedPos = 2;

-         }

-         else if ((active2 & 0x4000000000000L) != 0L)

-         {

-            jjmatchedKind = 178;

-            jjmatchedPos = 2;

-         }

-         else if ((active3 & 0x200L) != 0L)

-         {

-            jjmatchedKind = 201;

-            jjmatchedPos = 2;

-         }

-         return jjMoveStringLiteralDfa3_0(active0, 0x1010000000000L, active1, 0x8000000800c01100L, active2, 0xc180410102L, active3, 0x10L);

-      case 117:

-         return jjMoveStringLiteralDfa3_0(active0, 0x60000000000000L, active1, 0L, active2, 0x800000L, active3, 0L);

-      case 118:

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x80000008000L, active2, 0L, active3, 0L);

-      case 119:

-         if ((active2 & 0x2000000000000000L) != 0L)

-         {

-            jjmatchedKind = 189;

-            jjmatchedPos = 2;

-         }

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x80000000L, active2, 0L, active3, 0x60L);

-      case 121:

-         if ((active2 & 0x20000L) != 0L)

-         {

-            jjmatchedKind = 145;

-            jjmatchedPos = 2;

-         }

-         else if ((active2 & 0x200000000L) != 0L)

-         {

-            jjmatchedKind = 161;

-            jjmatchedPos = 2;

-         }

-         return jjMoveStringLiteralDfa3_0(active0, 0x40000000000L, active1, 0L, active2, 0L, active3, 0L);

-      case 122:

-         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x400000000000L, active2, 0L, active3, 0L);

-      default :

-         break;

-   }

-   return jjMoveNfa_0(5, 2);

-}

-private int jjMoveStringLiteralDfa3_0(long old0, long active0, long old1, long active1, long old2, long active2, long old3, long active3)

-{

-   if (((active0 &= old0) | (active1 &= old1) | (active2 &= old2) | (active3 &= old3)) == 0L)

-      return jjMoveNfa_0(5, 2);

-   try { curChar = input_stream.readChar(); }

-   catch(java.io.IOException e) {

-   return jjMoveNfa_0(5, 2);

-   }

-   switch(curChar)

-   {

-      case 46:

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x4000000L);

-      case 65:

-         return jjMoveStringLiteralDfa4_0(active0, 0x2088000000000000L, active1, 0x204000080000001L, active2, 0x22010406000039L, active3, 0L);

-      case 66:

-         if ((active2 & 0x40L) != 0L)

-         {

-            jjmatchedKind = 134;

-            jjmatchedPos = 3;

-         }

-         else if ((active2 & 0x800L) != 0L)

-         {

-            jjmatchedKind = 139;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x80011800000L, active3, 0L);

-      case 67:

-         if ((active1 & 0x2L) != 0L)

-         {

-            jjmatchedKind = 65;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0x10000000000000L, active1, 0x10000000900L, active2, 0x400000008000000L, active3, 0x600000L);

-      case 69:

-         if ((active0 & 0x4000000000000L) != 0L)

-         {

-            jjmatchedKind = 50;

-            jjmatchedPos = 3;

-         }

-         else if ((active1 & 0x10L) != 0L)

-         {

-            jjmatchedKind = 68;

-            jjmatchedPos = 3;

-         }

-         else if ((active1 & 0x2000000L) != 0L)

-         {

-            jjmatchedKind = 89;

-            jjmatchedPos = 3;

-         }

-         else if ((active1 & 0x10000000L) != 0L)

-         {

-            jjmatchedKind = 92;

-            jjmatchedPos = 3;

-         }

-         else if ((active1 & 0x400000000000L) != 0L)

-         {

-            jjmatchedKind = 110;

-            jjmatchedPos = 3;

-         }

-         else if ((active1 & 0x40000000000000L) != 0L)

-         {

-            jjmatchedKind = 118;

-            jjmatchedPos = 3;

-         }

-         else if ((active2 & 0x100L) != 0L)

-         {

-            jjmatchedKind = 136;

-            jjmatchedPos = 3;

-         }

-         else if ((active2 & 0x10000L) != 0L)

-         {

-            jjmatchedKind = 144;

-            jjmatchedPos = 3;

-         }

-         else if ((active3 & 0x40000L) != 0L)

-         {

-            jjmatchedKind = 210;

-            jjmatchedPos = 3;

-         }

-         else if ((active3 & 0x10000000L) != 0L)

-         {

-            jjmatchedKind = 220;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0x10000000000L, active1, 0x102000780040L, active2, 0x40900180600000L, active3, 0x80000L);

-      case 70:

-         if ((active3 & 0x100L) != 0L)

-         {

-            jjmatchedKind = 200;

-            jjmatchedPos = 3;

-         }

-         break;

-      case 71:

-         if ((active2 & 0x800000000L) != 0L)

-         {

-            jjmatchedKind = 163;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x1200000000000000L, active3, 0L);

-      case 72:

-         if ((active1 & 0x8000000000000000L) != 0L)

-         {

-            jjmatchedKind = 127;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x2L, active3, 0L);

-      case 73:

-         return jjMoveStringLiteralDfa4_0(active0, 0x800000000000L, active1, 0x800008000L, active2, 0x100004000180000L, active3, 0x8020L);

-      case 75:

-         if ((active1 & 0x4000000L) != 0L)

-         {

-            jjmatchedKind = 90;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x10000000000000L, active3, 0L);

-      case 76:

-         if ((active1 & 0x100000000L) != 0L)

-         {

-            jjmatchedKind = 96;

-            jjmatchedPos = 3;

-         }

-         else if ((active2 & 0x4000000000000000L) != 0L)

-         {

-            jjmatchedKind = 190;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0x8000000000000000L, active1, 0x8020000000080L, active2, 0x1000000084L, active3, 0x4002L);

-      case 77:

-         if ((active1 & 0x400L) != 0L)

-         {

-            jjmatchedKind = 74;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x8000000000L, active2, 0x1000L, active3, 0L);

-      case 78:

-         if ((active1 & 0x10000000000000L) != 0L)

-         {

-            jjmatchedKind = 116;

-            jjmatchedPos = 3;

-         }

-         else if ((active1 & 0x2000000000000000L) != 0L)

-         {

-            jjmatchedKind = 125;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0x400000000000000L, active1, 0x12000L, active2, 0L, active3, 0x400L);

-      case 79:

-         if ((active1 & 0x1000L) != 0L)

-         {

-            jjmatchedKind = 76;

-            jjmatchedPos = 3;

-         }

-         else if ((active1 & 0x800000L) != 0L)

-         {

-            jjmatchedKind = 87;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x800c0020000000L, active2, 0x8000060000000000L, active3, 0x80L);

-      case 80:

-         if ((active1 & 0x8L) != 0L)

-         {

-            jjmatchedKind = 67;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0x200040000000000L, active1, 0L, active2, 0L, active3, 0x23800L);

-      case 81:

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x100000000000000L, active2, 0L, active3, 0L);

-      case 82:

-         if ((active2 & 0x200L) != 0L)

-         {

-            jjmatchedKind = 137;

-            jjmatchedPos = 3;

-         }

-         else if ((active3 & 0x8000000L) != 0L)

-         {

-            jjmatchedKind = 219;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x4001204000000000L, active2, 0x8600000008400L, active3, 0x800000L);

-      case 83:

-         if ((active3 & 0x40L) != 0L)

-         {

-            jjmatchedKind = 198;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0x5860000000000000L, active1, 0L, active2, 0x800000000006000L, active3, 0L);

-      case 84:

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x2000000000004L, active2, 0x2020000000L, active3, 0x2000000L);

-      case 85:

-         return jjMoveStringLiteralDfa4_0(active0, 0x100000000000000L, active1, 0x400000008004000L, active2, 0x8000000000L, active3, 0x1cL);

-      case 87:

-         if ((active1 & 0x800000000000000L) != 0L)

-         {

-            jjmatchedKind = 123;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0x1020000000000L, active1, 0x1000000000000000L, active2, 0L, active3, 0x100000L);

-      case 89:

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x1000000L);

-      case 95:

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x80000000000000L, active3, 0x10000L);

-      case 97:

-         return jjMoveStringLiteralDfa4_0(active0, 0x2088000000000000L, active1, 0x204000080000001L, active2, 0x22010406000039L, active3, 0L);

-      case 98:

-         if ((active2 & 0x40L) != 0L)

-         {

-            jjmatchedKind = 134;

-            jjmatchedPos = 3;

-         }

-         else if ((active2 & 0x800L) != 0L)

-         {

-            jjmatchedKind = 139;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x80011800000L, active3, 0L);

-      case 99:

-         if ((active1 & 0x2L) != 0L)

-         {

-            jjmatchedKind = 65;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0x10000000000000L, active1, 0x10000000900L, active2, 0x400000008000000L, active3, 0x600000L);

-      case 101:

-         if ((active0 & 0x4000000000000L) != 0L)

-         {

-            jjmatchedKind = 50;

-            jjmatchedPos = 3;

-         }

-         else if ((active1 & 0x10L) != 0L)

-         {

-            jjmatchedKind = 68;

-            jjmatchedPos = 3;

-         }

-         else if ((active1 & 0x2000000L) != 0L)

-         {

-            jjmatchedKind = 89;

-            jjmatchedPos = 3;

-         }

-         else if ((active1 & 0x10000000L) != 0L)

-         {

-            jjmatchedKind = 92;

-            jjmatchedPos = 3;

-         }

-         else if ((active1 & 0x400000000000L) != 0L)

-         {

-            jjmatchedKind = 110;

-            jjmatchedPos = 3;

-         }

-         else if ((active1 & 0x40000000000000L) != 0L)

-         {

-            jjmatchedKind = 118;

-            jjmatchedPos = 3;

-         }

-         else if ((active2 & 0x100L) != 0L)

-         {

-            jjmatchedKind = 136;

-            jjmatchedPos = 3;

-         }

-         else if ((active2 & 0x10000L) != 0L)

-         {

-            jjmatchedKind = 144;

-            jjmatchedPos = 3;

-         }

-         else if ((active3 & 0x40000L) != 0L)

-         {

-            jjmatchedKind = 210;

-            jjmatchedPos = 3;

-         }

-         else if ((active3 & 0x10000000L) != 0L)

-         {

-            jjmatchedKind = 220;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0x10000000000L, active1, 0x102000780040L, active2, 0x40900180600000L, active3, 0x80000L);

-      case 102:

-         if ((active3 & 0x100L) != 0L)

-         {

-            jjmatchedKind = 200;

-            jjmatchedPos = 3;

-         }

-         break;

-      case 103:

-         if ((active2 & 0x800000000L) != 0L)

-         {

-            jjmatchedKind = 163;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x1200000000000000L, active3, 0L);

-      case 104:

-         if ((active1 & 0x8000000000000000L) != 0L)

-         {

-            jjmatchedKind = 127;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x2L, active3, 0L);

-      case 105:

-         return jjMoveStringLiteralDfa4_0(active0, 0x800000000000L, active1, 0x800008000L, active2, 0x100004000180000L, active3, 0x8020L);

-      case 107:

-         if ((active1 & 0x4000000L) != 0L)

-         {

-            jjmatchedKind = 90;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x10000000000000L, active3, 0L);

-      case 108:

-         if ((active1 & 0x100000000L) != 0L)

-         {

-            jjmatchedKind = 96;

-            jjmatchedPos = 3;

-         }

-         else if ((active2 & 0x4000000000000000L) != 0L)

-         {

-            jjmatchedKind = 190;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0x8000000000000000L, active1, 0x8020000000080L, active2, 0x1000000084L, active3, 0x4002L);

-      case 109:

-         if ((active1 & 0x400L) != 0L)

-         {

-            jjmatchedKind = 74;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x8000000000L, active2, 0x1000L, active3, 0L);

-      case 110:

-         if ((active1 & 0x10000000000000L) != 0L)

-         {

-            jjmatchedKind = 116;

-            jjmatchedPos = 3;

-         }

-         else if ((active1 & 0x2000000000000000L) != 0L)

-         {

-            jjmatchedKind = 125;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0x400000000000000L, active1, 0x12000L, active2, 0L, active3, 0x400L);

-      case 111:

-         if ((active1 & 0x1000L) != 0L)

-         {

-            jjmatchedKind = 76;

-            jjmatchedPos = 3;

-         }

-         else if ((active1 & 0x800000L) != 0L)

-         {

-            jjmatchedKind = 87;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x800c0020000000L, active2, 0x8000060000000000L, active3, 0x80L);

-      case 112:

-         if ((active1 & 0x8L) != 0L)

-         {

-            jjmatchedKind = 67;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0x200040000000000L, active1, 0L, active2, 0L, active3, 0x23800L);

-      case 113:

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x100000000000000L, active2, 0L, active3, 0L);

-      case 114:

-         if ((active2 & 0x200L) != 0L)

-         {

-            jjmatchedKind = 137;

-            jjmatchedPos = 3;

-         }

-         else if ((active3 & 0x8000000L) != 0L)

-         {

-            jjmatchedKind = 219;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x4001204000000000L, active2, 0x8600000008400L, active3, 0x800000L);

-      case 115:

-         if ((active3 & 0x40L) != 0L)

-         {

-            jjmatchedKind = 198;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0x5860000000000000L, active1, 0L, active2, 0x800000000006000L, active3, 0L);

-      case 116:

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x2000000000004L, active2, 0x2020000000L, active3, 0x2000000L);

-      case 117:

-         return jjMoveStringLiteralDfa4_0(active0, 0x100000000000000L, active1, 0x400000008004000L, active2, 0x8000000000L, active3, 0x1cL);

-      case 119:

-         if ((active1 & 0x800000000000000L) != 0L)

-         {

-            jjmatchedKind = 123;

-            jjmatchedPos = 3;

-         }

-         return jjMoveStringLiteralDfa4_0(active0, 0x1020000000000L, active1, 0x1000000000000000L, active2, 0L, active3, 0x100000L);

-      case 121:

-         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x1000000L);

-      default :

-         break;

-   }

-   return jjMoveNfa_0(5, 3);

-}

-private int jjMoveStringLiteralDfa4_0(long old0, long active0, long old1, long active1, long old2, long active2, long old3, long active3)

-{

-   if (((active0 &= old0) | (active1 &= old1) | (active2 &= old2) | (active3 &= old3)) == 0L)

-      return jjMoveNfa_0(5, 3);

-   try { curChar = input_stream.readChar(); }

-   catch(java.io.IOException e) {

-   return jjMoveNfa_0(5, 3);

-   }

-   switch(curChar)

-   {

-      case 65:

-         return jjMoveStringLiteralDfa5_0(active0, 0x8000000000000000L, active1, 0x8000000000L, active2, 0x10001030000400L, active3, 0x800002L);

-      case 66:

-         if ((active2 & 0x20000000000L) != 0L)

-         {

-            jjmatchedKind = 169;

-            jjmatchedPos = 4;

-         }

-         break;

-      case 67:

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x100000000000L, active2, 0xe00000000000L, active3, 0L);

-      case 68:

-         if ((active3 & 0x20L) != 0L)

-         {

-            jjmatchedKind = 197;

-            jjmatchedPos = 4;

-         }

-         break;

-      case 69:

-         if ((active0 & 0x40000000000L) != 0L)

-         {

-            jjmatchedKind = 42;

-            jjmatchedPos = 4;

-         }

-         else if ((active1 & 0x200000000000L) != 0L)

-         {

-            jjmatchedKind = 109;

-            jjmatchedPos = 4;

-         }

-         else if ((active1 & 0x8000000000000L) != 0L)

-         {

-            jjmatchedKind = 115;

-            jjmatchedPos = 4;

-         }

-         else if ((active1 & 0x4000000000000000L) != 0L)

-         {

-            jjmatchedKind = 126;

-            jjmatchedPos = 4;

-         }

-         else if ((active2 & 0x4L) != 0L)

-         {

-            jjmatchedKind = 130;

-            jjmatchedPos = 4;

-         }

-         else if ((active2 & 0x8000000L) != 0L)

-         {

-            jjmatchedKind = 155;

-            jjmatchedPos = 4;

-         }

-         else if ((active2 & 0x1000000000000000L) != 0L)

-         {

-            jjmatchedKind = 188;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0x401000000000000L, active1, 0x400010000000000L, active2, 0x800080000008080L, active3, 0L);

-      case 70:

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0x8000000000000L, active3, 0L);

-      case 71:

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0x80000000L, active3, 0L);

-      case 72:

-         if ((active0 & 0x1000000000000000L) != 0L)

-         {

-            jjmatchedKind = 60;

-            jjmatchedPos = 4;

-         }

-         else if ((active1 & 0x100L) != 0L)

-         {

-            jjmatchedKind = 72;

-            jjmatchedPos = 4;

-         }

-         else if ((active2 & 0x2000000000L) != 0L)

-         {

-            jjmatchedKind = 165;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x600000L);

-      case 73:

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x20080000004L, active2, 0x480000000001002L, active3, 0x1100000L);

-      case 75:

-         if ((active0 & 0x10000000000000L) != 0L)

-         {

-            jjmatchedKind = 52;

-            jjmatchedPos = 4;

-         }

-         break;

-      case 76:

-         if ((active2 & 0x2000000L) != 0L)

-         {

-            jjmatchedKind = 153;

-            jjmatchedPos = 4;

-         }

-         else if ((active2 & 0x400000000L) != 0L)

-         {

-            jjmatchedKind = 162;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x84000000000L, active2, 0x60000001800000L, active3, 0x780cL);

-      case 77:

-         return jjMoveStringLiteralDfa5_0(active0, 0x100000000000000L, active1, 0x20000000L, active2, 0x200000000080000L, active3, 0L);

-      case 78:

-         if ((active0 & 0x800000000000L) != 0L)

-         {

-            jjmatchedKind = 47;

-            jjmatchedPos = 4;

-         }

-         else if ((active1 & 0x80000000000000L) != 0L)

-         {

-            jjmatchedKind = 119;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x8000L, active2, 0x2000000100000L, active3, 0x8080L);

-      case 79:

-         return jjMoveStringLiteralDfa5_0(active0, 0x4000000000000000L, active1, 0x800000000L, active2, 0x4000000000L, active3, 0x20000L);

-      case 80:

-         if ((active1 & 0x4000L) != 0L)

-         {

-            jjmatchedKind = 78;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x40L, active2, 0x40000000000L, active3, 0L);

-      case 82:

-         if ((active0 & 0x10000000000L) != 0L)

-         {

-            jjmatchedKind = 40;

-            jjmatchedPos = 4;

-         }

-         else if ((active1 & 0x2000000000L) != 0L)

-         {

-            jjmatchedKind = 101;

-            jjmatchedPos = 4;

-         }

-         else if ((active2 & 0x10000000000L) != 0L)

-         {

-            jjmatchedKind = 168;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0x208000000000000L, active1, 0x600000L, active2, 0x8000108100400038L, active3, 0x10010L);

-      case 83:

-         if ((active1 & 0x8000000L) != 0L)

-         {

-            jjmatchedKind = 91;

-            jjmatchedPos = 4;

-         }

-         else if ((active1 & 0x1000000000000000L) != 0L)

-         {

-            jjmatchedKind = 124;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x80000L);

-      case 84:

-         if ((active1 & 0x2000L) != 0L)

-         {

-            jjmatchedKind = 77;

-            jjmatchedPos = 4;

-         }

-         else if ((active1 & 0x1000000000000L) != 0L)

-         {

-            jjmatchedKind = 112;

-            jjmatchedPos = 4;

-         }

-         else if ((active2 & 0x4000000L) != 0L)

-         {

-            jjmatchedKind = 154;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0x2860020000000000L, active1, 0x200000000010800L, active2, 0x100000000206000L, active3, 0x400L);

-      case 85:

-         return jjMoveStringLiteralDfa5_0(active0, 0x80000000000000L, active1, 0x104040000000081L, active2, 0L, active3, 0L);

-      case 88:

-         if ((active1 & 0x80000L) != 0L)

-         {

-            jjmatchedKind = 83;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x100000L, active2, 0L, active3, 0x4000000L);

-      case 89:

-         if ((active2 & 0x1L) != 0L)

-         {

-            jjmatchedKind = 128;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x2000000000000L, active2, 0L, active3, 0x2000000L);

-      case 97:

-         return jjMoveStringLiteralDfa5_0(active0, 0x8000000000000000L, active1, 0x8000000000L, active2, 0x10001030000400L, active3, 0x800002L);

-      case 98:

-         if ((active2 & 0x20000000000L) != 0L)

-         {

-            jjmatchedKind = 169;

-            jjmatchedPos = 4;

-         }

-         break;

-      case 99:

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x100000000000L, active2, 0xe00000000000L, active3, 0L);

-      case 100:

-         if ((active3 & 0x20L) != 0L)

-         {

-            jjmatchedKind = 197;

-            jjmatchedPos = 4;

-         }

-         break;

-      case 101:

-         if ((active0 & 0x40000000000L) != 0L)

-         {

-            jjmatchedKind = 42;

-            jjmatchedPos = 4;

-         }

-         else if ((active1 & 0x200000000000L) != 0L)

-         {

-            jjmatchedKind = 109;

-            jjmatchedPos = 4;

-         }

-         else if ((active1 & 0x8000000000000L) != 0L)

-         {

-            jjmatchedKind = 115;

-            jjmatchedPos = 4;

-         }

-         else if ((active1 & 0x4000000000000000L) != 0L)

-         {

-            jjmatchedKind = 126;

-            jjmatchedPos = 4;

-         }

-         else if ((active2 & 0x4L) != 0L)

-         {

-            jjmatchedKind = 130;

-            jjmatchedPos = 4;

-         }

-         else if ((active2 & 0x8000000L) != 0L)

-         {

-            jjmatchedKind = 155;

-            jjmatchedPos = 4;

-         }

-         else if ((active2 & 0x1000000000000000L) != 0L)

-         {

-            jjmatchedKind = 188;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0x401000000000000L, active1, 0x400010000000000L, active2, 0x800080000008080L, active3, 0L);

-      case 102:

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0x8000000000000L, active3, 0L);

-      case 103:

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0x80000000L, active3, 0L);

-      case 104:

-         if ((active0 & 0x1000000000000000L) != 0L)

-         {

-            jjmatchedKind = 60;

-            jjmatchedPos = 4;

-         }

-         else if ((active1 & 0x100L) != 0L)

-         {

-            jjmatchedKind = 72;

-            jjmatchedPos = 4;

-         }

-         else if ((active2 & 0x2000000000L) != 0L)

-         {

-            jjmatchedKind = 165;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x600000L);

-      case 105:

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x20080000004L, active2, 0x480000000001002L, active3, 0x1100000L);

-      case 107:

-         if ((active0 & 0x10000000000000L) != 0L)

-         {

-            jjmatchedKind = 52;

-            jjmatchedPos = 4;

-         }

-         break;

-      case 108:

-         if ((active2 & 0x2000000L) != 0L)

-         {

-            jjmatchedKind = 153;

-            jjmatchedPos = 4;

-         }

-         else if ((active2 & 0x400000000L) != 0L)

-         {

-            jjmatchedKind = 162;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x84000000000L, active2, 0x60000001800000L, active3, 0x780cL);

-      case 109:

-         return jjMoveStringLiteralDfa5_0(active0, 0x100000000000000L, active1, 0x20000000L, active2, 0x200000000080000L, active3, 0L);

-      case 110:

-         if ((active0 & 0x800000000000L) != 0L)

-         {

-            jjmatchedKind = 47;

-            jjmatchedPos = 4;

-         }

-         else if ((active1 & 0x80000000000000L) != 0L)

-         {

-            jjmatchedKind = 119;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x8000L, active2, 0x2000000100000L, active3, 0x8080L);

-      case 111:

-         return jjMoveStringLiteralDfa5_0(active0, 0x4000000000000000L, active1, 0x800000000L, active2, 0x4000000000L, active3, 0x20000L);

-      case 112:

-         if ((active1 & 0x4000L) != 0L)

-         {

-            jjmatchedKind = 78;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x40L, active2, 0x40000000000L, active3, 0L);

-      case 114:

-         if ((active0 & 0x10000000000L) != 0L)

-         {

-            jjmatchedKind = 40;

-            jjmatchedPos = 4;

-         }

-         else if ((active1 & 0x2000000000L) != 0L)

-         {

-            jjmatchedKind = 101;

-            jjmatchedPos = 4;

-         }

-         else if ((active2 & 0x10000000000L) != 0L)

-         {

-            jjmatchedKind = 168;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0x208000000000000L, active1, 0x600000L, active2, 0x8000108100400038L, active3, 0x10010L);

-      case 115:

-         if ((active1 & 0x8000000L) != 0L)

-         {

-            jjmatchedKind = 91;

-            jjmatchedPos = 4;

-         }

-         else if ((active1 & 0x1000000000000000L) != 0L)

-         {

-            jjmatchedKind = 124;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x80000L);

-      case 116:

-         if ((active1 & 0x2000L) != 0L)

-         {

-            jjmatchedKind = 77;

-            jjmatchedPos = 4;

-         }

-         else if ((active1 & 0x1000000000000L) != 0L)

-         {

-            jjmatchedKind = 112;

-            jjmatchedPos = 4;

-         }

-         else if ((active2 & 0x4000000L) != 0L)

-         {

-            jjmatchedKind = 154;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0x2860020000000000L, active1, 0x200000000010800L, active2, 0x100000000206000L, active3, 0x400L);

-      case 117:

-         return jjMoveStringLiteralDfa5_0(active0, 0x80000000000000L, active1, 0x104040000000081L, active2, 0L, active3, 0L);

-      case 120:

-         if ((active1 & 0x80000L) != 0L)

-         {

-            jjmatchedKind = 83;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x100000L, active2, 0L, active3, 0x4000000L);

-      case 121:

-         if ((active2 & 0x1L) != 0L)

-         {

-            jjmatchedKind = 128;

-            jjmatchedPos = 4;

-         }

-         return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x2000000000000L, active2, 0L, active3, 0x2000000L);

-      default :

-         break;

-   }

-   return jjMoveNfa_0(5, 4);

-}

-private int jjMoveStringLiteralDfa5_0(long old0, long active0, long old1, long active1, long old2, long active2, long old3, long active3)

-{

-   if (((active0 &= old0) | (active1 &= old1) | (active2 &= old2) | (active3 &= old3)) == 0L)

-      return jjMoveNfa_0(5, 4);

-   try { curChar = input_stream.readChar(); }

-   catch(java.io.IOException e) {

-   return jjMoveNfa_0(5, 4);

-   }

-   switch(curChar)

-   {

-      case 65:

-         if ((active2 & 0x200000000000000L) != 0L)

-         {

-            jjmatchedKind = 185;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x4000000000L, active2, 0x8000082080L, active3, 0x600000L);

-      case 66:

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0x1000000000L, active3, 0L);

-      case 67:

-         if ((active1 & 0x20000000000L) != 0L)

-         {

-            jjmatchedKind = 105;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0x400000000000000L, active1, 0L, active2, 0x400L, active3, 0x2L);

-      case 68:

-         if ((active2 & 0x2L) != 0L)

-         {

-            jjmatchedKind = 129;

-            jjmatchedPos = 5;

-         }

-         else if ((active2 & 0x8000000000000000L) != 0L)

-         {

-            jjmatchedKind = 191;

-            jjmatchedPos = 5;

-         }

-         else if ((active3 & 0x80L) != 0L)

-         {

-            jjmatchedKind = 199;

-            jjmatchedPos = 5;

-         }

-         else if ((active3 & 0x100000L) != 0L)

-         {

-            jjmatchedKind = 212;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x10000000000L, active2, 0L, active3, 0L);

-      case 69:

-         if ((active0 & 0x2000000000000000L) != 0L)

-         {

-            jjmatchedKind = 61;

-            jjmatchedPos = 5;

-         }

-         else if ((active1 & 0x80000000000L) != 0L)

-         {

-            jjmatchedKind = 107;

-            jjmatchedPos = 5;

-         }

-         else if ((active1 & 0x100000000000000L) != 0L)

-         {

-            jjmatchedKind = 120;

-            jjmatchedPos = 5;

-         }

-         else if ((active1 & 0x200000000000000L) != 0L)

-         {

-            jjmatchedKind = 121;

-            jjmatchedPos = 5;

-         }

-         else if ((active2 & 0x200000L) != 0L)

-         {

-            jjmatchedKind = 149;

-            jjmatchedPos = 5;

-         }

-         else if ((active2 & 0x800000L) != 0L)

-         {

-            jjmatchedKind = 151;

-            jjmatchedPos = 5;

-         }

-         else if ((active2 & 0x1000000L) != 0L)

-         {

-            jjmatchedKind = 152;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0x261000000000000L, active1, 0x100000L, active2, 0x80100000L, active3, 0x13800L);

-      case 71:

-         if ((active1 & 0x8000L) != 0L)

-         {

-            jjmatchedKind = 79;

-            jjmatchedPos = 5;

-         }

-         else if ((active3 & 0x8000L) != 0L)

-         {

-            jjmatchedKind = 207;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0x10000000000000L, active3, 0L);

-      case 72:

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0x600000000000L, active3, 0L);

-      case 73:

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x10800L, active2, 0x142100000000000L, active3, 0x4000L);

-      case 76:

-         if ((active2 & 0x10000000L) != 0L)

-         {

-            jjmatchedKind = 156;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x1L, active2, 0x28000000000000L, active3, 0L);

-      case 77:

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0x400000L, active3, 0x4000000L);

-      case 78:

-         if ((active1 & 0x800000000L) != 0L)

-         {

-            jjmatchedKind = 99;

-            jjmatchedPos = 5;

-         }

-         else if ((active3 & 0x10L) != 0L)

-         {

-            jjmatchedKind = 196;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0x100000000000000L, active1, 0x4L, active2, 0x80004020008000L, active3, 0x1000000L);

-      case 80:

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x2000020000000L, active2, 0L, active3, 0x2000000L);

-      case 82:

-         if ((active0 & 0x4000000000000000L) != 0L)

-         {

-            jjmatchedKind = 62;

-            jjmatchedPos = 5;

-         }

-         else if ((active2 & 0x80000000000L) != 0L)

-         {

-            jjmatchedKind = 171;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0x8800000000000000L, active1, 0x48000000000L, active2, 0x800000000004000L, active3, 0x20000L);

-      case 83:

-         if ((active1 & 0x400000000000000L) != 0L)

-         {

-            jjmatchedKind = 122;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0x8000000000000L, active1, 0x400080L, active2, 0x400000000000000L, active3, 0L);

-      case 84:

-         if ((active1 & 0x200000L) != 0L)

-         {

-            jjmatchedKind = 85;

-            jjmatchedPos = 5;

-         }

-         else if ((active1 & 0x80000000L) != 0L)

-         {

-            jjmatchedKind = 95;

-            jjmatchedPos = 5;

-         }

-         else if ((active1 & 0x100000000000L) != 0L)

-         {

-            jjmatchedKind = 108;

-            jjmatchedPos = 5;

-         }

-         else if ((active2 & 0x1000L) != 0L)

-         {

-            jjmatchedKind = 140;

-            jjmatchedPos = 5;

-         }

-         else if ((active2 & 0x800000000000L) != 0L)

-         {

-            jjmatchedKind = 175;

-            jjmatchedPos = 5;

-         }

-         else if ((active3 & 0x4L) != 0L)

-         {

-            jjmatchedKind = 194;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0x80000000000000L, active1, 0x4000000000040L, active2, 0L, active3, 0x80008L);

-      case 86:

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0x100000000L, active3, 0L);

-      case 89:

-         if ((active2 & 0x40000000000L) != 0L)

-         {

-            jjmatchedKind = 170;

-            jjmatchedPos = 5;

-         }

-         else if ((active3 & 0x800000L) != 0L)

-         {

-            jjmatchedKind = 215;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0x20000000000L, active1, 0L, active2, 0x38L, active3, 0x400L);

-      case 97:

-         if ((active2 & 0x200000000000000L) != 0L)

-         {

-            jjmatchedKind = 185;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x4000000000L, active2, 0x8000082080L, active3, 0x600000L);

-      case 98:

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0x1000000000L, active3, 0L);

-      case 99:

-         if ((active1 & 0x20000000000L) != 0L)

-         {

-            jjmatchedKind = 105;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0x400000000000000L, active1, 0L, active2, 0x400L, active3, 0x2L);

-      case 100:

-         if ((active2 & 0x2L) != 0L)

-         {

-            jjmatchedKind = 129;

-            jjmatchedPos = 5;

-         }

-         else if ((active2 & 0x8000000000000000L) != 0L)

-         {

-            jjmatchedKind = 191;

-            jjmatchedPos = 5;

-         }

-         else if ((active3 & 0x80L) != 0L)

-         {

-            jjmatchedKind = 199;

-            jjmatchedPos = 5;

-         }

-         else if ((active3 & 0x100000L) != 0L)

-         {

-            jjmatchedKind = 212;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x10000000000L, active2, 0L, active3, 0L);

-      case 101:

-         if ((active0 & 0x2000000000000000L) != 0L)

-         {

-            jjmatchedKind = 61;

-            jjmatchedPos = 5;

-         }

-         else if ((active1 & 0x80000000000L) != 0L)

-         {

-            jjmatchedKind = 107;

-            jjmatchedPos = 5;

-         }

-         else if ((active1 & 0x100000000000000L) != 0L)

-         {

-            jjmatchedKind = 120;

-            jjmatchedPos = 5;

-         }

-         else if ((active1 & 0x200000000000000L) != 0L)

-         {

-            jjmatchedKind = 121;

-            jjmatchedPos = 5;

-         }

-         else if ((active2 & 0x200000L) != 0L)

-         {

-            jjmatchedKind = 149;

-            jjmatchedPos = 5;

-         }

-         else if ((active2 & 0x800000L) != 0L)

-         {

-            jjmatchedKind = 151;

-            jjmatchedPos = 5;

-         }

-         else if ((active2 & 0x1000000L) != 0L)

-         {

-            jjmatchedKind = 152;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0x261000000000000L, active1, 0x100000L, active2, 0x80100000L, active3, 0x13800L);

-      case 103:

-         if ((active1 & 0x8000L) != 0L)

-         {

-            jjmatchedKind = 79;

-            jjmatchedPos = 5;

-         }

-         else if ((active3 & 0x8000L) != 0L)

-         {

-            jjmatchedKind = 207;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0x10000000000000L, active3, 0L);

-      case 104:

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0x600000000000L, active3, 0L);

-      case 105:

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x10800L, active2, 0x142100000000000L, active3, 0x4000L);

-      case 108:

-         if ((active2 & 0x10000000L) != 0L)

-         {

-            jjmatchedKind = 156;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x1L, active2, 0x28000000000000L, active3, 0L);

-      case 109:

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0x400000L, active3, 0x4000000L);

-      case 110:

-         if ((active1 & 0x800000000L) != 0L)

-         {

-            jjmatchedKind = 99;

-            jjmatchedPos = 5;

-         }

-         else if ((active3 & 0x10L) != 0L)

-         {

-            jjmatchedKind = 196;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0x100000000000000L, active1, 0x4L, active2, 0x80004020008000L, active3, 0x1000000L);

-      case 112:

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x2000020000000L, active2, 0L, active3, 0x2000000L);

-      case 114:

-         if ((active0 & 0x4000000000000000L) != 0L)

-         {

-            jjmatchedKind = 62;

-            jjmatchedPos = 5;

-         }

-         else if ((active2 & 0x80000000000L) != 0L)

-         {

-            jjmatchedKind = 171;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0x8800000000000000L, active1, 0x48000000000L, active2, 0x800000000004000L, active3, 0x20000L);

-      case 115:

-         if ((active1 & 0x400000000000000L) != 0L)

-         {

-            jjmatchedKind = 122;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0x8000000000000L, active1, 0x400080L, active2, 0x400000000000000L, active3, 0L);

-      case 116:

-         if ((active1 & 0x200000L) != 0L)

-         {

-            jjmatchedKind = 85;

-            jjmatchedPos = 5;

-         }

-         else if ((active1 & 0x80000000L) != 0L)

-         {

-            jjmatchedKind = 95;

-            jjmatchedPos = 5;

-         }

-         else if ((active1 & 0x100000000000L) != 0L)

-         {

-            jjmatchedKind = 108;

-            jjmatchedPos = 5;

-         }

-         else if ((active2 & 0x1000L) != 0L)

-         {

-            jjmatchedKind = 140;

-            jjmatchedPos = 5;

-         }

-         else if ((active2 & 0x800000000000L) != 0L)

-         {

-            jjmatchedKind = 175;

-            jjmatchedPos = 5;

-         }

-         else if ((active3 & 0x4L) != 0L)

-         {

-            jjmatchedKind = 194;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0x80000000000000L, active1, 0x4000000000040L, active2, 0L, active3, 0x80008L);

-      case 118:

-         return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0x100000000L, active3, 0L);

-      case 121:

-         if ((active2 & 0x40000000000L) != 0L)

-         {

-            jjmatchedKind = 170;

-            jjmatchedPos = 5;

-         }

-         else if ((active3 & 0x800000L) != 0L)

-         {

-            jjmatchedKind = 215;

-            jjmatchedPos = 5;

-         }

-         return jjMoveStringLiteralDfa6_0(active0, 0x20000000000L, active1, 0L, active2, 0x38L, active3, 0x400L);

-      default :

-         break;

-   }

-   return jjMoveNfa_0(5, 5);

-}

-private int jjMoveStringLiteralDfa6_0(long old0, long active0, long old1, long active1, long old2, long active2, long old3, long active3)

-{

-   if (((active0 &= old0) | (active1 &= old1) | (active2 &= old2) | (active3 &= old3)) == 0L)

-      return jjMoveNfa_0(5, 5);

-   try { curChar = input_stream.readChar(); }

-   catch(java.io.IOException e) {

-   return jjMoveNfa_0(5, 5);

-   }

-   switch(curChar)

-   {

-      case 65:

-         return jjMoveStringLiteralDfa7_0(active0, 0x800000000000000L, active1, 0L, active2, 0x604100000000L, active3, 0xa0000L);

-      case 67:

-         if ((active2 & 0x100000000000L) != 0L)

-         {

-            jjmatchedKind = 172;

-            jjmatchedPos = 6;

-         }

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x40000000004L, active2, 0L, active3, 0L);

-      case 69:

-         if ((active0 & 0x8000000000000000L) != 0L)

-         {

-            jjmatchedKind = 63;

-            jjmatchedPos = 6;

-         }

-         else if ((active1 & 0x2000000000000L) != 0L)

-         {

-            jjmatchedKind = 113;

-            jjmatchedPos = 6;

-         }

-         else if ((active2 & 0x10000000000000L) != 0L)

-         {

-            jjmatchedKind = 180;

-            jjmatchedPos = 6;

-         }

-         else if ((active3 & 0x2L) != 0L)

-         {

-            jjmatchedKind = 193;

-            jjmatchedPos = 6;

-         }

-         else if ((active3 & 0x2000000L) != 0L)

-         {

-            jjmatchedKind = 217;

-            jjmatchedPos = 6;

-         }

-         return jjMoveStringLiteralDfa7_0(active0, 0x8000000000000L, active1, 0x400000L, active2, 0x20001000000000L, active3, 0L);

-      case 70:

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x10000L, active2, 0L, active3, 0x10000L);

-      case 71:

-         if ((active3 & 0x1000000L) != 0L)

-         {

-            jjmatchedKind = 216;

-            jjmatchedPos = 6;

-         }

-         break;

-      case 72:

-         if ((active0 & 0x80000000000000L) != 0L)

-         {

-            jjmatchedKind = 55;

-            jjmatchedPos = 6;

-         }

-         else if ((active1 & 0x4000000000000L) != 0L)

-         {

-            jjmatchedKind = 114;

-            jjmatchedPos = 6;

-         }

-         break;

-      case 73:

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0xc0L, active2, 0x400000000400000L, active3, 0L);

-      case 76:

-         if ((active2 & 0x80000L) != 0L)

-         {

-            jjmatchedKind = 147;

-            jjmatchedPos = 6;

-         }

-         else if ((active2 & 0x8000000000L) != 0L)

-         {

-            jjmatchedKind = 167;

-            jjmatchedPos = 6;

-         }

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x4000000L);

-      case 78:

-         if ((active0 & 0x1000000000000L) != 0L)

-         {

-            jjmatchedKind = 48;

-            jjmatchedPos = 6;

-         }

-         else if ((active2 & 0x80L) != 0L)

-         {

-            jjmatchedKind = 135;

-            jjmatchedPos = 6;

-         }

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x40000000002000L, active3, 0x4000L);

-      case 79:

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x800L, active2, 0x8000000000000L, active3, 0L);

-      case 80:

-         return jjMoveStringLiteralDfa7_0(active0, 0x20000000000L, active1, 0x4000000000L, active2, 0L, active3, 0x400L);

-      case 82:

-         if ((active0 & 0x40000000000000L) != 0L)

-         {

-            jjmatchedKind = 54;

-            jjmatchedPos = 6;

-         }

-         else if ((active2 & 0x100000L) != 0L)

-         {

-            jjmatchedKind = 148;

-            jjmatchedPos = 6;

-         }

-         else if ((active2 & 0x80000000L) != 0L)

-         {

-            jjmatchedKind = 159;

-            jjmatchedPos = 6;

-         }

-         else if ((active3 & 0x400000L) != 0L)

-         {

-            jjmatchedKind = 214;

-            jjmatchedPos = 6;

-         }

-         return jjMoveStringLiteralDfa7_0(active0, 0x20000000000000L, active1, 0x20000000L, active2, 0L, active3, 0x200000L);

-      case 83:

-         if ((active0 & 0x100000000000000L) != 0L)

-         {

-            jjmatchedKind = 56;

-            jjmatchedPos = 6;

-         }

-         else if ((active1 & 0x100000L) != 0L)

-         {

-            jjmatchedKind = 84;

-            jjmatchedPos = 6;

-         }

-         return jjMoveStringLiteralDfa7_0(active0, 0x200000000000000L, active1, 0L, active2, 0L, active3, 0L);

-      case 84:

-         if ((active0 & 0x400000000000000L) != 0L)

-         {

-            jjmatchedKind = 58;

-            jjmatchedPos = 6;

-         }

-         else if ((active1 & 0x1L) != 0L)

-         {

-            jjmatchedKind = 64;

-            jjmatchedPos = 6;

-         }

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x80000020008400L, active3, 0L);

-      case 85:

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x10000000000L, active2, 0x4000L, active3, 0L);

-      case 86:

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x900000000000000L, active3, 0L);

-      case 89:

-         if ((active1 & 0x8000000000L) != 0L)

-         {

-            jjmatchedKind = 103;

-            jjmatchedPos = 6;

-         }

-         break;

-      case 90:

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x2000000000000L, active3, 0L);

-      case 95:

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x38L, active3, 0x3808L);

-      case 97:

-         return jjMoveStringLiteralDfa7_0(active0, 0x800000000000000L, active1, 0L, active2, 0x604100000000L, active3, 0xa0000L);

-      case 99:

-         if ((active2 & 0x100000000000L) != 0L)

-         {

-            jjmatchedKind = 172;

-            jjmatchedPos = 6;

-         }

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x40000000004L, active2, 0L, active3, 0L);

-      case 101:

-         if ((active0 & 0x8000000000000000L) != 0L)

-         {

-            jjmatchedKind = 63;

-            jjmatchedPos = 6;

-         }

-         else if ((active1 & 0x2000000000000L) != 0L)

-         {

-            jjmatchedKind = 113;

-            jjmatchedPos = 6;

-         }

-         else if ((active2 & 0x10000000000000L) != 0L)

-         {

-            jjmatchedKind = 180;

-            jjmatchedPos = 6;

-         }

-         else if ((active3 & 0x2L) != 0L)

-         {

-            jjmatchedKind = 193;

-            jjmatchedPos = 6;

-         }

-         else if ((active3 & 0x2000000L) != 0L)

-         {

-            jjmatchedKind = 217;

-            jjmatchedPos = 6;

-         }

-         return jjMoveStringLiteralDfa7_0(active0, 0x8000000000000L, active1, 0x400000L, active2, 0x20001000000000L, active3, 0L);

-      case 102:

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x10000L, active2, 0L, active3, 0x10000L);

-      case 103:

-         if ((active3 & 0x1000000L) != 0L)

-         {

-            jjmatchedKind = 216;

-            jjmatchedPos = 6;

-         }

-         break;

-      case 104:

-         if ((active0 & 0x80000000000000L) != 0L)

-         {

-            jjmatchedKind = 55;

-            jjmatchedPos = 6;

-         }

-         else if ((active1 & 0x4000000000000L) != 0L)

-         {

-            jjmatchedKind = 114;

-            jjmatchedPos = 6;

-         }

-         break;

-      case 105:

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0xc0L, active2, 0x400000000400000L, active3, 0L);

-      case 108:

-         if ((active2 & 0x80000L) != 0L)

-         {

-            jjmatchedKind = 147;

-            jjmatchedPos = 6;

-         }

-         else if ((active2 & 0x8000000000L) != 0L)

-         {

-            jjmatchedKind = 167;

-            jjmatchedPos = 6;

-         }

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x4000000L);

-      case 110:

-         if ((active0 & 0x1000000000000L) != 0L)

-         {

-            jjmatchedKind = 48;

-            jjmatchedPos = 6;

-         }

-         else if ((active2 & 0x80L) != 0L)

-         {

-            jjmatchedKind = 135;

-            jjmatchedPos = 6;

-         }

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x40000000002000L, active3, 0x4000L);

-      case 111:

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x800L, active2, 0x8000000000000L, active3, 0L);

-      case 112:

-         return jjMoveStringLiteralDfa7_0(active0, 0x20000000000L, active1, 0x4000000000L, active2, 0L, active3, 0x400L);

-      case 114:

-         if ((active0 & 0x40000000000000L) != 0L)

-         {

-            jjmatchedKind = 54;

-            jjmatchedPos = 6;

-         }

-         else if ((active2 & 0x100000L) != 0L)

-         {

-            jjmatchedKind = 148;

-            jjmatchedPos = 6;

-         }

-         else if ((active2 & 0x80000000L) != 0L)

-         {

-            jjmatchedKind = 159;

-            jjmatchedPos = 6;

-         }

-         else if ((active3 & 0x400000L) != 0L)

-         {

-            jjmatchedKind = 214;

-            jjmatchedPos = 6;

-         }

-         return jjMoveStringLiteralDfa7_0(active0, 0x20000000000000L, active1, 0x20000000L, active2, 0L, active3, 0x200000L);

-      case 115:

-         if ((active0 & 0x100000000000000L) != 0L)

-         {

-            jjmatchedKind = 56;

-            jjmatchedPos = 6;

-         }

-         else if ((active1 & 0x100000L) != 0L)

-         {

-            jjmatchedKind = 84;

-            jjmatchedPos = 6;

-         }

-         return jjMoveStringLiteralDfa7_0(active0, 0x200000000000000L, active1, 0L, active2, 0L, active3, 0L);

-      case 116:

-         if ((active0 & 0x400000000000000L) != 0L)

-         {

-            jjmatchedKind = 58;

-            jjmatchedPos = 6;

-         }

-         else if ((active1 & 0x1L) != 0L)

-         {

-            jjmatchedKind = 64;

-            jjmatchedPos = 6;

-         }

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x80000020008400L, active3, 0L);

-      case 117:

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x10000000000L, active2, 0x4000L, active3, 0L);

-      case 118:

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x900000000000000L, active3, 0L);

-      case 121:

-         if ((active1 & 0x8000000000L) != 0L)

-         {

-            jjmatchedKind = 103;

-            jjmatchedPos = 6;

-         }

-         break;

-      case 122:

-         return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x2000000000000L, active3, 0L);

-      default :

-         break;

-   }

-   return jjMoveNfa_0(5, 6);

-}

-private int jjMoveStringLiteralDfa7_0(long old0, long active0, long old1, long active1, long old2, long active2, long old3, long active3)

-{

-   if (((active0 &= old0) | (active1 &= old1) | (active2 &= old2) | (active3 &= old3)) == 0L)

-      return jjMoveNfa_0(5, 6);

-   try { curChar = input_stream.readChar(); }

-   catch(java.io.IOException e) {

-   return jjMoveNfa_0(5, 6);

-   }

-   switch(curChar)

-   {

-      case 50:

-         if ((active3 & 0x200000L) != 0L)

-         {

-            jjmatchedKind = 213;

-            jjmatchedPos = 7;

-         }

-         break;

-      case 65:

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x2000000000000L, active3, 0L);

-      case 67:

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x400000L, active2, 0x4000L, active3, 0x10008L);

-      case 68:

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x8L, active3, 0x800L);

-      case 69:

-         if ((active0 & 0x20000000000L) != 0L)

-         {

-            jjmatchedKind = 41;

-            jjmatchedPos = 7;

-         }

-         else if ((active1 & 0x40000000000L) != 0L)

-         {

-            jjmatchedKind = 106;

-            jjmatchedPos = 7;

-         }

-         else if ((active2 & 0x100000000000000L) != 0L)

-         {

-            jjmatchedKind = 184;

-            jjmatchedPos = 7;

-         }

-         else if ((active2 & 0x800000000000000L) != 0L)

-         {

-            jjmatchedKind = 187;

-            jjmatchedPos = 7;

-         }

-         else if ((active3 & 0x400L) != 0L)

-         {

-            jjmatchedKind = 202;

-            jjmatchedPos = 7;

-         }

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x20000000L, active2, 0xc0000000000400L, active3, 0L);

-      case 70:

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x10L, active3, 0x1000L);

-      case 73:

-         return jjMoveStringLiteralDfa8_0(active0, 0x800000000000000L, active1, 0x10000L, active2, 0x20000020L, active3, 0x2000L);

-      case 76:

-         if ((active2 & 0x100000000L) != 0L)

-         {

-            jjmatchedKind = 160;

-            jjmatchedPos = 7;

-         }

-         else if ((active2 & 0x1000000000L) != 0L)

-         {

-            jjmatchedKind = 164;

-            jjmatchedPos = 7;

-         }

-         else if ((active2 & 0x4000000000L) != 0L)

-         {

-            jjmatchedKind = 166;

-            jjmatchedPos = 7;

-         }

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x20000000000000L, active3, 0L);

-      case 77:

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x80000L);

-      case 78:

-         if ((active1 & 0x800L) != 0L)

-         {

-            jjmatchedKind = 75;

-            jjmatchedPos = 7;

-         }

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x400000L, active3, 0L);

-      case 79:

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x40L, active2, 0x400000000000000L, active3, 0L);

-      case 82:

-         if ((active2 & 0x400000000000L) != 0L)

-         {

-            jjmatchedKind = 174;

-            jjmatchedPos = 7;

-         }

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x10000000000L, active2, 0x200000000000L, active3, 0x20000L);

-      case 83:

-         if ((active0 & 0x20000000000000L) != 0L)

-         {

-            jjmatchedKind = 53;

-            jjmatchedPos = 7;

-         }

-         else if ((active0 & 0x200000000000000L) != 0L)

-         {

-            jjmatchedKind = 57;

-            jjmatchedPos = 7;

-         }

-         else if ((active1 & 0x4000000000L) != 0L)

-         {

-            jjmatchedKind = 102;

-            jjmatchedPos = 7;

-         }

-         break;

-      case 84:

-         if ((active0 & 0x8000000000000L) != 0L)

-         {

-            jjmatchedKind = 51;

-            jjmatchedPos = 7;

-         }

-         else if ((active1 & 0x4L) != 0L)

-         {

-            jjmatchedKind = 66;

-            jjmatchedPos = 7;

-         }

-         else if ((active2 & 0x2000L) != 0L)

-         {

-            jjmatchedKind = 141;

-            jjmatchedPos = 7;

-         }

-         else if ((active3 & 0x4000L) != 0L)

-         {

-            jjmatchedKind = 206;

-            jjmatchedPos = 7;

-         }

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x4000000L);

-      case 86:

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x80L, active2, 0L, active3, 0L);

-      case 87:

-         if ((active2 & 0x8000000000000L) != 0L)

-         {

-            jjmatchedKind = 179;

-            jjmatchedPos = 7;

-         }

-         break;

-      case 95:

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x8000L, active3, 0L);

-      case 97:

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x2000000000000L, active3, 0L);

-      case 99:

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x400000L, active2, 0x4000L, active3, 0x10008L);

-      case 100:

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x8L, active3, 0x800L);

-      case 101:

-         if ((active0 & 0x20000000000L) != 0L)

-         {

-            jjmatchedKind = 41;

-            jjmatchedPos = 7;

-         }

-         else if ((active1 & 0x40000000000L) != 0L)

-         {

-            jjmatchedKind = 106;

-            jjmatchedPos = 7;

-         }

-         else if ((active2 & 0x100000000000000L) != 0L)

-         {

-            jjmatchedKind = 184;

-            jjmatchedPos = 7;

-         }

-         else if ((active2 & 0x800000000000000L) != 0L)

-         {

-            jjmatchedKind = 187;

-            jjmatchedPos = 7;

-         }

-         else if ((active3 & 0x400L) != 0L)

-         {

-            jjmatchedKind = 202;

-            jjmatchedPos = 7;

-         }

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x20000000L, active2, 0xc0000000000400L, active3, 0L);

-      case 102:

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x10L, active3, 0x1000L);

-      case 105:

-         return jjMoveStringLiteralDfa8_0(active0, 0x800000000000000L, active1, 0x10000L, active2, 0x20000020L, active3, 0x2000L);

-      case 108:

-         if ((active2 & 0x100000000L) != 0L)

-         {

-            jjmatchedKind = 160;

-            jjmatchedPos = 7;

-         }

-         else if ((active2 & 0x1000000000L) != 0L)

-         {

-            jjmatchedKind = 164;

-            jjmatchedPos = 7;

-         }

-         else if ((active2 & 0x4000000000L) != 0L)

-         {

-            jjmatchedKind = 166;

-            jjmatchedPos = 7;

-         }

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x20000000000000L, active3, 0L);

-      case 109:

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x80000L);

-      case 110:

-         if ((active1 & 0x800L) != 0L)

-         {

-            jjmatchedKind = 75;

-            jjmatchedPos = 7;

-         }

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x400000L, active3, 0L);

-      case 111:

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x40L, active2, 0x400000000000000L, active3, 0L);

-      case 114:

-         if ((active2 & 0x400000000000L) != 0L)

-         {

-            jjmatchedKind = 174;

-            jjmatchedPos = 7;

-         }

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x10000000000L, active2, 0x200000000000L, active3, 0x20000L);

-      case 115:

-         if ((active0 & 0x20000000000000L) != 0L)

-         {

-            jjmatchedKind = 53;

-            jjmatchedPos = 7;

-         }

-         else if ((active0 & 0x200000000000000L) != 0L)

-         {

-            jjmatchedKind = 57;

-            jjmatchedPos = 7;

-         }

-         else if ((active1 & 0x4000000000L) != 0L)

-         {

-            jjmatchedKind = 102;

-            jjmatchedPos = 7;

-         }

-         break;

-      case 116:

-         if ((active0 & 0x8000000000000L) != 0L)

-         {

-            jjmatchedKind = 51;

-            jjmatchedPos = 7;

-         }

-         else if ((active1 & 0x4L) != 0L)

-         {

-            jjmatchedKind = 66;

-            jjmatchedPos = 7;

-         }

-         else if ((active2 & 0x2000L) != 0L)

-         {

-            jjmatchedKind = 141;

-            jjmatchedPos = 7;

-         }

-         else if ((active3 & 0x4000L) != 0L)

-         {

-            jjmatchedKind = 206;

-            jjmatchedPos = 7;

-         }

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x4000000L);

-      case 118:

-         return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x80L, active2, 0L, active3, 0L);

-      case 119:

-         if ((active2 & 0x8000000000000L) != 0L)

-         {

-            jjmatchedKind = 179;

-            jjmatchedPos = 7;

-         }

-         break;

-      default :

-         break;

-   }

-   return jjMoveNfa_0(5, 7);

-}

-private int jjMoveStringLiteralDfa8_0(long old0, long active0, long old1, long active1, long old2, long active2, long old3, long active3)

-{

-   if (((active0 &= old0) | (active1 &= old1) | (active2 &= old2) | (active3 &= old3)) == 0L)

-      return jjMoveNfa_0(5, 7);

-   try { curChar = input_stream.readChar(); }

-   catch(java.io.IOException e) {

-   return jjMoveNfa_0(5, 7);

-   }

-   switch(curChar)

-   {

-      case 50:

-         if ((active2 & 0x200000000000L) != 0L)

-         {

-            jjmatchedKind = 173;

-            jjmatchedPos = 8;

-         }

-         break;

-      case 65:

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x20000000L, active3, 0x8L);

-      case 68:

-         if ((active2 & 0x40000000000000L) != 0L)

-         {

-            jjmatchedKind = 182;

-            jjmatchedPos = 8;

-         }

-         break;

-      case 69:

-         if ((active1 & 0x80L) != 0L)

-         {

-            jjmatchedKind = 71;

-            jjmatchedPos = 8;

-         }

-         else if ((active1 & 0x10000000000L) != 0L)

-         {

-            jjmatchedKind = 104;

-            jjmatchedPos = 8;

-         }

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x10000L, active2, 0L, active3, 0L);

-      case 71:

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x80000000000000L, active3, 0L);

-      case 73:

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x400000L, active3, 0L);

-      case 76:

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x10L, active3, 0x1000L);

-      case 78:

-         if ((active1 & 0x40L) != 0L)

-         {

-            jjmatchedKind = 70;

-            jjmatchedPos = 8;

-         }

-         else if ((active2 & 0x400000000000000L) != 0L)

-         {

-            jjmatchedKind = 186;

-            jjmatchedPos = 8;

-         }

-         return jjMoveStringLiteralDfa9_0(active0, 0x800000000000000L, active1, 0L, active2, 0x20L, active3, 0x2000L);

-      case 79:

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x8L, active3, 0x800L);

-      case 80:

-         if ((active3 & 0x80000L) != 0L)

-         {

-            jjmatchedKind = 211;

-            jjmatchedPos = 8;

-         }

-         break;

-      case 82:

-         if ((active2 & 0x400L) != 0L)

-         {

-            jjmatchedKind = 138;

-            jjmatchedPos = 8;

-         }

-         break;

-      case 83:

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x20000000L, active2, 0L, active3, 0L);

-      case 84:

-         if ((active1 & 0x400000L) != 0L)

-         {

-            jjmatchedKind = 86;

-            jjmatchedPos = 8;

-         }

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x2000000004000L, active3, 0L);

-      case 85:

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x8000L, active3, 0x10000L);

-      case 89:

-         if ((active3 & 0x20000L) != 0L)

-         {

-            jjmatchedKind = 209;

-            jjmatchedPos = 8;

-         }

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x4000000L);

-      case 95:

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x20000000000000L, active3, 0L);

-      case 97:

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x20000000L, active3, 0x8L);

-      case 100:

-         if ((active2 & 0x40000000000000L) != 0L)

-         {

-            jjmatchedKind = 182;

-            jjmatchedPos = 8;

-         }

-         break;

-      case 101:

-         if ((active1 & 0x80L) != 0L)

-         {

-            jjmatchedKind = 71;

-            jjmatchedPos = 8;

-         }

-         else if ((active1 & 0x10000000000L) != 0L)

-         {

-            jjmatchedKind = 104;

-            jjmatchedPos = 8;

-         }

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x10000L, active2, 0L, active3, 0L);

-      case 103:

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x80000000000000L, active3, 0L);

-      case 105:

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x400000L, active3, 0L);

-      case 108:

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x10L, active3, 0x1000L);

-      case 110:

-         if ((active1 & 0x40L) != 0L)

-         {

-            jjmatchedKind = 70;

-            jjmatchedPos = 8;

-         }

-         else if ((active2 & 0x400000000000000L) != 0L)

-         {

-            jjmatchedKind = 186;

-            jjmatchedPos = 8;

-         }

-         return jjMoveStringLiteralDfa9_0(active0, 0x800000000000000L, active1, 0L, active2, 0x20L, active3, 0x2000L);

-      case 111:

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x8L, active3, 0x800L);

-      case 112:

-         if ((active3 & 0x80000L) != 0L)

-         {

-            jjmatchedKind = 211;

-            jjmatchedPos = 8;

-         }

-         break;

-      case 114:

-         if ((active2 & 0x400L) != 0L)

-         {

-            jjmatchedKind = 138;

-            jjmatchedPos = 8;

-         }

-         break;

-      case 115:

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x20000000L, active2, 0L, active3, 0L);

-      case 116:

-         if ((active1 & 0x400000L) != 0L)

-         {

-            jjmatchedKind = 86;

-            jjmatchedPos = 8;

-         }

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x2000000004000L, active3, 0L);

-      case 117:

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x8000L, active3, 0x10000L);

-      case 121:

-         if ((active3 & 0x20000L) != 0L)

-         {

-            jjmatchedKind = 209;

-            jjmatchedPos = 8;

-         }

-         return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x4000000L);

-      default :

-         break;

-   }

-   return jjMoveNfa_0(5, 8);

-}

-private int jjMoveStringLiteralDfa9_0(long old0, long active0, long old1, long active1, long old2, long active2, long old3, long active3)

-{

-   if (((active0 &= old0) | (active1 &= old1) | (active2 &= old2) | (active3 &= old3)) == 0L)

-      return jjMoveNfa_0(5, 8);

-   try { curChar = input_stream.readChar(); }

-   catch(java.io.IOException e) {

-   return jjMoveNfa_0(5, 8);

-   }

-   switch(curChar)

-   {

-      case 66:

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0x20000000L, active3, 0L);

-      case 67:

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x8L);

-      case 68:

-         if ((active1 & 0x10000L) != 0L)

-         {

-            jjmatchedKind = 80;

-            jjmatchedPos = 9;

-         }

-         break;

-      case 69:

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0xa0000000000000L, active3, 0L);

-      case 73:

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0x2000000000000L, active3, 0L);

-      case 79:

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0x4010L, active3, 0x1000L);

-      case 80:

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x4000000L);

-      case 82:

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x10000L);

-      case 83:

-         if ((active1 & 0x20000000L) != 0L)

-         {

-            jjmatchedKind = 93;

-            jjmatchedPos = 9;

-         }

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0x408000L, active3, 0L);

-      case 84:

-         if ((active0 & 0x800000000000000L) != 0L)

-         {

-            jjmatchedKind = 59;

-            jjmatchedPos = 9;

-         }

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0x20L, active3, 0x2000L);

-      case 85:

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0x8L, active3, 0x800L);

-      case 98:

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0x20000000L, active3, 0L);

-      case 99:

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x8L);

-      case 100:

-         if ((active1 & 0x10000L) != 0L)

-         {

-            jjmatchedKind = 80;

-            jjmatchedPos = 9;

-         }

-         break;

-      case 101:

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0xa0000000000000L, active3, 0L);

-      case 105:

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0x2000000000000L, active3, 0L);

-      case 111:

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0x4010L, active3, 0x1000L);

-      case 112:

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x4000000L);

-      case 114:

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x10000L);

-      case 115:

-         if ((active1 & 0x20000000L) != 0L)

-         {

-            jjmatchedKind = 93;

-            jjmatchedPos = 9;

-         }

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0x408000L, active3, 0L);

-      case 116:

-         if ((active0 & 0x800000000000000L) != 0L)

-         {

-            jjmatchedKind = 59;

-            jjmatchedPos = 9;

-         }

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0x20L, active3, 0x2000L);

-      case 117:

-         return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0x8L, active3, 0x800L);

-      default :

-         break;

-   }

-   return jjMoveNfa_0(5, 9);

-}

-private int jjMoveStringLiteralDfa10_0(long old0, long active0, long old1, long active1, long old2, long active2, long old3, long active3)

-{

-   if (((active0 &= old0) | (active1 &= old1) | (active2 &= old2) | (active3 &= old3)) == 0L)

-      return jjMoveNfa_0(5, 9);

-   try { curChar = input_stream.readChar(); }

-   catch(java.io.IOException e) {

-   return jjMoveNfa_0(5, 9);

-   }

-   switch(curChar)

-   {

-      case 65:

-         return jjMoveStringLiteralDfa11_0(active2, 0x10L, active3, 0x1000L);

-      case 66:

-         return jjMoveStringLiteralDfa11_0(active2, 0x8L, active3, 0x800L);

-      case 69:

-         if ((active3 & 0x4000000L) != 0L)

-         {

-            jjmatchedKind = 218;

-            jjmatchedPos = 10;

-         }

-         return jjMoveStringLiteralDfa11_0(active2, 0x8020L, active3, 0x2000L);

-      case 72:

-         return jjMoveStringLiteralDfa11_0(active2, 0L, active3, 0x8L);

-      case 76:

-         return jjMoveStringLiteralDfa11_0(active2, 0x20000000L, active3, 0L);

-      case 78:

-         return jjMoveStringLiteralDfa11_0(active2, 0x20000000000000L, active3, 0L);

-      case 79:

-         return jjMoveStringLiteralDfa11_0(active2, 0x2000000000000L, active3, 0L);

-      case 82:

-         if ((active2 & 0x4000L) != 0L)

-         {

-            jjmatchedKind = 142;

-            jjmatchedPos = 10;

-         }

-         else if ((active2 & 0x80000000000000L) != 0L)

-         {

-            jjmatchedKind = 183;

-            jjmatchedPos = 10;

-         }

-         break;

-      case 83:

-         return jjMoveStringLiteralDfa11_0(active2, 0L, active3, 0x10000L);

-      case 84:

-         return jjMoveStringLiteralDfa11_0(active2, 0x400000L, active3, 0L);

-      case 97:

-         return jjMoveStringLiteralDfa11_0(active2, 0x10L, active3, 0x1000L);

-      case 98:

-         return jjMoveStringLiteralDfa11_0(active2, 0x8L, active3, 0x800L);

-      case 101:

-         if ((active3 & 0x4000000L) != 0L)

-         {

-            jjmatchedKind = 218;

-            jjmatchedPos = 10;

-         }

-         return jjMoveStringLiteralDfa11_0(active2, 0x8020L, active3, 0x2000L);

-      case 104:

-         return jjMoveStringLiteralDfa11_0(active2, 0L, active3, 0x8L);

-      case 108:

-         return jjMoveStringLiteralDfa11_0(active2, 0x20000000L, active3, 0L);

-      case 110:

-         return jjMoveStringLiteralDfa11_0(active2, 0x20000000000000L, active3, 0L);

-      case 111:

-         return jjMoveStringLiteralDfa11_0(active2, 0x2000000000000L, active3, 0L);

-      case 114:

-         if ((active2 & 0x4000L) != 0L)

-         {

-            jjmatchedKind = 142;

-            jjmatchedPos = 10;

-         }

-         else if ((active2 & 0x80000000000000L) != 0L)

-         {

-            jjmatchedKind = 183;

-            jjmatchedPos = 10;

-         }

-         break;

-      case 115:

-         return jjMoveStringLiteralDfa11_0(active2, 0L, active3, 0x10000L);

-      case 116:

-         return jjMoveStringLiteralDfa11_0(active2, 0x400000L, active3, 0L);

-      default :

-         break;

-   }

-   return jjMoveNfa_0(5, 10);

-}

-private int jjMoveStringLiteralDfa11_0(long old2, long active2, long old3, long active3)

-{

-   if (((active2 &= old2) | (active3 &= old3)) == 0L)

-      return jjMoveNfa_0(5, 10);

-   try { curChar = input_stream.readChar(); }

-   catch(java.io.IOException e) {

-   return jjMoveNfa_0(5, 10);

-   }

-   switch(curChar)

-   {

-      case 65:

-         return jjMoveStringLiteralDfa12_0(active2, 0x20000000000000L, active3, 0L);

-      case 69:

-         if ((active2 & 0x20000000L) != 0L)

-         {

-            jjmatchedKind = 157;

-            jjmatchedPos = 11;

-         }

-         else if ((active3 & 0x8L) != 0L)

-         {

-            jjmatchedKind = 195;

-            jjmatchedPos = 11;

-         }

-         break;

-      case 71:

-         return jjMoveStringLiteralDfa12_0(active2, 0x20L, active3, 0x2000L);

-      case 73:

-         return jjMoveStringLiteralDfa12_0(active2, 0x400000L, active3, 0L);

-      case 76:

-         return jjMoveStringLiteralDfa12_0(active2, 0x8L, active3, 0x800L);

-      case 78:

-         if ((active2 & 0x2000000000000L) != 0L)

-         {

-            jjmatchedKind = 177;

-            jjmatchedPos = 11;

-         }

-         break;

-      case 79:

-         return jjMoveStringLiteralDfa12_0(active2, 0L, active3, 0x10000L);

-      case 82:

-         if ((active2 & 0x8000L) != 0L)

-         {

-            jjmatchedKind = 143;

-            jjmatchedPos = 11;

-         }

-         break;

-      case 84:

-         if ((active2 & 0x10L) != 0L)

-         {

-            jjmatchedKind = 132;

-            jjmatchedPos = 11;

-         }

-         else if ((active3 & 0x1000L) != 0L)

-         {

-            jjmatchedKind = 204;

-            jjmatchedPos = 11;

-         }

-         break;

-      case 97:

-         return jjMoveStringLiteralDfa12_0(active2, 0x20000000000000L, active3, 0L);

-      case 101:

-         if ((active2 & 0x20000000L) != 0L)

-         {

-            jjmatchedKind = 157;

-            jjmatchedPos = 11;

-         }

-         else if ((active3 & 0x8L) != 0L)

-         {

-            jjmatchedKind = 195;

-            jjmatchedPos = 11;

-         }

-         break;

-      case 103:

-         return jjMoveStringLiteralDfa12_0(active2, 0x20L, active3, 0x2000L);

-      case 105:

-         return jjMoveStringLiteralDfa12_0(active2, 0x400000L, active3, 0L);

-      case 108:

-         return jjMoveStringLiteralDfa12_0(active2, 0x8L, active3, 0x800L);

-      case 110:

-         if ((active2 & 0x2000000000000L) != 0L)

-         {

-            jjmatchedKind = 177;

-            jjmatchedPos = 11;

-         }

-         break;

-      case 111:

-         return jjMoveStringLiteralDfa12_0(active2, 0L, active3, 0x10000L);

-      case 114:

-         if ((active2 & 0x8000L) != 0L)

-         {

-            jjmatchedKind = 143;

-            jjmatchedPos = 11;

-         }

-         break;

-      case 116:

-         if ((active2 & 0x10L) != 0L)

-         {

-            jjmatchedKind = 132;

-            jjmatchedPos = 11;

-         }

-         else if ((active3 & 0x1000L) != 0L)

-         {

-            jjmatchedKind = 204;

-            jjmatchedPos = 11;

-         }

-         break;

-      default :

-         break;

-   }

-   return jjMoveNfa_0(5, 11);

-}

-private int jjMoveStringLiteralDfa12_0(long old2, long active2, long old3, long active3)

-{

-   if (((active2 &= old2) | (active3 &= old3)) == 0L)

-      return jjMoveNfa_0(5, 11);

-   try { curChar = input_stream.readChar(); }

-   catch(java.io.IOException e) {

-   return jjMoveNfa_0(5, 11);

-   }

-   switch(curChar)

-   {

-      case 66:

-         return jjMoveStringLiteralDfa13_0(active2, 0x20000000000000L, active3, 0L);

-      case 67:

-         if ((active2 & 0x400000L) != 0L)

-         {

-            jjmatchedKind = 150;

-            jjmatchedPos = 12;

-         }

-         break;

-      case 69:

-         if ((active2 & 0x8L) != 0L)

-         {

-            jjmatchedKind = 131;

-            jjmatchedPos = 12;

-         }

-         else if ((active3 & 0x800L) != 0L)

-         {

-            jjmatchedKind = 203;

-            jjmatchedPos = 12;

-         }

-         return jjMoveStringLiteralDfa13_0(active2, 0x20L, active3, 0x2000L);

-      case 82:

-         if ((active3 & 0x10000L) != 0L)

-         {

-            jjmatchedKind = 208;

-            jjmatchedPos = 12;

-         }

-         break;

-      case 98:

-         return jjMoveStringLiteralDfa13_0(active2, 0x20000000000000L, active3, 0L);

-      case 99:

-         if ((active2 & 0x400000L) != 0L)

-         {

-            jjmatchedKind = 150;

-            jjmatchedPos = 12;

-         }

-         break;

-      case 101:

-         if ((active2 & 0x8L) != 0L)

-         {

-            jjmatchedKind = 131;

-            jjmatchedPos = 12;

-         }

-         else if ((active3 & 0x800L) != 0L)

-         {

-            jjmatchedKind = 203;

-            jjmatchedPos = 12;

-         }

-         return jjMoveStringLiteralDfa13_0(active2, 0x20L, active3, 0x2000L);

-      case 114:

-         if ((active3 & 0x10000L) != 0L)

-         {

-            jjmatchedKind = 208;

-            jjmatchedPos = 12;

-         }

-         break;

-      default :

-         break;

-   }

-   return jjMoveNfa_0(5, 12);

-}

-private int jjMoveStringLiteralDfa13_0(long old2, long active2, long old3, long active3)

-{

-   if (((active2 &= old2) | (active3 &= old3)) == 0L)

-      return jjMoveNfa_0(5, 12);

-   try { curChar = input_stream.readChar(); }

-   catch(java.io.IOException e) {

-   return jjMoveNfa_0(5, 12);

-   }

-   switch(curChar)

-   {

-      case 76:

-         return jjMoveStringLiteralDfa14_0(active2, 0x20000000000000L, active3, 0L);

-      case 82:

-         if ((active2 & 0x20L) != 0L)

-         {

-            jjmatchedKind = 133;

-            jjmatchedPos = 13;

-         }

-         else if ((active3 & 0x2000L) != 0L)

-         {

-            jjmatchedKind = 205;

-            jjmatchedPos = 13;

-         }

-         break;

-      case 108:

-         return jjMoveStringLiteralDfa14_0(active2, 0x20000000000000L, active3, 0L);

-      case 114:

-         if ((active2 & 0x20L) != 0L)

-         {

-            jjmatchedKind = 133;

-            jjmatchedPos = 13;

-         }

-         else if ((active3 & 0x2000L) != 0L)

-         {

-            jjmatchedKind = 205;

-            jjmatchedPos = 13;

-         }

-         break;

-      default :

-         break;

-   }

-   return jjMoveNfa_0(5, 13);

-}

-private int jjMoveStringLiteralDfa14_0(long old2, long active2, long old3, long active3)

-{

-   if (((active2 &= old2) | (active3 &= old3)) == 0L)

-      return jjMoveNfa_0(5, 13);

-   try { curChar = input_stream.readChar(); }

-   catch(java.io.IOException e) {

-   return jjMoveNfa_0(5, 13);

-   }

-   switch(curChar)

-   {

-      case 69:

-         if ((active2 & 0x20000000000000L) != 0L)

-         {

-            jjmatchedKind = 181;

-            jjmatchedPos = 14;

-         }

-         break;

-      case 101:

-         if ((active2 & 0x20000000000000L) != 0L)

-         {

-            jjmatchedKind = 181;

-            jjmatchedPos = 14;

-         }

-         break;

-      default :

-         break;

-   }

-   return jjMoveNfa_0(5, 14);

-}

-static final long[] jjbitVec0 = {
-   0xfffffffffffffffeL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL
-};

-static final long[] jjbitVec2 = {
-   0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
-};

-private int jjMoveNfa_0(int startState, int curPos)

-{

-   int strKind = jjmatchedKind;

-   int strPos = jjmatchedPos;

-   int seenUpto;

-   input_stream.backup(seenUpto = curPos + 1);

-   try { curChar = input_stream.readChar(); }

-   catch(java.io.IOException e) { throw new Error("Internal Error"); }

-   curPos = 0;

-   int startsAt = 0;

-   jjnewStateCnt = 71;

-   int i = 1;

-   jjstateSet[0] = startState;

-   int kind = 0x7fffffff;

-   for (;;)

-   {

-      if (++jjround == 0x7fffffff)

-         ReInitRounds();

-      if (curChar < 64)

-      {

-         long l = 1L << curChar;

-         do

-         {

-            switch(jjstateSet[--i])

-            {

-               case 5:

-                  if ((0x3ff000000000000L & l) != 0L)

-                  {

-                     if (kind > 35)

-                        kind = 35;

-                     jjCheckNAddStates(0, 6);

-                  }

-                  else if (curChar == 46)

-                     jjCheckNAddTwoStates(51, 61);

-                  else if (curChar == 34)

-                     jjCheckNAddTwoStates(48, 49);

-                  else if (curChar == 39)

-                     jjCheckNAddTwoStates(43, 44);

-                  else if (curChar == 58)

-                     jjAddStates(7, 9);

-                  else if (curChar == 47)

-                     jjstateSet[jjnewStateCnt++] = 6;

-                  else if (curChar == 45)

-                     jjstateSet[jjnewStateCnt++] = 0;

-                  break;

-               case 0:

-                  if (curChar == 45)

-                     jjCheckNAddStates(10, 12);

-                  break;

-               case 1:

-                  if ((0xffffffffffffdbffL & l) != 0L)

-                     jjCheckNAddStates(10, 12);

-                  break;

-               case 2:

-                  if ((0x2400L & l) != 0L && kind > 6)

-                     kind = 6;

-                  break;

-               case 3:

-                  if (curChar == 10 && kind > 6)

-                     kind = 6;

-                  break;

-               case 4:

-                  if (curChar == 13)

-                     jjstateSet[jjnewStateCnt++] = 3;

-                  break;

-               case 6:

-                  if (curChar == 42)

-                     jjCheckNAddTwoStates(7, 8);

-                  break;

-               case 7:

-                  if ((0xfffffbffffffffffL & l) != 0L)

-                     jjCheckNAddTwoStates(7, 8);

-                  break;

-               case 8:

-                  if (curChar == 42)

-                     jjCheckNAddStates(13, 15);

-                  break;

-               case 9:

-                  if ((0xffff7bffffffffffL & l) != 0L)

-                     jjCheckNAddTwoStates(10, 8);

-                  break;

-               case 10:

-                  if ((0xfffffbffffffffffL & l) != 0L)

-                     jjCheckNAddTwoStates(10, 8);

-                  break;

-               case 11:

-                  if (curChar == 47 && kind > 7)

-                     kind = 7;

-                  break;

-               case 12:

-                  if (curChar == 47)

-                     jjstateSet[jjnewStateCnt++] = 6;

-                  break;

-               case 14:

-                  if ((0x3ff001800000000L & l) == 0L)

-                     break;

-                  if (kind > 221)

-                     kind = 221;

-                  jjstateSet[jjnewStateCnt++] = 14;

-                  break;

-               case 15:

-                  if (curChar == 58)

-                     jjAddStates(7, 9);

-                  break;

-               case 17:

-                  if ((0x3ff001800000000L & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjAddStates(16, 17);

-                  break;

-               case 18:

-                  if (curChar == 46)

-                     jjstateSet[jjnewStateCnt++] = 19;

-                  break;

-               case 20:

-                  if ((0x3ff001800000000L & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjstateSet[jjnewStateCnt++] = 20;

-                  break;

-               case 21:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjCheckNAddStates(18, 24);

-                  break;

-               case 22:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjCheckNAdd(22);

-                  break;

-               case 23:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjCheckNAddTwoStates(23, 24);

-                  break;

-               case 24:

-                  if (curChar == 46)

-                     jjCheckNAdd(25);

-                  break;

-               case 25:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjCheckNAdd(25);

-                  break;

-               case 26:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjCheckNAddTwoStates(26, 27);

-                  break;

-               case 28:

-                  if ((0x280000000000L & l) != 0L)

-                     jjAddStates(25, 26);

-                  break;

-               case 29:

-                  if (curChar == 46)

-                     jjCheckNAdd(30);

-                  break;

-               case 30:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjCheckNAdd(30);

-                  break;

-               case 31:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjCheckNAddStates(27, 29);

-                  break;

-               case 32:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjCheckNAdd(32);

-                  break;

-               case 33:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjCheckNAddTwoStates(33, 34);

-                  break;

-               case 34:

-                  if (curChar == 46)

-                     jjCheckNAdd(35);

-                  break;

-               case 35:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjCheckNAdd(35);

-                  break;

-               case 36:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjCheckNAddStates(30, 32);

-                  break;

-               case 37:

-                  if (curChar == 46)

-                     jjCheckNAdd(38);

-                  break;

-               case 38:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjCheckNAddTwoStates(38, 27);

-                  break;

-               case 39:

-                  if (curChar == 46)

-                     jjCheckNAddTwoStates(40, 41);

-                  break;

-               case 40:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjCheckNAdd(40);

-                  break;

-               case 41:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjCheckNAddTwoStates(41, 27);

-                  break;

-               case 42:

-                  if (curChar == 39)

-                     jjCheckNAddTwoStates(43, 44);

-                  break;

-               case 43:

-                  if ((0xffffff7fffffffffL & l) != 0L)

-                     jjCheckNAddTwoStates(43, 44);

-                  break;

-               case 44:

-                  if (curChar != 39)

-                     break;

-                  if (kind > 225)

-                     kind = 225;

-                  jjstateSet[jjnewStateCnt++] = 45;

-                  break;

-               case 45:

-                  if (curChar == 39)

-                     jjCheckNAddTwoStates(46, 44);

-                  break;

-               case 46:

-                  if ((0xffffff7fffffffffL & l) != 0L)

-                     jjCheckNAddTwoStates(46, 44);

-                  break;

-               case 47:

-                  if (curChar == 34)

-                     jjCheckNAddTwoStates(48, 49);

-                  break;

-               case 48:

-                  if ((0xfffffffbffffdbffL & l) != 0L)

-                     jjCheckNAddTwoStates(48, 49);

-                  break;

-               case 49:

-                  if (curChar == 34 && kind > 226)

-                     kind = 226;

-                  break;

-               case 50:

-                  if (curChar == 46)

-                     jjCheckNAddTwoStates(51, 61);

-                  break;

-               case 51:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 35)

-                     kind = 35;

-                  jjCheckNAddTwoStates(51, 52);

-                  break;

-               case 53:

-                  if ((0x280000000000L & l) != 0L)

-                     jjAddStates(33, 34);

-                  break;

-               case 54:

-                  if (curChar == 46)

-                     jjCheckNAdd(55);

-                  break;

-               case 55:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 35)

-                     kind = 35;

-                  jjCheckNAdd(55);

-                  break;

-               case 56:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 35)

-                     kind = 35;

-                  jjCheckNAddStates(35, 37);

-                  break;

-               case 57:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 35)

-                     kind = 35;

-                  jjCheckNAdd(57);

-                  break;

-               case 58:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 35)

-                     kind = 35;

-                  jjCheckNAddTwoStates(58, 59);

-                  break;

-               case 59:

-                  if (curChar == 46)

-                     jjCheckNAdd(60);

-                  break;

-               case 60:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 35)

-                     kind = 35;

-                  jjCheckNAdd(60);

-                  break;

-               case 61:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 35)

-                     kind = 35;

-                  jjCheckNAdd(61);

-                  break;

-               case 62:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 35)

-                     kind = 35;

-                  jjCheckNAddStates(0, 6);

-                  break;

-               case 63:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 35)

-                     kind = 35;

-                  jjCheckNAddTwoStates(63, 52);

-                  break;

-               case 64:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 35)

-                     kind = 35;

-                  jjCheckNAddStates(38, 40);

-                  break;

-               case 65:

-                  if (curChar == 46)

-                     jjCheckNAdd(66);

-                  break;

-               case 66:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 35)

-                     kind = 35;

-                  jjCheckNAddTwoStates(66, 52);

-                  break;

-               case 67:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 35)

-                     kind = 35;

-                  jjCheckNAddTwoStates(67, 68);

-                  break;

-               case 68:

-                  if (curChar == 46)

-                     jjCheckNAdd(69);

-                  break;

-               case 69:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 35)

-                     kind = 35;

-                  jjCheckNAdd(69);

-                  break;

-               case 70:

-                  if ((0x3ff000000000000L & l) == 0L)

-                     break;

-                  if (kind > 35)

-                     kind = 35;

-                  jjCheckNAdd(70);

-                  break;

-               default : break;

-            }

-         } while(i != startsAt);

-      }

-      else if (curChar < 128)

-      {

-         long l = 1L << (curChar & 077);

-         do

-         {

-            switch(jjstateSet[--i])

-            {

-               case 5:

-               case 13:

-                  if ((0x7fffffe07fffffeL & l) == 0L)

-                     break;

-                  if (kind > 221)

-                     kind = 221;

-                  jjCheckNAddTwoStates(13, 14);

-                  break;

-               case 1:

-                  jjAddStates(10, 12);

-                  break;

-               case 7:

-                  jjCheckNAddTwoStates(7, 8);

-                  break;

-               case 9:

-               case 10:

-                  jjCheckNAddTwoStates(10, 8);

-                  break;

-               case 14:

-                  if ((0x7fffffe87ffffffL & l) == 0L)

-                     break;

-                  if (kind > 221)

-                     kind = 221;

-                  jjCheckNAdd(14);

-                  break;

-               case 16:

-                  if ((0x7fffffe07fffffeL & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjCheckNAddStates(41, 43);

-                  break;

-               case 17:

-                  if ((0x7fffffe87ffffffL & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjCheckNAddTwoStates(17, 18);

-                  break;

-               case 19:

-                  if ((0x7fffffe07fffffeL & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjCheckNAddTwoStates(19, 20);

-                  break;

-               case 20:

-                  if ((0x7fffffe87ffffffL & l) == 0L)

-                     break;

-                  if (kind > 224)

-                     kind = 224;

-                  jjCheckNAdd(20);

-                  break;

-               case 27:

-                  if ((0x2000000020L & l) != 0L)

-                     jjAddStates(44, 46);

-                  break;

-               case 43:

-                  jjCheckNAddTwoStates(43, 44);

-                  break;

-               case 46:

-                  jjCheckNAddTwoStates(46, 44);

-                  break;

-               case 48:

-                  jjAddStates(47, 48);

-                  break;

-               case 52:

-                  if ((0x2000000020L & l) != 0L)

-                     jjAddStates(49, 51);

-                  break;

-               default : break;

-            }

-         } while(i != startsAt);

-      }

-      else

-      {

-         int hiByte = (int)(curChar >> 8);

-         int i1 = hiByte >> 6;

-         long l1 = 1L << (hiByte & 077);

-         int i2 = (curChar & 0xff) >> 6;

-         long l2 = 1L << (curChar & 077);

-         do

-         {

-            switch(jjstateSet[--i])

-            {

-               case 1:

-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))

-                     jjAddStates(10, 12);

-                  break;

-               case 7:

-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))

-                     jjCheckNAddTwoStates(7, 8);

-                  break;

-               case 9:

-               case 10:

-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))

-                     jjCheckNAddTwoStates(10, 8);

-                  break;

-               case 43:

-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))

-                     jjCheckNAddTwoStates(43, 44);

-                  break;

-               case 46:

-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))

-                     jjCheckNAddTwoStates(46, 44);

-                  break;

-               case 48:

-                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))

-                     jjAddStates(47, 48);

-                  break;

-               default : break;

-            }

-         } while(i != startsAt);

-      }

-      if (kind != 0x7fffffff)

-      {

-         jjmatchedKind = kind;

-         jjmatchedPos = curPos;

-         kind = 0x7fffffff;

-      }

-      ++curPos;

-      if ((i = jjnewStateCnt) == (startsAt = 71 - (jjnewStateCnt = startsAt)))

-         break;

-      try { curChar = input_stream.readChar(); }

-      catch(java.io.IOException e) { break; }

-   }

-   if (jjmatchedPos > strPos)

-      return curPos;

-

-   int toRet = Math.max(curPos, seenUpto);

-

-   if (curPos < toRet)

-      for (i = toRet - Math.min(curPos, seenUpto); i-- > 0; )

-         try { curChar = input_stream.readChar(); }

-         catch(java.io.IOException e) { throw new Error("Internal Error : Please send a bug report."); }

-

-   if (jjmatchedPos < strPos)

-   {

-      jjmatchedKind = strKind;

-      jjmatchedPos = strPos;

-   }

-   else if (jjmatchedPos == strPos && jjmatchedKind > strKind)

-      jjmatchedKind = strKind;

-

-   return toRet;

-}

-static final int[] jjnextStates = {
-   63, 64, 65, 52, 67, 68, 70, 16, 21, 39, 1, 2, 4, 8, 9, 11, 
-   17, 18, 22, 23, 24, 26, 36, 37, 27, 29, 31, 32, 33, 34, 36, 37, 
-   27, 54, 56, 57, 58, 59, 64, 65, 52, 16, 17, 18, 28, 29, 31, 48, 
-   49, 53, 54, 56, 
-};

-private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, long l2)

-{

-   switch(hiByte)

-   {

-      case 0:

-         return ((jjbitVec2[i2] & l2) != 0L);

-      default :

-         if ((jjbitVec0[i1] & l1) != 0L)

-            return true;

-         return false;

-   }

-}

-

-/** Token literal values. */

-public static final String[] jjstrLiteralImages = {

-"", null, null, null, null, null, null, null, "\72\75", "\52", "\100", "\51", 

-"\174\174", "\72", "\54", "\56", "\56\56", "\44", "\45", "\75", "\76", "\76\75", 

-"\50\53\51", "\74", "\74\75", "\55", "\74\76", "\41\75", "\50", "\53", "\43", "\77", "\73", 

-"\57", "\176", null, null, null, null, null, null, null, null, null, null, null, null, 

-null, null, null, null, null, null, null, null, null, null, null, null, null, null, 

-null, null, null, null, null, null, null, null, null, null, null, null, null, null, 

-null, null, null, null, null, null, null, null, null, null, null, null, null, null, 

-null, null, null, null, null, null, null, null, null, null, null, null, null, null, 

-null, null, null, null, null, null, null, null, null, null, null, null, null, null, 

-null, null, null, null, null, null, null, null, null, null, null, null, null, null, 

-null, null, null, null, null, null, null, null, null, null, null, null, null, null, 

-null, null, null, null, null, null, null, null, null, null, null, null, null, null, 

-null, null, null, null, null, null, null, null, null, null, null, null, null, null, 

-null, null, null, null, null, null, null, null, null, null, null, null, null, null, 

-null, null, null, null, null, null, null, null, null, null, null, null, null, null, 

-null, null, null, null, null, null, null, null, null, null, null, null, null, null, 

-null, null, null, null, null, null, null, null, null, null, null, null, };

-

-/** Lexer state names. */

-public static final String[] lexStateNames = {

-   "DEFAULT",

-};

-static final long[] jjtoToken = {
-   0xffffff8fffffff01L, 0xffffffffffffffffL, 0xffffffffffffffffL, 0x73fffffffL, 
-};

-static final long[] jjtoSkip = {
-   0xfeL, 0x0L, 0x0L, 0x0L, 
-};

-protected JavaCharStream input_stream;

-private final int[] jjrounds = new int[71];

-private final int[] jjstateSet = new int[142];

-protected char curChar;

-/** Constructor. */

-public DDLParserTokenManager(JavaCharStream stream){

-   if (JavaCharStream.staticFlag)

-      throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");

-   input_stream = stream;

-}

-

-/** Constructor. */

-public DDLParserTokenManager(JavaCharStream stream, int lexState){

-   this(stream);

-   SwitchTo(lexState);

-}

-

-/** Reinitialise parser. */

-public void ReInit(JavaCharStream stream)

-{

-   jjmatchedPos = jjnewStateCnt = 0;

-   curLexState = defaultLexState;

-   input_stream = stream;

-   ReInitRounds();

-}

-private void ReInitRounds()

-{

-   int i;

-   jjround = 0x80000001;

-   for (i = 71; i-- > 0;)

-      jjrounds[i] = 0x80000000;

-}

-

-/** Reinitialise parser. */

-public void ReInit(JavaCharStream stream, int lexState)

-{

-   ReInit(stream);

-   SwitchTo(lexState);

-}

-

-/** Switch to specified lex state. */

-public void SwitchTo(int lexState)

-{

-   if (lexState >= 1 || lexState < 0)

-      throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);

-   else

-      curLexState = lexState;

-}

-

-protected Token jjFillToken()

-{

-   final Token t;

-   final String curTokenImage;

-   final int beginLine;

-   final int endLine;

-   final int beginColumn;

-   final int endColumn;

-   String im = jjstrLiteralImages[jjmatchedKind];

-   curTokenImage = (im == null) ? input_stream.GetImage() : im;

-   beginLine = input_stream.getBeginLine();

-   beginColumn = input_stream.getBeginColumn();

-   endLine = input_stream.getEndLine();

-   endColumn = input_stream.getEndColumn();

-   t = Token.newToken(jjmatchedKind, curTokenImage);

-

-   t.beginLine = beginLine;

-   t.endLine = endLine;

-   t.beginColumn = beginColumn;

-   t.endColumn = endColumn;

-

-   return t;

-}

-

-int curLexState = 0;

-int defaultLexState = 0;

-int jjnewStateCnt;

-int jjround;

-int jjmatchedPos;

-int jjmatchedKind;

-

-/** Get the next Token. */

-public Token getNextToken() 

-{

-  Token matchedToken;

-  int curPos = 0;

-

-  EOFLoop :
-  for (;;)

-  {

-   try

-   {

-      curChar = input_stream.BeginToken();

-   }

-   catch(java.io.IOException e)

-   {

-      jjmatchedKind = 0;

-      matchedToken = jjFillToken();

-      return matchedToken;

-   }

-

-   jjmatchedKind = 0x7fffffff;

-   jjmatchedPos = 0;

-   curPos = jjMoveStringLiteralDfa0_0();

-   if (jjmatchedKind != 0x7fffffff)

-   {

-      if (jjmatchedPos + 1 < curPos)

-         input_stream.backup(curPos - jjmatchedPos - 1);

-      if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)

-      {

-         matchedToken = jjFillToken();

-         return matchedToken;

-      }

-      else

-      {

-         continue EOFLoop;

-      }

-   }

-   int error_line = input_stream.getEndLine();

-   int error_column = input_stream.getEndColumn();

-   String error_after = null;

-   boolean EOFSeen = false;

-   try { input_stream.readChar(); input_stream.backup(1); }

-   catch (java.io.IOException e1) {

-      EOFSeen = true;

-      error_after = curPos <= 1 ? "" : input_stream.GetImage();

-      if (curChar == '\n' || curChar == '\r') {

-         error_line++;

-         error_column = 0;

-      }

-      else

-         error_column++;

-   }

-   if (!EOFSeen) {

-      input_stream.backup(1);

-      error_after = curPos <= 1 ? "" : input_stream.GetImage();

-   }

-   throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);

-  }

-}

-

-private void jjCheckNAdd(int state)

-{

-   if (jjrounds[state] != jjround)

-   {

-      jjstateSet[jjnewStateCnt++] = state;

-      jjrounds[state] = jjround;

-   }

-}

-private void jjAddStates(int start, int end)

-{

-   do {

-      jjstateSet[jjnewStateCnt++] = jjnextStates[start];

-   } while (start++ != end);

-}

-private void jjCheckNAddTwoStates(int state1, int state2)

-{

-   jjCheckNAdd(state1);

-   jjCheckNAdd(state2);

-}

-

-private void jjCheckNAddStates(int start, int end)

-{

-   do {

-      jjCheckNAdd(jjnextStates[start]);

-   } while (start++ != end);

-}

-

-}

diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParserTreeConstants.java b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParserTreeConstants.java
deleted file mode 100644
index 43fd5d0..0000000
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParserTreeConstants.java
+++ /dev/null
@@ -1,14 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. DDLParserTreeConstants.java Version 5.0 */

-package org.eclipse.persistence.tools.oracleddl.parser;

-

-@SuppressWarnings("all")
-public interface DDLParserTreeConstants

-{

-  public int JJTVOID = 0;

-

-

-  public String[] jjtNodeName = {

-    "void",

-  };

-}

-/* JavaCC - OriginalChecksum=ff721d13e20dfc97bde0c0e42bb97d94 (do not edit this line) */

diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParserVisitor.java b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParserVisitor.java
deleted file mode 100644
index 3385cc7..0000000
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParserVisitor.java
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. DDLParserVisitor.java Version 5.0 */

-package org.eclipse.persistence.tools.oracleddl.parser;

-

-@SuppressWarnings("all")
-public interface DDLParserVisitor

-{

-  public Object visit(SimpleNode node, Object data);

-}

-/* JavaCC - OriginalChecksum=0a5f7f17a0ed392fca069d04f2c11cb5 (do not edit this line) */

diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/JJTDDLParserState.java b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/JJTDDLParserState.java
deleted file mode 100644
index 720c2e1..0000000
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/JJTDDLParserState.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. JJTDDLParserState.java Version 5.0 */

-package org.eclipse.persistence.tools.oracleddl.parser;

-

-@SuppressWarnings("all")
-public class JJTDDLParserState {

-  private java.util.List<Node> nodes;

-  private java.util.List<Integer> marks;

-

-  private int sp;        // number of nodes on stack

-  private int mk;        // current mark

-  private boolean node_created;

-

-  public JJTDDLParserState() {

-    nodes = new java.util.ArrayList<Node>();

-    marks = new java.util.ArrayList<Integer>();

-    sp = 0;

-    mk = 0;

-  }

-

-  /* Determines whether the current node was actually closed and

-     pushed.  This should only be called in the final user action of a

-     node scope.  */

-  public boolean nodeCreated() {

-    return node_created;

-  }

-

-  /* Call this to reinitialize the node stack.  It is called

-     automatically by the parser's ReInit() method. */

-  public void reset() {

-    nodes.clear();

-    marks.clear();

-    sp = 0;

-    mk = 0;

-  }

-

-  /* Returns the root node of the AST.  It only makes sense to call

-     this after a successful parse. */

-  public Node rootNode() {

-    return nodes.get(0);

-  }

-

-  /* Pushes a node on to the stack. */

-  public void pushNode(Node n) {

-    nodes.add(n);

-    ++sp;

-  }

-

-  /* Returns the node on the top of the stack, and remove it from the

-     stack.  */

-  public Node popNode() {

-    if (--sp < mk) {

-      mk = marks.remove(marks.size()-1);

-    }

-    return nodes.remove(nodes.size()-1);

-  }

-

-  /* Returns the node currently on the top of the stack. */

-  public Node peekNode() {

-    return nodes.get(nodes.size()-1);

-  }

-

-  /* Returns the number of children on the stack in the current node

-     scope. */

-  public int nodeArity() {

-    return sp - mk;

-  }

-

-

-  public void clearNodeScope(Node n) {

-    while (sp > mk) {

-      popNode();

-    }

-    mk = marks.remove(marks.size()-1);

-  }

-

-

-  public void openNodeScope(Node n) {

-    marks.add(mk);

-    mk = sp;

-    n.jjtOpen();

-  }

-

-

-  /* A definite node is constructed from a specified number of

-     children.  That number of nodes are popped from the stack and

-     made the children of the definite node.  Then the definite node

-     is pushed on to the stack. */

-  public void closeNodeScope(Node n, int num) {

-    mk = marks.remove(marks.size()-1);

-    while (num-- > 0) {

-      Node c = popNode();

-      c.jjtSetParent(n);

-      n.jjtAddChild(c, num);

-    }

-    n.jjtClose();

-    pushNode(n);

-    node_created = true;

-  }

-

-

-  /* A conditional node is constructed if its condition is true.  All

-     the nodes that have been pushed since the node was opened are

-     made children of the conditional node, which is then pushed

-     on to the stack.  If the condition is false the node is not

-     constructed and they are left on the stack. */

-  public void closeNodeScope(Node n, boolean condition) {

-    if (condition) {

-      int a = nodeArity();

-      mk = marks.remove(marks.size()-1);

-      while (a-- > 0) {

-        Node c = popNode();

-        c.jjtSetParent(n);

-        n.jjtAddChild(c, a);

-      }

-      n.jjtClose();

-      pushNode(n);

-      node_created = true;

-    } else {

-      mk = marks.remove(marks.size()-1);

-      node_created = false;

-    }

-  }

-}

-/* JavaCC - OriginalChecksum=f016bbdc3ac5024ef62e899b27035ffd (do not edit this line) */

diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/JavaCharStream.java b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/JavaCharStream.java
deleted file mode 100644
index 0f83421..0000000
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/JavaCharStream.java
+++ /dev/null
@@ -1,630 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. JavaCharStream.java Version 5.0 */

-/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */

-/*******************************************************************************

- * Copyright (c) 2011 Oracle. All rights reserved.

- * This program and the accompanying materials are made available under the

- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0

- * which accompanies this distribution.

- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html

- * and the Eclipse Distribution License is available at

- * http://www.eclipse.org/org/documents/edl-v10.php.

- *

- * Contributors:

- *     Mike Norman - June 10 2011, created DDL parser package

- ******************************************************************************/

-package org.eclipse.persistence.tools.oracleddl.parser;

-

-/**

- * An implementation of interface CharStream, where the stream is assumed to

- * contain only ASCII characters (with java-like unicode escape processing).

- */

-

-public

-@SuppressWarnings("all")
-class JavaCharStream

-{

-  /** Whether parser is static. */

-  public static final boolean staticFlag = false;

-

-  static final int hexval(char c) throws java.io.IOException {

-    switch(c)

-    {

-       case '0' :

-          return 0;

-       case '1' :

-          return 1;

-       case '2' :

-          return 2;

-       case '3' :

-          return 3;

-       case '4' :

-          return 4;

-       case '5' :

-          return 5;

-       case '6' :

-          return 6;

-       case '7' :

-          return 7;

-       case '8' :

-          return 8;

-       case '9' :

-          return 9;

-

-       case 'a' :

-       case 'A' :

-          return 10;

-       case 'b' :

-       case 'B' :

-          return 11;

-       case 'c' :

-       case 'C' :

-          return 12;

-       case 'd' :

-       case 'D' :

-          return 13;

-       case 'e' :

-       case 'E' :

-          return 14;

-       case 'f' :

-       case 'F' :

-          return 15;

-    }

-

-    throw new java.io.IOException(); // Should never come here

-  }

-

-/** Position in buffer. */

-  public int bufpos = -1;

-  int bufsize;

-  int available;

-  int tokenBegin;

-  protected int bufline[];

-  protected int bufcolumn[];

-

-  protected int column = 0;

-  protected int line = 1;

-

-  protected boolean prevCharIsCR = false;

-  protected boolean prevCharIsLF = false;

-

-  protected java.io.Reader inputStream;

-

-  protected char[] nextCharBuf;

-  protected char[] buffer;

-  protected int maxNextCharInd = 0;

-  protected int nextCharInd = -1;

-  protected int inBuf = 0;

-  protected int tabSize = 8;

-

-  protected void setTabSize(int i) { tabSize = i; }

-  protected int getTabSize(int i) { return tabSize; }

-

-  protected void ExpandBuff(boolean wrapAround)

-  {

-    char[] newbuffer = new char[bufsize + 2048];

-    int newbufline[] = new int[bufsize + 2048];

-    int newbufcolumn[] = new int[bufsize + 2048];

-

-    try

-    {

-      if (wrapAround)

-      {

-        System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);

-        System.arraycopy(buffer, 0, newbuffer, bufsize - tokenBegin, bufpos);

-        buffer = newbuffer;

-

-        System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);

-        System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);

-        bufline = newbufline;

-

-        System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);

-        System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);

-        bufcolumn = newbufcolumn;

-

-        bufpos += (bufsize - tokenBegin);

-    }

-    else

-    {

-        System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);

-        buffer = newbuffer;

-

-        System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);

-        bufline = newbufline;

-

-        System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);

-        bufcolumn = newbufcolumn;

-

-        bufpos -= tokenBegin;

-      }

-    }

-    catch (Throwable t)

-    {

-      throw new Error(t.getMessage());

-    }

-

-    available = (bufsize += 2048);

-    tokenBegin = 0;

-  }

-

-  protected void FillBuff() throws java.io.IOException

-  {

-    int i;

-    if (maxNextCharInd == 4096)

-      maxNextCharInd = nextCharInd = 0;

-

-    try {

-      if ((i = inputStream.read(nextCharBuf, maxNextCharInd,

-                                          4096 - maxNextCharInd)) == -1)

-      {

-        inputStream.close();

-        throw new java.io.IOException();

-      }

-      else

-         maxNextCharInd += i;

-      return;

-    }

-    catch(java.io.IOException e) {

-      if (bufpos != 0)

-      {

-        --bufpos;

-        backup(0);

-      }

-      else

-      {

-        bufline[bufpos] = line;

-        bufcolumn[bufpos] = column;

-      }

-      throw e;

-    }

-  }

-

-  protected char ReadByte() throws java.io.IOException

-  {

-    if (++nextCharInd >= maxNextCharInd)

-      FillBuff();

-

-    return nextCharBuf[nextCharInd];

-  }

-

-/** @return starting character for token. */

-  public char BeginToken() throws java.io.IOException

-  {

-    if (inBuf > 0)

-    {

-      --inBuf;

-

-      if (++bufpos == bufsize)

-        bufpos = 0;

-

-      tokenBegin = bufpos;

-      return buffer[bufpos];

-    }

-

-    tokenBegin = 0;

-    bufpos = -1;

-

-    return readChar();

-  }

-

-  protected void AdjustBuffSize()

-  {

-    if (available == bufsize)

-    {

-      if (tokenBegin > 2048)

-      {

-        bufpos = 0;

-        available = tokenBegin;

-      }

-      else

-        ExpandBuff(false);

-    }

-    else if (available > tokenBegin)

-      available = bufsize;

-    else if ((tokenBegin - available) < 2048)

-      ExpandBuff(true);

-    else

-      available = tokenBegin;

-  }

-

-  protected void UpdateLineColumn(char c)

-  {

-    column++;

-

-    if (prevCharIsLF)

-    {

-      prevCharIsLF = false;

-      line += (column = 1);

-    }

-    else if (prevCharIsCR)

-    {

-      prevCharIsCR = false;

-      if (c == '\n')

-      {

-        prevCharIsLF = true;

-      }

-      else

-        line += (column = 1);

-    }

-

-    switch (c)

-    {

-      case '\r' :

-        prevCharIsCR = true;

-        break;

-      case '\n' :

-        prevCharIsLF = true;

-        break;

-      case '\t' :

-        column--;

-        column += (tabSize - (column % tabSize));

-        break;

-      default :

-        break;

-    }

-

-    bufline[bufpos] = line;

-    bufcolumn[bufpos] = column;

-  }

-

-/** Read a character. */

-  public char readChar() throws java.io.IOException

-  {

-    if (inBuf > 0)

-    {

-      --inBuf;

-

-      if (++bufpos == bufsize)

-        bufpos = 0;

-

-      return buffer[bufpos];

-    }

-

-    char c;

-

-    if (++bufpos == available)

-      AdjustBuffSize();

-

-    if ((buffer[bufpos] = c = ReadByte()) == '\\')

-    {

-      UpdateLineColumn(c);

-

-      int backSlashCnt = 1;

-

-      for (;;) // Read all the backslashes

-      {

-        if (++bufpos == available)

-          AdjustBuffSize();

-

-        try

-        {

-          if ((buffer[bufpos] = c = ReadByte()) != '\\')

-          {

-            UpdateLineColumn(c);

-            // found a non-backslash char.

-            if ((c == 'u') && ((backSlashCnt & 1) == 1))

-            {

-              if (--bufpos < 0)

-                bufpos = bufsize - 1;

-

-              break;

-            }

-

-            backup(backSlashCnt);

-            return '\\';

-          }

-        }

-        catch(java.io.IOException e)

-        {

-	  // We are returning one backslash so we should only backup (count-1)

-          if (backSlashCnt > 1)

-            backup(backSlashCnt-1);

-

-          return '\\';

-        }

-

-        UpdateLineColumn(c);

-        backSlashCnt++;

-      }

-

-      // Here, we have seen an odd number of backslash's followed by a 'u'

-      try

-      {

-        while ((c = ReadByte()) == 'u')

-          ++column;

-

-        buffer[bufpos] = c = (char)(hexval(c) << 12 |

-                                    hexval(ReadByte()) << 8 |

-                                    hexval(ReadByte()) << 4 |

-                                    hexval(ReadByte()));

-

-        column += 4;

-      }

-      catch(java.io.IOException e)

-      {

-        throw new Error("Invalid escape character at line " + line +

-                                         " column " + column + ".");

-      }

-

-      if (backSlashCnt == 1)

-        return c;

-      else

-      {

-        backup(backSlashCnt - 1);

-        return '\\';

-      }

-    }

-    else

-    {

-      UpdateLineColumn(c);

-      return c;

-    }

-  }

-

-  @Deprecated

-  /**

-   * @deprecated

-   * @see #getEndColumn

-   */

-  public int getColumn() {

-    return bufcolumn[bufpos];

-  }

-

-  @Deprecated

-  /**

-   * @deprecated

-   * @see #getEndLine

-   */

-  public int getLine() {

-    return bufline[bufpos];

-  }

-

-/** Get end column. */

-  public int getEndColumn() {

-    return bufcolumn[bufpos];

-  }

-

-/** Get end line. */

-  public int getEndLine() {

-    return bufline[bufpos];

-  }

-

-/** @return column of token start */

-  public int getBeginColumn() {

-    return bufcolumn[tokenBegin];

-  }

-

-/** @return line number of token start */

-  public int getBeginLine() {

-    return bufline[tokenBegin];

-  }

-

-/** Retreat. */

-  public void backup(int amount) {

-

-    inBuf += amount;

-    if ((bufpos -= amount) < 0)

-      bufpos += bufsize;

-  }

-

-/** Constructor. */

-  public JavaCharStream(java.io.Reader dstream,

-                 int startline, int startcolumn, int buffersize)

-  {

-    inputStream = dstream;

-    line = startline;

-    column = startcolumn - 1;

-

-    available = bufsize = buffersize;

-    buffer = new char[buffersize];

-    bufline = new int[buffersize];

-    bufcolumn = new int[buffersize];

-    nextCharBuf = new char[4096];

-  }

-

-/** Constructor. */

-  public JavaCharStream(java.io.Reader dstream,

-                                        int startline, int startcolumn)

-  {

-    this(dstream, startline, startcolumn, 4096);

-  }

-

-/** Constructor. */

-  public JavaCharStream(java.io.Reader dstream)

-  {

-    this(dstream, 1, 1, 4096);

-  }

-/** Reinitialise. */

-  public void ReInit(java.io.Reader dstream,

-                 int startline, int startcolumn, int buffersize)

-  {

-    inputStream = dstream;

-    line = startline;

-    column = startcolumn - 1;

-

-    if (buffer == null || buffersize != buffer.length)

-    {

-      available = bufsize = buffersize;

-      buffer = new char[buffersize];

-      bufline = new int[buffersize];

-      bufcolumn = new int[buffersize];

-      nextCharBuf = new char[4096];

-    }

-    prevCharIsLF = prevCharIsCR = false;

-    tokenBegin = inBuf = maxNextCharInd = 0;

-    nextCharInd = bufpos = -1;

-  }

-

-/** Reinitialise. */

-  public void ReInit(java.io.Reader dstream,

-                                        int startline, int startcolumn)

-  {

-    ReInit(dstream, startline, startcolumn, 4096);

-  }

-

-/** Reinitialise. */

-  public void ReInit(java.io.Reader dstream)

-  {

-    ReInit(dstream, 1, 1, 4096);

-  }

-/** Constructor. */

-  public JavaCharStream(java.io.InputStream dstream, String encoding, int startline,

-  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException

-  {

-    this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);

-  }

-

-/** Constructor. */

-  public JavaCharStream(java.io.InputStream dstream, int startline,

-  int startcolumn, int buffersize)

-  {

-    this(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);

-  }

-

-/** Constructor. */

-  public JavaCharStream(java.io.InputStream dstream, String encoding, int startline,

-                        int startcolumn) throws java.io.UnsupportedEncodingException

-  {

-    this(dstream, encoding, startline, startcolumn, 4096);

-  }

-

-/** Constructor. */

-  public JavaCharStream(java.io.InputStream dstream, int startline,

-                        int startcolumn)

-  {

-    this(dstream, startline, startcolumn, 4096);

-  }

-

-/** Constructor. */

-  public JavaCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException

-  {

-    this(dstream, encoding, 1, 1, 4096);

-  }

-

-/** Constructor. */

-  public JavaCharStream(java.io.InputStream dstream)

-  {

-    this(dstream, 1, 1, 4096);

-  }

-

-/** Reinitialise. */

-  public void ReInit(java.io.InputStream dstream, String encoding, int startline,

-  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException

-  {

-    ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);

-  }

-

-/** Reinitialise. */

-  public void ReInit(java.io.InputStream dstream, int startline,

-  int startcolumn, int buffersize)

-  {

-    ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);

-  }

-/** Reinitialise. */

-  public void ReInit(java.io.InputStream dstream, String encoding, int startline,

-                     int startcolumn) throws java.io.UnsupportedEncodingException

-  {

-    ReInit(dstream, encoding, startline, startcolumn, 4096);

-  }

-/** Reinitialise. */

-  public void ReInit(java.io.InputStream dstream, int startline,

-                     int startcolumn)

-  {

-    ReInit(dstream, startline, startcolumn, 4096);

-  }

-/** Reinitialise. */

-  public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException

-  {

-    ReInit(dstream, encoding, 1, 1, 4096);

-  }

-

-/** Reinitialise. */

-  public void ReInit(java.io.InputStream dstream)

-  {

-    ReInit(dstream, 1, 1, 4096);

-  }

-

-  /** @return token image as String */

-  public String GetImage()

-  {

-    if (bufpos >= tokenBegin)

-      return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);

-    else

-      return new String(buffer, tokenBegin, bufsize - tokenBegin) +

-                              new String(buffer, 0, bufpos + 1);

-  }

-

-  /** @return suffix */

-  public char[] GetSuffix(int len)

-  {

-    char[] ret = new char[len];

-

-    if ((bufpos + 1) >= len)

-      System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);

-    else

-    {

-      System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,

-                                                        len - bufpos - 1);

-      System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);

-    }

-

-    return ret;

-  }

-

-  /** Set buffers back to null when finished. */

-  public void Done()

-  {

-    nextCharBuf = null;

-    buffer = null;

-    bufline = null;

-    bufcolumn = null;

-  }

-

-  /**

-   * Method to adjust line and column numbers for the start of a token.

-   */

-  public void adjustBeginLineColumn(int newLine, int newCol)

-  {

-    int start = tokenBegin;

-    int len;

-

-    if (bufpos >= tokenBegin)

-    {

-      len = bufpos - tokenBegin + inBuf + 1;

-    }

-    else

-    {

-      len = bufsize - tokenBegin + bufpos + 1 + inBuf;

-    }

-

-    int i = 0, j = 0, k = 0;

-    int nextColDiff = 0, columnDiff = 0;

-

-    while (i < len && bufline[j = start % bufsize] == bufline[k = ++start % bufsize])

-    {

-      bufline[j] = newLine;

-      nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];

-      bufcolumn[j] = newCol + columnDiff;

-      columnDiff = nextColDiff;

-      i++;

-    }

-

-    if (i < len)

-    {

-      bufline[j] = newLine++;

-      bufcolumn[j] = newCol + columnDiff;

-

-      while (i++ < len)

-      {

-        if (bufline[j = start % bufsize] != bufline[++start % bufsize])

-          bufline[j] = newLine++;

-        else

-          bufline[j] = newLine;

-      }

-    }

-

-    line = bufline[j];

-    column = bufcolumn[j];

-  }

-

-}

-/* JavaCC - OriginalChecksum=53254f6a9325378bb7ef0cee733f3fac (do not edit this line) */

diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/ParseException.java b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/ParseException.java
deleted file mode 100644
index b51da14..0000000
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/ParseException.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 5.0 */

-/* JavaCCOptions:KEEP_LINE_COL=null */

-/*******************************************************************************

- * Copyright (c) 2011 Oracle. All rights reserved.

- * This program and the accompanying materials are made available under the

- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0

- * which accompanies this distribution.

- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html

- * and the Eclipse Distribution License is available at

- * http://www.eclipse.org/org/documents/edl-v10.php.

- *

- * Contributors:

- *     Mike Norman - June 10 2011, created DDL parser package

- ******************************************************************************/

-package org.eclipse.persistence.tools.oracleddl.parser;

-

-/**

- * This exception is thrown when parse errors are encountered.

- * You can explicitly create objects of this exception type by

- * calling the method generateParseException in the generated

- * parser.

- *

- * You can modify this class to customize your error reporting

- * mechanisms so long as you retain the public fields.

- */

-@SuppressWarnings("all")
-public class ParseException extends Exception {

-

-  /**

-   * The version identifier for this Serializable class.

-   * Increment only if the <i>serialized</i> form of the

-   * class changes.

-   */

-  private static final long serialVersionUID = 1L;

-

-  /**

-   * This constructor is used by the method "generateParseException"

-   * in the generated parser.  Calling this constructor generates

-   * a new object of this type with the fields "currentToken",

-   * "expectedTokenSequences", and "tokenImage" set.

-   */

-  public ParseException(Token currentTokenVal,

-                        int[][] expectedTokenSequencesVal,

-                        String[] tokenImageVal

-                       )

-  {

-    super(initialise(currentTokenVal, expectedTokenSequencesVal, tokenImageVal));

-    currentToken = currentTokenVal;

-    expectedTokenSequences = expectedTokenSequencesVal;

-    tokenImage = tokenImageVal;

-  }

-

-  /**

-   * The following constructors are for use by you for whatever

-   * purpose you can think of.  Constructing the exception in this

-   * manner makes the exception behave in the normal way - i.e., as

-   * documented in the class "Throwable".  The fields "errorToken",

-   * "expectedTokenSequences", and "tokenImage" do not contain

-   * relevant information.  The JavaCC generated code does not use

-   * these constructors.

-   */

-

-  public ParseException() {

-    super();

-  }

-

-  /** Constructor with message. */

-  public ParseException(String message) {

-    super(message);

-  }

-

-

-  /**

-   * This is the last token that has been consumed successfully.  If

-   * this object has been created due to a parse error, the token

-   * followng this token will (therefore) be the first error token.

-   */

-  public Token currentToken;

-

-  /**

-   * Each entry in this array is an array of integers.  Each array

-   * of integers represents a sequence of tokens (by their ordinal

-   * values) that is expected at this point of the parse.

-   */

-  public int[][] expectedTokenSequences;

-

-  /**

-   * This is a reference to the "tokenImage" array of the generated

-   * parser within which the parse error occurred.  This array is

-   * defined in the generated ...Constants interface.

-   */

-  public String[] tokenImage;

-

-  /**

-   * It uses "currentToken" and "expectedTokenSequences" to generate a parse

-   * error message and returns it.  If this object has been created

-   * due to a parse error, and you do not catch it (it gets thrown

-   * from the parser) the correct error message

-   * gets displayed.

-   */

-  private static String initialise(Token currentToken,

-                           int[][] expectedTokenSequences,

-                           String[] tokenImage) {

-    String eol = System.getProperty("line.separator", "\n");

-    StringBuffer expected = new StringBuffer();

-    int maxSize = 0;

-    for (int i = 0; i < expectedTokenSequences.length; i++) {

-      if (maxSize < expectedTokenSequences[i].length) {

-        maxSize = expectedTokenSequences[i].length;

-      }

-      for (int j = 0; j < expectedTokenSequences[i].length; j++) {

-        expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' ');

-      }

-      if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {

-        expected.append("...");

-      }

-      expected.append(eol).append("    ");

-    }

-    String retval = "Encountered \"";

-    Token tok = currentToken.next;

-    for (int i = 0; i < maxSize; i++) {

-      if (i != 0) retval += " ";

-      if (tok.kind == 0) {

-        retval += tokenImage[0];

-        break;

-      }

-      retval += " " + tokenImage[tok.kind];

-      retval += " \"";

-      retval += add_escapes(tok.image);

-      retval += " \"";

-      tok = tok.next;

-    }

-    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;

-    retval += "." + eol;

-    if (expectedTokenSequences.length == 1) {

-      retval += "Was expecting:" + eol + "    ";

-    } else {

-      retval += "Was expecting one of:" + eol + "    ";

-    }

-    retval += expected.toString();

-    return retval;

-  }

-

-  /**

-   * The end of line string for this machine.

-   */

-  protected String eol = System.getProperty("line.separator", "\n");

-

-  /**

-   * Used to convert raw characters to their escaped version

-   * when these raw version cannot be used as part of an ASCII

-   * string literal.

-   */

-  static String add_escapes(String str) {

-      StringBuffer retval = new StringBuffer();

-      char ch;

-      for (int i = 0; i < str.length(); i++) {

-        switch (str.charAt(i))

-        {

-           case 0 :

-              continue;

-           case '\b':

-              retval.append("\\b");

-              continue;

-           case '\t':

-              retval.append("\\t");

-              continue;

-           case '\n':

-              retval.append("\\n");

-              continue;

-           case '\f':

-              retval.append("\\f");

-              continue;

-           case '\r':

-              retval.append("\\r");

-              continue;

-           case '\"':

-              retval.append("\\\"");

-              continue;

-           case '\'':

-              retval.append("\\\'");

-              continue;

-           case '\\':

-              retval.append("\\\\");

-              continue;

-           default:

-              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {

-                 String s = "0000" + Integer.toString(ch, 16);

-                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));

-              } else {

-                 retval.append(ch);

-              }

-              continue;

-        }

-      }

-      return retval.toString();

-   }

-

-}

-/* JavaCC - OriginalChecksum=81f4443085e467ef907deb9a67f74438 (do not edit this line) */

diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/Token.java b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/Token.java
deleted file mode 100644
index a9723db..0000000
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/Token.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. Token.java Version 5.0 */

-/* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COL=null,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */

-/*******************************************************************************

- * Copyright (c) 2011 Oracle. All rights reserved.

- * This program and the accompanying materials are made available under the

- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0

- * which accompanies this distribution.

- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html

- * and the Eclipse Distribution License is available at

- * http://www.eclipse.org/org/documents/edl-v10.php.

- *

- * Contributors:

- *     Mike Norman - June 10 2011, created DDL parser package

- ******************************************************************************/

-package org.eclipse.persistence.tools.oracleddl.parser;

-

-/**

- * Describes the input token stream.

- */

-

-@SuppressWarnings("all")
-public class Token implements java.io.Serializable {

-

-  /**

-   * The version identifier for this Serializable class.

-   * Increment only if the <i>serialized</i> form of the

-   * class changes.

-   */

-  private static final long serialVersionUID = 1L;

-

-  /**

-   * An integer that describes the kind of this token.  This numbering

-   * system is determined by JavaCCParser, and a table of these numbers is

-   * stored in the file ...Constants.java.

-   */

-  public int kind;

-

-  /** The line number of the first character of this Token. */

-  public int beginLine;

-  /** The column number of the first character of this Token. */

-  public int beginColumn;

-  /** The line number of the last character of this Token. */

-  public int endLine;

-  /** The column number of the last character of this Token. */

-  public int endColumn;

-

-  /**

-   * The string image of the token.

-   */

-  public String image;

-

-  /**

-   * A reference to the next regular (non-special) token from the input

-   * stream.  If this is the last token from the input stream, or if the

-   * token manager has not read tokens beyond this one, this field is

-   * set to null.  This is true only if this token is also a regular

-   * token.  Otherwise, see below for a description of the contents of

-   * this field.

-   */

-  public Token next;

-

-  /**

-   * This field is used to access special tokens that occur prior to this

-   * token, but after the immediately preceding regular (non-special) token.

-   * If there are no such special tokens, this field is set to null.

-   * When there are more than one such special token, this field refers

-   * to the last of these special tokens, which in turn refers to the next

-   * previous special token through its specialToken field, and so on

-   * until the first special token (whose specialToken field is null).

-   * The next fields of special tokens refer to other special tokens that

-   * immediately follow it (without an intervening regular token).  If there

-   * is no such token, this field is null.

-   */

-  public Token specialToken;

-

-  /**

-   * An optional attribute value of the Token.

-   * Tokens which are not used as syntactic sugar will often contain

-   * meaningful values that will be used later on by the compiler or

-   * interpreter. This attribute value is often different from the image.

-   * Any subclass of Token that actually wants to return a non-null value can

-   * override this method as appropriate.

-   */

-  public Object getValue() {

-    return null;

-  }

-

-  /**

-   * No-argument constructor

-   */

-  public Token() {}

-

-  /**

-   * Constructs a new token for the specified Image.

-   */

-  public Token(int kind)

-  {

-    this(kind, null);

-  }

-

-  /**

-   * Constructs a new token for the specified Image and Kind.

-   */

-  public Token(int kind, String image)

-  {

-    this.kind = kind;

-    this.image = image;

-  }

-

-  /**

-   * Returns the image.

-   */

-  public String toString()

-  {

-    return image;

-  }

-

-  /**

-   * Returns a new Token object, by default. However, if you want, you

-   * can create and return subclass objects based on the value of ofKind.

-   * Simply add the cases to the switch for all those special cases.

-   * For example, if you have a subclass of Token called IDToken that

-   * you want to create if ofKind is ID, simply add something like :

-   *

-   *    case MyParserConstants.ID : return new IDToken(ofKind, image);

-   *

-   * to the following switch statement. Then you can cast matchedToken

-   * variable to the appropriate type and use sit in your lexical actions.

-   */

-  public static Token newToken(int ofKind, String image)

-  {

-    switch(ofKind)

-    {

-      default : return new Token(ofKind, image);

-    }

-  }

-

-  public static Token newToken(int ofKind)

-  {

-    return newToken(ofKind, null);

-  }

-

-}

-/* JavaCC - OriginalChecksum=6c9f79d78d53588eccf7c8f0bb40434a (do not edit this line) */

diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/TokenMgrError.java b/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/TokenMgrError.java
deleted file mode 100644
index 2e96615..0000000
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/TokenMgrError.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 5.0 */

-/* JavaCCOptions: */

-/*******************************************************************************

- * Copyright (c) 2011 Oracle. All rights reserved.

- * This program and the accompanying materials are made available under the

- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0

- * which accompanies this distribution.

- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html

- * and the Eclipse Distribution License is available at

- * http://www.eclipse.org/org/documents/edl-v10.php.

- *

- * Contributors:

- *     Mike Norman - June 10 2011, created DDL parser package

- ******************************************************************************/

-package org.eclipse.persistence.tools.oracleddl.parser;

-

-/** Token Manager Error. */

-@SuppressWarnings("all")
-public class TokenMgrError extends Error

-{

-

-  /**

-   * The version identifier for this Serializable class.

-   * Increment only if the <i>serialized</i> form of the

-   * class changes.

-   */

-  private static final long serialVersionUID = 1L;

-

-  /*

-   * Ordinals for various reasons why an Error of this type can be thrown.

-   */

-

-  /**

-   * Lexical error occurred.

-   */

-  static final int LEXICAL_ERROR = 0;

-

-  /**

-   * An attempt was made to create a second instance of a static token manager.

-   */

-  static final int STATIC_LEXER_ERROR = 1;

-

-  /**

-   * Tried to change to an invalid lexical state.

-   */

-  static final int INVALID_LEXICAL_STATE = 2;

-

-  /**

-   * Detected (and bailed out of) an infinite loop in the token manager.

-   */

-  static final int LOOP_DETECTED = 3;

-

-  /**

-   * Indicates the reason why the exception is thrown. It will have

-   * one of the above 4 values.

-   */

-  int errorCode;

-

-  /**

-   * Replaces unprintable characters by their escaped (or unicode escaped)

-   * equivalents in the given string

-   */

-  protected static final String addEscapes(String str) {

-    StringBuffer retval = new StringBuffer();

-    char ch;

-    for (int i = 0; i < str.length(); i++) {

-      switch (str.charAt(i))

-      {

-        case 0 :

-          continue;

-        case '\b':

-          retval.append("\\b");

-          continue;

-        case '\t':

-          retval.append("\\t");

-          continue;

-        case '\n':

-          retval.append("\\n");

-          continue;

-        case '\f':

-          retval.append("\\f");

-          continue;

-        case '\r':

-          retval.append("\\r");

-          continue;

-        case '\"':

-          retval.append("\\\"");

-          continue;

-        case '\'':

-          retval.append("\\\'");

-          continue;

-        case '\\':

-          retval.append("\\\\");

-          continue;

-        default:

-          if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {

-            String s = "0000" + Integer.toString(ch, 16);

-            retval.append("\\u" + s.substring(s.length() - 4, s.length()));

-          } else {

-            retval.append(ch);

-          }

-          continue;

-      }

-    }

-    return retval.toString();

-  }

-

-  /**

-   * Returns a detailed message for the Error when it is thrown by the

-   * token manager to indicate a lexical error.

-   * Parameters :

-   *    EOFSeen     : indicates if EOF caused the lexical error

-   *    curLexState : lexical state in which this error occurred

-   *    errorLine   : line number when the error occurred

-   *    errorColumn : column number when the error occurred

-   *    errorAfter  : prefix that was seen before this error occurred

-   *    curchar     : the offending character

-   * Note: You can customize the lexical error message by modifying this method.

-   */

-  protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {

-    return("Lexical error at line " +

-          errorLine + ", column " +

-          errorColumn + ".  Encountered: " +

-          (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +

-          "after : \"" + addEscapes(errorAfter) + "\"");

-  }

-

-  /**

-   * You can also modify the body of this method to customize your error messages.

-   * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not

-   * of end-users concern, so you can return something like :

-   *

-   *     "Internal Error : Please file a bug report .... "

-   *

-   * from this method for such cases in the release version of your parser.

-   */

-  public String getMessage() {

-    return super.getMessage();

-  }

-

-  /*

-   * Constructors of various flavors follow.

-   */

-

-  /** No arg constructor. */

-  public TokenMgrError() {

-  }

-

-  /** Constructor with message and reason. */

-  public TokenMgrError(String message, int reason) {

-    super(message);

-    errorCode = reason;

-  }

-

-  /** Full Constructor. */

-  public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {

-    this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);

-  }

-}

-/* JavaCC - OriginalChecksum=ce061a9b2d99fb99a53b7768a4a7762e (do not edit this line) */

diff --git a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt b/oracleddlparser/src/main/jjtree/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
similarity index 94%
rename from oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
rename to oracleddlparser/src/main/jjtree/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
index f35a0b4..2035e3a 100644
--- a/oracleddlparser/src/main/java/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
+++ b/oracleddlparser/src/main/jjtree/org/eclipse/persistence/tools/oracleddl/parser/DDLParser.jjt
@@ -1,1840 +1,1915 @@
-/*******************************************************************************

- * Copyright (c) 2011 Oracle. All rights reserved.

- * This program and the accompanying materials are made available under the

- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0

- * which accompanies this distribution.

- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html

- * and the Eclipse Distribution License is available at

- * http://www.eclipse.org/org/documents/edl-v10.php.

- *

- * Contributors:

- *     Mike Norman - June 10 2011, created DDL parser package

- ******************************************************************************/

-options {

-      STATIC = false;

-      SUPPORT_CLASS_VISIBILITY_PUBLIC = true;

-      ERROR_REPORTING = false;

-      JAVA_UNICODE_ESCAPE = true;

-      UNICODE_INPUT = true;

-      NODE_USES_PARSER = false;

-      NODE_DEFAULT_VOID = true;

-      VISITOR = true;

-      FORCE_LA_CHECK = true;

-}

-

-PARSER_BEGIN(DDLParser)

-/*******************************************************************************

- * Copyright (c) 2011 Oracle. All rights reserved.

- * This program and the accompanying materials are made available under the

- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0

- * which accompanies this distribution.

- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html

- * and the Eclipse Distribution License is available at

- * http://www.eclipse.org/org/documents/edl-v10.php.

- *

- * Contributors:

- *     Mike Norman - June 10 2011, created DDL parser package

- ******************************************************************************/

-package org.eclipse.persistence.tools.oracleddl.parser;

-

-//javase imports

-import java.io.InputStream;

-import java.util.List;

-import java.util.HashMap;

-import java.util.Map;

-import java.util.StringTokenizer;

-

-//metadata imports

-import org.eclipse.persistence.tools.oracleddl.metadata.ArgumentType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ArgumentTypeDirection;

-import org.eclipse.persistence.tools.oracleddl.metadata.BlobType;

-import org.eclipse.persistence.tools.oracleddl.metadata.CharType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ClobType;

-import org.eclipse.persistence.tools.oracleddl.metadata.CompositeDatabaseType;

-import org.eclipse.persistence.tools.oracleddl.metadata.DatabaseType;

-import org.eclipse.persistence.tools.oracleddl.metadata.DecimalType;

-import org.eclipse.persistence.tools.oracleddl.metadata.DoubleType;

-import org.eclipse.persistence.tools.oracleddl.metadata.FieldType;

-import org.eclipse.persistence.tools.oracleddl.metadata.FloatType;

-import org.eclipse.persistence.tools.oracleddl.metadata.FunctionType;

-import org.eclipse.persistence.tools.oracleddl.metadata.IntervalDayToSecond;

-import org.eclipse.persistence.tools.oracleddl.metadata.IntervalYearToMonth;

-import org.eclipse.persistence.tools.oracleddl.metadata.LongType;

-import org.eclipse.persistence.tools.oracleddl.metadata.LongRawType;

-import org.eclipse.persistence.tools.oracleddl.metadata.NCharType;

-import org.eclipse.persistence.tools.oracleddl.metadata.NClobType;

-import org.eclipse.persistence.tools.oracleddl.metadata.NumericType;

-import org.eclipse.persistence.tools.oracleddl.metadata.NVarChar2Type;

-import org.eclipse.persistence.tools.oracleddl.metadata.ObjectType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ObjectTableType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLCollectionType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLCursorType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLPackageType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLRecordType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLType;

-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLSubType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ProcedureType;

-import org.eclipse.persistence.tools.oracleddl.metadata.RawType;

-import org.eclipse.persistence.tools.oracleddl.metadata.RealType;

-import org.eclipse.persistence.tools.oracleddl.metadata.ROWTYPEType;

-import org.eclipse.persistence.tools.oracleddl.metadata.TableType;

-import org.eclipse.persistence.tools.oracleddl.metadata.TimeStampType;

-import org.eclipse.persistence.tools.oracleddl.metadata.TYPEType;

-import org.eclipse.persistence.tools.oracleddl.metadata.URowIdType;

-import org.eclipse.persistence.tools.oracleddl.metadata.UnresolvedSizedType;

-import org.eclipse.persistence.tools.oracleddl.metadata.UnresolvedType;

-import org.eclipse.persistence.tools.oracleddl.metadata.VarCharType;

-import org.eclipse.persistence.tools.oracleddl.metadata.VarChar2Type;

-import org.eclipse.persistence.tools.oracleddl.metadata.VArrayType;

-import org.eclipse.persistence.tools.oracleddl.util.DatabaseTypesRepository;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BFILE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_INTEGER_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_FLOAT_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_DOUBLE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BOOLEAN_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.DATE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.INTEGER_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.MLSLABEL_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.NATURAL_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.PLS_INTEGER_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.POSITIVE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.ROWID_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIGN_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIMPLE_INTEGER_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIMPLE_DOUBLE_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIMPLE_FLOAT_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SMALLINT_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SYS_REFCURSOR_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.TIME_TYPE;

-import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.XMLTYPE_TYPE;

-

-public class DDLParser {

-

-    protected Map<String, DatabaseType> localTypes = new HashMap<String, DatabaseType>();

-    protected List<String> schemaPatterns = null;

-

-    protected DatabaseTypesRepository typesRepository = new DatabaseTypesRepository();

-

-    public DDLParser() {

-        super();

-    }

-

-    public void setTypesRepository(DatabaseTypesRepository typesRepository) {

-        this.typesRepository = typesRepository;

-    }

-    public DatabaseTypesRepository getTypesRepository() {

-        return typesRepository;

-    }

-

-    public void setSchemaPatterns(List<String> schemaPatterns) {

-        this.schemaPatterns = schemaPatterns;
    }

-

-    protected String removeQuotes(String quotedString) {

-        return quotedString.substring(1, quotedString.length() - 1);

-    }

-}

-

-PARSER_END(DDLParser)

-

-// white-space

-SKIP: {

-      " " | "\t" | "\n" | "\r" | "\f"

-}

-

-// comments

-SKIP: {

-    <COMMENT_LINE: "--" (~["\n","\r"])* ("\n"|"\r"|"\r\n") >

-}

-SKIP:{

-    <COMMENT_BLOCK: "/*" (~["*"])* "*" ("*" | (~["*","/"] (~["*"])* "*"))* "/">

-}

-

-// token classes

-

-// separators and operators (prefix with O_ to avoid naming conflicts)

-TOKEN: {

-      <O_ASSIGN: ":=">

-    | <O_ASTERISK: "*">

-    | <O_ATSIGN: "@">

-    | <O_CLOSEPAREN: ")">

-    | <O_CONCAT: "||">

-    | <O_COLON: ":">

-    | <O_COMMA: ",">

-    | <O_DOT: ".">

-    | <O_DOUBLEDOT: "..">

-    | <O_DOLLAR: "$">

-    | <O_PERCENT: "%">

-    | <O_EQUAL: "=">

-    | <O_GREATER: ">">

-    | <O_GREATEREQUAL: ">=">

-    | <O_JOINPLUS: "(+)">

-    | <O_LESS: "<">

-    | <O_LESSEQUAL: "<=">

-    | <O_MINUS: "-">

-    | <O_NOTEQUAL2: "<>">

-    | <O_NOTEQUAL: "!=">

-    | <O_OPENPAREN: "(">

-    | <O_PLUS: "+">

-    | <O_POUND: "#">

-    | <O_QUESTIONMARK: "?">

-    | <O_SEMICOLON: ";">

-    | <O_SLASH: "/">

-    | <O_TILDE: "~">

-}

-

-// numeric literals

-TOKEN : {

-      <S_NUMBER: <FLOAT> | <FLOAT> ( ["e","E"] ([ "-","+"])? <FLOAT> )? >

-    | <#FLOAT: <INTEGER> | <INTEGER> ( "." <INTEGER> )? | "." <INTEGER> >

-    | <#INTEGER: ( <DIGIT> )+ >

-    | <#DIGIT: ["0" - "9"] >

-}

-

-//reserved words and keywords literals

-/*

-PLSQL reserved words (prefix with R_ ) and keyword (prefix with K_)

-http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/fundamentals.htm#CBJGBIGI

-"You cannot use reserved words as ordinary user-defined identifiers.

-You can use keywords as ordinary user-defined identifiers, but it is not recommended."

-*/

-

-TOKEN [IGNORE_CASE]: {

-    //reserved words

-      <R_ALL: "ALL">

-    | <R_ALTER: "ALTER">

-    | <R_ANCHORED_ROWTYPE: "%ROWTYPE">

-    | <R_ANCHORED_TYPE: "%TYPE">

-    | <R_AND: "AND">

-    | <R_AS: "AS">

-    | <R_ASC: "ASC">

-    | <R_AT: "AT">

-    | <R_BEGIN: "BEGIN">

-    | <R_BETWEEN: "BETWEEN">

-    | <R_BY: "BY">

-    | <R_CASE: "CASE">

-    | <R_CHARSET: "%CHARSET"> 

-    | <R_CHECK: "CHECK">

-    | <R_CLUSTERS: "CLUSTERS">

-    | <R_CLUSTER: "CLUSTER">

-    | <R_COLAUTH: "COLAUTH">

-    | <R_COLUMNS: "COLUMNS">

-    | <R_COMPRESS: "COMPRESS">

-    | <R_CONNECT: "CONNECT">

-    | <R_CONSTRAINT: "CONSTRAINT">

-    | <R_CRASH: "CRASH">

-    | <R_CREATE: "CREATE">

-    | <R_CURSOR: "CURSOR">

-    | <R_DECLARE: "DECLARE">

-    | <R_DEFAULT: "DEFAULT">

-    | <R_DESC: "DESC">

-    | <R_DISTINCT: "DISTINCT">

-    | <R_DROP: "DROP">

-    | <R_ELSE: "ELSE">

-    | <R_END: "END">

-    | <R_EXCEPTION: "EXCEPTION">

-    | <R_EXCLUSIVE: "EXCLUSIVE">

-    | <R_FETCH: "FETCH">

-    | <R_FOR: "FOR">

-    | <R_FROM: "FROM">

-    | <R_FUNCTION: "FUNCTION">

-    | <R_GOTO: "GOTO">

-    | <R_GRANT: "GRANT">

-    | <R_GROUP: "GROUP">

-    | <R_HAVING: "HAVING">

-    | <R_IDENTIFIED: "IDENTIFIED">

-    | <R_IF: "IF">

-    | <R_IN: "IN">

-    | <R_INDEX: "INDEX">

-    | <R_INDEXES: "INDEXES">

-    | <R_INSERT: "INSERT">

-    | <R_INTERSECT: "INTERSECT">

-    | <R_INTO: "INTO">

-    | <R_IS: "IS">

-    | <R_LIKE: "LIKE">

-    | <R_LOCK: "LOCK">

-    | <R_MINUS: "MINUS">

-    | <R_MODE: "MODE">

-    | <R_NOCOMPRESS: "NOCOMPRESS">

-    | <R_NOT: "NOT">

-    | <R_NOWAIT: "NOWAIT">

-    | <R_NULL: "NULL">

-    | <R_OF: "OF">

-    | <R_ON: "ON">

-    | <R_OPTION: "OPTION">

-    | <R_OR: "OR">

-    | <R_ORDER: "ORDER">

-    | <R_OVERLAPS: "OVERLAPS">

-    | <R_PRIMARY: "PRIMARY">

-    | <R_PROCEDURE: "PROCEDURE">

-    | <R_PUBLIC: "PUBLIC">

-    | <R_RESOURCE: "RESOURCE">

-    | <R_REVOKE: "REVOLE">

-    | <R_SELECT: "SELECT">

-    | <R_SHARE: "SHARE">

-    | <R_SIZE: "SIZE">

-    | <R_SQL: "SQL">

-    | <R_START: "START">

-    | <R_SUBTYPE: "SUBTYPE">

-    | <R_TABAUTH: "TABAUTH">

-    | <R_TABLE: "TABLE">

-    | <R_THEN: "THEN">

-    | <R_TO: "TO">

-    | <R_TYPE: "TYPE">

-    | <R_UNION: "UNION">

-    | <R_UNIQUE: "UNIQUE">

-    | <R_UPDATE: "UPDATE">

-    | <R_VALUES: "VALUES">

-    | <R_VIEW: "VIEW">

-    | <R_VIEWS: "VIEWS">

-    | <R_WHEN: "WHEN">

-    | <R_WHERE: "WHERE">

-    | <R_WITH: "WITH">

-

-    //keywords - not a complete list, just what is sufficient for this parser

-    | <K_ARRAY: "ARRAY">

-    | <K_AUTHID: "AUTHID">

-    | <K_BFILE: "BFILE">

-    | <K_BINARY_DOUBLE: "BINARY_DOUBLE">

-    | <K_BINARY_FLOAT: "BINARY_FLOAT">

-    | <K_BINARY_INTEGER: "BINARY_INTEGER">

-    | <K_BLOB: "BLOB">

-    | <K_BOOLEAN: "BOOLEAN">

-    | <K_BYTE: "BYTE">

-    | <K_CHAR: "CHAR">

-    | <K_CHARACTER: "CHARACTER">

-    | <K_CLOB: "CLOB">

-    | <K_COMMIT: "COMMIT">

-    | <K_CONSTANT: "CONSTANT">

-    | <K_CONSTRUCTOR: "CONSTRUCTOR">

-    | <K_CURRENT_USER: "CURRENT_USER">

-    | <K_DATE :"DATE">

-    | <K_DAY: "DAY">

-    | <K_DEC: "DEC">

-    | <K_DECIMAL: "DECIMAL">

-    | <K_DEFINER: "DEFINER">

-    | <K_DELETE: "DELETE">

-    | <K_DETERMINISTIC: "DETERMINISTIC">

-    | <K_DOUBLE: "DOUBLE">

-    | <K_ENABLE: "ENABLE">

-    | <K_FINAL: "FINAL">

-    | <K_FLOAT: "FLOAT">

-    | <K_FORCE: "FORCE">

-    | <K_GLOBAL: "GLOBAL">

-    | <K_INSTANTIABLE: "INSTANTIABLE">

-    | <K_INT: "INT">

-    | <K_INTEGER: "INTEGER">

-    | <K_INTERVAL: "INTERVAL">

-    | <K_KEY: "KEY">

-    | <K_LOCAL: "LOCAL">

-    | <K_LONG: "LONG">

-    | <K_MLSLABEL: "MLSLABEL">

-    | <K_MONTH: "MONTH">

-    | <K_NATIONAL: "NATIONAL">

-    | <K_NATURAL: "NATURAL">

-    | <K_NCHAR: "NCHAR">

-    | <K_NCLOB: "NCLOB">

-    | <K_NOCOPY: "NOCOPY">

-    | <K_NUMBER: "NUMBER">

-    | <K_NUMERIC: "NUMERIC">

-    | <K_NVARCHAR2: "NVARCHAR2">

-    | <K_NVARCHAR: "NVARCHAR">

-    | <K_OBJECT: "OBJECT">

-    | <K_OID: "OID">

-    | <K_ORGANIZATION: "ORGANIZATION">

-    | <K_OUT: "OUT">

-    | <K_OVERFLOW: "OVERFLOW">

-    | <K_PACKAGE: "PACKAGE">

-    | <K_PARALLEL_ENABLE: "PARALLEL_ENABLE">

-    | <K_PIPELINED: "PIPELINED">

-    | <K_PLS_INTEGER:"PLS_INTEGER">

-    | <K_POSITIVE: "POSITIVE">

-    | <K_PRAGMA: "PRAGMA">

-    | <K_PRECISION:"PRECISION">

-    | <K_PRESERVE: "PRESERVE">

-    | <K_RANGE: "RANGE">

-    | <K_RAW: "RAW">

-    | <K_REAL:"REAL">

-    | <K_RECORD: "RECORD">

-    | <K_REF: "REF">

-    | <K_REPLACE: "REPLACE">

-    | <K_RESULT: "RESULT">

-    | <K_RESULT_CACHE: "RESULT_CACHE">

-    | <K_RETURN: "RETURN">

-    | <K_ROWID:"ROWID">

-    | <K_ROWS: "ROWS">

-    | <K_SECOND: "SECOND">

-    | <K_SELF: "SELF">

-    | <K_SET: "SET">

-    | <K_SIGNTYPE: "SIGNTYPE">

-    | <K_SIMPLE_DOUBLE:"SIMPLE_DOUBLE">

-    | <K_SIMPLE_FLOAT:"SIMPLE_FLOAT">

-    | <K_SIMPLE_INTEGER:"SIMPLE_INTEGER">

-    | <K_SMALLINT:"SMALLINT">

-    | <K_STRING: "STRING">

-    | <K_SYS_REFCURSOR:"SYS_REFCURSOR">

-    | <K_TEMPORARY: "TEMPORARY">

-    | <K_TIME: "TIME">

-    | <K_TIMESTAMP: "TIMESTAMP">

-    | <K_UROWID:"UROWID">

-    | <K_VARCHAR2: "VARCHAR2">

-    | <K_VARCHAR: "VARCHAR">

-    | <K_VARRAY: "VARRAY">

-    | <K_VARYING: "VARYING">

-    | <K_XMLTYPE: "XMLTYPE">

-    | <K_SYSXMLTYPE: "SYS.XMLTYPE">

-    | <K_YEAR: "YEAR">

-    | <K_ZONE: "ZONE">

-}

-

-String keywords():

-{Token t = null;}

-{

-    (

-        t=<K_ARRAY>

-      | t=<K_AUTHID>

-      | t=<K_BFILE>

-      | t=<K_BINARY_DOUBLE>

-      | t=<K_BINARY_FLOAT>

-      | t=<K_BINARY_INTEGER>

-      | t=<K_BLOB>

-      | t=<K_BOOLEAN>

-      | t=<K_BYTE>

-      | t=<K_CHAR>

-      | t=<K_CHARACTER>

-      | t=<K_CLOB>

-      | t=<K_COMMIT>      

-      | t=<K_CONSTANT>

-      | t=<K_CONSTRUCTOR>

-      | t=<K_CURRENT_USER>

-      | t=<K_DATE>

-      | t=<K_DAY>

-      | t=<K_DEC>

-      | t=<K_DECIMAL>

-      | t=<K_DEFINER>

-      | t=<K_DELETE>

-      | t=<K_DETERMINISTIC>

-      | t=<K_DOUBLE>

-      | t=<K_ENABLE>

-      | t=<K_FINAL>

-      | t=<K_FLOAT>

-      | t=<K_FORCE>

-      | t=<K_GLOBAL>

-      | t=<K_INSTANTIABLE>

-      | t=<K_INT>

-      | t=<K_INTEGER>

-      | t=<K_INTERVAL>

-      | t=<K_KEY>

-      | t=<K_LOCAL>

-      | t=<K_LONG>

-      | t=<K_MLSLABEL>

-      | t=<K_MONTH>

-      | t=<K_NATIONAL>

-      | t=<K_NATURAL>

-      | t=<K_NCHAR>

-      | t=<K_NCLOB>

-      | t=<K_NOCOPY>

-      | t=<K_NUMBER>

-      | t=<K_NUMERIC>

-      | t=<K_NVARCHAR2>

-      | t=<K_NVARCHAR>

-      | t=<K_OBJECT>

-      | t=<K_OID>

-      | t=<K_ORGANIZATION>

-      | t=<K_OUT>

-      | t=<K_OVERFLOW>

-      | t=<K_PACKAGE>

-      | t=<K_PARALLEL_ENABLE>

-      | t=<K_PIPELINED>

-      | t=<K_PLS_INTEGER>

-      | t=<K_POSITIVE>

-      | t=<K_PRAGMA>

-      | t=<K_PRECISION>

-      | t=<K_PRESERVE>

-      | t=<K_RANGE>

-      | t=<K_RAW>

-      | t=<K_REAL>

-      | t=<K_RECORD>

-      | t=<K_REF>

-      | t=<K_REPLACE>

-      | t=<K_RESULT>

-      | t=<K_RESULT_CACHE>

-      | t=<K_RETURN>

-      | t=<K_ROWID>

-      | t=<K_ROWS>

-      | t=<K_SECOND>

-      | t=<K_SELF>

-      | t=<K_SET>

-      | t=<K_SIGNTYPE>

-      | t=<K_SIMPLE_DOUBLE>

-      | t=<K_SIMPLE_FLOAT>

-      | t=<K_SIMPLE_INTEGER>

-      | t=<K_SMALLINT>

-      | t=<K_STRING>

-      | t=<K_SYS_REFCURSOR>

-      | t=<K_TEMPORARY>

-      | t=<K_TIME>

-      | t=<K_TIMESTAMP>

-      | t=<K_UROWID>

-      | t=<K_VARCHAR2>

-      | t=<K_VARCHAR>

-      | t=<K_VARRAY>

-      | t=<K_VARYING>

-      | t=<K_XMLTYPE>

-      | t=<K_SYSXMLTYPE>

-      | t=<K_YEAR>

-      | t=<K_ZONE>      

-    )

-    {

-      return t.image;

-    }

-}

-

-// identifiers

-TOKEN:

-{

-      <S_IDENTIFIER: (<LETTER>)+ (<DIGIT> | <LETTER> | <SPECIAL_CHARS>)* >

-    | <#LETTER: ["a"-"z", "A"-"Z"] >

-    | <#SPECIAL_CHARS: "$" | "_" | "#" | "@" >

-    | <S_BIND: ":" ( <S_NUMBER> | <S_IDENTIFIER> ("." <S_IDENTIFIER>)?) >

-    | <S_CHAR_LITERAL: "'" (~["'"])* "'" ("'" (~["'"])* "'")*>

-    | <S_QUOTED_IDENTIFIER: "\"" (~["\n","\r","\""])* "\"" >

-}

-

-// stripped-down version of PLSQL grammar: only parses package/top-level DDL specifications

-

-// PLSQLPackage at 'top-level'

-PLSQLPackageType parsePLSQLPackage():

-{PLSQLPackageType packageType = new PLSQLPackageType();

- String dottedName = null;

- String schema = null;

- String packageName = null;

- }

-{

-    <R_CREATE> [ orReplace() ] <K_PACKAGE>

-      dottedName=OracleObjectNamePossiblyDotted()

-        {

-          packageName = dottedName;

-          if (dottedName.contains(".")) {

-              int idx = dottedName.indexOf(".");

-              schema = dottedName.substring(0, idx);

-              packageName = dottedName.substring(idx+1, dottedName.length());

-          }

-          if (schema != null) {

-            packageType.setSchema(schema);

-          }

-          packageType.setPackageName(packageName);

-        }

-        [ invokerRights() ] as()

-         ( packageDeclaration(packageType) )*

-    <R_END> skipToEnd()

-    {

-      typesRepository.setDatabaseType(packageName, packageType);

-      return packageType;

-    }

-}

-

-// procedure at 'top-level'

-ProcedureType parseTopLevelProcedure():

-{ProcedureType procedureType = null;

- String dottedName = null;

- String schema = null;

- String procedureName = null;}

-{

-    <R_CREATE> [ orReplace() ] <R_PROCEDURE>

-      dottedName=OracleObjectNamePossiblyDotted()

-        {

-          procedureName = dottedName;

-          if (dottedName.contains(".")) {

-              int idx = dottedName.indexOf(".");

-              schema = dottedName.substring(0, idx);

-              procedureName = dottedName.substring(idx+1, dottedName.length());

-          }

-          procedureType = new ProcedureType(procedureName);

-              if (schema != null) {

-                  procedureType.setSchema(schema);

-              }
       }

-    [ <O_OPENPAREN> argumentList(procedureType) <O_CLOSEPAREN> ] as()

-    skipToEnd()

-    {

-      typesRepository.setDatabaseType(procedureName, procedureType);

-      return procedureType;

-    }

-}

-

-// function at 'top-level'

-FunctionType parseTopLevelFunction():

-{FunctionType functionType = null;

- String dottedName = null;

- String schema = null;

- String functionName = null;

- ArgumentType returnType = null;}

-{

-    <R_CREATE> [ orReplace() ] <R_FUNCTION>

-      dottedName=OracleObjectNamePossiblyDotted()

-            {

-          functionName = dottedName;

-          if (dottedName.contains(".")) {

-              int idx = dottedName.indexOf(".");

-              schema = dottedName.substring(0, idx);

-              functionName = dottedName.substring(idx+1, dottedName.length());

-          }

-              functionType = new FunctionType(functionName);

-          if (schema != null) {

-              functionType.setSchema(schema);

-          }
      }

-    [ <O_OPENPAREN> argumentList(functionType) <O_CLOSEPAREN> ] returnType=functionReturnSpec(functionType) as()

-    skipToEnd()

-    {

-      functionType.setReturnArgument(returnType);

-      typesRepository.setDatabaseType(functionName, functionType);

-      return functionType;

-    }

-}

-

-// table at 'top-level'

-TableType parseTable():

-{TableType tableType = null;

- String dottedName = null;

- String schema = null;

- String tableName = null;

- Token iot = null;

-}

-{

-    <R_CREATE> [ <K_GLOBAL> <K_TEMPORARY> ] <R_TABLE>

-      dottedName=OracleObjectNamePossiblyDotted()

-        {

-          tableName = dottedName;

-          if (dottedName.contains(".")) {

-              int idx = dottedName.indexOf(".");

-              schema = dottedName.substring(0, idx);

-              tableName = dottedName.substring(idx+1, dottedName.length());

-          }

-          tableType = new TableType(tableName);

-                  if (schema != null) {

-                       tableType.setSchema(schema);

-                  }
        }

-        <O_OPENPAREN> columnDeclarations(tableType) <O_CLOSEPAREN>

-         [ <K_ORGANIZATION> ] [ iot=<R_INDEX> ] [ <R_NOCOMPRESS> ] [ <K_OVERFLOW> ]

-         [ onCommit() ] <O_SEMICOLON>

-     <EOF>

-     {

-         if (iot != null) {

-             tableType.setIOT(true);

-         }

-         typesRepository.setDatabaseType(tableName, tableType);

-         return tableType;

-     }

-}

-

-// type at 'top-level'

-CompositeDatabaseType parseType():

-{CompositeDatabaseType databaseType = null;

- DatabaseType enclosedType = null;

- String dottedName = null;

- String schema = null;

- String typeName = null;

- Token vsize = null;

- boolean varray = false;

- boolean nestedTable = false;

-}

-{

-    <R_CREATE> [ orReplace() ] <R_TYPE>

-      dottedName=OracleObjectNamePossiblyDotted()
        {

-          typeName = dottedName;

-          if (dottedName.contains(".")) {

-              int idx = dottedName.indexOf(".");

-              schema = dottedName.substring(0, idx);

-              typeName = dottedName.substring(idx+1, dottedName.length());

-          }
        }

-        [ <K_FORCE> ] [ <K_OID> <S_CHAR_LITERAL> ] [ invokerRights() ] as()

-        [ <K_OBJECT> <O_OPENPAREN>

-            {

-                databaseType = new ObjectType(typeName);

-                if (schema != null) {

-                    ((ObjectType)databaseType).setSchema(schema);
                }

-            } columnDeclarations(databaseType) constructorDeclaration() <O_CLOSEPAREN>

-          | <K_VARRAY> <O_OPENPAREN> vsize=<S_NUMBER> <O_CLOSEPAREN> <R_OF>

-            {
                databaseType = new VArrayType(typeName);

-                if (schema != null) {

-                    ((VArrayType)databaseType).setSchema(schema);

-                }

-                if (vsize != null) {

-                    Long size = Long.decode(vsize.image);

-                    ((VArrayType)databaseType).setSize(size);

-                }

-            } enclosedType=columnTypeSpec(databaseType)

-          | <R_TABLE> <R_OF>
           {

-                databaseType = new ObjectTableType(typeName);

-                if (schema != null) {

-                    ((ObjectTableType)databaseType).setSchema(schema);

-                }
              } enclosedType=columnTypeSpec(databaseType)

-        ]

-     [ [ <R_NOT> ] ( <K_FINAL> | <K_INSTANTIABLE> ) ] [ <O_SEMICOLON> ]

-     <EOF>

-    {

-        if (enclosedType != null) {

-            ((CompositeDatabaseType)databaseType).setEnclosedType(enclosedType);
        }

-        typesRepository.setDatabaseType(typeName, databaseType);

-        return databaseType;

-    }

-}

-

-void columnDeclarations(CompositeDatabaseType enclosingType):

-{}

-{

-    (LOOKAHEAD(2) constructor() | columnDeclaration(enclosingType) | constraintDeclaration(enclosingType) )

-    [ <O_COMMA> columnDeclarations(enclosingType) ]

-}

-

-void columnDeclaration(CompositeDatabaseType enclosingType):

-{String s = null;

- String pk = null;

- boolean notNull = false;

- DatabaseType columnType = null;

- FieldType column = null;

-}

-{

-    s=OracleObjectName() columnType=columnTypeSpec(enclosingType) [ notNull=notNull() ]

-        {

-          column = new FieldType(s);

-          if (enclosingType != null) {

-              if (enclosingType.isPLSQLRecordType()) {

-                  ((PLSQLRecordType)enclosingType).addField(column);

-              }

-              else if (enclosingType.isTableType()) {

-                  ((TableType)enclosingType).addColumn(column);

-              }

-              else if (enclosingType.isObjectType()) {

-                  ((ObjectType)enclosingType).addField(column);

-              }

-          }

-          column.setEnclosedType(columnType);

-          if (columnType instanceof UnresolvedType) {

-              ((UnresolvedType)columnType).setOwningType(column);

-          }

-          if (notNull) {

-              column.setNotNull();

-          }

-        }
}

-

-void constraintDeclaration(CompositeDatabaseType enclosingType):

-{String s = null;

- String pk = null;

-}

-{

-    [ <R_CONSTRAINT> ] [ OracleObjectName() ]

-      (

-          <R_PRIMARY> <K_KEY> <O_OPENPAREN> pkList((TableType)enclosingType) <O_CLOSEPAREN>

-        | <R_CHECK> <O_OPENPAREN> skipToClosingParen() <O_CLOSEPAREN>

-        | <R_UNIQUE> <O_OPENPAREN> uniqList() <O_CLOSEPAREN> 
      ) [ <K_ENABLE> ]

-}

-

-DatabaseType columnTypeSpec(CompositeDatabaseType enclosingType):

-{String s = null;

- Token t = null;

- DatabaseType dt = null;}

-{

-    (

-        LOOKAHEAD(2)

-        dt=datatype()

-      | s=columnSpec() [ <O_OPENPAREN> t=<S_NUMBER> <O_CLOSEPAREN> ]

-    ) [ <R_CONSTRAINT> <S_QUOTED_IDENTIFIER> ]

-    {

-      if (s != null) {

-          if (s.contains(".")) {

-              int dotIdx = s.indexOf(".");

-              String namePart1 = s.substring(0, dotIdx);

-              String namePart2 = s.substring(dotIdx+1, s.length());

-              String schemaName = null;

-              if (enclosingType.isTableType()) {

-                 schemaName = ((TableType)enclosingType).getSchema();

-              } else if (enclosingType.isObjectTableType()) {

-                 schemaName = ((ObjectTableType)enclosingType).getSchema();

-              } else if (enclosingType.isObjectType()) {
                 schemaName = ((ObjectType)enclosingType).getSchema();

-              } else if (enclosingType.isPLSQLType()) {

-                 schemaName = ((PLSQLType)enclosingType).getParentType().getSchema();

-              } else if (enclosingType.isVArrayType()) {

-                 schemaName = ((VArrayType)enclosingType).getSchema();

-              }

-              if (schemaName != null && schemaName.equals(namePart1)) {
                  s = namePart2;

-              }
          }

-          for (String typeName : localTypes.keySet()) {

-              if (typeName.equals(s)) {

-                  dt = localTypes.get(s);

-                  break;

-              }

-          }

-          if (dt == null) {

-              if (t != null) {

-                  Long size = Long.decode(t.image);

-                  dt = new UnresolvedSizedType(s, size);

-              }

-              else {

-                  dt = new UnresolvedType(s);

+/*******************************************************************************
+ * Copyright (c) 2011, 2014 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
+ * which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ *     Mike Norman - June 10 2011, created DDL parser package
+ ******************************************************************************/
+options {
+      STATIC = false;
+      SUPPORT_CLASS_VISIBILITY_PUBLIC = true;
+      ERROR_REPORTING = false;
+      JAVA_UNICODE_ESCAPE = true;
+      UNICODE_INPUT = true;
+      NODE_USES_PARSER = false;
+      NODE_DEFAULT_VOID = true;
+      VISITOR = true;
+      FORCE_LA_CHECK = true;
+}
+
+PARSER_BEGIN(DDLParser)
+/*******************************************************************************
+ * Copyright (c) 2011, 2014 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
+ * which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ *     Mike Norman - June 10 2011, created DDL parser package
+ ******************************************************************************/
+package org.eclipse.persistence.tools.oracleddl.parser;
+
+//javase imports
+import java.io.InputStream;
+import java.util.List;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+//metadata imports
+import org.eclipse.persistence.tools.oracleddl.metadata.ArgumentType;
+import org.eclipse.persistence.tools.oracleddl.metadata.ArgumentTypeDirection;
+import org.eclipse.persistence.tools.oracleddl.metadata.BlobType;
+import org.eclipse.persistence.tools.oracleddl.metadata.CharType;
+import org.eclipse.persistence.tools.oracleddl.metadata.ClobType;
+import org.eclipse.persistence.tools.oracleddl.metadata.CompositeDatabaseType;
+import org.eclipse.persistence.tools.oracleddl.metadata.DatabaseType;
+import org.eclipse.persistence.tools.oracleddl.metadata.DecimalType;
+import org.eclipse.persistence.tools.oracleddl.metadata.DoubleType;
+import org.eclipse.persistence.tools.oracleddl.metadata.FieldType;
+import org.eclipse.persistence.tools.oracleddl.metadata.FloatType;
+import org.eclipse.persistence.tools.oracleddl.metadata.FunctionType;
+import org.eclipse.persistence.tools.oracleddl.metadata.IntervalDayToSecond;
+import org.eclipse.persistence.tools.oracleddl.metadata.IntervalYearToMonth;
+import org.eclipse.persistence.tools.oracleddl.metadata.LongType;
+import org.eclipse.persistence.tools.oracleddl.metadata.LongRawType;
+import org.eclipse.persistence.tools.oracleddl.metadata.NCharType;
+import org.eclipse.persistence.tools.oracleddl.metadata.NClobType;
+import org.eclipse.persistence.tools.oracleddl.metadata.NumericType;
+import org.eclipse.persistence.tools.oracleddl.metadata.NVarChar2Type;
+import org.eclipse.persistence.tools.oracleddl.metadata.ObjectType;
+import org.eclipse.persistence.tools.oracleddl.metadata.ObjectTableType;
+import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLCollectionType;
+import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLCursorType;
+import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLPackageType;
+import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLRecordType;
+import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLType;
+import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLSubType;
+import org.eclipse.persistence.tools.oracleddl.metadata.ProcedureType;
+import org.eclipse.persistence.tools.oracleddl.metadata.RawType;
+import org.eclipse.persistence.tools.oracleddl.metadata.RealType;
+import org.eclipse.persistence.tools.oracleddl.metadata.ROWTYPEType;
+import org.eclipse.persistence.tools.oracleddl.metadata.TableType;
+import org.eclipse.persistence.tools.oracleddl.metadata.TimeStampType;
+import org.eclipse.persistence.tools.oracleddl.metadata.TYPEType;
+import org.eclipse.persistence.tools.oracleddl.metadata.URowIdType;
+import org.eclipse.persistence.tools.oracleddl.metadata.UnresolvedSizedType;
+import org.eclipse.persistence.tools.oracleddl.metadata.UnresolvedType;
+import org.eclipse.persistence.tools.oracleddl.metadata.VarCharType;
+import org.eclipse.persistence.tools.oracleddl.metadata.VarChar2Type;
+import org.eclipse.persistence.tools.oracleddl.metadata.VArrayType;
+import org.eclipse.persistence.tools.oracleddl.util.DatabaseTypesRepository;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BFILE_TYPE;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_INTEGER_TYPE;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_FLOAT_TYPE;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BINARY_DOUBLE_TYPE;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.BOOLEAN_TYPE;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.DATE_TYPE;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.INTEGER_TYPE;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.MLSLABEL_TYPE;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.NATURAL_TYPE;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.PLS_INTEGER_TYPE;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.POSITIVE_TYPE;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.ROWID_TYPE;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIGN_TYPE;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIMPLE_INTEGER_TYPE;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIMPLE_DOUBLE_TYPE;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SIMPLE_FLOAT_TYPE;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SMALLINT_TYPE;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.SYS_REFCURSOR_TYPE;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.TIME_TYPE;
+import static org.eclipse.persistence.tools.oracleddl.metadata.ScalarDatabaseTypeEnum.XMLTYPE_TYPE;
+
+public class DDLParser {
+
+    protected Map<String, DatabaseType> localTypes = new HashMap<String, DatabaseType>();
+    protected List<String> schemaPatterns = null;
+
+    protected DatabaseTypesRepository typesRepository = new DatabaseTypesRepository();
+
+    public DDLParser() {
+        super();
+    }
+
+    public void setTypesRepository(DatabaseTypesRepository typesRepository) {
+        this.typesRepository = typesRepository;
+    }
+    public DatabaseTypesRepository getTypesRepository() {
+        return typesRepository;
+    }
+
+    public void setSchemaPatterns(List<String> schemaPatterns) {
+        this.schemaPatterns = schemaPatterns;
+    }
+
+    protected String removeQuotes(String quotedString) {
+        return quotedString.substring(1, quotedString.length() - 1);
+    }
+}
+
+PARSER_END(DDLParser)
+
+// white-space
+SKIP: {
+      " " | "\t" | "\n" | "\r" | "\f"
+}
+
+// comments
+SKIP: {
+    <COMMENT_LINE: "--" (~["\n","\r"])* ("\n"|"\r"|"\r\n") >
+}
+SKIP:{
+    <COMMENT_BLOCK: "/*" (~["*"])* "*" ("*" | (~["*","/"] (~["*"])* "*"))* "/">
+}
+
+// token classes
+
+// separators and operators (prefix with O_ to avoid naming conflicts)
+TOKEN: {
+      <O_ASSIGN: ":=">
+    | <O_ASTERISK: "*">
+    | <O_ATSIGN: "@">
+    | <O_CLOSEPAREN: ")">
+    | <O_CONCAT: "||">
+    | <O_COLON: ":">
+    | <O_COMMA: ",">
+    | <O_DOT: ".">
+    | <O_DOUBLEDOT: "..">
+    | <O_DOLLAR: "$">
+    | <O_PERCENT: "%">
+    | <O_EQUAL: "=">
+    | <O_GREATER: ">">
+    | <O_GREATEREQUAL: ">=">
+    | <O_JOINPLUS: "(+)">
+    | <O_LESS: "<">
+    | <O_LESSEQUAL: "<=">
+    | <O_MINUS: "-">
+    | <O_NOTEQUAL2: "<>">
+    | <O_NOTEQUAL: "!=">
+    | <O_OPENPAREN: "(">
+    | <O_PLUS: "+">
+    | <O_POUND: "#">
+    | <O_QUESTIONMARK: "?">
+    | <O_SEMICOLON: ";">
+    | <O_SLASH: "/">
+    | <O_TILDE: "~">
+}
+
+// numeric literals
+TOKEN : {
+      <S_NUMBER: <FLOAT> | <FLOAT> ( ["e","E"] ([ "-","+"])? <FLOAT> )? >
+    | <#FLOAT: <INTEGER> | <INTEGER> ( "." <INTEGER> )? | "." <INTEGER> >
+    | <#INTEGER: ( <DIGIT> )+ >
+    | <#DIGIT: ["0" - "9"] >
+}
+
+//reserved words and keywords literals
+/*
+PLSQL reserved words (prefix with R_ ) and keyword (prefix with K_)
+http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/fundamentals.htm#CBJGBIGI
+"You cannot use reserved words as ordinary user-defined identifiers.
+You can use keywords as ordinary user-defined identifiers, but it is not recommended."
+*/
+
+TOKEN [IGNORE_CASE]: {
+    //reserved words
+      <R_ALL: "ALL">
+    | <R_ALTER: "ALTER">
+    | <R_ANCHORED_ROWTYPE: "%ROWTYPE">
+    | <R_ANCHORED_TYPE: "%TYPE">
+    | <R_AND: "AND">
+    | <R_AS: "AS">
+    | <R_ASC: "ASC">
+    | <R_AT: "AT">
+    | <R_BEGIN: "BEGIN">
+    | <R_BETWEEN: "BETWEEN">
+    | <R_BY: "BY">
+    | <R_CASE: "CASE">
+    | <R_CHARSET: "%CHARSET"> 
+    | <R_CHECK: "CHECK">
+    | <R_CLUSTERS: "CLUSTERS">
+    | <R_CLUSTER: "CLUSTER">
+    | <R_COLAUTH: "COLAUTH">
+    | <R_COLUMNS: "COLUMNS">
+    | <R_COMPRESS: "COMPRESS">
+    | <R_CONNECT: "CONNECT">
+    | <R_CONSTRAINT: "CONSTRAINT">
+    | <R_CRASH: "CRASH">
+    | <R_CREATE: "CREATE">
+    | <R_CURSOR: "CURSOR">
+    | <R_DECLARE: "DECLARE">
+    | <R_DEFAULT: "DEFAULT">
+    | <R_DESC: "DESC">
+    | <R_DISTINCT: "DISTINCT">
+    | <R_DROP: "DROP">
+    | <R_ELSE: "ELSE">
+    | <R_END: "END">
+    | <R_EXCEPTION: "EXCEPTION">
+    | <R_EXCLUSIVE: "EXCLUSIVE">
+    | <R_FETCH: "FETCH">
+    | <R_FOR: "FOR">
+    | <R_FROM: "FROM">
+    | <R_FUNCTION: "FUNCTION">
+    | <R_GOTO: "GOTO">
+    | <R_GRANT: "GRANT">
+    | <R_GROUP: "GROUP">
+    | <R_HAVING: "HAVING">
+    | <R_IDENTIFIED: "IDENTIFIED">
+    | <R_IF: "IF">
+    | <R_IN: "IN">
+    | <R_INDEX: "INDEX">
+    | <R_INDEXES: "INDEXES">
+    | <R_INSERT: "INSERT">
+    | <R_INTERSECT: "INTERSECT">
+    | <R_INTO: "INTO">
+    | <R_IS: "IS">
+    | <R_LIKE: "LIKE">
+    | <R_LOCK: "LOCK">
+    | <R_MINUS: "MINUS">
+    | <R_MODE: "MODE">
+    | <R_NOCOMPRESS: "NOCOMPRESS">
+    | <R_NOT: "NOT">
+    | <R_NOWAIT: "NOWAIT">
+    | <R_NULL: "NULL">
+    | <R_OF: "OF">
+    | <R_ON: "ON">
+    | <R_OPTION: "OPTION">
+    | <R_OR: "OR">
+    | <R_ORDER: "ORDER">
+    | <R_OVERLAPS: "OVERLAPS">
+    | <R_PRIMARY: "PRIMARY">
+    | <R_PROCEDURE: "PROCEDURE">
+    | <R_PUBLIC: "PUBLIC">
+    | <R_RESOURCE: "RESOURCE">
+    | <R_REVOKE: "REVOLE">
+    | <R_SELECT: "SELECT">
+    | <R_SHARE: "SHARE">
+    | <R_SIZE: "SIZE">
+    | <R_SQL: "SQL">
+    | <R_START: "START">
+    | <R_SUBTYPE: "SUBTYPE">
+    | <R_TABAUTH: "TABAUTH">
+    | <R_TABLE: "TABLE">
+    | <R_THEN: "THEN">
+    | <R_TO: "TO">
+    | <R_TYPE: "TYPE">
+    | <R_UNION: "UNION">
+    | <R_UNIQUE: "UNIQUE">
+    | <R_UPDATE: "UPDATE">
+    | <R_VALUES: "VALUES">
+    | <R_VIEW: "VIEW">
+    | <R_VIEWS: "VIEWS">
+    | <R_WHEN: "WHEN">
+    | <R_WHERE: "WHERE">
+    | <R_WITH: "WITH">
+
+    //keywords - not a complete list, just what is sufficient for this parser
+    | <K_ARRAY: "ARRAY">
+    | <K_AUTHID: "AUTHID">
+    | <K_BFILE: "BFILE">
+    | <K_BINARY_DOUBLE: "BINARY_DOUBLE">
+    | <K_BINARY_FLOAT: "BINARY_FLOAT">
+    | <K_BINARY_INTEGER: "BINARY_INTEGER">
+    | <K_BLOB: "BLOB">
+    | <K_BOOLEAN: "BOOLEAN">
+    | <K_BYTE: "BYTE">
+    | <K_CHAR: "CHAR">
+    | <K_CHARACTER: "CHARACTER">
+    | <K_CLOB: "CLOB">
+    | <K_COMMIT: "COMMIT">
+    | <K_CONSTANT: "CONSTANT">
+    | <K_CONSTRUCTOR: "CONSTRUCTOR">
+    | <K_CURRENT_USER: "CURRENT_USER">
+    | <K_DATE :"DATE">
+    | <K_DAY: "DAY">
+    | <K_DEC: "DEC">
+    | <K_DECIMAL: "DECIMAL">
+    | <K_DEFINER: "DEFINER">
+    | <K_DELETE: "DELETE">
+    | <K_DETERMINISTIC: "DETERMINISTIC">
+    | <K_DOUBLE: "DOUBLE">
+    | <K_ENABLE: "ENABLE">
+    | <K_FINAL: "FINAL">
+    | <K_FLOAT: "FLOAT">
+    | <K_FORCE: "FORCE">
+    | <K_GLOBAL: "GLOBAL">
+    | <K_INSTANTIABLE: "INSTANTIABLE">
+    | <K_INT: "INT">
+    | <K_INTEGER: "INTEGER">
+    | <K_INTERVAL: "INTERVAL">
+    | <K_KEY: "KEY">
+    | <K_LOCAL: "LOCAL">
+    | <K_LONG: "LONG">
+    | <K_MLSLABEL: "MLSLABEL">
+    | <K_MONTH: "MONTH">
+    | <K_NATIONAL: "NATIONAL">
+    | <K_NATURAL: "NATURAL">
+    | <K_NCHAR: "NCHAR">
+    | <K_NCLOB: "NCLOB">
+    | <K_NOCOPY: "NOCOPY">
+    | <K_NUMBER: "NUMBER">
+    | <K_NUMERIC: "NUMERIC">
+    | <K_NVARCHAR2: "NVARCHAR2">
+    | <K_NVARCHAR: "NVARCHAR">
+    | <K_OBJECT: "OBJECT">
+    | <K_OID: "OID">
+    | <K_ORGANIZATION: "ORGANIZATION">
+    | <K_OUT: "OUT">
+    | <K_OVERFLOW: "OVERFLOW">
+    | <K_PACKAGE: "PACKAGE">
+    | <K_PARALLEL_ENABLE: "PARALLEL_ENABLE">
+    | <K_PIPELINED: "PIPELINED">
+    | <K_PLS_INTEGER:"PLS_INTEGER">
+    | <K_POSITIVE: "POSITIVE">
+    | <K_PRAGMA: "PRAGMA">
+    | <K_PRECISION:"PRECISION">
+    | <K_PRESERVE: "PRESERVE">
+    | <K_RANGE: "RANGE">
+    | <K_RAW: "RAW">
+    | <K_REAL:"REAL">
+    | <K_RECORD: "RECORD">
+    | <K_REF: "REF">
+    | <K_REPLACE: "REPLACE">
+    | <K_RESULT: "RESULT">
+    | <K_RESULT_CACHE: "RESULT_CACHE">
+    | <K_RETURN: "RETURN">
+    | <K_ROWID:"ROWID">
+    | <K_ROWS: "ROWS">
+    | <K_SECOND: "SECOND">
+    | <K_SELF: "SELF">
+    | <K_SET: "SET">
+    | <K_SIGNTYPE: "SIGNTYPE">
+    | <K_SIMPLE_DOUBLE:"SIMPLE_DOUBLE">
+    | <K_SIMPLE_FLOAT:"SIMPLE_FLOAT">
+    | <K_SIMPLE_INTEGER:"SIMPLE_INTEGER">
+    | <K_SMALLINT:"SMALLINT">
+    | <K_STRING: "STRING">
+    | <K_SYS_REFCURSOR:"SYS_REFCURSOR">
+    | <K_TEMPORARY: "TEMPORARY">
+    | <K_TIME: "TIME">
+    | <K_TIMESTAMP: "TIMESTAMP">
+    | <K_UROWID:"UROWID">
+    | <K_VARCHAR2: "VARCHAR2">
+    | <K_VARCHAR: "VARCHAR">
+    | <K_VARRAY: "VARRAY">
+    | <K_VARYING: "VARYING">
+    | <K_XMLTYPE: "XMLTYPE">
+    | <K_SYSXMLTYPE: "SYS.XMLTYPE">
+    | <K_YEAR: "YEAR">
+    | <K_ZONE: "ZONE">
+}
+
+String keywords():
+{Token t = null;}
+{
+    (
+        t=<K_ARRAY>
+      | t=<K_AUTHID>
+      | t=<K_BFILE>
+      | t=<K_BINARY_DOUBLE>
+      | t=<K_BINARY_FLOAT>
+      | t=<K_BINARY_INTEGER>
+      | t=<K_BLOB>
+      | t=<K_BOOLEAN>
+      | t=<K_BYTE>
+      | t=<K_CHAR>
+      | t=<K_CHARACTER>
+      | t=<K_CLOB>
+      | t=<K_COMMIT>      
+      | t=<K_CONSTANT>
+      | t=<K_CONSTRUCTOR>
+      | t=<K_CURRENT_USER>
+      | t=<K_DATE>
+      | t=<K_DAY>
+      | t=<K_DEC>
+      | t=<K_DECIMAL>
+      | t=<K_DEFINER>
+      | t=<K_DELETE>
+      | t=<K_DETERMINISTIC>
+      | t=<K_DOUBLE>
+      | t=<K_ENABLE>
+      | t=<K_FINAL>
+      | t=<K_FLOAT>
+      | t=<K_FORCE>
+      | t=<K_GLOBAL>
+      | t=<K_INSTANTIABLE>
+      | t=<K_INT>
+      | t=<K_INTEGER>
+      | t=<K_INTERVAL>
+      | t=<K_KEY>
+      | t=<K_LOCAL>
+      | t=<K_LONG>
+      | t=<K_MLSLABEL>
+      | t=<K_MONTH>
+      | t=<K_NATIONAL>
+      | t=<K_NATURAL>
+      | t=<K_NCHAR>
+      | t=<K_NCLOB>
+      | t=<K_NOCOPY>
+      | t=<K_NUMBER>
+      | t=<K_NUMERIC>
+      | t=<K_NVARCHAR2>
+      | t=<K_NVARCHAR>
+      | t=<K_OBJECT>
+      | t=<K_OID>
+      | t=<K_ORGANIZATION>
+      | t=<K_OUT>
+      | t=<K_OVERFLOW>
+      | t=<K_PACKAGE>
+      | t=<K_PARALLEL_ENABLE>
+      | t=<K_PIPELINED>
+      | t=<K_PLS_INTEGER>
+      | t=<K_POSITIVE>
+      | t=<K_PRAGMA>
+      | t=<K_PRECISION>
+      | t=<K_PRESERVE>
+      | t=<K_RANGE>
+      | t=<K_RAW>
+      | t=<K_REAL>
+      | t=<K_RECORD>
+      | t=<K_REF>
+      | t=<K_REPLACE>
+      | t=<K_RESULT>
+      | t=<K_RESULT_CACHE>
+      | t=<K_RETURN>
+      | t=<K_ROWID>
+      | t=<K_ROWS>
+      | t=<K_SECOND>
+      | t=<K_SELF>
+      | t=<K_SET>
+      | t=<K_SIGNTYPE>
+      | t=<K_SIMPLE_DOUBLE>
+      | t=<K_SIMPLE_FLOAT>
+      | t=<K_SIMPLE_INTEGER>
+      | t=<K_SMALLINT>
+      | t=<K_STRING>
+      | t=<K_SYS_REFCURSOR>
+      | t=<K_TEMPORARY>
+      | t=<K_TIME>
+      | t=<K_TIMESTAMP>
+      | t=<K_UROWID>
+      | t=<K_VARCHAR2>
+      | t=<K_VARCHAR>
+      | t=<K_VARRAY>
+      | t=<K_VARYING>
+      | t=<K_XMLTYPE>
+      | t=<K_SYSXMLTYPE>
+      | t=<K_YEAR>
+      | t=<K_ZONE>      
+    )
+    {
+      return t.image;
+    }
+}
+
+// identifiers
+TOKEN:
+{
+      <S_IDENTIFIER: (<LETTER>)+ (<DIGIT> | <LETTER> | <SPECIAL_CHARS>)* >
+    | <#LETTER: ["a"-"z", "A"-"Z"] >
+    | <#SPECIAL_CHARS: "$" | "_" | "#" | "@" >
+    | <S_BIND: ":" ( <S_NUMBER> | <S_IDENTIFIER> ("." <S_IDENTIFIER>)?) >
+    | <S_CHAR_LITERAL: "'" (~["'"])* "'" ("'" (~["'"])* "'")*>
+    | <S_QUOTED_IDENTIFIER: "\"" (~["\n","\r","\""])* "\"" >
+}
+
+// stripped-down version of PLSQL grammar: only parses package/top-level DDL specifications
+
+// PLSQLPackage at 'top-level'
+PLSQLPackageType parsePLSQLPackage():
+{PLSQLPackageType packageType = new PLSQLPackageType();
+ String dottedName = null;
+ String schema = null;
+ String packageName = null;
+ }
+{
+    <R_CREATE> [ orReplace() ] <K_PACKAGE>
+      dottedName=OracleObjectNamePossiblyDotted()
+        {
+          packageName = dottedName;
+          if (dottedName.contains(".")) {
+              int idx = dottedName.indexOf(".");
+              schema = dottedName.substring(0, idx);
+              packageName = dottedName.substring(idx+1, dottedName.length());
+          }
+          if (schema != null) {
+            packageType.setSchema(schema);
+          }
+          packageType.setPackageName(packageName);
+        }
+        [ invokerRights() ] as()
+         ( packageDeclaration(packageType) )*
+    <R_END> skipToEnd()
+    {
+      typesRepository.setDatabaseType(packageName, packageType);
+      return packageType;
+    }
+}
+
+// procedure at 'top-level'
+ProcedureType parseTopLevelProcedure():
+{ProcedureType procedureType = null;
+ String dottedName = null;
+ String schema = null;
+ String procedureName = null;}
+{
+    <R_CREATE> [ orReplace() ] <R_PROCEDURE>
+      dottedName=OracleObjectNamePossiblyDotted()
+        {
+          procedureName = dottedName;
+          if (dottedName.contains(".")) {
+              int idx = dottedName.indexOf(".");
+              schema = dottedName.substring(0, idx);
+              procedureName = dottedName.substring(idx+1, dottedName.length());
+          }
+          procedureType = new ProcedureType(procedureName);
+              if (schema != null) {
+                  procedureType.setSchema(schema);
+              }
+       }
+    [ <O_OPENPAREN> argumentList(procedureType) <O_CLOSEPAREN> ] as()
+    skipToEnd()
+    {
+      typesRepository.setDatabaseType(procedureName, procedureType);
+      return procedureType;
+    }
+}
+
+// function at 'top-level'
+FunctionType parseTopLevelFunction():
+{FunctionType functionType = null;
+ String dottedName = null;
+ String schema = null;
+ String functionName = null;
+ ArgumentType returnType = null;}
+{
+    <R_CREATE> [ orReplace() ] <R_FUNCTION>
+      dottedName=OracleObjectNamePossiblyDotted()
+            {
+          functionName = dottedName;
+          if (dottedName.contains(".")) {
+              int idx = dottedName.indexOf(".");
+              schema = dottedName.substring(0, idx);
+              functionName = dottedName.substring(idx+1, dottedName.length());
+          }
+              functionType = new FunctionType(functionName);
+          if (schema != null) {
+              functionType.setSchema(schema);
+          }
+      }
+    [ <O_OPENPAREN> argumentList(functionType) <O_CLOSEPAREN> ] returnType=functionReturnSpec(functionType) as()
+    skipToEnd()
+    {
+      functionType.setReturnArgument(returnType);
+      typesRepository.setDatabaseType(functionName, functionType);
+      return functionType;
+    }
+}
+
+// table at 'top-level'
+TableType parseTable():
+{TableType tableType = null;
+ String dottedName = null;
+ String schema = null;
+ String tableName = null;
+ Token iot = null;
+}
+{
+    <R_CREATE> [ <K_GLOBAL> <K_TEMPORARY> ] <R_TABLE>
+      dottedName=OracleObjectNamePossiblyDotted()
+        {
+          tableName = dottedName;
+          if (dottedName.contains(".")) {
+              int idx = dottedName.indexOf(".");
+              schema = dottedName.substring(0, idx);
+              tableName = dottedName.substring(idx+1, dottedName.length());
+          }
+          tableType = new TableType(tableName);
+                  if (schema != null) {
+                       tableType.setSchema(schema);
+                  }
+        }
+        <O_OPENPAREN> columnDeclarations(tableType) <O_CLOSEPAREN>
+         [ <K_ORGANIZATION> ] [ iot=<R_INDEX> ] [ <R_NOCOMPRESS> ] [ <K_OVERFLOW> ]
+         [ onCommit() ] <O_SEMICOLON>
+     <EOF>
+     {
+         if (iot != null) {
+             tableType.setIOT(true);
+         }
+         typesRepository.setDatabaseType(tableName, tableType);
+         return tableType;
+     }
+}
+
+// type at 'top-level'
+CompositeDatabaseType parseType():
+{CompositeDatabaseType databaseType = null;
+ DatabaseType enclosedType = null;
+ String dottedName = null;
+ String schema = null;
+ String typeName = null;
+ Token vsize = null;
+ boolean varray = false;
+ boolean nestedTable = false;
+}
+{
+    <R_CREATE> [ orReplace() ] <R_TYPE>
+      dottedName=OracleObjectNamePossiblyDotted()
+        {
+          typeName = dottedName;
+          if (dottedName.contains(".")) {
+              int idx = dottedName.indexOf(".");
+              schema = dottedName.substring(0, idx);
+              typeName = dottedName.substring(idx+1, dottedName.length());
+          }
+        }
+        [ <K_FORCE> ] [ <K_OID> <S_CHAR_LITERAL> ] [ invokerRights() ] as()
+        [ <K_OBJECT> <O_OPENPAREN>
+            {
+                databaseType = new ObjectType(typeName);
+                if (schema != null) {
+                    ((ObjectType)databaseType).setSchema(schema);
+                }
+            } columnDeclarations(databaseType) constructorDeclaration() <O_CLOSEPAREN>
+          | <K_VARRAY> <O_OPENPAREN> vsize=<S_NUMBER> <O_CLOSEPAREN> <R_OF>
+            {
+                databaseType = new VArrayType(typeName);
+                if (schema != null) {
+                    ((VArrayType)databaseType).setSchema(schema);
+                }
+                if (vsize != null) {
+                    Long size = Long.decode(vsize.image);
+                    ((VArrayType)databaseType).setSize(size);
+                }
+            } enclosedType=columnTypeSpec(databaseType)
+          | <R_TABLE> <R_OF>
+           {
+                databaseType = new ObjectTableType(typeName);
+                if (schema != null) {
+                    ((ObjectTableType)databaseType).setSchema(schema);
+                }
+              } enclosedType=columnTypeSpec(databaseType)
+        ]
+     [ [ <R_NOT> ] ( <K_FINAL> | <K_INSTANTIABLE> ) ] [ <O_SEMICOLON> ]
+     <EOF>
+    {
+        if (enclosedType != null) {
+            ((CompositeDatabaseType)databaseType).setEnclosedType(enclosedType);
+        }
+        typesRepository.setDatabaseType(typeName, databaseType);
+        return databaseType;
+    }
+}
+
+void columnDeclarations(CompositeDatabaseType enclosingType):
+{}
+{
+    (LOOKAHEAD(2) constructor() | columnDeclaration(enclosingType) | constraintDeclaration(enclosingType) )
+    [ <O_COMMA> columnDeclarations(enclosingType) ]
+}
+
+void columnDeclaration(CompositeDatabaseType enclosingType):
+{String s = null;
+ String pk = null;
+ boolean notNull = false;
+ DatabaseType columnType = null;
+ FieldType column = null;
+}
+{
+    s=OracleObjectName() columnType=columnTypeSpec(enclosingType) [ notNull=notNull() ]
+        {
+          column = new FieldType(s);
+          if (enclosingType != null) {
+              if (enclosingType.isPLSQLRecordType()) {
+                  ((PLSQLRecordType)enclosingType).addField(column);
+              }
+              else if (enclosingType.isTableType()) {
+                  ((TableType)enclosingType).addColumn(column);
+              }
+              else if (enclosingType.isObjectType()) {
+                  ((ObjectType)enclosingType).addField(column);
+              }
+          }
+          column.setEnclosedType(columnType);
+          if (columnType instanceof UnresolvedType) {
+              ((UnresolvedType)columnType).setOwningType(column);
+          }
+          if (notNull) {
+              column.setNotNull();
+          }
+        }
+}
+
+void constraintDeclaration(CompositeDatabaseType enclosingType):
+{String s = null;
+ String pk = null;
+}
+{
+    [ <R_CONSTRAINT> ] [ OracleObjectName() ]
+      (
+          <R_PRIMARY> <K_KEY> <O_OPENPAREN> pkList((TableType)enclosingType) <O_CLOSEPAREN>
+        | <R_CHECK> <O_OPENPAREN> skipToClosingParen() <O_CLOSEPAREN>
+        | <R_UNIQUE> <O_OPENPAREN> uniqList() <O_CLOSEPAREN> 
+      ) [ <K_ENABLE> ]
+}
+
+DatabaseType columnTypeSpec(CompositeDatabaseType enclosingType):
+{String s = null;
+ Token t = null;
+ DatabaseType dt = null;}
+{
+    (
+        LOOKAHEAD(2)
+        dt=datatype()
+      | s=columnSpec() [ <O_OPENPAREN> t=<S_NUMBER> <O_CLOSEPAREN> ]
+    ) [ <R_CONSTRAINT> <S_QUOTED_IDENTIFIER> ]
+    {
+      if (s != null) {
+          if (s.contains(".")) {
+              int dotIdx = s.indexOf(".");
+              String namePart1 = s.substring(0, dotIdx);
+              String namePart2 = s.substring(dotIdx+1, s.length());
+              String schemaName = null;
+              if (enclosingType.isTableType()) {
+                 schemaName = ((TableType)enclosingType).getSchema();
+              } else if (enclosingType.isObjectTableType()) {
+                 schemaName = ((ObjectTableType)enclosingType).getSchema();
+              } else if (enclosingType.isObjectType()) {
+                 schemaName = ((ObjectType)enclosingType).getSchema();
+              } else if (enclosingType.isPLSQLType()) {
+                 schemaName = ((PLSQLType)enclosingType).getParentType().getSchema();
+              } else if (enclosingType.isVArrayType()) {
+                 schemaName = ((VArrayType)enclosingType).getSchema();
+              }
+              if (schemaName != null && schemaName.equals(namePart1)) {
+                  s = namePart2;
+              }
+          }
+          for (String typeName : localTypes.keySet()) {
+              if (typeName.equals(s)) {
+                  dt = localTypes.get(s);
+                  break;
+              }
+          }
+          if (dt == null) {
+              if (t != null) {
+                  Long size = Long.decode(t.image);
+                  dt = new UnresolvedSizedType(s, size);
+              }
+              else {
+                  dt = new UnresolvedType(s);
               }
               ((UnresolvedType)dt).setOwningType(enclosingType);
-          }

-      }

-      return dt;

-    }

-}

-

-void constructorDeclaration():

-{}

-{

-  [ <K_CONSTRUCTOR> skipToReturn() <K_SELF><R_AS><K_RESULT> ]

-  [ <O_COMMA> constructorDeclaration() ]

-}

-

-void uniqList():

-{}

-{

-    OracleObjectName() ( <O_COMMA> OracleObjectName() )*

-}

-

-void pkList(TableType tableType):

-{}

-{

-    pk(tableType) ( <O_COMMA> pk(tableType) )*

-}

-

-void pk(TableType tableType):

-{

-String s = null;

-}

-{

-    s=OracleObjectName()

-    {

-       List<FieldType> columns = tableType.getColumns();

-       for (FieldType column : columns) {

-            if (column.getFieldName().equals(s)) {

-                column.setPk();

-                break;

-            }

-       }
    }

-}

-

-void packageDeclaration(PLSQLPackageType packageType) :

-{}

-{

-      typeOrSubTypeDeclaration(packageType)

-    | cursorDeclaration(packageType)

-    | procedureSpec(packageType)

-    | functionSpec(packageType)

-    | LOOKAHEAD(2) variableDeclaration(packageType)

-    | pragmaDeclaration()

-}

-

-void variableDeclaration(PLSQLPackageType packageType):

-{String varName = null;

- DatabaseType varType=null;}

-{

-    varName=OracleObjectName()

-      (

-          LOOKAHEAD(2) <R_EXCEPTION>

-        | [ LOOKAHEAD(2) <K_CONSTANT> ] varType=typeSpec() [ <R_NOT> <R_NULL> ] [ variableDefaultAssignment() ]
      )

-    <O_SEMICOLON>

-    {

-        FieldType variable = new FieldType(varName);

-        variable.setEnclosedType(varType);

-        packageType.addLocalVariable(variable);

-        if (varType.isROWTYPEType()) {

-            ((ROWTYPEType)varType).setPackageType(packageType);

-        }
    }
}

-

-void variableDefaultAssignment():

-{}

-{

-    ( <O_ASSIGN> | <R_DEFAULT> ) skipToSemiColon()

-}

-

-DatabaseType datatype():

-{Token t = null;

- DatabaseType dt = null;

- Token precision = null;

- Long sl;

- Long pl;

- Token scale = null;

- Token withTimeZone = null;

- Token withLocalTimeZone = null;

-}

-{

-    <K_BINARY_INTEGER>  { return BINARY_INTEGER_TYPE;}

-    | <K_BINARY_FLOAT>  { return BINARY_FLOAT_TYPE;}

-    | <K_BINARY_DOUBLE> { return BINARY_DOUBLE_TYPE;}

-    | <K_NATURAL>       { return NATURAL_TYPE;}

-    | <K_POSITIVE>      { return POSITIVE_TYPE;}

-    | <K_SIGNTYPE>      { return SIGN_TYPE;}

-    | ( t=<K_NUMBER>

-        | t=<K_NUMERIC>

-        | t=<K_DECIMAL>

-        | t=<K_DEC>

-      ) [ <O_OPENPAREN> [ precision=<O_ASTERISK > | precision=<S_NUMBER> ] ( <O_COMMA> scale=<S_NUMBER> )* <O_CLOSEPAREN> ]

-        {

-            if (t.kind == K_NUMBER || t.kind == K_NUMERIC) {

-                if (precision != null && precision.image.equals("*")) {

-                    precision = null;
                }

-                if (precision == null) {

-                    if (scale != null && scale.image.equals("0")) {

-                        dt = INTEGER_TYPE;
                    }
                    else {

-                        dt = new NumericType();
                    }

-                }

-                    else {

-                        pl = Long.decode(precision.image);

-                        if (scale == null) {

-                        dt = new NumericType(pl);

-                    }

-                    else {

-                        sl = Long.decode(scale.image);

-                        dt = new NumericType(pl, sl);

-                        }

-                    }

-                //sometimes need to know difference between NUMERIC and NUMBER

-                if (dt != INTEGER_TYPE && t.kind == K_NUMBER) {

-                    ((NumericType)dt).setNumberSynonym(true);

-                }

-            }

-            else  if (t.kind == K_DECIMAL || t.kind == K_DEC) {

-                if (precision != null && precision.image.equals("*")) {

-                    precision = null;

-                }

-                if (precision == null) {

-                    dt = new DecimalType();

-                }

-                else {

-                    pl = Long.decode(precision.image);

-                    if (scale == null) {

-                        dt = new DecimalType(pl);

-                    }

-                    else {

-                        sl = Long.decode(scale.image);

-                        dt = new DecimalType(pl, sl);

-                    }

-                }

-            }
            return dt;
        }

-    | <K_LONG> [ t=<K_RAW> ] [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]
         {

-              if (t == null) {

-              if (precision == null) {

-                  dt = new LongType();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  dt = new LongType(pl);

-              }

-              }

-              else {

-              if (precision == null) {

-                  dt = new LongRawType();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  dt = new LongRawType(pl);

-              }

-            }

-            return dt;
     }

-    | <K_RAW> [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]
        {

-            if (precision == null) {

-                dt = new RawType();

-            }

-            else {

-                pl = Long.decode(precision.image);

-                dt = new RawType(pl);

-            }

-            return dt;

-            }

-    | <K_BOOLEAN> { return BOOLEAN_TYPE;}

-    | <K_XMLTYPE> { return XMLTYPE_TYPE;}

-    | <K_SYSXMLTYPE> { return XMLTYPE_TYPE;}

-    | <K_DATE> { return DATE_TYPE;}

-    | <K_INTERVAL>

-         (

-             <K_DAY> [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ] <R_TO> <K_SECOND> [ <O_OPENPAREN> scale=<S_NUMBER> <O_CLOSEPAREN> ]

-             {

-                if (precision == null) {

-                        dt = new IntervalDayToSecond();

-                    }

-                    else {

-                        pl = Long.decode(precision.image);

-                        if (scale == null) {

-                            dt = new IntervalDayToSecond(pl);

-                        }

-                        else {

-                            sl = Long.decode(scale.image);

-                            dt = new IntervalDayToSecond(pl, sl);

-                        }

-                    }

-                return dt;
             }

-           | <K_YEAR> [ <O_OPENPAREN> <S_NUMBER> <O_CLOSEPAREN> ] <R_TO> <K_MONTH>

-             {

-                if (precision == null) {

-                    dt = new IntervalYearToMonth();

-                }

-                else {

-                    pl = Long.decode(precision.image);

-                    dt = new IntervalYearToMonth(pl);

-                }

-                return dt;                 
             }
         )

-    | <K_TIME> { return TIME_TYPE;}

-    | <K_TIMESTAMP> [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]

-        [ <R_WITH> [ withLocalTimeZone=<K_LOCAL> ] withTimeZone=<K_TIME> <K_ZONE> ]

-        {

-          if (precision == null) {

-              dt = new TimeStampType();

-          }

-          else {

-              pl = Long.decode(precision.image);

-              dt = new TimeStampType(pl);

-          }

-          if (withLocalTimeZone !=  null) {

-              ((TimeStampType)dt).setWithLocalTimeZone();
          }

-          else if (withTimeZone != null) {

-              ((TimeStampType)dt).setWithTimeZone();
          }

-          return dt;
        }

-    | <K_INTEGER>  { return INTEGER_TYPE;}

-    | <K_INT>      { return INTEGER_TYPE;}

-    | <K_SMALLINT> { return SMALLINT_TYPE;}

-    | <K_FLOAT> [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]

-        {

-          if (precision == null) {

-              return new FloatType();

-          }

-          else {

-              pl = Long.decode(precision.image);

-              FloatType ft = new FloatType(pl);

-              return ft;
          }

-        }

-    | <K_REAL> { return new RealType();}

-    | <K_MLSLABEL> { return MLSLABEL_TYPE;}

-    | <K_PLS_INTEGER> { return PLS_INTEGER_TYPE;}

-    | <K_SIMPLE_INTEGER> { return SIMPLE_INTEGER_TYPE;}

-    | <K_SIMPLE_FLOAT> { return SIMPLE_FLOAT_TYPE;}

-    | <K_SIMPLE_DOUBLE> { return SIMPLE_DOUBLE_TYPE;}

-    | <K_SYS_REFCURSOR>  { return SYS_REFCURSOR_TYPE;}

-    | <K_BLOB > { return new BlobType();}

-    | <K_NCLOB> { return new NClobType();}

-    | <K_BFILE>  { return BFILE_TYPE;}

-    | <K_ROWID> { return ROWID_TYPE;}

-    | <K_UROWID> [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]

-        {

-          if (precision == null) {

-              return new URowIdType();

-          }

-          else {

-              pl = Long.decode(precision.image);

-              return new URowIdType(pl);

-          }
        }

-    | <K_DOUBLE> <K_PRECISION> { return new DoubleType();}

-    | <K_CHAR> [ t=<K_VARYING> ] [ <O_OPENPAREN> precision=<S_NUMBER> [ <K_BYTE> | <K_CHAR> ] <O_CLOSEPAREN> ]

-        [ <K_CHARACTER> <K_SET> <S_IDENTIFIER> [ <R_CHARSET> ] ]
        {

-          if (t == null) {

-              if (precision == null) {

-                  return new CharType();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  return new CharType(pl);
              }

-          }

-          else {

-              // ANSI syntax for VARCHAR2

-              if (precision == null) {

-                  return new VarChar2Type();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  return new VarChar2Type(pl);

-              }
          }
        }

-    | <K_VARCHAR> [ <K_VARYING> ] [ <O_OPENPAREN> precision=<S_NUMBER> [ <K_BYTE> | <K_CHAR> ] <O_CLOSEPAREN> ]

-       [ <K_CHARACTER> <K_SET> <S_IDENTIFIER> [ <R_CHARSET> ] ]

-        {

-          if (precision == null) {

-              return new VarCharType();

-          }

-          else {

-              pl = Long.decode(precision.image);

-              return new VarCharType(pl);

-          }

-        }

-    | <K_VARCHAR2> [ <K_VARYING> ] [ <O_OPENPAREN> precision=<S_NUMBER> [ <K_BYTE> | <K_CHAR> ] <O_CLOSEPAREN> ]

-        [ <K_CHARACTER> <K_SET> <S_IDENTIFIER> [ <R_CHARSET> ] ]

-        {

-            if (precision == null) {

-                return new VarChar2Type();

-            }

-            else {

-                pl = Long.decode(precision.image);

-                return new VarChar2Type(pl);
            }
        }

-    | <K_CHARACTER> [ t=<K_VARYING> ] [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]

-        {

-          if (t == null) {

-              if (precision == null) {

-                  return new CharType();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  return new CharType(pl);

-              }

-          }

-          else {

-              // ANSI syntax for VARCHAR

-              if (precision == null) {

-                  return new VarCharType();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  return new VarCharType(pl);

-              }

-          }

-        }

-    | <K_NCHAR> [ t=<K_VARYING> ] [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]

-        {

-          if (t == null) {

-              if (precision == null) {

-                  return new NCharType();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  return new NCharType(pl);

-              }

-          }

-          else {

-              // ANSI syntax for NVARCHAR2

-              if (precision == null) {

-                  return new NVarChar2Type();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  return new NVarChar2Type(pl);

-              }

-          }

-        }

-    | <K_NVARCHAR> [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]
           {

-            if (precision == null) {

-                return new NVarChar2Type();

-            }

-            else {

-                pl = Long.decode(precision.image);

-                return new NVarChar2Type(pl);

-            }
      }

-    | <K_NVARCHAR2> [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]

-        {

-            if (precision == null) {

-                return new NVarChar2Type();

-            }

-            else {

-                pl = Long.decode(precision.image);

-                return new NVarChar2Type(pl);

-            }

-        }

-    | <K_NATIONAL> ( <K_CHARACTER> | <K_CHAR> ) [ t=<K_VARYING> ] [ <O_OPENPAREN> precision=<S_NUMBER> <O_CLOSEPAREN> ]

-        {

-          if (t == null) {

-              if (precision == null) {

-                  return new NCharType();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  return new NCharType(pl);

-              }

-          }

-          else {

-              // ANSI syntax for NVARCHAR2

-              if (precision == null) {

-                  return new NVarChar2Type();

-              }

-              else {

-                  pl = Long.decode(precision.image);

-                  return new NVarChar2Type(pl);

-              }

-          }

-        }

-    | <K_CLOB> [ <K_CHARACTER> <K_SET> <S_IDENTIFIER> [ <R_CHARSET> ] ] { return new ClobType();}

-}

-

-DatabaseType typeSpec():

-{boolean isTYPEType = false;

- boolean isROWTYPEType = false;

- DatabaseType dataType = null;

- String spec = null;

- String s = null;}

-{

-    (   LOOKAHEAD(3)

-        dataType=datatype()

-      | spec=columnSpec()

-        [

-          ( <O_OPENPAREN> <S_NUMBER> <O_CLOSEPAREN> )

-          |

-          <R_ANCHORED_TYPE>

-            {

-              isTYPEType=true;

-              s = spec + removeQuotes(tokenImage[R_ANCHORED_TYPE]);

-            }

-          |

-          <R_ANCHORED_ROWTYPE>

-            {

-              isROWTYPEType =true;

-              s = spec + removeQuotes(tokenImage[R_ANCHORED_ROWTYPE]);

-            }

-        ]

-    )

-    {

-      if (dataType == null && localTypes != null) {

-          // spec may need schema/catalog stripped off

-          String tName = spec;

-          StringTokenizer stok = new StringTokenizer(spec, ".");

-          while (stok.hasMoreTokens()) {

-              tName = stok.nextToken();

-          }

-          for (String typeName : localTypes.keySet()) {

-              if (typeName.equals(spec)) {

-                  dataType = localTypes.get(spec);

-                  break;

-              } else if (typeName.equals(tName)) {

-                  dataType = localTypes.get(tName);

-                  break;

-              }

-          }

-      }

-      if (dataType == null) {

-          UnresolvedType uType = new UnresolvedType(spec);

-          if (isTYPEType) {

-              TYPEType tType = new TYPEType(s);

-              tType.setEnclosedType(uType);

-              uType.setOwningType(tType);

-              dataType = tType;

-              localTypes.put(spec, dataType);

-          }

-          else if (isROWTYPEType) {

-              ROWTYPEType rType = new ROWTYPEType(s);

-              rType.setEnclosedType(uType);

-              uType.setOwningType(rType);

-              dataType = rType;

-              localTypes.put(spec, dataType);

-          }

-          else {

-              dataType = uType;

-          }

-      }

-      return dataType;
    }

-}

-

-String columnSpec():

-{String s1 = null;

- String s2 = null;

- String s3 = null;}

-{

-    s1=OracleObjectName() [ <O_DOT> s2=OracleObjectName() [ <O_DOT> s3=OracleObjectName() ] ]

-    {

-      StringBuilder sb = new StringBuilder(s1);

-      if (s2 != null) {

-          sb.append('.');

-          sb.append(s2);

-          if (s3 != null) {

-              sb.append('.');

-              sb.append(s3);

-          }

-      }

-      return sb.toString();

-    }

-}

-

-String tableSpec():

-{}

-{

-    OracleObjectName() [ <O_DOT> OracleObjectName() [ <O_ATSIGN> <S_IDENTIFIER> ] ]

-    {return token.image;}

-}

-

-String typeName():

-{}

-{

-    OracleObjectName() [ <O_DOT> OracleObjectName() ]

-    {return token.image;}

-}

-

-void typeOrSubTypeDeclaration(PLSQLPackageType packageType) :

-{String s = null;}

-{

-      typeDeclaration(packageType)

-    | subtypeDeclaration(packageType)

-}

-

-void typeDeclaration(PLSQLPackageType packageType) :

-{String s = null;}

-{

-    <R_TYPE> s=typeName() <R_IS> aTypeDeclaration(packageType, s) <O_SEMICOLON>

-}

-

-void aTypeDeclaration(PLSQLPackageType packageType, String typeName) :

-{String spec = null;

- String anchoredTypeName = null;

- boolean isTYPEType = false;

- boolean isROWTYPEType = false;

-}

-{

-      LOOKAHEAD(2)

-      recordDeclaration(packageType, typeName)

-    | plsqlTableDeclaration(packageType, typeName)

-    | LOOKAHEAD(2) varrayDeclaration(packageType)

-    | LOOKAHEAD(2) refCursorDeclaration(packageType, typeName)

-    | LOOKAHEAD(2)

-      spec=columnSpec()

-      (

-        <R_ANCHORED_TYPE>

-          {

-            isTYPEType=true;

-            anchoredTypeName = spec + removeQuotes(tokenImage[R_ANCHORED_TYPE]);

-          }

-        |

-        <R_ANCHORED_ROWTYPE>

-          {

-            isROWTYPEType =true;

-            anchoredTypeName = spec + removeQuotes(tokenImage[R_ANCHORED_ROWTYPE]);

-          }
      )

-      {

-         DatabaseType dataType = null;

-         UnresolvedType uType = new UnresolvedType(anchoredTypeName);

-         if (isTYPEType) {

-             TYPEType tType = new TYPEType(anchoredTypeName);

-             tType.setEnclosedType(uType);

-             uType.setOwningType(tType);

-             dataType = tType;

-         }

-         else if (isROWTYPEType) {

-             ROWTYPEType rType = new ROWTYPEType(anchoredTypeName);

-             rType.setEnclosedType(uType);

-             rType.setPackageType(packageType);

-             uType.setOwningType(rType);

-             dataType = rType;

-         }

-         PLSQLType newType = new PLSQLType(typeName);

-         newType.setEnclosedType(dataType);

-         packageType.addType(newType);

-         localTypes.put(typeName, newType);
      }

-}

-

-void recordDeclaration(PLSQLPackageType packageType, String typeName) :

-{

-  PLSQLRecordType plsqlRecordType = new PLSQLRecordType(typeName);

-  plsqlRecordType.setParentType(packageType);

-}

-{

-    <K_RECORD> <O_OPENPAREN>

-        fieldDeclarations(plsqlRecordType)

-    <O_CLOSEPAREN>

-    {
      packageType.addType(plsqlRecordType);

-      localTypes.put(typeName, plsqlRecordType);

-    }

-}

-

-void fieldDeclarations(PLSQLRecordType plsqlRecordType) :

-{}

-{

-    fieldDeclaration(plsqlRecordType) [ <O_COMMA> fieldDeclarations(plsqlRecordType) ]

-}

-

-void fieldDeclaration(PLSQLRecordType plsqlRecordType):

-{

-  String s = null;

-  DatabaseType dataType = null;

-  FieldType fieldType = null;

-}

-{

-    s=typeName() dataType=typeSpec() [ <R_NOT> <R_NULL> ] [ fieldDefaultAssignment() ]

-    {

-      fieldType = new FieldType(s);

-      fieldType.setEnclosedType(dataType);

-      plsqlRecordType.addField(fieldType);

-      if (dataType instanceof UnresolvedType) {

-          ((UnresolvedType)dataType).setOwningType(plsqlRecordType);

-      }
    }

-}

-

-void fieldDefaultAssignment():

-{}

-{

-    ( <O_ASSIGN> | <R_DEFAULT> ) skipToNextArg()

-}

-

-void subtypeDeclaration(PLSQLPackageType packageType) :

-{String subtypeName;

-DatabaseType subtype;

-Token notNull = null;

-Token rangeStart = null;

-Token rangeEnd = null;}

-{

-    <R_SUBTYPE> subtypeName=OracleObjectName() <R_IS> subtype=typeSpec()

-        [ <K_RANGE> rangeStart=<S_NUMBER> <O_DOUBLEDOT> rangeEnd=<S_NUMBER> ]

-        [ <R_NOT> notNull=<R_NULL> ] <O_SEMICOLON>

-    {

-      PLSQLSubType newPLSQLSubType = new PLSQLSubType(subtypeName);

-      newPLSQLSubType.setEnclosedType(subtype);

-      if (subtype instanceof UnresolvedType) {

-          ((UnresolvedType)subtype).setOwningType(newPLSQLSubType);
      }

-      if (subtype.isROWTYPEType()) {

-         ((ROWTYPEType)subtype).setPackageType(packageType);

-      }

-      packageType.addType(newPLSQLSubType);

-      if (notNull != null) {

-          newPLSQLSubType.setNotNull(true);
      }

-      if (rangeStart != null) {

-          long rStart = Long.decode(rangeStart.image).longValue();

-          long rEnd = Long.decode(rangeEnd.image).longValue();

-          newPLSQLSubType.setHasRange(true);

-          newPLSQLSubType.setRangeStart(rStart);

-          newPLSQLSubType.setRangeEnd(rEnd);
      }

-      localTypes.put(subtypeName, newPLSQLSubType);

-    }

-}

-

-void plsqlTableDeclaration(PLSQLPackageType packageType, String typeName) :

-{

-  PLSQLCollectionType plsqlTable = new PLSQLCollectionType(typeName);

-  plsqlTable.setParentType(packageType);

-  DatabaseType nestedType;

-}

+          }
+      }
+      return dt;
+    }
+}
+
+void constructorDeclaration():
+{}
 {
-    <R_TABLE> <R_OF> nestedType = typeSpec() [ <R_NOT> <R_NULL> ]

+  [ <K_CONSTRUCTOR> skipToReturn() <K_SELF><R_AS><K_RESULT> ]
+  [ <O_COMMA> constructorDeclaration() ]
+}
+
+void uniqList():
+{}
+{
+    OracleObjectName() ( <O_COMMA> OracleObjectName() )*
+}
+
+void pkList(TableType tableType):
+{}
+{
+    pk(tableType) ( <O_COMMA> pk(tableType) )*
+}
+
+void pk(TableType tableType):
+{
+String s = null;
+}
+{
+    s=OracleObjectName()
+    {
+       List<FieldType> columns = tableType.getColumns();
+       for (FieldType column : columns) {
+            if (column.getFieldName().equals(s)) {
+                column.setPk();
+                break;
+            }
+       }
+    }
+}
+
+void packageDeclaration(PLSQLPackageType packageType) :
+{}
+{
+      typeOrSubTypeDeclaration(packageType)
+    | cursorDeclaration(packageType)
+    | procedureSpec(packageType)
+    | functionSpec(packageType)
+    | LOOKAHEAD(2) variableDeclaration(packageType)
+    | pragmaDeclaration()
+}
+
+void variableDeclaration(PLSQLPackageType packageType):
+{String varName = null;
+ DatabaseType varType=null;}
+{
+    varName=OracleObjectName()
+      (
+          LOOKAHEAD(2) <R_EXCEPTION>
+        | [ LOOKAHEAD(2) <K_CONSTANT> ] varType=typeSpec() [ <R_NOT> <R_NULL> ] [ variableDefaultAssignment() ]
+      )
+    <O_SEMICOLON>
+    {
+        FieldType variable = new FieldType(varName);
+        variable.setEnclosedType(varType);
+        packageType.addLocalVariable(variable);
+        if (varType.isROWTYPEType()) {
+            ((ROWTYPEType)varType).setPackageType(packageType);
+        }
+    }
+}
+
+void variableDefaultAssignment():