Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Kucera2009-10-21 16:02:30 -0400
committerMike Kucera2009-10-21 16:02:30 -0400
commitbf53c0b68ee092b47c9e7d38795e9ebd25a2bdc0 (patch)
tree50978085d5af0c588441384468d224984ba98f6b
parent7b97f230cca8963374abaeae61dcf9a8cb85747f (diff)
downloadorg.eclipse.cdt-bf53c0b68ee092b47c9e7d38795e9ebd25a2bdc0.tar.gz
org.eclipse.cdt-bf53c0b68ee092b47c9e7d38795e9ebd25a2bdc0.tar.xz
org.eclipse.cdt-bf53c0b68ee092b47c9e7d38795e9ebd25a2bdc0.zip
Bug 292909 - backport XLC parser into 5.0 branch
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/META-INF/MANIFEST.MF2
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/.project2
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/META-INF/MANIFEST.MF2
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.classpath7
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.project28
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.jdt.core.prefs8
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/META-INF/MANIFEST.MF14
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/about.html24
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/build.properties15
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/VectorExtensionsTest.java203
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTest.java278
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTestSuite.java24
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcTestBase.java46
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPSpecTest.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPTests.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCSpecTests.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCommentTests.java34
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompleteParser2Tests.java33
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionBasicTest.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionParseTest.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationInclusionTests.java45
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationMacroTests.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationTests.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMPreprocessorInformationTest.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDigraphTrigraphTests.java33
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCCompleteParseExtensionsTest.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCTests.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRImageLocationTests.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRKnRTests.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRNodeSelectorTest.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRParserTestSuite.java63
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRQuickParser2Tests.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSelectionParseTest.java40
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSemanticsTests.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTaskParserTest.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTemplateTests.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTests.java39
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilOldTests.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilTests.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/suite/XlcTestSuite.java28
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/.classpath8
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.jdt.core.prefs8
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/META-INF/MANIFEST.MF25
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/about.html24
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/build.properties20
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/build.xml49
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCPPParser.g99
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCParser.g67
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcGrammarExtensions.g94
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCLanguage.java66
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPLanguage.java94
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPScannerExtensionConfiguration.java38
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPTokenMap.java198
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCScannerExtensionConfiguration.java38
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCTokenMap.java165
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java112
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCBuildASTParserAction.java63
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCPPBuildASTParserAction.java96
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/activator/XlcParserPlugin.java21
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCASTVectorTypeSpecifier.java25
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCNodeFactory.java20
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTModifiedArrayModifier.java98
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTVectorTypeSpecifier.java21
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPNodeFactory.java22
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/PreferenceInitializer.java22
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcLanguagePreferences.java111
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcPref.java35
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCASTVectorTypeSpecifier.java43
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCNodeFactory.java30
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTModifiedArrayModifier.java73
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTVectorTypeSpecifier.java33
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPNodeFactory.java33
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParser.java1433
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParserprs.java2167
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParsersym.java236
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParser.java2125
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParserprs.java3816
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParsersym.java296
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.properties20
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.xml50
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PrefCheckbox.java49
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.java53
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.properties19
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/XlcLanguageOptionsPreferencePage.java127
84 files changed, 13815 insertions, 3 deletions
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/META-INF/MANIFEST.MF b/lrparser/org.eclipse.cdt.core.lrparser.tests/META-INF/MANIFEST.MF
index afe29df131..92f6f2f666 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/META-INF/MANIFEST.MF
+++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name.0
Bundle-SymbolicName: org.eclipse.cdt.core.lrparser.tests
-Bundle-Version: 5.1.0.qualifier
+Bundle-Version: 5.0.2.qualifier
Require-Bundle: org.eclipse.core.runtime,
org.junit,
org.eclipse.cdt.core.tests,
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/.project b/lrparser/org.eclipse.cdt.core.lrparser/.project
index b101bd0e58..80cab22b5f 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser/.project
+++ b/lrparser/org.eclipse.cdt.core.lrparser/.project
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>org.eclipse.cdt.core.parser.c99</name>
+ <name>org.eclipse.cdt.core.lrparser</name>
<comment></comment>
<projects>
</projects>
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/META-INF/MANIFEST.MF b/lrparser/org.eclipse.cdt.core.lrparser/META-INF/MANIFEST.MF
index 5f6adddfee..c2361a8db7 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser/META-INF/MANIFEST.MF
+++ b/lrparser/org.eclipse.cdt.core.lrparser/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name.1
Bundle-SymbolicName: org.eclipse.cdt.core.lrparser;singleton:=true
-Bundle-Version: 5.0.1.qualifier
+Bundle-Version: 5.0.2.qualifier
Bundle-ClassPath: .
Require-Bundle: org.eclipse.cdt.core,
net.sourceforge.lpg.lpgjavaruntime;bundle-version="1.1.0";visibility:=reexport,
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.classpath b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.classpath
new file mode 100644
index 0000000000..64c5e31b7a
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.classpath
@@ -0,0 +1,7 @@
+<?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/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.project b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.project
new file mode 100644
index 0000000000..78df19795f
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.core.lrparser.xlc.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.jdt.core.prefs b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..3b4cf4f033
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Mon Mar 30 15:57:59 EDT 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/META-INF/MANIFEST.MF b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..4585010ad2
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: XLC Parser Tests
+Bundle-SymbolicName: org.eclipse.cdt.core.lrparser.xlc.tests
+Bundle-Version: 5.0.2.qualifier
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.junit,
+ org.eclipse.cdt.core.lrparser,
+ org.eclipse.cdt.core.lrparser.xlc,
+ org.eclipse.cdt.core.tests,
+ org.eclipse.cdt.core,
+ org.eclipse.cdt.core.lrparser.tests,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/about.html b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/about.html
new file mode 100644
index 0000000000..3b35b65391
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/about.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>About</title></head>
+
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>April 17, 2009</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body></html> \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/build.properties b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/build.properties
new file mode 100644
index 0000000000..6e948c2375
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/build.properties
@@ -0,0 +1,15 @@
+###############################################################################
+# Copyright (c) 2009 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# IBM Corporation - initial API and implementation
+###############################################################################
+
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/VectorExtensionsTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/VectorExtensionsTest.java
new file mode 100644
index 0000000000..2a23e0b60f
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/VectorExtensionsTest.java
@@ -0,0 +1,203 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests;
+
+import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
+import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
+import org.eclipse.cdt.core.dom.ast.IASTExpressionStatement;
+import org.eclipse.cdt.core.dom.ast.IASTFunctionCallExpression;
+import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition;
+import org.eclipse.cdt.core.dom.ast.IASTIdExpression;
+import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration;
+import org.eclipse.cdt.core.dom.ast.IASTStatement;
+import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+
+
+public class VectorExtensionsTest extends XlcTestBase {
+
+ public VectorExtensionsTest() {
+ }
+
+ public VectorExtensionsTest(String name) {
+ super(name);
+ }
+
+
+
+ public void testVector1() {
+ String code =
+ "int test() { \n" +
+ " vector unsigned int a = {1,2,3,4}; \n" +
+ " vector unsigned int b = {2,4,6,8}; \n" +
+ " vector unsigned int c = a + b; \n" +
+ " int e = b > a; \n" +
+ " int f = a[2]; \n" +
+ " vector unsigned int d = ++a; \n" +
+ "}\n";
+
+ parse(code, getCLanguage(), true);
+ parse(code, getCPPLanguage(), true);
+ }
+
+ public void testVectorDeclarations() {
+ String code =
+ "vector unsigned char a; \n" +
+ "vector signed char b; \n" +
+ "vector bool char c; \n" +
+ "vector unsigned short d; \n" +
+ "vector unsigned short int e; \n" +
+ "vector signed short f; \n" +
+ "vector signed short int g; \n" +
+ "vector bool short h; \n" +
+ "vector bool short int i; \n" +
+ "vector unsigned int j; \n" +
+ "vector unsigned long k; \n" +
+ "vector unsigned long int l; \n" +
+ "vector signed int m; \n" +
+ "vector signed long n; \n" +
+ "vector signed long int o; \n" +
+ "vector bool int p; \n" +
+ "vector bool long q; \n" +
+ "vector bool long int r; \n" +
+ "vector float s; \n" +
+ "vector pixel t; \n" +
+ "__vector __pixel u; \n";
+
+ parse(code, getCLanguage(), true);
+ parse(code, getCPPLanguage(), true);
+ }
+
+ // these are only treated as keywords inside a vector declaration
+ public void testReservedWords() {
+ String code =
+ "int pixel; " +
+ "int bool; ";
+
+ parse(code, getCLanguage(), true);
+ parse(code, getCPPLanguage(), true);
+ }
+
+
+ public void testVectorLiterals() {
+ String code =
+ "int test() {" +
+ " (vector unsigned int)(10); " +
+ " (vector unsigned int)(14, 82, 73, 700); " +
+ " (vector pixel)(14, 82, 73, 700); " +
+ " (vector bool int)(10); " +
+ "}";
+
+ parse(code, getCLanguage(), true);
+ parse(code, getCPPLanguage(), true);
+ }
+
+ public void testVectorInitializers() {
+ String code =
+ "int test() {" +
+ " vector unsigned int v3 = {1,2,3,4}; " +
+ "}";
+
+ parse(code, getCLanguage(), true);
+ parse(code, getCPPLanguage(), true);
+ }
+
+
+ public void testVectorTypedefs() {
+ String code =
+ "int test() {" +
+ " typedef vector pixel vint16; " +
+ " vint16 v1;" +
+ "}";
+
+ parse(code, getCLanguage(), true);
+ parse(code, getCPPLanguage(), true);
+ }
+
+ public void testVectorCompoundLiterals() {
+ String code =
+ "int test() {" +
+ " (vector unsigned int){10}; " +
+ " (vector unsigned int){14, 82, 73, 700}; " +
+ " (vector pixel){14, 82, 73, 700}; " +
+ " (vector bool int){10}; " +
+ "}";
+
+ parse(code, getCLanguage(), true);
+ parse(code, getCPPLanguage(), true);
+ }
+
+ public void testVectorAlignof() {
+ String code =
+ "int test() {" +
+ " vector unsigned int v1 = (vector unsigned int)(10); \n" +
+ " vector unsigned int *pv1 = &v1; \n" +
+ " __alignof__(v1); \n" +
+ " __alignof__(&v1); \n" +
+ " __alignof__(*pv1); \n" +
+ " __alignof__(pv1); \n" +
+ " __alignof__(vector signed char); \n" +
+ "}";
+
+ parse(code, getCLanguage(), true);
+ parse(code, getCPPLanguage(), true);
+ }
+
+ public void testVectorTypeof() {
+ String code =
+ "int test() {" +
+ " vector unsigned int v1 = (vector unsigned int)(10); \n" +
+ " vector unsigned int *pv1 = &v1; \n" +
+ " __typeof__(v1); \n" +
+ " __typeof__(&v1); \n" +
+ " __typeof__(*pv1); \n" +
+ " __typeof__(pv1); \n" +
+ " __typeof__(vector signed char); \n" +
+ "}";
+
+ parse(code, getCLanguage(), true);
+ parse(code, getCPPLanguage(), true);
+ }
+
+ public void _testOverloads() {
+ String code =
+ "void foo(int); \n" +
+ "void foo(vector unsigned int); \n" +
+ "void foo(vector pixel) \n" +
+ "int test() { \n" +
+ " int x; \n" +
+ " vector unsigned int y; \n" +
+ " vector pixel z; \n" +
+ " foo(x); \n" +
+ " foo(y); \n" +
+ " foo(z); \n" +
+ "} \n";
+
+ IASTTranslationUnit tu = parse(code, getCPPLanguage(), true);
+
+
+ IASTDeclaration[] decls = tu.getDeclarations();
+ IASTName foo1 = ((IASTSimpleDeclaration)decls[0]).getDeclarators()[0].getName();
+ IASTName foo2 = ((IASTSimpleDeclaration)decls[1]).getDeclarators()[0].getName();
+ IASTName foo3 = ((IASTSimpleDeclaration)decls[2]).getDeclarators()[0].getName();
+
+ IASTFunctionDefinition func = (IASTFunctionDefinition) decls[4];
+ IASTStatement[] stats = ((IASTCompoundStatement)func.getBody()).getStatements();
+
+ IASTName fooCall1 = ((IASTIdExpression)((IASTFunctionCallExpression)((IASTExpressionStatement)stats[3]).getExpression()).getFunctionNameExpression()).getName();
+ IASTName fooCall2 = ((IASTIdExpression)((IASTFunctionCallExpression)((IASTExpressionStatement)stats[4]).getExpression()).getFunctionNameExpression()).getName();
+ IASTName fooCall3 = ((IASTIdExpression)((IASTFunctionCallExpression)((IASTExpressionStatement)stats[5]).getExpression()).getFunctionNameExpression()).getName();
+
+ assertSame(foo1.resolveBinding(), fooCall1.resolveBinding());
+ assertSame(foo2.resolveBinding(), fooCall2.resolveBinding());
+ assertSame(foo3.resolveBinding(), fooCall3.resolveBinding());
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTest.java
new file mode 100644
index 0000000000..acebb2011a
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTest.java
@@ -0,0 +1,278 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests;
+
+import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcLanguagePreferences;
+import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcPref;
+
+
+public class XlcExtensionsTest extends XlcTestBase {
+
+ public XlcExtensionsTest() {
+ }
+
+ public XlcExtensionsTest(String name) {
+ super(name);
+ }
+
+ public void testHexadecimalFloatingPointLiterals() throws Exception {
+ String code =
+ "int test() { \n"+
+ " 0x0A2B.0FDp+2f; \n"+
+ " 0X12D.p-44F; \n"+
+ " 0xBACP+2L; \n"+
+ "}\n";
+
+ parse(code, getCLanguage(), true);
+ parse(code, getCPPLanguage(), true);
+ }
+
+ public void testFuncPredefinedIdentifier() {
+ String code =
+ "void test() { \n" +
+ " __func__; \n" +
+ " } \n";
+
+ parse(code, getCLanguage(), true);
+ parse(code, getCPPLanguage(), true);
+ }
+
+ public void testStringConcatenation() {
+ String code =
+ "void test() { \n" +
+ " \"hello \" \"there\"; \n" +
+ " \"hello \" L\"there\"; \n" +
+ " } \n";
+
+ parse(code, getCLanguage(), true);
+ parse(code, getCPPLanguage(), true);
+ }
+
+ public void testLongLong() {
+ String code =
+ "void test() { \n" +
+ " long long x; \n" +
+ " } \n";
+
+ parse(code, getCLanguage(), true);
+ parse(code, getCPPLanguage(), true);
+ }
+
+ public void testComplex() {
+ String code =
+ "void test() { \n" +
+ " float _Complex x; \n" +
+ " double _Complex y; \n" +
+ " long double _Complex z; \n" +
+ " } \n";
+
+ parse(code, getCLanguage(), true);
+ parse(code, getCPPLanguage(), true);
+ }
+
+ public void testBool() {
+ String code =
+ "_Bool f(int a, int b) { \n" +
+ " return a==b; \n" +
+ " } \n";
+
+ parse(code, getCLanguage(), true);
+ }
+
+ public void testTrailingCommaInEnum() {
+ String code =
+ "void test() { \n" +
+ " enum grain { oats, wheat, barley, corn, rice, }; \n" +
+ " } \n";
+
+ parse(code, getCLanguage(), true);
+ parse(code, getCPPLanguage(), true);
+ }
+
+
+ public void testNonLValueArraySubscript() {
+ String code =
+ "struct trio{int a[3];}; \n" +
+ "struct trio f(); \n" +
+ "foo (int index) \n" +
+ "{ \n" +
+ " return f().a[index]; \n" +
+ "} \n";
+
+ parse(code, getCLanguage(), true);
+ }
+
+ public void testStaticArrayIndices() {
+ String code =
+ "void test() { \n" +
+ " void foo1(int arr [static 10]); \n" +
+ " int i = 10; \n" +
+ " void foo2(int arr [static const i]); \n" +
+ " } \n";
+
+ parse(code, getCLanguage(), true);
+ }
+
+ public void testFunctionLikeMacrosVariableArguments() {
+ String code =
+ "#define debug(...) fprintf(stderr, __VA_ARGS__) \n" +
+ "int test() { \n" +
+ " debug(\"flag\"); \n" +
+ " } \n";
+
+ parse(code, getCLanguage(), false);
+ }
+
+ public void testFunctionLikeMacrosEmptyArgument() {
+ String code =
+ "#define SUM(a,b,c) a + b + c \n" +
+ "int test() { \n" +
+ " SUM(1,,3); \n" +
+ " } \n";
+
+ parse(code, getCLanguage(), true);
+ }
+
+ public void testPredefinedMacroNamesC() {
+ String code =
+ "void test() { \n" +
+ " __DATE__; \n" +
+ " __FILE__; \n" +
+ " __LINE__; \n" +
+ " __STDC_HOSTED__; \n" +
+ " __STDC_VERSION__; \n" +
+ " __TIME__; \n" +
+ "} \n";
+
+ parse(code, getCLanguage(), true);
+ }
+
+ public void testPredefinedMacroNamesCpp() {
+ String code =
+ "void test() { \n" +
+ " __DATE__; \n" +
+ " __FILE__; \n" +
+ " __LINE__; \n" +
+ " __TIME__; \n" +
+ // " __cplusplus; \n" +
+ "} \n";
+
+ parse(code, getCPPLanguage(), true);
+ }
+
+
+ public void testCompoundLiterals() {
+ String code =
+ "void test() { \n" +
+ " drawline((struct point){6,7}); \n" +
+ " } \n";
+
+ parse(code, getCLanguage(), false);
+ }
+
+
+
+ public void testPragma() {
+ String code =
+ "void test() { \n" +
+ " _Pragma ( \"pack(full)\" ) \n" +
+ " } \n";
+
+ parse(code, getCLanguage(), true);
+ }
+
+
+ public void testStandardPragmas() {
+ String code =
+ "#pragma STDC FP_CONTRACT ON \n" +
+ "#pragma STDC FENV_ACCESS OFF \n" +
+ "#pragma STDC CX_LIMITED_RANGE DEFAULT \n";
+
+ parse(code, getCLanguage(), true);
+ }
+
+ public void testLineDirective() {
+ String code =
+ "#define LINE200 200 \n" +
+ "#line 100 \n" +
+ "#line LINE200 \n";
+
+ parse(code, getCLanguage(), true);
+ }
+
+
+ /**
+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=228826
+ * http://publib.boulder.ibm.com/infocenter/comphelp/v101v121/index.jsp?topic=/com.ibm.xlcpp101.aix.doc/language_ref/restrict_type_qualifier.html
+ *
+ * TODO Need a properties page so that things like this can be configured by the user.
+ */
+ public void testRestrictC() {
+ String code =
+ "void foo(int n, int * restrict a, int * __restrict b, int * __restrict__ c) {} ";
+
+ parse(code, getCLanguage(), true);
+ }
+
+ public void testRestrictCPPOn() {
+ String code =
+ "void foo(int n, int * restrict a, int * __restrict b, int * __restrict__ c) {} ";
+
+ parse(code, getCPPLanguage(), true);
+ }
+ public void testRestrictCPPOff() {
+ XlcLanguagePreferences.setWorkspacePreference(XlcPref.SUPPORT_RESTRICT_IN_CPP, String.valueOf(false));
+ String code =
+ "void restrict(); \n " +
+ "void foo(int n, int * __restrict b, int * __restrict__ c) {} ";
+
+ parse(code, getCPPLanguage(), true);
+ }
+
+
+
+ public void testUTFLiterals() {
+ String code =
+ "void test() { \n " +
+ " u\"ucs characters \\u1234 and \\u8180 \"; \n " +
+ " U\"ucs characters \\u1234 and \\u8180 \"; \n " +
+ " U\"concatenation \\u1234 \" u\"is allowed \\u8180 \"; \n " +
+ " u'\\u1234'; \n " +
+ " U'\\u1234'; \n " +
+ "}";
+
+ parse(code, getCLanguage(), true);
+ parse(code, getCPPLanguage(), true);
+ }
+
+
+ public void testFloatingPointTypes() {
+ String code =
+ " _Decimal32 x = 22.2df; \n " +
+ " _Decimal64 y = 33.3dd; \n " +
+ " _Decimal128 z = 33.3dl; \n ";
+
+ parse(code, getCLanguage(), true);
+ parse(code, getCPPLanguage(), true);
+ }
+
+ public void testVariableLengthArrays() {
+ String code =
+ "double maximum1(int n, int m, double a[n][m]);\n" +
+ "double maximum2(int n, int m, double a[*][*]);\n" +
+ "double maximum3(int n, int m, double a[ ][*]);\n" +
+ "double maximum4(int n, int m, double a[ ][m]);\n";
+
+ parse(code, getCLanguage(), true);
+ parse(code, getCPPLanguage(), true); // xlc supports this in C++
+ }
+
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTestSuite.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTestSuite.java
new file mode 100644
index 0000000000..e5434d9a53
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTestSuite.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class XlcExtensionsTestSuite extends TestSuite {
+
+ public static Test suite() {
+ return new TestSuite() {{
+ addTestSuite(VectorExtensionsTest.class);
+ addTestSuite(XlcExtensionsTest.class);
+ }};
+ }
+} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcTestBase.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcTestBase.java
new file mode 100644
index 0000000000..55943dab30
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcTestBase.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.core.lrparser.tests.ParseHelper;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcTestBase extends TestCase {
+
+ public XlcTestBase() {
+ }
+
+ public XlcTestBase(String name) {
+ super(name);
+ }
+
+ protected IASTTranslationUnit parse(String code, ILanguage language, boolean checkBindings) {
+ ParseHelper.Options options = new ParseHelper.Options();
+ options.setCheckSyntaxProblems(true);
+ options.setCheckPreprocessorProblems(true);
+ options.setCheckBindings(checkBindings);
+ return ParseHelper.parse(code, language, options);
+ }
+
+ protected XlcCLanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected XlcCPPLanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPSpecTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPSpecTest.java
new file mode 100644
index 0000000000..9d4329d6b0
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPSpecTest.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRCPPSpecTest;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRCPPSpecTest extends LRCPPSpecTest {
+ public static TestSuite suite() {
+ return suite(XlcLRCPPSpecTest.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPTests.java
new file mode 100644
index 0000000000..46a39b5d9c
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPTests.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRCPPTests;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRCPPTests extends LRCPPTests {
+ public static TestSuite suite() {
+ return suite(XlcLRCPPTests.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCSpecTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCSpecTests.java
new file mode 100644
index 0000000000..2821ad00ed
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCSpecTests.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRCSpecTests;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRCSpecTests extends LRCSpecTests {
+ public static TestSuite suite() {
+ return suite(XlcLRCSpecTests.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCommentTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCommentTests.java
new file mode 100644
index 0000000000..282a6001b1
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCommentTests.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRCommentTests;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRCommentTests extends LRCommentTests {
+
+
+ public static TestSuite suite() {
+ return suite(XlcLRCommentTests.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompleteParser2Tests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompleteParser2Tests.java
new file mode 100644
index 0000000000..74708eeef5
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompleteParser2Tests.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRCompleteParser2Tests;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRCompleteParser2Tests extends LRCompleteParser2Tests {
+
+ public static TestSuite suite() {
+ return suite(XlcLRCompleteParser2Tests.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionBasicTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionBasicTest.java
new file mode 100644
index 0000000000..dae39fc6ab
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionBasicTest.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRCompletionBasicTest;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRCompletionBasicTest extends LRCompletionBasicTest {
+ public static TestSuite suite() {
+ return new TestSuite(XlcLRCompletionBasicTest.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionParseTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionParseTest.java
new file mode 100644
index 0000000000..55a8e06b15
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionParseTest.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRCompletionParseTest;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRCompletionParseTest extends LRCompletionParseTest {
+ public static TestSuite suite() {
+ return new TestSuite(XlcLRCompletionParseTest.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationInclusionTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationInclusionTests.java
new file mode 100644
index 0000000000..bd593c9770
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationInclusionTests.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRDOMLocationInclusionTests;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRDOMLocationInclusionTests extends LRDOMLocationInclusionTests {
+
+ public XlcLRDOMLocationInclusionTests() {
+ super();
+ }
+
+ public XlcLRDOMLocationInclusionTests(String name, Class<Object> className) {
+ super(name, className);
+ }
+
+ public XlcLRDOMLocationInclusionTests(String name) {
+ super(name);
+ }
+
+ public static TestSuite suite() {
+ return new TestSuite(XlcLRDOMLocationInclusionTests.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationMacroTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationMacroTests.java
new file mode 100644
index 0000000000..2fc7eca528
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationMacroTests.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRDOMLocationMacroTests;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRDOMLocationMacroTests extends LRDOMLocationMacroTests {
+ public static TestSuite suite() {
+ return suite(XlcLRDOMLocationMacroTests.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationTests.java
new file mode 100644
index 0000000000..df69eee213
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationTests.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRDOMLocationTests;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRDOMLocationTests extends LRDOMLocationTests {
+ public static TestSuite suite() {
+ return suite(XlcLRDOMLocationTests.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMPreprocessorInformationTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMPreprocessorInformationTest.java
new file mode 100644
index 0000000000..a2df090a3f
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMPreprocessorInformationTest.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRDOMPreprocessorInformationTest;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRDOMPreprocessorInformationTest extends LRDOMPreprocessorInformationTest {
+ public static TestSuite suite() {
+ return suite(XlcLRDOMPreprocessorInformationTest.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDigraphTrigraphTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDigraphTrigraphTests.java
new file mode 100644
index 0000000000..b4c145fd8d
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDigraphTrigraphTests.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRDigraphTrigraphTests;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRDigraphTrigraphTests extends LRDigraphTrigraphTests {
+
+ public static TestSuite suite() {
+ return new TestSuite(XlcLRDigraphTrigraphTests.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCCompleteParseExtensionsTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCCompleteParseExtensionsTest.java
new file mode 100644
index 0000000000..64e0b5f485
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCCompleteParseExtensionsTest.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRGCCCompleteParseExtensionsTest;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRGCCCompleteParseExtensionsTest extends LRGCCCompleteParseExtensionsTest {
+ public static TestSuite suite() {
+ return suite(XlcLRGCCCompleteParseExtensionsTest.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCTests.java
new file mode 100644
index 0000000000..8c00ee22b2
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCTests.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRGCCTests;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRGCCTests extends LRGCCTests {
+ public static TestSuite suite() {
+ return suite(XlcLRGCCTests.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRImageLocationTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRImageLocationTests.java
new file mode 100644
index 0000000000..93391459d9
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRImageLocationTests.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRImageLocationTests;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRImageLocationTests extends LRImageLocationTests {
+ public static TestSuite suite() {
+ return suite(XlcLRImageLocationTests.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRKnRTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRKnRTests.java
new file mode 100644
index 0000000000..aecdb3e2e3
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRKnRTests.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRKnRTests;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRKnRTests extends LRKnRTests {
+ public static TestSuite suite() {
+ return suite(XlcLRKnRTests.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRNodeSelectorTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRNodeSelectorTest.java
new file mode 100644
index 0000000000..1f45d3b2af
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRNodeSelectorTest.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRNodeSelectorTest;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRNodeSelectorTest extends LRNodeSelectorTest {
+ public static TestSuite suite() {
+ return suite(XlcLRNodeSelectorTest.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRParserTestSuite.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRParserTestSuite.java
new file mode 100644
index 0000000000..033768cb05
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRParserTestSuite.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class XlcLRParserTestSuite extends TestSuite {
+
+ // TODO: the following test are not being reused
+ //
+ // DOMGCCSelectionParseExtensionsTest
+ // DOMSelectionParseTest
+ // GCCCompleteParseExtensionsTest
+ // QuickParser2Tests
+ //
+ // and perhaps others
+
+ public static Test suite() {
+ return new TestSuite() {{
+
+ addTest(XlcLRCommentTests.suite());
+ addTest(XlcLRCompleteParser2Tests.suite());
+ addTest(XlcLRCompletionBasicTest.suite());
+ addTest(XlcLRCompletionParseTest.suite());
+ addTest(XlcLRCPPSpecTest.suite());
+ addTest(XlcLRCPPTests.suite());
+ addTest(XlcLRCSpecTests.suite()); // a couple of failures
+ addTest(XlcLRDigraphTrigraphTests.suite());
+ addTest(XlcLRDOMLocationInclusionTests.suite());
+ addTest(XlcLRDOMLocationMacroTests.suite());
+ addTest(XlcLRDOMLocationTests.suite());
+ addTest(XlcLRDOMPreprocessorInformationTest.suite());
+ addTest(XlcLRGCCTests.suite());
+ addTest(XlcLRGCCCompleteParseExtensionsTest.suite());
+ addTest(XlcLRImageLocationTests.suite());
+ addTest(XlcLRKnRTests.suite()); // mostly fail due to ambiguities
+ addTest(XlcLRNodeSelectorTest.suite());
+ addTest(XlcLRQuickParser2Tests.suite());
+ addTest(XlcLRSelectionParseTest.suite()); // this one still has a lot of failing tests though
+ addTest(XlcLRSemanticsTests.suite());
+ addTest(XlcLRTaskParserTest.suite());
+ addTest(XlcLRTemplateTests.suite());
+ addTest(XlcLRTests.suite()); // has some tests that do fail
+ addTest(XlcLRUtilOldTests.suite());
+ addTest(XlcLRUtilTests.suite());
+ //addTest(XlcLRCPPImplicitNameTests.suite());
+ //addTest(LRInactiveCodeTests.suite());
+
+ }};
+ }
+}
+
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRQuickParser2Tests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRQuickParser2Tests.java
new file mode 100644
index 0000000000..eae58926ae
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRQuickParser2Tests.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRQuickParser2Tests;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRQuickParser2Tests extends LRQuickParser2Tests {
+ public static TestSuite suite() {
+ return new TestSuite(XlcLRQuickParser2Tests.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSelectionParseTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSelectionParseTest.java
new file mode 100644
index 0000000000..4fc4be89bd
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSelectionParseTest.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRSelectionParseTest;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRSelectionParseTest extends LRSelectionParseTest {
+
+ public XlcLRSelectionParseTest() {
+ }
+
+ public XlcLRSelectionParseTest(String name) {
+ super(name);
+ }
+
+ public static TestSuite suite() {
+ return new TestSuite(XlcLRSelectionParseTest.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSemanticsTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSemanticsTests.java
new file mode 100644
index 0000000000..24449764d5
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSemanticsTests.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRSemanticsTests;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRSemanticsTests extends LRSemanticsTests {
+ public static TestSuite suite() {
+ return suite(XlcLRSemanticsTests.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTaskParserTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTaskParserTest.java
new file mode 100644
index 0000000000..cbad9af4c2
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTaskParserTest.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRTaskParserTest;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRTaskParserTest extends LRTaskParserTest {
+ public static TestSuite suite() {
+ return suite(XlcLRTaskParserTest.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTemplateTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTemplateTests.java
new file mode 100644
index 0000000000..c797e6ad59
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTemplateTests.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRTemplateTests;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRTemplateTests extends LRTemplateTests {
+ public static TestSuite suite() {
+ return suite(XlcLRTemplateTests.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTests.java
new file mode 100644
index 0000000000..6cb19033f2
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTests.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRTests;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRTests extends LRTests {
+
+ public XlcLRTests(String name) {
+ super(name);
+ // TODO Auto-generated constructor stub
+ }
+
+ public static TestSuite suite() {
+ return suite(XlcLRTests.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilOldTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilOldTests.java
new file mode 100644
index 0000000000..2fbfbf8874
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilOldTests.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRUtilOldTests;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRUtilOldTests extends LRUtilOldTests {
+ public static TestSuite suite() {
+ return suite(XlcLRUtilOldTests.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilTests.java
new file mode 100644
index 0000000000..1eae1701af
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilTests.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.base;
+
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.lrparser.tests.LRUtilTests;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage;
+import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
+
+public class XlcLRUtilTests extends LRUtilTests {
+ public static TestSuite suite() {
+ return suite(XlcLRUtilTests.class);
+ }
+
+ protected ILanguage getCLanguage() {
+ return XlcCLanguage.getDefault();
+ }
+
+ protected ILanguage getCPPLanguage() {
+ return XlcCPPLanguage.getDefault();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/suite/XlcTestSuite.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/suite/XlcTestSuite.java
new file mode 100644
index 0000000000..5c03a49515
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/suite/XlcTestSuite.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.parser.xlc.tests.suite;
+
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.parser.xlc.tests.XlcExtensionsTestSuite;
+import org.eclipse.cdt.core.parser.xlc.tests.base.XlcLRParserTestSuite;
+
+public class XlcTestSuite extends TestSuite {
+
+ public static Test suite() {
+ return new TestSuite() {{
+ addTest(XlcExtensionsTestSuite.suite());
+ addTest(XlcLRParserTestSuite.suite());
+ }};
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/.classpath b/xlc/org.eclipse.cdt.core.lrparser.xlc/.classpath
new file mode 100644
index 0000000000..bc645e1d3b
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/.classpath
@@ -0,0 +1,8 @@
+<?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/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="parser"/>
+ <classpathentry kind="src" path="ui"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.jdt.core.prefs b/xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..570ff24edd
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Mon Mar 30 15:50:28 EDT 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/META-INF/MANIFEST.MF b/xlc/org.eclipse.cdt.core.lrparser.xlc/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..cbceb90b47
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name.1
+Bundle-SymbolicName: org.eclipse.cdt.core.lrparser.xlc;singleton:=true
+Bundle-Version: 5.0.2.qualifier
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.cdt.core,
+ org.eclipse.cdt.core.lrparser,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.cdt.ui,
+ org.eclipse.ui
+Export-Package: org.eclipse.cdt.core.lrparser.xlc,
+ org.eclipse.cdt.core.lrparser.xlc.action,
+ org.eclipse.cdt.core.lrparser.xlc.activator,
+ org.eclipse.cdt.core.lrparser.xlc.ast,
+ org.eclipse.cdt.core.lrparser.xlc.preferences,
+ org.eclipse.cdt.internal.core.lrparser.xlc.ast,
+ org.eclipse.cdt.internal.core.lrparser.xlc.c,
+ org.eclipse.cdt.internal.core.lrparser.xlc.cpp,
+ org.eclipse.cdt.internal.core.lrparser.xlc.ui.preferences
+Bundle-ActivationPolicy: lazy
+Bundle-Activator: org.eclipse.cdt.core.lrparser.xlc.activator.XlcParserPlugin
+Bundle-Vendor: %Bundle-Vendor.0
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/about.html b/xlc/org.eclipse.cdt.core.lrparser.xlc/about.html
new file mode 100644
index 0000000000..0277ef7309
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/about.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>About</title></head>
+
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>April 17, 2009</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body></html> \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/build.properties b/xlc/org.eclipse.cdt.core.lrparser.xlc/build.properties
new file mode 100644
index 0000000000..3195255db1
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/build.properties
@@ -0,0 +1,20 @@
+###############################################################################
+# Copyright (c) 2009 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# IBM Corporation - initial API and implementation
+###############################################################################
+
+source.. = parser/,\
+ ui/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html
+src.includes = about.html
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/build.xml b/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/build.xml
new file mode 100644
index 0000000000..99a4603a95
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/build.xml
@@ -0,0 +1,49 @@
+<!--
+ Copyright (c) 2009 IBM Corporation and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+ IBM Corporation - initial API and implementation
+-->
+
+<project name="XLC Parsers" default="c" basedir=".">
+
+ <import file="../../org.eclipse.cdt.core.lrparser/grammar/generate.xml"/>
+
+ <property name="c_location" value="../parser/org/eclipse/cdt/internal/core/lrparser/xlc/c"/>
+ <property name="cpp_location" value="../parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp"/>
+
+
+ <target name="c">
+ <antcall target="generate_c">
+ <param name="grammar_name" value="XlcCParser"/>
+ </antcall>
+ </target>
+
+ <target name="cpp">
+ <antcall target="generate_cpp">
+ <param name="grammar_name" value="XlcCPPParser"/>
+ </antcall>
+ </target>
+
+
+ <target name="generate_c">
+ <antcall target="generate">
+ <param name="grammar_dir" value="xlc"/>
+ <param name="output_dir" value="${c_location}"/>
+ <param name="grammar_name" value="${grammar_name}"/>
+ </antcall>
+ </target>
+
+ <target name="generate_cpp">
+ <antcall target="generate">
+ <param name="grammar_dir" value="xlc"/>
+ <param name="output_dir" value="${cpp_location}"/>
+ <param name="grammar_name" value="${grammar_name}"/>
+ </antcall>
+ </target>
+
+</project> \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCPPParser.g b/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCPPParser.g
new file mode 100644
index 0000000000..b2bc76c468
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCPPParser.g
@@ -0,0 +1,99 @@
+-----------------------------------------------------------------------------------
+-- Copyright (c) 2009 IBM Corporation and others.
+-- All rights reserved. This program and the accompanying materials
+-- are made available under the terms of the Eclipse Public License v1.0
+-- which accompanies this distribution, and is available at
+-- http://www.eclipse.org/legal/epl-v10.html
+--
+-- Contributors:
+-- IBM Corporation - initial API and implementation
+-----------------------------------------------------------------------------------
+
+%options la=2
+%options package=org.eclipse.cdt.internal.core.lrparser.xlc.cpp
+%options template=LRParserTemplate.g
+
+
+$Import
+ GPPGrammar.g
+$End
+
+$Import
+ XlcGrammarExtensions.g
+$End
+
+$Globals
+/.
+ import org.eclipse.cdt.core.lrparser.xlc.action.XlcCPPBuildASTParserAction;
+ import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPSecondaryParserFactory;
+ import org.eclipse.cdt.internal.core.lrparser.xlc.ast.XlcCPPNodeFactory;
+./
+$End
+
+$Define
+
+ $build_action_class /. XlcCPPBuildASTParserAction ./
+ $parser_factory_create_expression /. GPPSecondaryParserFactory.getDefault() ./
+ $node_factory_create_expression /. XlcCPPNodeFactory.getDefault() ./
+
+$End
+
+
+
+$Terminals
+
+ restrict
+
+$End
+
+
+$Start
+ translation_unit
+$End
+
+
+$Rules
+
+
+cv_qualifier
+ ::= 'restrict'
+
+block_declaration
+ ::= vector_declaration
+
+
+identifier_token
+ ::= 'vector'
+ | 'pixel'
+
+
+specifier_qualifier
+ ::= 'typedef'
+ /. $Build consumeToken(); $EndBuild ./
+
+
+array_modifier
+ ::= '[' <openscope-ast> array_modifier_type_qualifiers ']'
+ /. $Build consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); $EndBuild ./
+ | '[' <openscope-ast> array_modifier_type_qualifiers assignment_expression ']'
+ /. $Build consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); $EndBuild ./
+ | '[' 'static' assignment_expression ']'
+ /. $Build consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); $EndBuild ./
+ | '[' 'static' <openscope-ast> array_modifier_type_qualifiers assignment_expression ']'
+ /. $Build consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); $EndBuild ./
+ | '[' <openscope-ast> array_modifier_type_qualifiers 'static' assignment_expression ']'
+ /. $Build consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); $EndBuild ./
+ | '[' '*' ']'
+ /. $Build consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); $EndBuild ./
+ | '[' <openscope-ast> array_modifier_type_qualifiers '*' ']'
+ /. $Build consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); $EndBuild ./
+
+
+array_modifier_type_qualifiers
+ ::= type_qualifier_list
+
+type_qualifier_list
+ ::= cv_qualifier
+ | type_qualifier_list cv_qualifier
+
+$End \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCParser.g b/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCParser.g
new file mode 100644
index 0000000000..a6c7ae9669
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCParser.g
@@ -0,0 +1,67 @@
+-----------------------------------------------------------------------------------
+-- Copyright (c) 2009 IBM Corporation and others.
+-- All rights reserved. This program and the accompanying materials
+-- are made available under the terms of the Eclipse Public License v1.0
+-- which accompanies this distribution, and is available at
+-- http://www.eclipse.org/legal/epl-v10.html
+--
+-- Contributors:
+-- IBM Corporation - initial API and implementation
+-----------------------------------------------------------------------------------
+
+%options la=2
+%options package=org.eclipse.cdt.internal.core.lrparser.xlc.c
+%options template=LRParserTemplate.g
+
+
+$Import
+ GCCGrammar.g
+$End
+
+$Import
+ XlcGrammarExtensions.g
+$End
+
+
+$Globals
+/.
+ import org.eclipse.cdt.core.lrparser.xlc.action.XlcCBuildASTParserAction;
+ import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCSecondaryParserFactory;
+ import org.eclipse.cdt.internal.core.lrparser.xlc.ast.XlcCNodeFactory;
+./
+$End
+
+
+$Define
+
+ $build_action_class /. XlcCBuildASTParserAction ./
+ $parser_factory_create_expression /. GCCSecondaryParserFactory.getDefault() ./
+ $node_factory_create_expression /. XlcCNodeFactory.getDefault() ./
+
+$End
+
+
+$Start
+ translation_unit
+$End
+
+
+$Rules
+
+declaration
+ ::= vector_declaration
+
+identifier_token
+ ::= 'pixel'
+ | 'vector'
+ | 'bool'
+
+declarator_id_name
+ ::= 'pixel'
+ /. $Build consumeIdentifierName(); $EndBuild ./
+ | 'vector'
+ /. $Build consumeIdentifierName(); $EndBuild ./
+ | 'bool'
+ /. $Build consumeIdentifierName(); $EndBuild ./
+
+$End \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcGrammarExtensions.g b/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcGrammarExtensions.g
new file mode 100644
index 0000000000..58fe3cf505
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcGrammarExtensions.g
@@ -0,0 +1,94 @@
+-----------------------------------------------------------------------------------
+-- Copyright (c) 2009 IBM Corporation and others.
+-- All rights reserved. This program and the accompanying materials
+-- are made available under the terms of the Eclipse Public License v1.0
+-- which accompanies this distribution, and is available at
+-- http://www.eclipse.org/legal/epl-v10.html
+--
+-- Contributors:
+-- IBM Corporation - initial API and implementation
+-----------------------------------------------------------------------------------
+
+
+-- These are additional rules that allow for parsing of GNU extensions.
+-- This file is intended to be mixed-in with C99Parser.g or GPPParser.g
+
+
+$Terminals
+
+ vector
+ pixel
+ bool
+
+ _Decimal32
+ _Decimal64
+ _Decimal128
+
+$End
+
+
+
+
+
+$Rules
+
+
+
+simple_type_specifier_token
+ ::= '_Decimal32'
+ | '_Decimal64'
+ | '_Decimal128'
+
+
+type_id
+ ::= vector_type
+ /. $Build consumeTypeId(false); $EndBuild ./
+ | vector_type abstract_declarator
+ /. $Build consumeTypeId(true); $EndBuild ./
+
+vector_declaration
+ ::= vector_type <openscope-ast> init_declarator_list ';'
+ /. $Build consumeDeclarationSimple(true); $EndBuild ./
+
+
+vector_type
+ ::= <openscope-ast> no_type_declaration_specifiers_opt 'vector' vector_type_specifier all_specifier_qualifier_list_opt
+ /. $Build consumeVectorTypeSpecifier(); $EndBuild ./
+
+
+vector_type_specifier
+ ::= vector_type_specifier_token
+ /. $Build consumeToken(); $EndBuild ./
+
+vector_type_specifier_token
+ ::= 'pixel'
+ | 'float'
+ | 'bool'
+ | 'signed'
+ | 'unsigned'
+ | 'char'
+ | 'short'
+ | 'int'
+ | 'long'
+
+
+
+all_specifier_qualifiers
+ ::= vector_type_specifier
+ | no_type_declaration_specifiers
+
+all_specifier_qualifier_list
+ ::= all_specifier_qualifiers
+ | all_specifier_qualifier_list all_specifier_qualifiers
+
+all_specifier_qualifier_list_opt
+ ::= all_specifier_qualifier_list
+ | $empty
+
+no_type_declaration_specifiers_opt
+ ::= no_type_declaration_specifiers
+ | $empty
+
+
+$End
+
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCLanguage.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCLanguage.java
new file mode 100644
index 0000000000..261c40fb76
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCLanguage.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.lrparser.xlc;
+
+import static org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage.getPref;
+import static org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage.getProject;
+
+import java.util.Map;
+
+import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.core.dom.lrparser.IParser;
+import org.eclipse.cdt.core.dom.lrparser.gnu.GCCLanguage;
+import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
+import org.eclipse.cdt.core.index.IIndex;
+import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcPref;
+import org.eclipse.cdt.core.model.ICLanguageKeywords;
+import org.eclipse.cdt.core.parser.IScanner;
+import org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParser;
+import org.eclipse.core.resources.IProject;
+
+/**
+ *
+ * @author Mike Kucera
+ */
+public class XlcCLanguage extends GCCLanguage {
+
+ public static final String ID = "org.eclipse.cdt.core.lrparser.xlc.c"; //$NON-NLS-1$
+
+ private static XlcCLanguage DEFAULT = new XlcCLanguage();
+
+ public static XlcCLanguage getDefault() {
+ return DEFAULT;
+ }
+
+ @Override
+ protected IParser<IASTTranslationUnit> getParser(IScanner scanner, IIndex index, Map<String,String> properties) {
+ IProject project = getProject(properties);
+ boolean supportVectors = getPref(XlcPref.SUPPORT_VECTOR_TYPES, project);
+ boolean supportDecimals = getPref(XlcPref.SUPPORT_DECIMAL_FLOATING_POINT_TYPES, project);
+
+ return new XlcCParser(scanner, new XlcCTokenMap(supportVectors, supportDecimals), getBuiltinBindingsProvider(), index, properties);
+ }
+
+ public String getId() {
+ return ID;
+ }
+
+ @Override
+ protected IScannerExtensionConfiguration getScannerExtensionConfiguration() {
+ return XlcCScannerExtensionConfiguration.getInstance();
+ }
+
+ @Override
+ public ICLanguageKeywords getCLanguageKeywords() {
+ return XlcKeywords.ALL_C_KEYWORDS;
+ }
+
+} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPLanguage.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPLanguage.java
new file mode 100644
index 0000000000..33ba8a75cb
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPLanguage.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.lrparser.xlc;
+
+import java.util.Map;
+
+import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
+import org.eclipse.cdt.core.dom.lrparser.IParser;
+import org.eclipse.cdt.core.dom.lrparser.LRParserProperties;
+import org.eclipse.cdt.core.dom.lrparser.gnu.GPPLanguage;
+import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
+import org.eclipse.cdt.core.index.IIndex;
+import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcLanguagePreferences;
+import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcPref;
+import org.eclipse.cdt.core.model.ICLanguageKeywords;
+import org.eclipse.cdt.core.parser.IScanner;
+import org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParser;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Path;
+
+/**
+ *
+ * @author Mike Kucera
+ */
+public class XlcCPPLanguage extends GPPLanguage {
+
+ public static final String ID = "org.eclipse.cdt.core.lrparser.xlc.cpp"; //$NON-NLS-1$
+
+ private static XlcCPPLanguage DEFAULT = new XlcCPPLanguage();
+
+ public static XlcCPPLanguage getDefault() {
+ return DEFAULT;
+ }
+
+
+ static IProject getProject(Map<String,String> properties) {
+ String path = properties.get(LRParserProperties.TRANSLATION_UNIT_PATH);
+ IFile[] file = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation(new Path(path));
+
+ IProject project = null;
+ if(file != null && file.length > 0) {
+ project = file[0].getProject();
+ }
+
+ return project;
+ }
+
+
+ static boolean getPref(XlcPref key, IProject project) {
+ return Boolean.valueOf(XlcLanguagePreferences.get(key, project));
+ }
+
+
+ @Override
+ protected IParser<IASTTranslationUnit> getParser(IScanner scanner, IIndex index, Map<String,String> properties) {
+ IProject project = getProject(properties);
+ boolean supportVectors = getPref(XlcPref.SUPPORT_VECTOR_TYPES, project);
+ boolean supportDecimals = getPref(XlcPref.SUPPORT_DECIMAL_FLOATING_POINT_TYPES, project);
+ boolean supportComplex = getPref(XlcPref.SUPPORT_COMPLEX_IN_CPP, project);
+ boolean supportRestrict = getPref(XlcPref.SUPPORT_RESTRICT_IN_CPP, project);
+ IDOMTokenMap tokenMap = new XlcCPPTokenMap(supportVectors, supportDecimals, supportComplex, supportRestrict);
+
+ XlcCPPParser parser = new XlcCPPParser(scanner, tokenMap, getBuiltinBindingsProvider(), index, properties);
+ return parser;
+ }
+
+
+ public String getId() {
+ return ID;
+ }
+
+ @Override
+ protected IScannerExtensionConfiguration getScannerExtensionConfiguration() {
+ return XlcCPPScannerExtensionConfiguration.getInstance();
+ }
+
+
+ @Override
+ public ICLanguageKeywords getCLanguageKeywords() {
+ return XlcKeywords.ALL_CPP_KEYWORDS;
+ }
+
+} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPScannerExtensionConfiguration.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPScannerExtensionConfiguration.java
new file mode 100644
index 0000000000..c7b07c71c6
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPScannerExtensionConfiguration.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.lrparser.xlc;
+
+import org.eclipse.cdt.core.dom.parser.cpp.GPPScannerExtensionConfiguration;
+
+public class XlcCPPScannerExtensionConfiguration extends GPPScannerExtensionConfiguration {
+
+ private static XlcCPPScannerExtensionConfiguration instance;
+
+
+ private XlcCPPScannerExtensionConfiguration() {}
+
+ public static synchronized XlcCPPScannerExtensionConfiguration getInstance() {
+ if(instance == null)
+ instance = new XlcCPPScannerExtensionConfiguration();
+ return instance;
+ }
+
+ // CHANGED need to add this back in
+// @Override
+// public boolean supportUTFLiterals() {
+// return true;
+// }
+
+ @Override
+ public char[] supportAdditionalNumericLiteralSuffixes() {
+ return "dflij".toCharArray(); //$NON-NLS-1$
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPTokenMap.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPTokenMap.java
new file mode 100644
index 0000000000..41e7fc6697
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPTokenMap.java
@@ -0,0 +1,198 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.lrparser.xlc;
+
+import static org.eclipse.cdt.core.parser.IToken.*;
+import static org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym.*;
+
+import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
+import org.eclipse.cdt.core.parser.IGCCToken;
+import org.eclipse.cdt.core.parser.IToken;
+
+/**
+ * Maps tokens types returned by CPreprocessor to token types
+ * expected by the C++ parser.
+ *
+ * @author Mike Kucera
+ */
+public class XlcCPPTokenMap implements IDOMTokenMap {
+
+ private final XlcKeywords keywordMap;
+
+ public XlcCPPTokenMap(boolean supportVectors, boolean supportDecimalFloatingPoint, boolean supportComplex, boolean supportRestrict) {
+ keywordMap = XlcKeywords.createCPP(supportVectors, supportDecimalFloatingPoint, supportComplex, supportRestrict);
+ }
+
+
+ public int getEOFTokenKind() {
+ return TK_EOF_TOKEN;
+ }
+
+ public int getEOCTokenKind() {
+ return TK_EndOfCompletion;
+ }
+
+ public int mapKind(IToken token) {
+
+ switch(token.getType()) {
+ case t__Complex :
+ case tIDENTIFIER :
+ Integer keywordKind = keywordMap.getTokenKind(token.getCharImage());
+ return keywordKind == null ? TK_identifier : keywordKind;
+
+ case tINTEGER : return TK_integer;
+ case tCOLONCOLON : return TK_ColonColon;
+ case tCOLON : return TK_Colon;
+ case tSEMI : return TK_SemiColon;
+ case tCOMMA : return TK_Comma;
+ case tQUESTION : return TK_Question;
+ case tLPAREN : return TK_LeftParen;
+ case tRPAREN : return TK_RightParen;
+ case tLBRACKET : return TK_LeftBracket;
+ case tRBRACKET : return TK_RightBracket;
+ case tLBRACE : return TK_LeftBrace;
+ case tRBRACE : return TK_RightBrace;
+ case tPLUSASSIGN : return TK_PlusAssign;
+ case tINCR : return TK_PlusPlus;
+ case tPLUS : return TK_Plus;
+ case tMINUSASSIGN : return TK_MinusAssign;
+ case tDECR : return TK_MinusMinus;
+ case tARROWSTAR : return TK_ArrowStar;
+ case tARROW : return TK_Arrow;
+ case tMINUS : return TK_Minus;
+ case tSTARASSIGN : return TK_StarAssign;
+ case tSTAR : return TK_Star;
+ case tMODASSIGN : return TK_PercentAssign;
+ case tMOD : return TK_Percent;
+ case tXORASSIGN : return TK_CaretAssign;
+ case tXOR : return TK_Caret;
+ case tAMPERASSIGN : return TK_AndAssign;
+ case tAND : return TK_AndAnd;
+ case tAMPER : return TK_And;
+ case tBITORASSIGN : return TK_OrAssign;
+ case tOR : return TK_OrOr;
+ case tBITOR : return TK_Or;
+ case tBITCOMPLEMENT: return TK_Tilde;
+ case tNOTEQUAL : return TK_NE;
+ case tNOT : return TK_Bang;
+ case tEQUAL : return TK_EQ;
+ case tASSIGN : return TK_Assign;
+ case tUNKNOWN_CHAR : return TK_Invalid;
+ case tSHIFTL : return TK_LeftShift;
+ case tLTEQUAL : return TK_LE;
+ case tLT : return TK_LT;
+ case tSHIFTRASSIGN : return TK_RightShiftAssign;
+ case tSHIFTR : return TK_RightShift;
+ case tGTEQUAL : return TK_GE;
+ case tGT : return TK_GT;
+ case tSHIFTLASSIGN : return TK_LeftShiftAssign;
+ case tELLIPSIS : return TK_DotDotDot;
+ case tDOTSTAR : return TK_DotStar;
+ case tDOT : return TK_Dot;
+ case tDIVASSIGN : return TK_SlashAssign;
+ case tDIV : return TK_Slash;
+
+ case t_asm : return TK_asm;
+ case t_auto : return TK_auto;
+ case t_bool : return TK_bool;
+ case t_break : return TK_break;
+ case t_case : return TK_case;
+ case t_catch : return TK_catch;
+ case t_char : return TK_char;
+ case t_class : return TK_class;
+ case t_const : return TK_const;
+ case t_const_cast : return TK_const_cast;
+ case t_continue : return TK_continue;
+ case t_default : return TK_default;
+ case t_delete : return TK_delete;
+ case t_do : return TK_do;
+ case t_double : return TK_double;
+ case t_dynamic_cast: return TK_dynamic_cast;
+ case t_else : return TK_else;
+ case t_enum : return TK_enum;
+ case t_explicit : return TK_explicit;
+ case t_export : return TK_export;
+ case t_extern : return TK_extern;
+ case t_false : return TK_false;
+ case t_float : return TK_float;
+ case t_for : return TK_for;
+ case t_friend : return TK_friend;
+ case t_goto : return TK_goto;
+ case t_if : return TK_if;
+ case t_inline : return TK_inline;
+ case t_int : return TK_int;
+ case t_long : return TK_long;
+ case t_mutable : return TK_mutable;
+ case t_namespace : return TK_namespace;
+ case t_new : return TK_new;
+ case t_operator : return TK_operator;
+ case t_private : return TK_private;
+ case t_protected : return TK_protected;
+ case t_public : return TK_public;
+ case t_register : return TK_register;
+ case t_reinterpret_cast : return TK_reinterpret_cast;
+ case t_return : return TK_return;
+ case t_short : return TK_short;
+ case t_sizeof : return TK_sizeof;
+ case t_static : return TK_static;
+ case t_static_cast : return TK_static_cast;
+ case t_signed : return TK_signed;
+ case t_struct : return TK_struct;
+ case t_switch : return TK_switch;
+ case t_template : return TK_template;
+ case t_this : return TK_this;
+ case t_throw : return TK_throw;
+ case t_true : return TK_true;
+ case t_try : return TK_try;
+ case t_typedef : return TK_typedef;
+ case t_typeid : return TK_typeid;
+ case t_typename : return TK_typename;
+ case t_union : return TK_union;
+ case t_unsigned : return TK_unsigned;
+ case t_using : return TK_using;
+ case t_virtual : return TK_virtual;
+ case t_void : return TK_void;
+ case t_volatile : return TK_volatile;
+ case t_wchar_t : return TK_wchar_t;
+ case t_while : return TK_while;
+
+ case tFLOATINGPT : return TK_floating;
+ case tSTRING : return TK_stringlit;
+ case tLSTRING : return TK_stringlit;
+ //case tUTF16STRING : return TK_stringlit;
+ //case tUTF32STRING : return TK_stringlit;
+ //case tUTF16CHAR : return TK_charconst;
+ //case tUTF32CHAR : return TK_charconst;
+ case tCHAR : return TK_charconst;
+ case tLCHAR : return TK_charconst;
+ case tCOMPLETION : return TK_Completion;
+ case tEOC : return TK_EndOfCompletion;
+ case tEND_OF_INPUT : return TK_EOF_TOKEN;
+
+ case IGCCToken.t_typeof : return TK_typeof;
+ case IGCCToken.t___alignof__ : return TK___alignof__;
+ case IGCCToken.tMAX : return TK_MAX;
+ case IGCCToken.tMIN : return TK_MIN;
+ case IGCCToken.t__attribute__ : return TK___attribute__;
+ case IGCCToken.t__declspec : return TK___declspec;
+
+ // GNU supports these but they are not in the C++ spec
+
+ case t__Imaginary : return TK__Imaginary;
+ case t_restrict : return TK_restrict;
+
+ default:
+ assert false : "token not recognized: " + token.getType(); //$NON-NLS-1$
+ return TK_Invalid;
+ }
+ }
+
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCScannerExtensionConfiguration.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCScannerExtensionConfiguration.java
new file mode 100644
index 0000000000..3da1e030f9
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCScannerExtensionConfiguration.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.lrparser.xlc;
+
+import org.eclipse.cdt.core.dom.parser.c.GCCScannerExtensionConfiguration;
+
+public class XlcCScannerExtensionConfiguration extends GCCScannerExtensionConfiguration {
+
+ private static XlcCScannerExtensionConfiguration instance;
+
+
+ private XlcCScannerExtensionConfiguration() {}
+
+ public static synchronized XlcCScannerExtensionConfiguration getInstance() {
+ if(instance == null)
+ instance = new XlcCScannerExtensionConfiguration();
+ return instance;
+ }
+
+ // CHANGED need to add this back in
+// @Override
+// public boolean supportUTFLiterals() {
+// return true;
+// }
+
+ @Override
+ public char[] supportAdditionalNumericLiteralSuffixes() {
+ return "dflij".toCharArray(); //$NON-NLS-1$
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCTokenMap.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCTokenMap.java
new file mode 100644
index 0000000000..732bf3a652
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCTokenMap.java
@@ -0,0 +1,165 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.lrparser.xlc;
+
+import static org.eclipse.cdt.core.parser.IToken.*;
+import static org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym.*;
+
+import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
+import org.eclipse.cdt.core.parser.IGCCToken;
+import org.eclipse.cdt.core.parser.IToken;
+
+/**
+ * Maps tokens types returned by CPreprocessor to token types
+ * expected by the C99 parser.
+ *
+ * @author Mike Kucera
+ */
+public final class XlcCTokenMap implements IDOMTokenMap {
+
+ private final XlcKeywords keywordMap;
+
+ public XlcCTokenMap(boolean supportVectors, boolean supportDecimalFloatingPoint) {
+ keywordMap = XlcKeywords.createC(supportVectors, supportDecimalFloatingPoint);
+ }
+
+
+ public int getEOFTokenKind() {
+ return TK_EOF_TOKEN;
+ }
+
+ public int getEOCTokenKind() {
+ return TK_EndOfCompletion;
+ }
+
+ public int mapKind(IToken token) {
+
+ switch(token.getType()) {
+ case tIDENTIFIER :
+ Integer keywordKind = keywordMap.getTokenKind(token.getCharImage());
+ return keywordKind == null ? TK_identifier : keywordKind;
+
+ case tINTEGER : return TK_integer;
+ case tCOLON : return TK_Colon;
+ case tSEMI : return TK_SemiColon;
+ case tCOMMA : return TK_Comma;
+ case tQUESTION : return TK_Question;
+ case tLPAREN : return TK_LeftParen;
+ case tRPAREN : return TK_RightParen;
+ case tLBRACKET : return TK_LeftBracket;
+ case tRBRACKET : return TK_RightBracket;
+ case tLBRACE : return TK_LeftBrace;
+ case tRBRACE : return TK_RightBrace;
+ case tPLUSASSIGN : return TK_PlusAssign;
+ case tINCR : return TK_PlusPlus;
+ case tPLUS : return TK_Plus;
+ case tMINUSASSIGN : return TK_MinusAssign;
+ case tDECR : return TK_MinusMinus;
+ case tARROW : return TK_Arrow;
+ case tMINUS : return TK_Minus;
+ case tSTARASSIGN : return TK_StarAssign;
+ case tSTAR : return TK_Star;
+ case tMODASSIGN : return TK_PercentAssign;
+ case tMOD : return TK_Percent;
+ case tXORASSIGN : return TK_CaretAssign;
+ case tXOR : return TK_Caret;
+ case tAMPERASSIGN : return TK_AndAssign;
+ case tAND : return TK_AndAnd;
+ case tAMPER : return TK_And;
+ case tBITORASSIGN : return TK_OrAssign;
+ case tOR : return TK_OrOr;
+ case tBITOR : return TK_Or;
+ case tBITCOMPLEMENT: return TK_Tilde;
+ case tNOTEQUAL : return TK_NE;
+ case tNOT : return TK_Bang;
+ case tEQUAL : return TK_EQ;
+ case tASSIGN : return TK_Assign;
+ case tUNKNOWN_CHAR : return TK_Invalid;
+ case tSHIFTL : return TK_LeftShift;
+ case tLTEQUAL : return TK_LE;
+ case tLT : return TK_LT;
+ case tSHIFTRASSIGN : return TK_RightShiftAssign;
+ case tSHIFTR : return TK_RightShift;
+ case tGTEQUAL : return TK_GE;
+ case tGT : return TK_GT;
+ case tSHIFTLASSIGN : return TK_LeftShiftAssign;
+ case tELLIPSIS : return TK_DotDotDot;
+ case tDOT : return TK_Dot;
+ case tDIVASSIGN : return TK_SlashAssign;
+ case tDIV : return TK_Slash;
+
+ case t_auto : return TK_auto;
+ case t_break : return TK_break;
+ case t_case : return TK_case;
+ case t_char : return TK_char;
+ case t_const : return TK_const;
+ case t_continue : return TK_continue;
+ case t_default : return TK_default;
+ case t_do : return TK_do;
+ case t_double : return TK_double;
+ case t_else : return TK_else;
+ case t_enum : return TK_enum;
+ case t_extern : return TK_extern;
+ case t_float : return TK_float;
+ case t_for : return TK_for;
+ case t_goto : return TK_goto;
+ case t_if : return TK_if;
+ case t_inline : return TK_inline;
+ case t_int : return TK_int;
+ case t_long : return TK_long;
+ case t_register : return TK_register;
+ case t_return : return TK_return;
+ case t_short : return TK_short;
+ case t_sizeof : return TK_sizeof;
+ case t_static : return TK_static;
+ case t_signed : return TK_signed;
+ case t_struct : return TK_struct;
+ case t_switch : return TK_switch;
+ case t_typedef : return TK_typedef;
+ case t_union : return TK_union;
+ case t_unsigned : return TK_unsigned;
+ case t_void : return TK_void;
+ case t_volatile : return TK_volatile;
+ case t_while : return TK_while;
+ case tFLOATINGPT : return TK_floating;
+ case tSTRING : return TK_stringlit;
+ case tLSTRING : return TK_stringlit;
+ //case tUTF16STRING : return TK_stringlit;
+ //case tUTF32STRING : return TK_stringlit;
+ case tCHAR : return TK_charconst;
+ case tLCHAR : return TK_charconst;
+ //case tUTF16CHAR : return TK_charconst;
+ //case tUTF32CHAR : return TK_charconst;
+ case t__Bool : return TK__Bool;
+ case t__Complex : return TK__Complex;
+ case t__Imaginary : return TK__Imaginary;
+ case t_restrict : return TK_restrict;
+ case tCOMPLETION : return TK_Completion;
+ case tEOC : return TK_EndOfCompletion;
+ case tEND_OF_INPUT : return TK_EOF_TOKEN;
+
+
+ case IGCCToken.t_typeof : return TK_typeof;
+ case IGCCToken.t___alignof__ : return TK___alignof__;
+ case IGCCToken.tMAX : return TK_MAX;
+ case IGCCToken.tMIN : return TK_MIN;
+ case IGCCToken.t__attribute__ : return TK___attribute__;
+ case IGCCToken.t__declspec : return TK___declspec;
+
+ case t_asm: return TK_asm;
+
+
+ default:
+ assert false : "token not recognized by the XLC parser: " + token.getType(); //$NON-NLS-1$
+ return TK_Invalid;
+ }
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java
new file mode 100644
index 0000000000..38d5b54e77
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.lrparser.xlc;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.cdt.core.dom.lrparser.CLanguageKeywords;
+import org.eclipse.cdt.core.model.ICLanguageKeywords;
+import org.eclipse.cdt.core.parser.ParserLanguage;
+import org.eclipse.cdt.core.parser.util.CharArrayMap;
+import org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym;
+import org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym;
+
+public class XlcKeywords extends CLanguageKeywords {
+
+ public static final XlcKeywords ALL_C_KEYWORDS = createC(true, true);
+ public static final XlcKeywords ALL_CPP_KEYWORDS = createCPP(true, true, true, true);
+
+
+ private final CharArrayMap<Integer> map = new CharArrayMap<Integer>();
+ private final ParserLanguage language;
+ private String[] allKeywords = null;
+
+ // TODO is this called anywhere else?
+ public static XlcKeywords createC(boolean supportVectors, boolean supportDecimalFloatingPoint) {
+ XlcKeywords keywords = new XlcKeywords(ParserLanguage.C);
+ CharArrayMap<Integer> map = keywords.map;
+ if(supportVectors) {
+ map.put("vector".toCharArray(), XlcCParsersym.TK_vector);
+ map.put("__vector".toCharArray(), XlcCParsersym.TK_vector);
+ map.put("pixel".toCharArray(), XlcCParsersym.TK_pixel);
+ map.put("__pixel".toCharArray(), XlcCParsersym.TK_pixel);
+ map.put("bool".toCharArray(), XlcCParsersym.TK_bool);
+ }
+ if(supportDecimalFloatingPoint) {
+ map.put("_Decimal32".toCharArray(), XlcCParsersym.TK__Decimal32);
+ map.put("_Decimal64".toCharArray(), XlcCParsersym.TK__Decimal64);
+ map.put("_Decimal128".toCharArray(), XlcCParsersym.TK__Decimal128);
+ }
+ return keywords;
+ }
+
+ public static XlcKeywords createCPP(boolean supportVectors, boolean supportDecimalFloatingPoint, boolean supportComplex, boolean supportRestrict) {
+ XlcKeywords keywords = new XlcKeywords(ParserLanguage.CPP);
+ CharArrayMap<Integer> map = keywords.map;
+ if(supportVectors) {
+ map.put("vector".toCharArray(), XlcCPPParsersym.TK_vector);
+ map.put("__vector".toCharArray(), XlcCPPParsersym.TK_vector);
+ map.put("pixel".toCharArray(), XlcCPPParsersym.TK_pixel);
+ map.put("__pixel".toCharArray(), XlcCPPParsersym.TK_pixel);
+ }
+ if(supportDecimalFloatingPoint) {
+ map.put("_Decimal32".toCharArray(), XlcCPPParsersym.TK__Decimal32);
+ map.put("_Decimal64".toCharArray(), XlcCPPParsersym.TK__Decimal64);
+ map.put("_Decimal128".toCharArray(), XlcCPPParsersym.TK__Decimal128);
+ }
+ if(supportComplex) {
+ map.put("_Complex".toCharArray(), XlcCPPParsersym.TK__Complex);
+ }
+ if(supportRestrict) {
+ map.put("restrict".toCharArray(), XlcCPPParsersym.TK_restrict);
+ map.put("__restrict".toCharArray(), XlcCPPParsersym.TK_restrict);
+ map.put("__restrict__".toCharArray(), XlcCPPParsersym.TK_restrict);
+ }
+
+ return keywords;
+ }
+
+
+ private XlcKeywords(ParserLanguage language) {
+ super(language, XlcCScannerExtensionConfiguration.getInstance());
+ this.language = language;
+ }
+
+ /**
+ * Returns the LPG token kind for additional keywords defined by
+ * the XLC extensions, null otherwise.
+ */
+ public Integer getTokenKind(char[] keyword) {
+ return map.get(keyword);
+ }
+
+ @Override
+ public synchronized String[] getKeywords() {
+ if(allKeywords == null) {
+ ICLanguageKeywords base = new CLanguageKeywords(language, XlcCScannerExtensionConfiguration.getInstance());
+ String[] baseKeywords = base.getKeywords();
+
+ List<String> keywords = new ArrayList<String>();
+ keywords.addAll(Arrays.asList(baseKeywords));
+
+ for(char[] keyword : map.keys()) {
+ keywords.add(String.valueOf(keyword));
+ }
+
+ allKeywords = keywords.toArray(new String[keywords.size()]);
+ }
+
+ return allKeywords;
+ }
+
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCBuildASTParserAction.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCBuildASTParserAction.java
new file mode 100644
index 0000000000..e0f69801b6
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCBuildASTParserAction.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.lrparser.xlc.action;
+
+import lpg.lpgjavaruntime.IToken;
+
+import org.eclipse.cdt.core.dom.lrparser.action.ISecondaryParserFactory;
+import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
+import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
+import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCBuildASTParserAction;
+import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCASTVectorTypeSpecifier;
+import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCNodeFactory;
+import org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym;
+
+public class XlcCBuildASTParserAction extends GCCBuildASTParserAction {
+
+ private IXlcCNodeFactory nodeFactory;
+
+
+ public XlcCBuildASTParserAction(ITokenStream parser,
+ ScopedStack<Object> astStack, IXlcCNodeFactory nodeFactory,
+ ISecondaryParserFactory parserFactory) {
+ super(parser, astStack, nodeFactory, parserFactory);
+ this.nodeFactory = nodeFactory;
+ }
+
+ /*
+ * vector_type
+ * ::= <openscope-ast> sqlist_op 'vector' vector_type_specifier all_specifier_qualifier_list
+ */
+ public void consumeVectorTypeSpecifier() {
+ IXlcCASTVectorTypeSpecifier declSpec = nodeFactory.newVectorTypeSpecifier();
+
+ for(Object specifier : astStack.closeScope()) {
+ if(specifier instanceof IToken) {
+ switch(((IToken)specifier).getKind()) {
+ case XlcCParsersym.TK_pixel :
+ declSpec.setPixel(true);
+ continue;
+ case XlcCParsersym.TK_bool :
+ declSpec.setBool(true);
+ continue;
+ case XlcCParsersym.TK_vector :
+ continue;
+ }
+ }
+
+ setSpecifier(declSpec, specifier);
+ }
+
+ setOffsetAndLength(declSpec);
+ astStack.push(declSpec);
+ }
+
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCPPBuildASTParserAction.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCPPBuildASTParserAction.java
new file mode 100644
index 0000000000..7505e2be10
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCPPBuildASTParserAction.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.lrparser.xlc.action;
+
+import lpg.lpgjavaruntime.IToken;
+
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
+import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
+import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
+import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
+import org.eclipse.cdt.core.dom.lrparser.action.cpp.ICPPSecondaryParserFactory;
+import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPBuildASTParserAction;
+import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPASTModifiedArrayModifier;
+import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPASTVectorTypeSpecifier;
+import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPNodeFactory;
+import org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym;
+
+public class XlcCPPBuildASTParserAction extends GPPBuildASTParserAction {
+
+ private IXlcCPPNodeFactory nodeFactory;
+ private final ITokenMap tokenMap;
+
+
+ public XlcCPPBuildASTParserAction(ITokenStream parser,
+ ScopedStack<Object> astStack, IXlcCPPNodeFactory nodeFactory,
+ ICPPSecondaryParserFactory parserFactory) {
+ super(parser, astStack, nodeFactory, parserFactory);
+ this.nodeFactory = nodeFactory;
+ this.tokenMap = new TokenMap(XlcCPPParsersym.orderedTerminalSymbols, parser.getOrderedTerminalSymbols());
+ }
+
+ /*
+ * vector_type
+ * ::= <openscope-ast> sqlist_op 'vector' vector_type_specifier all_specifier_qualifier_list
+ */
+ public void consumeVectorTypeSpecifier() {
+ IXlcCPPASTVectorTypeSpecifier declSpec = nodeFactory.newVectorTypeSpecifier();
+
+ for(Object specifier : astStack.closeScope()) {
+ if(specifier instanceof IToken) {
+ switch(tokenMap.mapKind(((IToken)specifier).getKind())) {
+ case XlcCPPParsersym.TK_pixel :
+ declSpec.setPixel(true);
+ continue;
+ case XlcCPPParsersym.TK_vector :
+ continue;
+ }
+ }
+
+ setSpecifier(declSpec, specifier);
+ }
+
+ setOffsetAndLength(declSpec);
+ astStack.push(declSpec);
+ }
+
+
+ public void consumeDirectDeclaratorModifiedArrayModifier(boolean isStatic,
+ boolean isVarSized, boolean hasTypeQualifierList, boolean hasAssignmentExpr) {
+ assert isStatic || isVarSized || hasTypeQualifierList;
+
+ IXlcCPPASTModifiedArrayModifier arrayModifier = nodeFactory.newModifiedArrayModifier(null);
+
+ // consume all the stuff between the square brackets into an array modifier
+ arrayModifier.setStatic(isStatic);
+ arrayModifier.setVariableSized(isVarSized);
+
+ if(hasAssignmentExpr)
+ arrayModifier.setConstantExpression((IASTExpression)astStack.pop());
+
+ if(hasTypeQualifierList)
+ collectArrayModifierTypeQualifiers(arrayModifier);
+
+ setOffsetAndLength(arrayModifier);
+ astStack.push(arrayModifier);
+ }
+
+ private void collectArrayModifierTypeQualifiers(IXlcCPPASTModifiedArrayModifier arrayModifier) {
+ for(Object o : astStack.closeScope()) {
+ switch(tokenMap.mapKind(((IToken)o).getKind())) {
+ case XlcCPPParsersym.TK_const: arrayModifier.setConst(true); break;
+ case XlcCPPParsersym.TK_restrict: arrayModifier.setRestrict(true); break;
+ case XlcCPPParsersym.TK_volatile: arrayModifier.setVolatile(true); break;
+ }
+ }
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/activator/XlcParserPlugin.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/activator/XlcParserPlugin.java
new file mode 100644
index 0000000000..0035b2cb6b
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/activator/XlcParserPlugin.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.lrparser.xlc.activator;
+
+import org.eclipse.core.runtime.Plugin;
+
+public class XlcParserPlugin extends Plugin {
+
+ public static final String PLUGIN_ID = "org.eclipse.cdt.core.lrparser.xlc";
+
+
+
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCASTVectorTypeSpecifier.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCASTVectorTypeSpecifier.java
new file mode 100644
index 0000000000..ca2233b2a8
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCASTVectorTypeSpecifier.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.lrparser.xlc.ast;
+
+import org.eclipse.cdt.core.dom.ast.c.ICASTDeclSpecifier;
+
+public interface IXlcCASTVectorTypeSpecifier extends ICASTDeclSpecifier {
+
+ public boolean isPixel();
+
+ public void setPixel(boolean isPixel);
+
+ public boolean isBool();
+
+ public void setBool(boolean isBool);
+
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCNodeFactory.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCNodeFactory.java
new file mode 100644
index 0000000000..9a832ff325
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCNodeFactory.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.lrparser.xlc.ast;
+
+import org.eclipse.cdt.core.dom.lrparser.action.c99.ICNodeFactory;
+
+
+
+public interface IXlcCNodeFactory extends ICNodeFactory {
+
+ public IXlcCASTVectorTypeSpecifier newVectorTypeSpecifier();
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTModifiedArrayModifier.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTModifiedArrayModifier.java
new file mode 100644
index 0000000000..d9ac929dd2
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTModifiedArrayModifier.java
@@ -0,0 +1,98 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.lrparser.xlc.ast;
+
+import org.eclipse.cdt.core.dom.ast.IASTArrayModifier;
+
+/**
+ * Allow C99 style variable length arrays in XL C++.
+ *
+ */
+public interface IXlcCPPASTModifiedArrayModifier extends IASTArrayModifier {
+
+
+ /**
+ * Is the const modifier used?
+ *
+ * @return boolean
+ */
+ public boolean isConst();
+
+ /**
+ * Is the static modifier used?
+ *
+ * @return boolean
+ */
+ public boolean isStatic();
+
+ /**
+ * Is the restrict modifier used?
+ *
+ * @return boolean
+ */
+ public boolean isRestrict();
+
+ /**
+ * Is the volatile modifier used?
+ *
+ * @return boolean
+ */
+ public boolean isVolatile();
+
+ /**
+ * Set true/false that the const modifier is used.
+ *
+ * @param value
+ * boolean
+ */
+ public void setConst(boolean value);
+
+ /**
+ * Set true/false that the volatile modifier is used.
+ *
+ * @param value
+ * boolean
+ */
+ public void setVolatile(boolean value);
+
+ /**
+ * Set true/false that the restrict modifier is used.
+ *
+ * @param value
+ * boolean
+ */
+ public void setRestrict(boolean value);
+
+ /**
+ * Set true/false that the static modifier is used.
+ *
+ * @param value
+ * boolean
+ */
+ public void setStatic(boolean value);
+
+ /**
+ * Is the array variable sized? ( used ... )
+ *
+ * @return boolean
+ */
+ public boolean isVariableSized();
+
+ /**
+ * Set the array to be variable sized dependent upon value.
+ *
+ * @param value
+ * boolean
+ */
+ public void setVariableSized(boolean value);
+
+
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTVectorTypeSpecifier.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTVectorTypeSpecifier.java
new file mode 100644
index 0000000000..a1d0d04dd9
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTVectorTypeSpecifier.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.lrparser.xlc.ast;
+
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTDeclSpecifier;
+
+public interface IXlcCPPASTVectorTypeSpecifier extends ICPPASTDeclSpecifier {
+
+ public boolean isPixel();
+
+ public void setPixel(boolean isPixel);
+
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPNodeFactory.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPNodeFactory.java
new file mode 100644
index 0000000000..caacac907a
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPNodeFactory.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.lrparser.xlc.ast;
+
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.lrparser.action.cpp.ICPPNodeFactory;
+
+
+public interface IXlcCPPNodeFactory extends ICPPNodeFactory {
+
+ public IXlcCPPASTVectorTypeSpecifier newVectorTypeSpecifier();
+
+ public IXlcCPPASTModifiedArrayModifier newModifiedArrayModifier(IASTExpression expr);
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/PreferenceInitializer.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/PreferenceInitializer.java
new file mode 100644
index 0000000000..d5eef63b71
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/PreferenceInitializer.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.lrparser.xlc.preferences;
+
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+
+public class PreferenceInitializer extends AbstractPreferenceInitializer {
+
+ @Override
+ public void initializeDefaultPreferences() {
+ XlcLanguagePreferences.initializeDefaultPreferences();
+ }
+
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcLanguagePreferences.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcLanguagePreferences.java
new file mode 100644
index 0000000000..1e20148304
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcLanguagePreferences.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.lrparser.xlc.preferences;
+
+import org.eclipse.cdt.core.lrparser.xlc.activator.XlcParserPlugin;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ProjectScope;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.preferences.DefaultScope;
+import org.eclipse.core.runtime.preferences.IScopeContext;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.osgi.service.prefs.Preferences;
+
+/**
+ * TODO trigger the indexer?
+ *
+ * @author Mike Kucera
+ */
+public class XlcLanguagePreferences {
+
+ private static final String QUALIFIER = XlcParserPlugin.PLUGIN_ID;
+ private static final String XLC_PREFERENCES_NODE = "xlc.preferences";
+
+
+ static void initializeDefaultPreferences() {
+ Preferences defaultNode = getDefaultPreferences();
+
+ for(XlcPref p : XlcPref.values()) {
+ defaultNode.put(p.toString(), p.getDefaultValue());
+ }
+ }
+
+
+
+ public static void setProjectPreference(XlcPref key, String value, IProject project) {
+ getProjectPreferences(project).put(key.toString(), value);
+ }
+
+ public static void setWorkspacePreference(XlcPref key, String value) {
+ getWorkspacePreferences().put(key.toString(), value);
+ }
+
+
+
+ public static String getProjectPreference(XlcPref key, IProject project) {
+ return getProjectPreferences(project).get(key.toString(), null);
+ }
+
+ public static String getWorkspacePreference(XlcPref key) {
+ return getWorkspacePreferences().get(key.toString(), null);
+ }
+
+ public static String getDefaultPreference(XlcPref key) {
+ return getDefaultPreferences().get(key.toString(), null);
+ }
+
+
+ /**
+ * Returns the preference for the given key.
+ *
+ * @param project If null then just the workspace and default preferences will be checked.
+ */
+ public static String get(XlcPref key, IProject project) {
+ return Platform.getPreferencesService().get(key.toString(), null, getPreferences(project));
+ }
+
+ private static Preferences[] getPreferences(IProject project) {
+ if(project == null) {
+ return new Preferences[] {
+ getWorkspacePreferences(),
+ getDefaultPreferences()
+ };
+ }
+ else {
+ return new Preferences[] {
+ getProjectPreferences(project),
+ getWorkspacePreferences(),
+ getDefaultPreferences()
+ };
+ }
+ }
+
+
+
+ private static Preferences getDefaultPreferences() {
+ return getPreferences(new DefaultScope());
+ }
+
+ private static Preferences getWorkspacePreferences() {
+ return getPreferences(new InstanceScope());
+ }
+
+ private static Preferences getProjectPreferences(IProject project) {
+ return getPreferences(new ProjectScope(project));
+ }
+
+ private static Preferences getPreferences(IScopeContext scope) {
+ return scope.getNode(QUALIFIER).node(XLC_PREFERENCES_NODE);
+ }
+
+
+
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcPref.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcPref.java
new file mode 100644
index 0000000000..9900b575e5
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcPref.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.core.lrparser.xlc.preferences;
+
+
+public enum XlcPref {
+
+
+ SUPPORT_VECTOR_TYPES("true"),
+ SUPPORT_DECIMAL_FLOATING_POINT_TYPES("true"),
+ SUPPORT_COMPLEX_IN_CPP("true"),
+ SUPPORT_RESTRICT_IN_CPP("true");
+
+
+ private final String defaultVal;
+
+ private XlcPref(String defaultVal) {
+ this.defaultVal = defaultVal;
+ }
+
+ public String getDefaultValue() {
+ return defaultVal;
+ }
+}
+
+
+
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCASTVectorTypeSpecifier.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCASTVectorTypeSpecifier.java
new file mode 100644
index 0000000000..5cc2179c4f
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCASTVectorTypeSpecifier.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.core.lrparser.xlc.ast;
+
+import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCASTVectorTypeSpecifier;
+import org.eclipse.cdt.internal.core.dom.parser.c.CASTSimpleDeclSpecifier;
+
+@SuppressWarnings("restriction")
+public class XlcCASTVectorTypeSpecifier extends CASTSimpleDeclSpecifier implements IXlcCASTVectorTypeSpecifier {
+
+ private boolean isPixel;
+ private boolean isBool;
+
+ public XlcCASTVectorTypeSpecifier() {
+ super();
+ }
+
+
+ public boolean isPixel() {
+ return isPixel;
+ }
+
+ public void setPixel(boolean isPixel) {
+ this.isPixel = isPixel;
+ }
+
+ public boolean isBool() {
+ return isBool;
+ }
+
+ public void setBool(boolean isBool) {
+ this.isBool = isBool;
+ }
+
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCNodeFactory.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCNodeFactory.java
new file mode 100644
index 0000000000..ca5c50a7c4
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCNodeFactory.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.core.lrparser.xlc.ast;
+
+import org.eclipse.cdt.core.dom.lrparser.action.c99.CNodeFactory;
+import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCASTVectorTypeSpecifier;
+import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCNodeFactory;
+
+
+
+public class XlcCNodeFactory extends CNodeFactory implements IXlcCNodeFactory {
+
+ private static final XlcCNodeFactory DEFAULT_INSTANCE = new XlcCNodeFactory();
+
+ public static XlcCNodeFactory getDefault() {
+ return DEFAULT_INSTANCE;
+ }
+
+ public IXlcCASTVectorTypeSpecifier newVectorTypeSpecifier() {
+ return new XlcCASTVectorTypeSpecifier();
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTModifiedArrayModifier.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTModifiedArrayModifier.java
new file mode 100644
index 0000000000..93e5c40344
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTModifiedArrayModifier.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.core.lrparser.xlc.ast;
+
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPASTModifiedArrayModifier;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTArrayModifier;
+
+@SuppressWarnings("restriction")
+public class XlcCPPASTModifiedArrayModifier extends CPPASTArrayModifier implements IXlcCPPASTModifiedArrayModifier {
+
+ private boolean isVolatile;
+ private boolean isRestrict;
+ private boolean isStatic;
+ private boolean isConst;
+ private boolean varSized;
+
+ public XlcCPPASTModifiedArrayModifier() {
+ }
+
+ public XlcCPPASTModifiedArrayModifier(IASTExpression exp) {
+ super(exp);
+ }
+
+ public boolean isConst() {
+ return isConst;
+ }
+
+ public boolean isStatic() {
+ return isStatic;
+ }
+
+ public boolean isRestrict() {
+ return isRestrict;
+ }
+
+ public boolean isVolatile() {
+ return isVolatile;
+ }
+
+ public void setConst(boolean value) {
+ this.isConst = value;
+ }
+
+ public void setVolatile(boolean value) {
+ this.isVolatile = value;
+ }
+
+ public void setRestrict(boolean value) {
+ this.isRestrict = value;
+ }
+
+ public void setStatic(boolean value) {
+ this.isStatic = value;
+ }
+
+ public boolean isVariableSized() {
+ return varSized;
+ }
+
+ public void setVariableSized(boolean value) {
+ varSized = value;
+ }
+
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTVectorTypeSpecifier.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTVectorTypeSpecifier.java
new file mode 100644
index 0000000000..2cf942e9f4
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTVectorTypeSpecifier.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.core.lrparser.xlc.ast;
+
+import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPASTVectorTypeSpecifier;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleDeclSpecifier;
+
+@SuppressWarnings("restriction")
+public class XlcCPPASTVectorTypeSpecifier extends CPPASTSimpleDeclSpecifier implements IXlcCPPASTVectorTypeSpecifier {
+
+ private boolean isPixel;
+
+ public XlcCPPASTVectorTypeSpecifier() {
+ super();
+ }
+
+ public boolean isPixel() {
+ return isPixel;
+ }
+
+ public void setPixel(boolean isPixel) {
+ this.isPixel = isPixel;
+ }
+
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPNodeFactory.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPNodeFactory.java
new file mode 100644
index 0000000000..aeac4daec7
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPNodeFactory.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.core.lrparser.xlc.ast;
+
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPNodeFactory;
+import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPASTModifiedArrayModifier;
+import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPASTVectorTypeSpecifier;
+import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPNodeFactory;
+public class XlcCPPNodeFactory extends CPPNodeFactory implements IXlcCPPNodeFactory {
+
+private static final XlcCPPNodeFactory DEFAULT_INSTANCE = new XlcCPPNodeFactory();
+
+ public static XlcCPPNodeFactory getDefault() {
+ return DEFAULT_INSTANCE;
+ }
+
+ public IXlcCPPASTVectorTypeSpecifier newVectorTypeSpecifier() {
+ return new XlcCPPASTVectorTypeSpecifier();
+ }
+
+ public IXlcCPPASTModifiedArrayModifier newModifiedArrayModifier(IASTExpression expr) {
+ return new XlcCPPASTModifiedArrayModifier(expr);
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParser.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParser.java
new file mode 100644
index 0000000000..89a5ebe05e
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParser.java
@@ -0,0 +1,1433 @@
+/*******************************************************************************
+* Copyright (c) 2006, 2009 IBM Corporation and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* IBM Corporation - initial API and implementation
+*********************************************************************************/
+
+// This file was generated by LPG
+
+package org.eclipse.cdt.internal.core.lrparser.xlc.c;
+
+import lpg.lpgjavaruntime.*;
+
+import java.util.*;
+import org.eclipse.cdt.core.dom.ast.*;
+import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
+import org.eclipse.cdt.core.dom.lrparser.IParser;
+import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
+import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
+import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
+import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
+import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
+import org.eclipse.cdt.core.parser.IScanner;
+import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
+import org.eclipse.cdt.core.index.IIndex;
+
+import org.eclipse.cdt.core.dom.lrparser.action.c99.CNodeFactory;
+import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction;
+import org.eclipse.cdt.core.dom.lrparser.action.c99.C99SecondaryParserFactory;
+
+import org.eclipse.cdt.core.dom.lrparser.action.gnu.GNUBuildASTParserAction;
+
+import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCBuildASTParserAction;
+import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCSecondaryParserFactory;
+
+import org.eclipse.cdt.core.lrparser.xlc.action.XlcCBuildASTParserAction;
+import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCSecondaryParserFactory;
+import org.eclipse.cdt.internal.core.lrparser.xlc.ast.XlcCNodeFactory;
+
+public class XlcCParser extends PrsStream implements RuleAction, ITokenStream,
+ ITokenCollector, IParser< IASTTranslationUnit >
+
+{
+ private static ParseTable prs = new XlcCParserprs();
+ private FixedBacktrackingParser btParser;
+
+ public FixedBacktrackingParser getParser() { return btParser; }
+ private void setResult(Object object) { btParser.setSym1(object); }
+ public Object getRhsSym(int i) { return btParser.getSym(i); }
+
+ public int getRhsTokenIndex(int i) { return btParser.getToken(i); }
+ public IToken getRhsIToken(int i) { return super.getIToken(getRhsTokenIndex(i)); }
+
+ public int getRhsFirstTokenIndex(int i) { return btParser.getFirstToken(i); }
+ public IToken getRhsFirstIToken(int i) { return super.getIToken(getRhsFirstTokenIndex(i)); }
+
+ public int getRhsLastTokenIndex(int i) { return btParser.getLastToken(i); }
+ public IToken getRhsLastIToken(int i) { return super.getIToken(getRhsLastTokenIndex(i)); }
+
+ public int getLeftSpan() { return btParser.getFirstToken(); }
+ public IToken getLeftIToken() { return super.getIToken(getLeftSpan()); }
+
+ public int getRightSpan() { return btParser.getLastToken(); }
+ public IToken getRightIToken() { return super.getIToken(getRightSpan()); }
+
+ public int getRhsErrorTokenIndex(int i)
+ {
+ int index = btParser.getToken(i);
+ IToken err = super.getIToken(index);
+ return (err instanceof ErrorToken ? index : 0);
+ }
+ public ErrorToken getRhsErrorIToken(int i)
+ {
+ int index = btParser.getToken(i);
+ IToken err = super.getIToken(index);
+ return (ErrorToken) (err instanceof ErrorToken ? err : null);
+ }
+
+ public XlcCParser(LexStream lexStream)
+ {
+ super(lexStream);
+
+ try
+ {
+ super.remapTerminalSymbols(orderedTerminalSymbols(), XlcCParserprs.EOFT_SYMBOL);
+ }
+ catch(NullExportedSymbolsException e) {
+ }
+ catch(NullTerminalSymbolsException e) {
+ }
+ catch(UnimplementedTerminalsException e)
+ {
+ java.util.ArrayList unimplemented_symbols = e.getSymbols();
+ System.out.println("The Lexer will not scan the following token(s):");
+ for (int i = 0; i < unimplemented_symbols.size(); i++)
+ {
+ Integer id = (Integer) unimplemented_symbols.get(i);
+ System.out.println(" " + XlcCParsersym.orderedTerminalSymbols[id.intValue()]);
+ }
+ System.out.println();
+ }
+ catch(UndefinedEofSymbolException e)
+ {
+ throw new Error(new UndefinedEofSymbolException
+ ("The Lexer does not implement the Eof symbol " +
+ XlcCParsersym.orderedTerminalSymbols[XlcCParserprs.EOFT_SYMBOL]));
+ }
+ }
+
+ public String[] orderedTerminalSymbols() { return XlcCParsersym.orderedTerminalSymbols; }
+ public String getTokenKindName(int kind) { return XlcCParsersym.orderedTerminalSymbols[kind]; }
+ public int getEOFTokenKind() { return XlcCParserprs.EOFT_SYMBOL; }
+ public PrsStream getParseStream() { return (PrsStream) this; }
+
+ //
+ // Report error message for given error_token.
+ //
+ public final void reportErrorTokenMessage(int error_token, String msg)
+ {
+ int firsttok = super.getFirstErrorToken(error_token),
+ lasttok = super.getLastErrorToken(error_token);
+ String location = super.getFileName() + ':' +
+ (firsttok > lasttok
+ ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
+ : (super.getLine(error_token) + ":" +
+ super.getColumn(error_token) + ":" +
+ super.getEndLine(error_token) + ":" +
+ super.getEndColumn(error_token)))
+ + ": ";
+ super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE), location, msg);
+ }
+
+ public void parser()
+ {
+ parser(null, 0);
+ }
+
+ public void parser(Monitor monitor)
+ {
+ parser(monitor, 0);
+ }
+
+ public void parser(int error_repair_count)
+ {
+ parser(null, error_repair_count);
+ }
+
+ public void parser(Monitor monitor, int error_repair_count)
+ {
+ try
+ {
+ btParser = new FixedBacktrackingParser(monitor, (TokenStream) this, prs, (RuleAction) this);
+ }
+ catch (NotBacktrackParseTableException e)
+ {
+ throw new Error(new NotBacktrackParseTableException
+ ("Regenerate XlcCParserprs.java with -BACKTRACK option"));
+ }
+ catch (BadParseSymFileException e)
+ {
+ throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- XlcCParsersym.java"));
+ }
+
+ try
+ {
+ btParser.parse(error_repair_count);
+ }
+ catch (BadParseException e)
+ {
+ reset(e.error_token); // point to error token
+ DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
+ diagnoseParser.diagnose(e.error_token);
+ }
+ }
+
+
+private XlcCBuildASTParserAction action;
+private IASTCompletionNode compNode;
+
+
+public XlcCParser(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String,String> properties) {
+ initActions(properties);
+ action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
+ CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
+}
+
+private void initActions(Map<String,String> properties) {
+ ScopedStack<Object> astStack = new ScopedStack<Object>();
+
+ action = new XlcCBuildASTParserAction (this, astStack, XlcCNodeFactory.getDefault() , GCCSecondaryParserFactory.getDefault() );
+ action.setParserProperties(properties);
+
+
+
+ gnuAction = new GNUBuildASTParserAction (this, astStack, XlcCNodeFactory.getDefault() );
+ gnuAction.setParserProperties(properties);
+
+}
+
+
+public void addToken(IToken token) {
+ token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
+ super.addToken(token);
+}
+
+
+public IASTTranslationUnit parse() {
+ // this has to be done, or... kaboom!
+ setStreamLength(getSize());
+
+ final int errorRepairCount = -1; // -1 means full error handling
+ parser(null, errorRepairCount); // do the actual parse
+ super.resetTokenStream(); // allow tokens to be garbage collected
+
+ compNode = action.getASTCompletionNode(); // the completion node may be null
+ return ( IASTTranslationUnit ) action.getParseResult();
+}
+
+
+public IASTCompletionNode getCompletionNode() {
+ return compNode;
+}
+
+// uncomment this method to use with backtracking parser
+public List<IToken> getRuleTokens() {
+ return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
+}
+
+public String[] getOrderedTerminalSymbols() {
+ return XlcCParsersym.orderedTerminalSymbols;
+}
+
+@SuppressWarnings("nls")
+public String getName() {
+ return "XlcCParser";
+}
+
+
+private GNUBuildASTParserAction gnuAction;
+
+ public void ruleAction(int ruleNumber)
+ {
+ switch (ruleNumber)
+ {
+
+ //
+ // Rule 1: <openscope-ast> ::= $Empty
+ //
+ case 1: { action. openASTScope(); break;
+ }
+
+ //
+ // Rule 2: <empty> ::= $Empty
+ //
+ case 2: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 13: literal ::= integer
+ //
+ case 13: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant); break;
+ }
+
+ //
+ // Rule 14: literal ::= floating
+ //
+ case 14: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant); break;
+ }
+
+ //
+ // Rule 15: literal ::= charconst
+ //
+ case 15: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant); break;
+ }
+
+ //
+ // Rule 16: literal ::= stringlit
+ //
+ case 16: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal); break;
+ }
+
+ //
+ // Rule 18: primary_expression ::= primary_expression_id
+ //
+ case 18: { action. consumeExpressionID(); break;
+ }
+
+ //
+ // Rule 19: primary_expression ::= ( expression )
+ //
+ case 19: { action. consumeExpressionBracketed(); break;
+ }
+
+ //
+ // Rule 22: postfix_expression ::= postfix_expression [ expression ]
+ //
+ case 22: { action. consumeExpressionArraySubscript(); break;
+ }
+
+ //
+ // Rule 23: postfix_expression ::= postfix_expression ( expression_list_opt )
+ //
+ case 23: { action. consumeExpressionFunctionCall(); break;
+ }
+
+ //
+ // Rule 24: postfix_expression ::= postfix_expression . member_name
+ //
+ case 24: { action. consumeExpressionFieldReference(false); break;
+ }
+
+ //
+ // Rule 25: postfix_expression ::= postfix_expression -> member_name
+ //
+ case 25: { action. consumeExpressionFieldReference(true); break;
+ }
+
+ //
+ // Rule 26: postfix_expression ::= postfix_expression ++
+ //
+ case 26: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); break;
+ }
+
+ //
+ // Rule 27: postfix_expression ::= postfix_expression --
+ //
+ case 27: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); break;
+ }
+
+ //
+ // Rule 28: postfix_expression ::= ( type_id ) initializer_list
+ //
+ case 28: { action. consumeExpressionTypeIdInitializer(); break;
+ }
+
+ //
+ // Rule 33: unary_expression ::= ++ unary_expression
+ //
+ case 33: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); break;
+ }
+
+ //
+ // Rule 34: unary_expression ::= -- unary_expression
+ //
+ case 34: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); break;
+ }
+
+ //
+ // Rule 35: unary_expression ::= & cast_expression
+ //
+ case 35: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); break;
+ }
+
+ //
+ // Rule 36: unary_expression ::= * cast_expression
+ //
+ case 36: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); break;
+ }
+
+ //
+ // Rule 37: unary_expression ::= + cast_expression
+ //
+ case 37: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); break;
+ }
+
+ //
+ // Rule 38: unary_expression ::= - cast_expression
+ //
+ case 38: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); break;
+ }
+
+ //
+ // Rule 39: unary_expression ::= ~ cast_expression
+ //
+ case 39: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); break;
+ }
+
+ //
+ // Rule 40: unary_expression ::= ! cast_expression
+ //
+ case 40: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); break;
+ }
+
+ //
+ // Rule 41: unary_expression ::= sizeof unary_expression
+ //
+ case 41: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); break;
+ }
+
+ //
+ // Rule 42: unary_expression ::= sizeof ( type_id )
+ //
+ case 42: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof); break;
+ }
+
+ //
+ // Rule 44: cast_expression ::= ( type_id ) cast_expression
+ //
+ case 44: { action. consumeExpressionCast(IASTCastExpression.op_cast); break;
+ }
+
+ //
+ // Rule 46: multiplicative_expression ::= multiplicative_expression * cast_expression
+ //
+ case 46: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply); break;
+ }
+
+ //
+ // Rule 47: multiplicative_expression ::= multiplicative_expression / cast_expression
+ //
+ case 47: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide); break;
+ }
+
+ //
+ // Rule 48: multiplicative_expression ::= multiplicative_expression % cast_expression
+ //
+ case 48: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo); break;
+ }
+
+ //
+ // Rule 50: additive_expression ::= additive_expression + multiplicative_expression
+ //
+ case 50: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus); break;
+ }
+
+ //
+ // Rule 51: additive_expression ::= additive_expression - multiplicative_expression
+ //
+ case 51: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus); break;
+ }
+
+ //
+ // Rule 53: shift_expression ::= shift_expression << additive_expression
+ //
+ case 53: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft); break;
+ }
+
+ //
+ // Rule 54: shift_expression ::= shift_expression >> additive_expression
+ //
+ case 54: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight); break;
+ }
+
+ //
+ // Rule 56: relational_expression ::= relational_expression < shift_expression
+ //
+ case 56: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan); break;
+ }
+
+ //
+ // Rule 57: relational_expression ::= relational_expression > shift_expression
+ //
+ case 57: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan); break;
+ }
+
+ //
+ // Rule 58: relational_expression ::= relational_expression <= shift_expression
+ //
+ case 58: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual); break;
+ }
+
+ //
+ // Rule 59: relational_expression ::= relational_expression >= shift_expression
+ //
+ case 59: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual); break;
+ }
+
+ //
+ // Rule 61: equality_expression ::= equality_expression == relational_expression
+ //
+ case 61: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals); break;
+ }
+
+ //
+ // Rule 62: equality_expression ::= equality_expression != relational_expression
+ //
+ case 62: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals); break;
+ }
+
+ //
+ // Rule 64: and_expression ::= and_expression & equality_expression
+ //
+ case 64: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd); break;
+ }
+
+ //
+ // Rule 66: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
+ //
+ case 66: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor); break;
+ }
+
+ //
+ // Rule 68: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
+ //
+ case 68: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr); break;
+ }
+
+ //
+ // Rule 70: logical_and_expression ::= logical_and_expression && inclusive_or_expression
+ //
+ case 70: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd); break;
+ }
+
+ //
+ // Rule 72: logical_or_expression ::= logical_or_expression || logical_and_expression
+ //
+ case 72: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr); break;
+ }
+
+ //
+ // Rule 74: conditional_expression ::= logical_or_expression ? expression : assignment_expression
+ //
+ case 74: { action. consumeExpressionConditional(); break;
+ }
+
+ //
+ // Rule 76: assignment_expression ::= unary_expression = assignment_expression
+ //
+ case 76: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break;
+ }
+
+ //
+ // Rule 77: assignment_expression ::= unary_expression *= assignment_expression
+ //
+ case 77: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign); break;
+ }
+
+ //
+ // Rule 78: assignment_expression ::= unary_expression /= assignment_expression
+ //
+ case 78: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign); break;
+ }
+
+ //
+ // Rule 79: assignment_expression ::= unary_expression %= assignment_expression
+ //
+ case 79: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign); break;
+ }
+
+ //
+ // Rule 80: assignment_expression ::= unary_expression += assignment_expression
+ //
+ case 80: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign); break;
+ }
+
+ //
+ // Rule 81: assignment_expression ::= unary_expression -= assignment_expression
+ //
+ case 81: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign); break;
+ }
+
+ //
+ // Rule 82: assignment_expression ::= unary_expression <<= assignment_expression
+ //
+ case 82: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign); break;
+ }
+
+ //
+ // Rule 83: assignment_expression ::= unary_expression >>= assignment_expression
+ //
+ case 83: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign); break;
+ }
+
+ //
+ // Rule 84: assignment_expression ::= unary_expression &= assignment_expression
+ //
+ case 84: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign); break;
+ }
+
+ //
+ // Rule 85: assignment_expression ::= unary_expression ^= assignment_expression
+ //
+ case 85: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign); break;
+ }
+
+ //
+ // Rule 86: assignment_expression ::= unary_expression |= assignment_expression
+ //
+ case 86: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign); break;
+ }
+
+ //
+ // Rule 89: expression_list ::= <openscope-ast> expression_list_actual
+ //
+ case 89: { action. consumeExpressionList(); break;
+ }
+
+ //
+ // Rule 91: expression_list_opt ::= $Empty
+ //
+ case 91: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 101: statement ::= ERROR_TOKEN
+ //
+ case 101: { action. consumeStatementProblem(); break;
+ }
+
+ //
+ // Rule 102: labeled_statement ::= identifier_token : statement
+ //
+ case 102: { action. consumeStatementLabeled(); break;
+ }
+
+ //
+ // Rule 103: labeled_statement ::= case constant_expression : statement
+ //
+ case 103: { action. consumeStatementCase(); break;
+ }
+
+ //
+ // Rule 104: labeled_statement ::= default : statement
+ //
+ case 104: { action. consumeStatementDefault(); break;
+ }
+
+ //
+ // Rule 105: compound_statement ::= { }
+ //
+ case 105: { action. consumeStatementCompoundStatement(false); break;
+ }
+
+ //
+ // Rule 106: compound_statement ::= { <openscope-ast> block_item_list }
+ //
+ case 106: { action. consumeStatementCompoundStatement(true); break;
+ }
+
+ //
+ // Rule 110: block_item ::= declaration
+ //
+ case 110: { action. consumeStatementDeclarationWithDisambiguation(); break;
+ }
+
+ //
+ // Rule 111: expression_statement ::= ;
+ //
+ case 111: { action. consumeStatementNull(); break;
+ }
+
+ //
+ // Rule 112: expression_statement ::= expression_in_statement ;
+ //
+ case 112: { action. consumeStatementExpression(); break;
+ }
+
+ //
+ // Rule 113: selection_statement ::= if ( expression ) statement
+ //
+ case 113: { action. consumeStatementIf(false); break;
+ }
+
+ //
+ // Rule 114: selection_statement ::= if ( expression ) statement else statement
+ //
+ case 114: { action. consumeStatementIf(true); break;
+ }
+
+ //
+ // Rule 115: selection_statement ::= switch ( expression ) statement
+ //
+ case 115: { action. consumeStatementSwitch(); break;
+ }
+
+ //
+ // Rule 117: expression_opt ::= $Empty
+ //
+ case 117: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 118: iteration_statement ::= do statement while ( expression ) ;
+ //
+ case 118: { action. consumeStatementDoLoop(); break;
+ }
+
+ //
+ // Rule 119: iteration_statement ::= while ( expression ) statement
+ //
+ case 119: { action. consumeStatementWhileLoop(); break;
+ }
+
+ //
+ // Rule 120: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement
+ //
+ case 120: { action. consumeStatementForLoop(); break;
+ }
+
+ //
+ // Rule 121: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement
+ //
+ case 121: { action. consumeStatementForLoop(); break;
+ }
+
+ //
+ // Rule 122: jump_statement ::= goto identifier_token ;
+ //
+ case 122: { action. consumeStatementGoto(); break;
+ }
+
+ //
+ // Rule 123: jump_statement ::= continue ;
+ //
+ case 123: { action. consumeStatementContinue(); break;
+ }
+
+ //
+ // Rule 124: jump_statement ::= break ;
+ //
+ case 124: { action. consumeStatementBreak(); break;
+ }
+
+ //
+ // Rule 125: jump_statement ::= return ;
+ //
+ case 125: { action. consumeStatementReturn(false); break;
+ }
+
+ //
+ // Rule 126: jump_statement ::= return expression ;
+ //
+ case 126: { action. consumeStatementReturn(true); break;
+ }
+
+ //
+ // Rule 127: declaration ::= declaration_specifiers ;
+ //
+ case 127: { action. consumeDeclarationSimple(false); break;
+ }
+
+ //
+ // Rule 128: declaration ::= declaration_specifiers <openscope-ast> init_declarator_list ;
+ //
+ case 128: { action. consumeDeclarationSimple(true); break;
+ }
+
+ //
+ // Rule 129: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
+ //
+ case 129: { action. consumeDeclarationSpecifiersSimple(); break;
+ }
+
+ //
+ // Rule 130: declaration_specifiers ::= <openscope-ast> struct_or_union_declaration_specifiers
+ //
+ case 130: { action. consumeDeclarationSpecifiersStructUnionEnum(); break;
+ }
+
+ //
+ // Rule 131: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
+ //
+ case 131: { action. consumeDeclarationSpecifiersStructUnionEnum(); break;
+ }
+
+ //
+ // Rule 132: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
+ //
+ case 132: { action. consumeDeclarationSpecifiersStructUnionEnum(); break;
+ }
+
+ //
+ // Rule 133: declaration_specifiers ::= <openscope-ast> typdef_name_declaration_specifiers
+ //
+ case 133: { action. consumeDeclarationSpecifiersTypedefName(); break;
+ }
+
+ //
+ // Rule 158: init_declarator ::= complete_declarator = initializer
+ //
+ case 158: { action. consumeDeclaratorWithInitializer(true); break;
+ }
+
+ //
+ // Rule 160: storage_class_specifier ::= storage_class_specifier_token
+ //
+ case 160: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 166: simple_type_specifier ::= simple_type_specifier_token
+ //
+ case 166: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 179: type_name_specifier ::= identifier_token
+ //
+ case 179: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 180: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { <openscope-ast> struct_declaration_list_opt }
+ //
+ case 180: { action. consumeTypeSpecifierComposite(false); break;
+ }
+
+ //
+ // Rule 181: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook identifier_token struct_or_union_specifier_suffix_hook { <openscope-ast> struct_declaration_list_opt }
+ //
+ case 181: { action. consumeTypeSpecifierComposite(true); break;
+ }
+
+ //
+ // Rule 186: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token
+ //
+ case 186: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); break;
+ }
+
+ //
+ // Rule 187: elaborated_specifier ::= union elaborated_specifier_hook identifier_token
+ //
+ case 187: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); break;
+ }
+
+ //
+ // Rule 188: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token
+ //
+ case 188: { action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); break;
+ }
+
+ //
+ // Rule 194: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ;
+ //
+ case 194: { action. consumeStructDeclaration(true); break;
+ }
+
+ //
+ // Rule 195: struct_declaration ::= specifier_qualifier_list ;
+ //
+ case 195: { action. consumeStructDeclaration(false); break;
+ }
+
+ //
+ // Rule 196: struct_declaration ::= ERROR_TOKEN
+ //
+ case 196: { action. consumeDeclarationProblem(); break;
+ }
+
+ //
+ // Rule 202: struct_declarator ::= : constant_expression
+ //
+ case 202: { action. consumeBitField(false); break;
+ }
+
+ //
+ // Rule 203: struct_declarator ::= declarator : constant_expression
+ //
+ case 203: { action. consumeBitField(true); break;
+ }
+
+ //
+ // Rule 204: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
+ //
+ case 204: { action. consumeTypeSpecifierEnumeration(false); break;
+ }
+
+ //
+ // Rule 205: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
+ //
+ case 205: { action. consumeTypeSpecifierEnumeration(true); break;
+ }
+
+ //
+ // Rule 211: enumerator ::= identifier_token
+ //
+ case 211: { action. consumeEnumerator(false); break;
+ }
+
+ //
+ // Rule 212: enumerator ::= identifier_token = constant_expression
+ //
+ case 212: { action. consumeEnumerator(true); break;
+ }
+
+ //
+ // Rule 213: type_qualifier ::= type_qualifier_token
+ //
+ case 213: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 217: function_specifier ::= inline
+ //
+ case 217: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 219: declarator ::= <openscope-ast> pointer_seq direct_declarator
+ //
+ case 219: { action. consumeDeclaratorWithPointer(true); break;
+ }
+
+ //
+ // Rule 224: basic_direct_declarator ::= declarator_id_name
+ //
+ case 224: { action. consumeDirectDeclaratorIdentifier(); break;
+ }
+
+ //
+ // Rule 225: basic_direct_declarator ::= ( declarator )
+ //
+ case 225: { action. consumeDirectDeclaratorBracketed(); break;
+ }
+
+ //
+ // Rule 226: declarator_id_name ::= identifier
+ //
+ case 226: { action. consumeIdentifierName(); break;
+ }
+
+ //
+ // Rule 227: array_direct_declarator ::= basic_direct_declarator array_modifier
+ //
+ case 227: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
+ //
+ // Rule 228: array_direct_declarator ::= array_direct_declarator array_modifier
+ //
+ case 228: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
+ //
+ // Rule 230: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list )
+ //
+ case 230: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
+ }
+
+ //
+ // Rule 231: function_direct_declarator ::= basic_direct_declarator ( )
+ //
+ case 231: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
+ }
+
+ //
+ // Rule 233: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator
+ //
+ case 233: { action. consumeDeclaratorWithPointer(true); break;
+ }
+
+ //
+ // Rule 234: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list )
+ //
+ case 234: { action. consumeDirectDeclaratorFunctionDeclaratorKnR(); break;
+ }
+
+ //
+ // Rule 236: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator
+ //
+ case 236: { action. consumeDeclaratorWithPointer(true); break;
+ }
+
+ //
+ // Rule 237: identifier_list ::= identifier
+ //
+ case 237: { action. consumeIdentifierKnR(); break;
+ }
+
+ //
+ // Rule 238: identifier_list ::= identifier_list , identifier
+ //
+ case 238: { action. consumeIdentifierKnR(); break;
+ }
+
+ //
+ // Rule 239: array_modifier ::= [ ]
+ //
+ case 239: { action. consumeDirectDeclaratorArrayModifier(false); break;
+ }
+
+ //
+ // Rule 240: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ]
+ //
+ case 240: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break;
+ }
+
+ //
+ // Rule 241: array_modifier ::= [ assignment_expression ]
+ //
+ case 241: { action. consumeDirectDeclaratorArrayModifier(true); break;
+ }
+
+ //
+ // Rule 242: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
+ //
+ case 242: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break;
+ }
+
+ //
+ // Rule 243: array_modifier ::= [ static assignment_expression ]
+ //
+ case 243: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break;
+ }
+
+ //
+ // Rule 244: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
+ //
+ case 244: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break;
+ }
+
+ //
+ // Rule 245: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ]
+ //
+ case 245: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break;
+ }
+
+ //
+ // Rule 246: array_modifier ::= [ * ]
+ //
+ case 246: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break;
+ }
+
+ //
+ // Rule 247: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ]
+ //
+ case 247: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break;
+ }
+
+ //
+ // Rule 249: pointer_seq ::= pointer_hook * pointer_hook
+ //
+ case 249: { action. consumePointer(); break;
+ }
+
+ //
+ // Rule 250: pointer_seq ::= pointer_seq pointer_hook * pointer_hook
+ //
+ case 250: { action. consumePointer(); break;
+ }
+
+ //
+ // Rule 251: pointer_seq ::= pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
+ //
+ case 251: { action. consumePointerTypeQualifierList(); break;
+ }
+
+ //
+ // Rule 252: pointer_seq ::= pointer_seq pointer_hook * pointer_hook <openscope-ast> type_qualifier_list
+ //
+ case 252: { action. consumePointerTypeQualifierList(); break;
+ }
+
+ //
+ // Rule 256: parameter_type_list ::= parameter_list
+ //
+ case 256: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 257: parameter_type_list ::= parameter_list , ...
+ //
+ case 257: { action. consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 258: parameter_type_list ::= ...
+ //
+ case 258: { action. consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 261: parameter_declaration ::= declaration_specifiers complete_parameter_declarator
+ //
+ case 261: { action. consumeParameterDeclaration(); break;
+ }
+
+ //
+ // Rule 262: parameter_declaration ::= declaration_specifiers
+ //
+ case 262: { action. consumeParameterDeclarationWithoutDeclarator(); break;
+ }
+
+ //
+ // Rule 265: type_id ::= specifier_qualifier_list
+ //
+ case 265: { action. consumeTypeId(false); break;
+ }
+
+ //
+ // Rule 266: type_id ::= specifier_qualifier_list abstract_declarator
+ //
+ case 266: { action. consumeTypeId(true); break;
+ }
+
+ //
+ // Rule 268: abstract_declarator ::= <openscope-ast> pointer_seq
+ //
+ case 268: { action. consumeDeclaratorWithPointer(false); break;
+ }
+
+ //
+ // Rule 269: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator
+ //
+ case 269: { action. consumeDeclaratorWithPointer(true); break;
+ }
+
+ //
+ // Rule 273: basic_direct_abstract_declarator ::= ( abstract_declarator )
+ //
+ case 273: { action. consumeDirectDeclaratorBracketed(); break;
+ }
+
+ //
+ // Rule 274: array_direct_abstract_declarator ::= array_modifier
+ //
+ case 274: { action. consumeDirectDeclaratorArrayDeclarator(false); break;
+ }
+
+ //
+ // Rule 275: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
+ //
+ case 275: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
+ //
+ // Rule 276: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
+ //
+ case 276: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
+ //
+ // Rule 277: function_direct_abstract_declarator ::= ( )
+ //
+ case 277: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break;
+ }
+
+ //
+ // Rule 278: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
+ //
+ case 278: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
+ }
+
+ //
+ // Rule 279: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
+ //
+ case 279: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break;
+ }
+
+ //
+ // Rule 280: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
+ //
+ case 280: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
+ }
+
+ //
+ // Rule 281: initializer ::= assignment_expression
+ //
+ case 281: { action. consumeInitializer(); break;
+ }
+
+ //
+ // Rule 283: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq comma_opt } end_initializer_list
+ //
+ case 283: { action. consumeInitializerList(); break;
+ }
+
+ //
+ // Rule 284: initializer_list ::= { <openscope-ast> }
+ //
+ case 284: { action. consumeInitializerList(); break;
+ }
+
+ //
+ // Rule 285: start_initializer_list ::= $Empty
+ //
+ case 285: { action. initializerListStart(); break;
+ }
+
+ //
+ // Rule 286: end_initializer_list ::= $Empty
+ //
+ case 286: { action. initializerListEnd(); break;
+ }
+
+ //
+ // Rule 291: designated_initializer ::= <openscope-ast> designation = initializer
+ //
+ case 291: { action. consumeInitializerDesignated(); break;
+ }
+
+ //
+ // Rule 295: designator_base ::= [ constant_expression ]
+ //
+ case 295: { action. consumeDesignatorArray(); break;
+ }
+
+ //
+ // Rule 296: designator_base ::= . identifier_token
+ //
+ case 296: { action. consumeDesignatorField(); break;
+ }
+
+ //
+ // Rule 297: designator ::= [ constant_expression ]
+ //
+ case 297: { action. consumeDesignatorArray(); break;
+ }
+
+ //
+ // Rule 298: designator ::= . identifier_token
+ //
+ case 298: { action. consumeDesignatorField(); break;
+ }
+
+ //
+ // Rule 299: translation_unit ::= external_declaration_list
+ //
+ case 299: { action. consumeTranslationUnit(); break;
+ }
+
+ //
+ // Rule 300: translation_unit ::= $Empty
+ //
+ case 300: { action. consumeTranslationUnit(); break;
+ }
+
+ //
+ // Rule 305: external_declaration ::= ;
+ //
+ case 305: { action. consumeDeclarationEmpty(); break;
+ }
+
+ //
+ // Rule 306: external_declaration ::= ERROR_TOKEN
+ //
+ case 306: { action. consumeDeclarationProblem(); break;
+ }
+
+ //
+ // Rule 310: function_definition ::= <openscope-ast> function_declarator function_body
+ //
+ case 310: { action. consumeFunctionDefinition(false); break;
+ }
+
+ //
+ // Rule 311: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
+ //
+ case 311: { action. consumeFunctionDefinitionKnR(); break;
+ }
+
+ //
+ // Rule 312: normal_function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
+ //
+ case 312: { action. consumeFunctionDefinition(true); break;
+ }
+
+ //
+ // Rule 313: function_body ::= { }
+ //
+ case 313: { action. consumeStatementCompoundStatement(false); break;
+ }
+
+ //
+ // Rule 314: function_body ::= { <openscope-ast> block_item_list }
+ //
+ case 314: { action. consumeStatementCompoundStatement(true); break;
+ }
+
+ //
+ // Rule 331: attribute_parameter ::= assignment_expression
+ //
+ case 331: { action. consumeIgnore(); break;
+ }
+
+ //
+ // Rule 342: extended_asm_declaration ::= asm volatile_opt ( extended_asm_param_seq ) ;
+ //
+ case 342: { gnuAction.consumeDeclarationASM(); break;
+ }
+
+ //
+ // Rule 353: unary_expression ::= __alignof__ unary_expression
+ //
+ case 353: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_alignOf); break;
+ }
+
+ //
+ // Rule 354: unary_expression ::= __alignof__ ( type_id )
+ //
+ case 354: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_alignof); break;
+ }
+
+ //
+ // Rule 355: unary_expression ::= typeof unary_expression
+ //
+ case 355: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break;
+ }
+
+ //
+ // Rule 356: unary_expression ::= typeof ( type_id )
+ //
+ case 356: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break;
+ }
+
+ //
+ // Rule 357: relational_expression ::= relational_expression >? shift_expression
+ //
+ case 357: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_max); break;
+ }
+
+ //
+ // Rule 358: relational_expression ::= relational_expression <? shift_expression
+ //
+ case 358: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_min); break;
+ }
+
+ //
+ // Rule 359: conditional_expression ::= logical_or_expression ? <empty> : assignment_expression
+ //
+ case 359: { action. consumeExpressionConditional(); break;
+ }
+
+ //
+ // Rule 360: primary_expression ::= ( compound_statement )
+ //
+ case 360: { gnuAction.consumeCompoundStatementExpression(); break;
+ }
+
+ //
+ // Rule 361: labeled_statement ::= case case_range_expression : statement
+ //
+ case 361: { action. consumeStatementCase(); break;
+ }
+
+ //
+ // Rule 362: case_range_expression ::= constant_expression ... constant_expression
+ //
+ case 362: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break;
+ }
+
+ //
+ // Rule 366: typeof_type_specifier ::= typeof unary_expression
+ //
+ case 366: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break;
+ }
+
+ //
+ // Rule 367: typeof_type_specifier ::= typeof ( type_id )
+ //
+ case 367: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break;
+ }
+
+ //
+ // Rule 368: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
+ //
+ case 368: { action. consumeDeclarationSpecifiersTypeof(); break;
+ }
+
+ //
+ // Rule 384: field_name_designator ::= identifier_token :
+ //
+ case 384: { action. consumeDesignatorFieldGCC(); break;
+ }
+
+ //
+ // Rule 385: array_range_designator ::= [ constant_expression ... constant_expression ]
+ //
+ case 385: { action. consumeDesignatorArrayRange(); break;
+ }
+
+ //
+ // Rule 386: designated_initializer ::= <openscope-ast> field_name_designator initializer
+ //
+ case 386: { action. consumeInitializerDesignated(); break;
+ }
+
+ //
+ // Rule 387: block_item ::= normal_function_definition
+ //
+ case 387: { action. consumeStatementDeclaration(); break;
+ }
+
+ //
+ // Rule 391: type_id ::= vector_type
+ //
+ case 391: { action. consumeTypeId(false); break;
+ }
+
+ //
+ // Rule 392: type_id ::= vector_type abstract_declarator
+ //
+ case 392: { action. consumeTypeId(true); break;
+ }
+
+ //
+ // Rule 393: vector_declaration ::= vector_type <openscope-ast> init_declarator_list ;
+ //
+ case 393: { action. consumeDeclarationSimple(true); break;
+ }
+
+ //
+ // Rule 394: vector_type ::= <openscope-ast> no_type_declaration_specifiers_opt vector vector_type_specifier all_specifier_qualifier_list_opt
+ //
+ case 394: { action. consumeVectorTypeSpecifier(); break;
+ }
+
+ //
+ // Rule 395: vector_type_specifier ::= vector_type_specifier_token
+ //
+ case 395: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 417: declarator_id_name ::= pixel
+ //
+ case 417: { action. consumeIdentifierName(); break;
+ }
+
+ //
+ // Rule 418: declarator_id_name ::= vector
+ //
+ case 418: { action. consumeIdentifierName(); break;
+ }
+
+ //
+ // Rule 419: declarator_id_name ::= bool
+ //
+ case 419: { action. consumeIdentifierName(); break;
+ }
+
+
+ default:
+ break;
+ }
+ return;
+ }
+}
+
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParserprs.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParserprs.java
new file mode 100644
index 0000000000..39558f8ca4
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParserprs.java
@@ -0,0 +1,2167 @@
+/*******************************************************************************
+* Copyright (c) 2006, 2009 IBM Corporation and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* IBM Corporation - initial API and implementation
+*********************************************************************************/
+
+// This file was generated by LPG
+
+package org.eclipse.cdt.internal.core.lrparser.xlc.c;
+
+public class XlcCParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCParsersym {
+
+ public interface IsKeyword {
+ public final static byte isKeyword[] = {0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0
+ };
+ };
+ public final static byte isKeyword[] = IsKeyword.isKeyword;
+ public final boolean isKeyword(int index) { return isKeyword[index] != 0; }
+
+ public interface BaseCheck {
+ public final static short baseCheck[] = {0,
+ 0,0,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,3,1,
+ 1,4,4,3,3,2,2,4,1,0,
+ 1,1,2,2,2,2,2,2,2,2,
+ 2,4,1,4,1,3,3,3,1,3,
+ 3,1,3,3,1,3,3,3,3,1,
+ 3,3,1,3,1,3,1,3,1,3,
+ 1,3,1,5,1,3,3,3,3,3,
+ 3,3,3,3,3,3,1,1,2,1,
+ 0,1,3,1,1,1,1,1,1,1,
+ 1,3,4,3,2,4,1,2,1,1,
+ 1,2,5,7,5,1,0,7,5,9,
+ 8,3,2,2,2,3,2,4,2,2,
+ 2,2,2,1,1,1,1,2,1,2,
+ 2,2,1,2,2,1,2,2,1,2,
+ 2,1,2,2,1,3,1,3,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,6,
+ 8,0,0,1,1,3,3,3,0,1,
+ 0,1,2,4,2,1,1,1,3,1,
+ 1,2,3,7,8,0,1,0,1,3,
+ 1,3,1,1,1,1,1,1,3,1,
+ 1,1,1,1,3,1,2,2,1,5,
+ 3,1,3,5,1,3,1,3,2,4,
+ 3,5,4,6,6,3,5,1,3,4,
+ 5,6,0,1,2,1,3,1,1,3,
+ 2,1,1,1,1,2,1,2,3,1,
+ 1,1,3,1,2,2,2,3,4,5,
+ 1,1,7,3,0,0,1,1,3,3,
+ 4,1,1,2,3,2,3,2,1,0,
+ 1,2,1,1,1,1,1,2,1,3,
+ 6,4,2,4,1,1,1,1,2,6,
+ 3,1,3,1,4,0,1,1,1,3,
+ 1,0,4,3,1,2,1,3,4,4,
+ 4,6,1,0,1,3,1,3,0,1,
+ 4,5,2,4,2,4,3,3,5,3,
+ 4,3,1,2,2,2,4,2,1,1,
+ 2,2,3,2,2,3,1,1,1,1,
+ 1,1,1,2,5,3,1,1,1,1,
+ 1,2,4,5,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,2,1,0,
+ 1,0,1,1,1,1,1,1,1,-115,
+ 0,-2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-8,0,0,
+ 0,0,0,0,-66,-94,0,0,-54,0,
+ 0,0,-33,0,-252,0,0,0,0,0,
+ -89,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-35,0,
+ 0,0,0,0,0,-49,0,0,0,-87,
+ -12,0,0,0,0,0,0,0,-70,0,
+ 0,0,0,0,0,0,0,0,-128,-11,
+ 0,0,0,0,0,0,0,0,-14,-43,
+ -6,0,0,-52,0,-352,-266,0,0,0,
+ 0,0,0,-15,0,0,0,0,-3,0,
+ 0,0,-16,-67,0,0,0,0,0,0,
+ 0,0,0,-365,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-145,0,
+ 0,0,0,0,-55,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-236,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-27,0,0,-56,0,-158,0,0,
+ 0,0,0,0,0,0,-51,0,0,0,
+ 0,0,0,0,0,0,0,0,-50,-4,
+ 0,0,0,0,0,0,0,0,-233,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-178,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-185,0,-117,0,-28,-232,0,-29,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-309,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-39,0,0,0,
+ 0,0,0,-40,0,0,0,0,-30,0,
+ 0,0,0,0,0,0,-71,0,0,0,
+ 0,0,0,0,0,-258,-173,0,0,0,
+ 0,0,0,0,0,0,-359,0,0,0,
+ 0,0,0,0,0,-31,0,-95,-121,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-126,0,0,0,
+ 0,0,0,0,0,-5,-270,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-262,0,0,0,-279,-116,0,0,
+ 0,-118,0,-361,0,0,0,0,0,0,
+ 0,0,-339,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-234,
+ 0,0,0,0,0,0,0,0,-36,-42,
+ 0,0,0,0,0,0,0,-45,0,0,
+ 0,0,0,0,-122,0,0,-260,0,0,
+ 0,-375,0,0,0,0,0,0,0,0,
+ -327,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-46,0,0,
+ 0,-86,0,0,0,0,0,0,0,0,
+ -48,0,0,-324,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -254,0,-53,0,0,0,0,0,0,-93,
+ 0,0,-65,0,0,0,0,0,-80,0,
+ 0,0,0,0,0,0,0,-44,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -58,0,0,0,0,-177,0,0,-151,0,
+ 0,0,0,0,0,0,0,0,0,-130,
+ 0,-124,0,0,0,0,0,0,-59,0,
+ 0,0,0,0,0,-60,0,0,0,0,
+ 0,0,0,0,0,0,-261,0,-97,0,
+ 0,0,0,0,0,0,0,0,0,-127,
+ -119,0,0,0,-155,0,0,0,-63,0,
+ 0,0,-79,0,0,0,0,0,-271,0,
+ -18,-81,-99,0,0,-101,0,0,0,0,
+ 0,0,0,0,-82,-163,0,0,0,0,
+ 0,0,0,0,-96,-323,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -193,0,0,-231,0,0,0,0,0,0,
+ 0,0,-142,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-100,0,0,
+ 0,-68,0,-188,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -196,-195,0,-102,0,0,0,0,0,0,
+ -189,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-110,-153,-272,0,
+ 0,-69,0,0,0,0,0,0,0,0,
+ 0,0,-201,0,0,0,0,0,0,0,
+ 0,-152,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-273,0,-38,
+ 0,0,-283,0,0,0,0,0,0,0,
+ 0,0,-123,0,0,0,-217,0,-200,0,
+ 0,0,0,0,0,-129,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-144,-131,0,0,0,0,0,0,0,
+ 0,0,0,-348,0,0,-132,-23,-275,-357,
+ -146,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-347,0,-133,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-10,-202,
+ 0,0,0,0,0,-134,-111,0,0,0,
+ 0,-57,0,0,0,0,0,-34,0,-328,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-218,
+ 0,-135,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-165,0,0,-229,0,
+ -112,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-287,0,0,-199,
+ 0,0,0,-154,0,0,-334,-172,0,0,
+ 0,0,0,0,0,0,0,-355,0,-203,
+ 0,0,0,0,0,0,0,0,0,-374,
+ 0,0,0,0,0,0,0,-136,0,0,
+ 0,0,0,0,-259,-137,0,0,0,0,
+ 0,-204,0,0,0,0,0,0,0,0,
+ 0,-161,-326,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-138,-205,0,0,
+ 0,0,0,0,0,0,0,-175,-240,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-139,-206,0,0,0,0,0,0,
+ 0,0,-237,0,0,0,0,0,0,0,
+ 0,-166,0,0,0,0,0,0,-140,-207,
+ 0,0,0,0,0,0,0,0,-257,0,
+ 0,-241,0,0,0,0,0,-168,0,0,
+ 0,0,0,0,-143,-208,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-176,0,0,0,0,0,0,
+ -147,-209,0,0,0,0,0,0,0,0,
+ -265,0,0,-311,0,0,0,0,0,-180,
+ 0,0,0,0,0,0,-148,-210,0,0,
+ 0,0,0,0,0,0,-335,0,0,-338,
+ 0,0,0,0,0,-181,0,0,0,0,
+ 0,0,-156,-211,0,0,0,0,0,0,
+ 0,0,-157,0,-362,0,0,0,0,0,
+ 0,-182,0,0,0,0,0,0,-159,-212,
+ 0,0,0,0,0,0,0,0,-354,0,
+ 0,-340,0,0,0,0,0,-183,0,0,
+ 0,0,0,0,-160,-213,0,0,0,0,
+ 0,0,0,0,-184,0,0,-194,0,0,
+ 0,0,0,-349,0,0,0,0,0,0,
+ -269,0,0,0,-61,0,-358,0,-162,0,
+ 0,0,0,0,0,0,0,0,0,-164,
+ -280,0,-167,0,0,0,0,0,0,-198,
+ -367,0,0,0,0,0,0,0,-169,0,
+ 0,0,0,0,0,-377,0,0,0,-179,
+ 0,0,0,0,-190,0,-230,0,-191,0,
+ 0,0,0,0,0,0,-381,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-285,
+ 0,0,0,0,0,0,0,0,-376,-197,
+ -239,0,0,0,0,0,0,-235,0,0,
+ 0,0,0,0,-244,-286,0,0,0,0,
+ 0,0,0,0,-385,0,-248,-249,0,0,
+ 0,0,0,-263,0,0,0,0,0,0,
+ -264,-317,0,0,0,0,0,0,0,0,
+ -253,-120,0,0,0,0,0,0,0,-281,
+ 0,0,0,0,0,0,-325,0,0,0,
+ 0,0,0,0,0,-289,-290,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-291,-292,-336,0,-293,0,0,0,0,
+ 0,0,-388,-294,-295,0,0,0,0,0,
+ 0,-255,0,0,0,0,0,0,-296,-337,
+ 0,0,0,0,0,0,0,0,-297,0,
+ 0,-298,0,0,0,0,0,-299,0,0,
+ 0,0,0,0,-300,-350,0,0,0,0,
+ 0,0,0,0,-256,-243,0,0,0,0,
+ 0,0,0,-301,0,0,0,0,0,0,
+ -363,0,0,0,0,0,0,0,0,-302,
+ -303,0,-304,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-305,-306,-371,0,-307,
+ 0,0,0,0,0,0,-277,-308,-313,0,
+ 0,0,0,0,0,-284,0,0,0,0,
+ 0,0,-378,0,0,0,0,0,0,0,
+ 0,-351,-360,0,0,0,0,0,0,0,
+ -312,0,0,0,0,0,0,-364,-369,-384,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-64,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -251,0,0,0,0,0,0,0,-314,0,
+ 0,0,0,-92,-76,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-78,-315,
+ 0,-320,0,0,0,0,0,0,0,0,
+ 0,-330,-331,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-98,0,0,0,0,-245,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-333,0,0,0,-9,0,0,-356,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-103,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-238,0,0,0,
+ 0,0,0,0,-368,0,0,0,0,-13,
+ -379,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-387,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-274,0,0,0,0,0,0,
+ 0,0,0,0,-322,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-72,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-246,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-83,0,0,0,-187,
+ 0,0,0,0,0,0,0,0,0,-370,
+ 0,0,-7,0,0,0,0,0,0,0,
+ 0,0,0,0,-267,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -310,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-150,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-219,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-88,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-91,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-17,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-84,0,0,
+ 0,-346,-1,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-247,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -250,0,0,0,-288,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-278,0,0,
+ 0,0,0,-343,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-62,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-104,0,0,
+ 0,0,-316,0,0,-171,0,0,0,0,
+ 0,0,-318,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-141,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-342,0,0,0,0,0,0,0,
+ 0,0,-329,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-344,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-345,0,0,0,0,0,0,0,
+ -382,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-386,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-25,0,0,0,-389,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-220,0,0,0,
+ 0,0,0,0,0,0,-113,0,0,0,
+ 0,0,0,0,0,0,0,0,-221,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-222,0,0,0,0,
+ 0,0,0,0,-276,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-19,0,0,
+ 0,-332,0,0,0,0,0,0,0,0,
+ 0,0,-22,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-24,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-32,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-149,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-223,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-224,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-225,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-226,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-227,0,0,0,0,0,0,0,0,
+ -26,0,0,0,0,0,0,-228,0,0,
+ 0,0,0,0,0,0,-242,0,0,-20,
+ 0,0,0,0,-105,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-106,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-107,0,0,0,0,0,0,0,
+ 0,0,0,-108,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-109,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-282,0,
+ 0,0,0,0,-125,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-41,0,0,0,-47,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-114,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-73,0,0,
+ 0,0,0,0,0,0,0,0,-74,0,
+ 0,0,0,0,0,0,0,-75,0,0,
+ 0,0,0,0,0,0,-90,-170,0,0,
+ 0,0,-186,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-214,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-215,0,0,0,0,0,0,0,0,
+ 0,-268,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-216,0,0,0,0,
+ 0,0,0,0,-319,-321,0,0,0,-21,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-77,0,0,0,0,0,0,
+ 0,0,-174,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-192,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-37,0,0,0,
+ 0,-85,0,0,0,0,0,0,0,-353,
+ 0,0,0,0,0,-372,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-341,
+ -366,0,0,0,0,0,0,0,0,-373,
+ 0,-380,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-383,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0
+ };
+ };
+ public final static short baseCheck[] = BaseCheck.baseCheck;
+ public final int baseCheck(int index) { return baseCheck[index]; }
+ public final static short rhs[] = baseCheck;
+ public final int rhs(int index) { return rhs[index]; };
+
+ public interface BaseAction {
+ public final static char baseAction[] = {
+ 127,2,128,54,54,18,18,59,59,25,
+ 25,1,1,3,3,3,3,4,4,4,
+ 5,6,6,6,6,6,6,6,6,98,
+ 98,108,7,7,7,7,7,7,7,7,
+ 7,7,7,8,8,13,13,13,13,14,
+ 14,14,15,15,15,16,16,16,16,16,
+ 17,17,17,19,19,20,20,21,21,22,
+ 22,23,23,24,24,28,28,28,28,28,
+ 28,28,28,28,28,28,28,43,33,26,
+ 129,129,109,109,64,44,44,44,44,44,
+ 44,44,45,45,45,30,30,110,110,89,
+ 89,46,46,47,47,47,82,82,48,48,
+ 48,48,49,49,49,49,49,61,61,29,
+ 29,29,29,29,50,50,50,73,73,91,
+ 91,91,91,92,92,92,93,93,93,94,
+ 94,94,95,95,95,90,90,83,83,84,
+ 51,53,53,53,53,53,67,68,68,68,
+ 68,68,68,68,68,68,68,68,68,77,
+ 74,74,130,131,78,78,75,75,75,99,
+ 111,111,112,112,100,100,100,60,132,132,
+ 113,101,101,101,76,76,133,114,114,115,
+ 115,102,102,31,32,32,32,52,56,56,
+ 37,37,37,37,34,34,35,38,38,39,
+ 36,36,103,103,40,135,135,134,134,58,
+ 58,58,58,58,58,58,58,58,116,65,
+ 65,65,65,41,96,96,86,86,86,87,
+ 87,79,79,136,136,66,66,88,88,88,
+ 69,69,69,70,71,71,71,72,72,72,
+ 72,85,85,55,55,57,138,137,137,137,
+ 137,117,139,140,140,141,141,142,142,127,
+ 127,143,143,118,118,118,118,144,144,119,
+ 119,119,80,120,120,9,9,9,27,27,
+ 10,10,145,145,121,121,121,122,122,146,
+ 146,123,123,11,11,147,147,124,124,124,
+ 124,12,62,148,148,149,149,125,125,125,
+ 104,104,104,7,7,7,7,16,16,24,
+ 4,45,150,97,97,97,81,81,29,61,
+ 50,84,84,84,113,113,113,133,130,131,
+ 41,99,141,141,151,152,117,89,68,68,
+ 68,66,66,63,42,106,107,107,107,107,
+ 107,107,107,107,107,126,126,154,154,153,
+ 153,105,105,61,1,1,1,35,35,35,
+ 359,1769,452,17,21,18,1053,1246,45,370,
+ 315,316,317,1263,1296,1277,1362,1326,334,1446,
+ 1438,1503,1477,1529,75,1506,790,2618,92,1323,
+ 2143,135,213,2517,20,790,17,21,18,1053,
+ 366,2306,20,231,17,21,18,1053,1246,45,
+ 137,134,136,160,1263,1296,1277,1362,1326,668,
+ 1446,1438,1503,1477,1529,75,483,139,166,281,
+ 1506,626,2660,1338,143,146,149,152,1061,2625,
+ 20,363,17,21,18,1053,43,40,231,503,
+ 689,2230,2469,2888,2903,2917,282,2950,1555,396,
+ 626,1310,179,2795,1696,510,846,503,3206,1765,
+ 370,315,316,317,610,319,315,316,317,337,
+ 254,213,334,685,2544,20,158,17,21,18,
+ 1053,355,135,213,750,766,224,232,254,213,
+ 724,224,229,218,717,221,223,322,1733,1452,
+ 179,137,134,136,160,1560,323,1733,370,315,
+ 316,317,2032,1075,319,315,316,317,139,166,
+ 1364,1522,2094,395,1338,143,146,149,152,1061,
+ 135,213,363,828,345,1320,816,187,1523,1730,
+ 1152,310,2230,2469,2888,2903,2917,1636,2950,137,
+ 134,136,160,1340,491,1193,510,3426,959,1182,
+ 38,950,2176,111,87,321,139,166,96,1697,
+ 312,1152,1338,143,146,149,152,1061,335,284,
+ 363,1462,1815,95,97,98,99,100,1584,179,
+ 2230,2469,2888,2903,2917,88,2950,370,315,316,
+ 317,768,1997,1936,510,816,31,957,2625,20,
+ 999,17,21,18,1053,43,45,438,313,135,
+ 213,1263,1296,1277,1362,1326,294,1446,1983,2436,
+ 20,833,17,21,18,1053,1246,45,137,134,
+ 136,160,1263,1296,1277,1362,1326,521,1446,1438,
+ 1503,1477,1529,75,406,139,166,281,28,1002,
+ 1555,1711,143,146,149,152,1061,2625,20,363,
+ 17,21,18,1053,43,39,1364,1356,1834,2230,
+ 2469,2888,2903,2917,282,2950,1555,927,20,833,
+ 17,21,18,1053,1246,45,1017,1996,1696,668,
+ 1263,1296,1277,1362,1326,228,1446,1438,1503,1477,
+ 1529,75,227,25,287,281,333,2725,20,1400,
+ 17,21,18,1053,1246,45,893,1019,1319,658,
+ 1263,1296,1277,1362,1326,180,1446,1438,1503,1477,
+ 1529,75,282,1704,1555,1239,288,1506,1182,2892,
+ 1101,127,816,31,2463,20,986,17,21,18,
+ 1053,1246,45,1181,2048,278,1620,1263,1296,1277,
+ 1362,1326,289,1446,1438,1503,1477,1529,75,209,
+ 2625,20,281,17,21,18,1053,43,45,684,
+ 48,813,1841,1263,1296,1277,1362,1326,684,1446,
+ 1438,1503,2000,1075,290,1191,260,105,1166,282,
+ 658,1555,2490,20,393,17,21,18,1053,1246,
+ 45,503,336,128,346,1263,1296,1277,1362,1326,
+ 342,1446,1438,1503,1477,1529,75,197,1217,386,
+ 281,924,617,20,509,17,21,18,1053,1246,
+ 45,771,254,213,1364,1263,1296,1277,1362,1326,
+ 24,1446,1438,1503,1477,1529,75,282,1445,1555,
+ 1040,2825,20,1039,17,21,18,1053,1246,45,
+ 217,1730,420,1269,1263,1296,1277,1362,1326,1483,
+ 1446,1438,1503,1477,1529,75,239,291,38,331,
+ 3267,225,2033,554,293,111,87,875,193,1376,
+ 96,816,186,204,824,383,702,1418,3322,1,
+ 1730,420,630,1462,109,95,97,98,99,100,
+ 1010,20,1131,17,21,18,1053,43,36,1394,
+ 1128,110,369,413,111,87,816,188,1376,96,
+ 724,224,229,218,717,221,223,1356,1834,1269,
+ 387,630,1462,109,95,97,98,99,100,107,
+ 788,1615,263,1152,274,816,1542,341,314,182,
+ 110,369,413,919,246,267,1161,1134,272,1969,
+ 989,590,1060,38,329,2626,38,90,747,387,
+ 318,315,316,317,264,1095,2625,20,108,17,
+ 21,18,1053,43,45,1119,1704,2112,575,1263,
+ 1296,1277,1362,1326,241,1446,1438,1503,1477,1529,
+ 94,288,1730,420,2625,20,348,17,21,18,
+ 1053,43,45,38,28,590,1555,1263,1296,1277,
+ 1362,1326,261,1446,1438,1981,111,87,1348,209,
+ 1376,96,2571,20,1080,17,21,18,1053,353,
+ 1828,1086,1841,630,1462,109,95,97,98,99,
+ 100,788,2625,20,912,17,21,18,1053,1246,
+ 45,587,110,369,413,1263,1296,1277,1362,1326,
+ 1698,1446,1438,1503,1477,1529,75,1269,1191,1988,
+ 92,387,2598,20,1669,17,21,18,1053,41,
+ 107,449,275,721,20,360,17,21,18,1053,
+ 1246,45,893,124,1152,22,1263,1296,1277,1362,
+ 1326,1223,1446,1438,1503,1477,1529,75,1989,276,
+ 446,1397,3206,145,1730,420,1827,125,88,319,
+ 315,316,317,691,28,1489,1555,2625,20,788,
+ 17,21,18,1053,43,45,507,240,111,87,
+ 1263,1876,1376,96,724,224,229,218,717,221,
+ 223,1765,1400,1684,569,630,1462,109,95,97,
+ 98,99,100,28,1364,1555,3412,47,1048,1997,
+ 805,893,106,2217,110,369,413,318,315,316,
+ 317,1281,311,243,2825,20,635,17,21,18,
+ 1053,1246,45,387,630,1715,127,1263,1296,1277,
+ 1362,1326,108,1446,1438,1503,1477,1529,75,446,
+ 586,3210,331,308,369,413,405,1269,318,315,
+ 316,317,1594,181,28,28,1555,1555,1381,179,
+ 1187,319,315,316,317,673,1220,370,315,316,
+ 317,255,213,724,224,921,218,717,221,908,
+ 2625,20,1387,17,21,18,1053,43,45,135,
+ 213,255,213,1263,1877,3407,893,1016,2081,2625,
+ 20,1269,17,21,18,1053,43,45,138,134,
+ 136,160,1263,1296,1277,1362,1326,788,1964,19,
+ 503,127,155,860,1191,140,166,788,38,868,
+ 1027,1009,144,147,150,153,1061,330,1257,364,
+ 2625,20,520,17,21,18,1053,1246,45,123,
+ 50,254,213,1263,1296,1277,1362,1326,830,1446,
+ 1438,1503,1477,1529,75,893,1239,2275,86,255,
+ 213,242,2625,20,968,17,21,18,1053,1246,
+ 45,244,1191,816,1834,1263,1296,1277,1362,1326,
+ 195,1446,1438,1503,1477,1529,75,1176,2625,20,
+ 85,17,21,18,1053,1246,45,112,555,1191,
+ 527,1263,1296,1277,1362,1326,1320,1446,1438,1503,
+ 1477,1529,75,419,2625,20,84,17,21,18,
+ 1053,1246,45,38,126,699,1790,1263,1296,1277,
+ 1362,1326,797,1446,1438,1503,1477,1529,75,554,
+ 2625,20,83,17,21,18,1053,1246,45,38,
+ 1851,3346,1191,1263,1296,1277,1362,1326,482,1446,
+ 1438,1503,1477,1529,75,1745,2625,20,82,17,
+ 21,18,1053,1246,45,210,338,122,283,1263,
+ 1296,1277,1362,1326,1269,1446,1438,1503,1477,1529,
+ 75,1289,2625,20,81,17,21,18,1053,1246,
+ 45,1125,230,891,1191,1263,1296,1277,1362,1326,
+ 1269,1446,1438,1503,1477,1529,75,1927,2625,20,
+ 80,17,21,18,1053,1246,45,788,1059,3440,
+ 1786,1263,1296,1277,1362,1326,1269,1446,1438,1503,
+ 1477,1529,75,1219,2625,20,79,17,21,18,
+ 1053,1246,45,1403,1179,816,296,1263,1296,1277,
+ 1362,1326,1269,1446,1438,1503,1477,1529,75,1598,
+ 2625,20,78,17,21,18,1053,1246,45,1364,
+ 1218,245,1191,1263,1296,1277,1362,1326,1269,1446,
+ 1438,1503,1477,1529,75,1663,2625,20,77,17,
+ 21,18,1053,1246,45,1269,2264,3441,1269,1263,
+ 1296,1277,1362,1326,2685,1446,1438,1503,1477,1529,
+ 75,1584,179,1279,76,1107,23,1364,1717,1357,
+ 370,315,316,317,319,315,316,317,205,194,
+ 1453,2625,20,1687,17,21,18,1053,1246,45,
+ 1269,1191,135,213,1263,1296,1277,1362,1326,1928,
+ 1446,1438,1503,1477,1529,75,816,298,351,93,
+ 1391,138,134,136,160,1505,3452,2625,20,2333,
+ 17,21,18,1053,43,45,1430,1191,140,166,
+ 1263,1296,1277,1362,1980,144,147,150,153,1061,
+ 2625,20,364,17,21,18,1053,1246,45,1330,
+ 1290,73,118,1263,1296,1277,1362,1326,1759,1446,
+ 1438,1503,1477,1529,75,1710,2625,20,1407,17,
+ 21,18,1053,1246,45,788,234,1819,456,1263,
+ 1296,1277,1362,1326,752,1446,1438,1503,1477,1529,
+ 75,1725,2625,20,1617,17,21,18,1053,43,
+ 45,1269,38,295,1152,1263,1296,1277,1362,1326,
+ 2398,1446,1438,1503,1477,1529,94,2625,20,320,
+ 17,21,18,1053,43,45,1458,1490,88,297,
+ 1263,1296,1277,1362,1326,1151,1446,1438,1503,1477,
+ 1529,94,1807,1865,2625,20,1395,17,21,18,
+ 1053,1246,45,788,1552,191,362,1263,1296,1277,
+ 1362,1326,1269,1446,1438,1503,1477,1529,75,845,
+ 2625,20,359,17,21,18,1053,1246,45,923,
+ 340,212,1140,1263,1296,1277,1362,1326,1329,1446,
+ 1438,1503,1477,1529,75,1368,2625,20,74,17,
+ 21,18,1053,43,45,1269,38,385,1152,1263,
+ 1296,1277,1362,1326,1347,1446,1438,1503,1477,1529,
+ 94,2625,20,339,17,21,18,1053,43,45,
+ 1556,1498,88,1104,1263,1296,1277,1362,1326,2041,
+ 1446,1438,1503,1477,1529,94,1943,1944,2625,20,
+ 1294,17,21,18,1053,43,45,1269,1570,1723,
+ 202,1263,1296,1277,1362,1326,1269,1446,1438,1503,
+ 1477,1529,94,2625,20,273,17,21,18,1053,
+ 43,45,1999,1874,352,1799,1263,1296,1277,1362,
+ 1326,1269,1446,1438,1503,1477,1529,94,2000,1824,
+ 2625,20,3777,17,21,18,1053,43,45,2673,
+ 3777,3777,203,1263,1296,1277,1362,1326,1597,1446,
+ 1438,1503,1477,1529,94,3777,3777,319,315,316,
+ 317,446,3777,3345,3777,3777,3777,1825,3777,1269,
+ 318,315,316,317,2679,2652,20,3777,17,21,
+ 18,1053,34,370,315,316,317,2706,1220,874,
+ 1269,420,1820,3777,1903,724,224,921,218,717,
+ 221,223,408,1269,3777,135,213,3777,2733,3777,
+ 325,318,315,316,317,88,3777,3407,197,1177,
+ 3777,279,1381,1692,137,134,136,160,38,2068,
+ 1152,2837,318,315,316,317,724,224,229,219,
+ 717,221,223,1154,155,860,3777,2963,3777,3223,
+ 3268,868,1269,3777,88,1327,446,3777,3206,1269,
+ 274,2089,3777,3777,520,318,315,316,317,3777,
+ 1280,269,1161,1134,272,1744,3777,280,3777,3777,
+ 405,395,3777,1220,318,315,316,317,3777,3777,
+ 724,224,229,218,717,221,223,446,3777,3206,
+ 407,3777,2068,3777,3777,1269,318,315,316,317,
+ 2238,1269,3407,3777,3777,3777,1488,3777,3777,370,
+ 315,316,317,1777,1220,1269,3777,394,2409,2772,
+ 3777,724,224,229,218,717,221,223,3777,155,
+ 860,135,213,2799,2371,20,859,17,21,18,
+ 1053,43,44,3407,1749,846,3777,3206,3777,3777,
+ 142,134,136,160,318,315,316,317,2625,20,
+ 3777,17,21,18,1053,43,38,141,166,3777,
+ 155,860,526,38,3777,1152,3777,868,3777,724,
+ 224,229,218,717,221,223,446,3777,3206,28,
+ 2867,1555,2578,3777,3777,318,315,316,317,88,
+ 906,2032,3206,508,3777,521,2110,3777,277,318,
+ 315,316,317,1220,3777,1142,3777,2683,3777,3777,
+ 724,224,229,218,717,221,223,526,305,3777,
+ 3777,3777,796,277,724,224,229,218,717,221,
+ 223,2244,3407,1152,3777,630,3420,3777,274,724,
+ 224,229,218,717,221,223,2032,3777,198,267,
+ 1161,1134,272,3777,304,369,413,88,3777,156,
+ 860,953,3777,274,116,3777,3777,1704,2007,2752,
+ 3777,3777,3777,309,267,1161,1134,272,370,315,
+ 316,317,2625,20,3777,17,21,18,1053,43,
+ 45,3420,3777,2007,3777,1892,709,3777,3777,3777,
+ 135,213,3777,199,3777,318,315,316,317,3777,
+ 3777,302,303,1672,3777,3777,709,3777,3777,137,
+ 134,136,160,2068,3777,318,315,316,317,2852,
+ 724,224,229,219,717,221,223,1154,370,315,
+ 316,317,2963,2068,3777,3777,3777,3777,3777,3777,
+ 724,224,1607,219,717,221,1581,1154,1600,3777,
+ 135,213,709,430,3777,521,3777,319,315,316,
+ 317,318,315,316,317,405,395,3777,3777,145,
+ 134,136,160,3777,1655,1730,1152,3777,305,2068,
+ 3777,3777,796,3777,3777,408,724,224,1607,219,
+ 717,221,223,1154,3777,630,3777,3777,3777,111,
+ 87,1716,1730,1152,96,1010,20,3777,17,21,
+ 18,1053,43,36,304,369,413,1462,104,95,
+ 97,98,99,100,3777,3777,111,87,1501,3777,
+ 658,96,3777,309,38,3777,1152,318,315,316,
+ 317,3777,3777,3777,1462,102,95,97,98,99,
+ 100,3777,3777,3777,709,2068,3777,986,3777,247,
+ 88,3777,3777,318,315,316,317,2225,444,1049,
+ 658,301,303,1777,1730,1152,1094,3777,658,3777,
+ 422,2068,3777,1838,1730,1152,3777,3777,766,224,
+ 233,3777,3777,2875,3777,1154,2333,986,111,87,
+ 3777,3777,3777,96,3777,197,3777,259,111,87,
+ 502,3777,658,96,2123,1760,1462,361,95,97,
+ 98,99,100,1899,1730,1152,1462,103,95,97,
+ 98,99,100,1555,3777,658,1445,3777,3777,986,
+ 3777,3777,318,315,316,317,3777,259,111,87,
+ 3777,3777,3777,96,1574,1760,1960,1730,1152,3777,
+ 2068,3777,986,3777,3777,3777,1462,119,95,97,
+ 98,99,100,3777,1049,3777,192,3777,3777,3777,
+ 3777,111,87,2021,1730,1152,96,746,878,259,
+ 3777,2082,1730,1152,3777,3777,1574,1760,2122,1462,
+ 115,95,97,98,99,100,3777,3777,111,87,
+ 3777,3777,259,96,3777,3777,111,87,3777,2123,
+ 1760,96,2143,1730,1152,3777,1462,2049,95,97,
+ 98,99,100,3777,1462,114,95,97,98,99,
+ 100,3777,3777,3777,1808,1324,3777,111,87,2204,
+ 1730,1152,96,3777,318,315,316,317,3777,3777,
+ 3777,3777,3777,3777,3777,1462,121,95,97,98,
+ 99,100,2068,3777,111,87,3777,2625,20,96,
+ 17,21,18,1053,43,45,1049,2696,3777,3273,
+ 1893,3777,1462,120,95,97,98,99,100,2625,
+ 20,3777,17,21,18,1053,43,45,3777,3777,
+ 2604,3777,1263,1296,1277,1896,2625,20,3777,17,
+ 21,18,1053,43,45,1251,3777,3777,3777,1263,
+ 1296,1277,1904,3777,318,315,316,317,2862,3777,
+ 3777,3777,444,3777,658,274,3777,370,315,316,
+ 317,3777,2068,2893,3777,3777,267,1161,1134,272,
+ 3777,3777,370,315,316,317,1154,2903,3777,135,
+ 213,986,3777,3777,3777,392,370,315,316,317,
+ 3777,3777,3777,274,135,213,3777,3777,148,134,
+ 136,160,3777,3777,269,1161,1134,272,135,213,
+ 2934,3777,3777,151,134,136,160,3777,3777,370,
+ 315,316,317,2944,3777,3777,3777,154,134,136,
+ 160,259,370,315,316,317,3777,3777,2179,1760,
+ 3777,135,213,2625,20,3777,17,21,18,1053,
+ 43,45,3777,3777,135,213,1263,1296,1905,3777,
+ 365,134,136,160,2625,20,3777,17,21,18,
+ 1053,43,45,138,134,136,160,1263,1296,1919,
+ 2625,20,3777,17,21,18,1053,43,45,3777,
+ 3777,3777,3777,1263,1296,1929,2625,20,3777,17,
+ 21,18,1053,43,45,3777,3777,3777,3777,1263,
+ 1296,1932,2625,20,3777,17,21,18,1053,43,
+ 45,476,3777,3206,3777,1263,1296,1938,2625,20,
+ 3777,17,21,18,1053,43,45,890,3777,420,
+ 557,1263,1296,1945,3777,874,3777,420,3777,318,
+ 315,316,317,3777,3777,724,224,229,218,717,
+ 221,223,874,88,420,3777,1281,1332,3777,3777,
+ 116,88,3777,3777,197,1177,3777,953,1381,630,
+ 3777,3777,3777,874,3777,420,3777,2837,88,3777,
+ 3777,197,1177,3777,874,1381,420,3777,2371,369,
+ 413,3777,3777,3777,2837,3223,3777,3777,874,88,
+ 420,1600,197,1177,3777,3777,1381,3777,3777,1594,
+ 88,3777,3223,197,1177,2837,3777,1381,1626,874,
+ 3777,420,3777,3777,88,1748,2837,197,1177,606,
+ 3777,1381,3777,3223,319,315,316,317,3777,1652,
+ 2837,3777,3777,3777,3223,88,3777,3777,197,1177,
+ 1678,3777,1381,3777,3777,3777,1324,3777,3223,3777,
+ 1324,2837,3777,3777,1695,318,315,316,317,318,
+ 315,316,317,2769,3777,3273,3777,3777,3777,3223,
+ 3777,3777,3777,2068,3777,2172,3777,2068,2625,20,
+ 3777,17,21,18,1053,43,37,1049,3777,2625,
+ 20,1049,17,21,18,1053,43,36,2625,20,
+ 3777,17,21,18,1053,43,35,1255,1804,569,
+ 3777,2436,3777,1324,3777,2456,3777,319,315,316,
+ 317,274,318,315,316,317,3777,3777,3777,3777,
+ 3777,3777,267,1161,1134,272,1281,3777,2625,20,
+ 2068,17,21,18,1053,43,48,3777,3777,630,
+ 3777,266,2625,20,1049,17,21,18,1053,43,
+ 47,3777,1324,3777,3777,3777,3777,3777,307,369,
+ 413,318,315,316,317,3777,2625,20,2875,17,
+ 21,18,1053,43,46,1324,1238,3777,658,2068,
+ 1038,3777,3777,3777,318,315,316,317,3777,318,
+ 315,316,317,1049,2652,20,3777,17,21,18,
+ 1053,33,2068,1744,3777,197,3777,1332,3777,3777,
+ 3777,3777,318,315,316,317,1049,2122,2798,20,
+ 3777,17,21,18,1053,1860,3777,3777,3777,3777,
+ 2068,3777,3777,3777,3777,3777,1445,1550,3777,3777,
+ 2502,1262,1682,3777,1591,3777,318,315,316,317,
+ 1814,318,315,316,317,3777,1870,3777,3777,318,
+ 315,316,317,3777,2498,318,315,316,317,3175,
+ 2244,2244,1152,1152,3777,3777,192,3450,3777,981,
+ 1873,3777,2244,3470,1152,3777,3777,1274,878,319,
+ 315,316,317,3777,3777,3777,88,88,3777,3777,
+ 1926,3777,3777,116,116,3777,3777,3777,88,319,
+ 315,316,317,3777,3777,116,3777,3777,3777,3777,
+ 3777,3777,3777,3777,3777,3777,3777,3777,3777,3777,
+ 3777,3777,3777,3777,3777,3777,3777,3777,3777,3777,
+ 3777,3777,3777,3777,3777,3777,3777,3777,3777,3777,
+ 3777,3777,1741,2231,3777,3777,3777,3777,3777,3777,
+ 3777,3777,3777,3777,2245,3777,0,1,539,0,
+ 1,519,0,1,534,0,1,543,0,677,
+ 412,0,519,129,0,534,129,0,543,129,
+ 0,519,130,0,534,130,0,543,130,0,
+ 519,131,0,534,131,0,543,131,0,543,
+ 185,0,534,185,0,519,185,0,185,189,
+ 0,543,184,0,534,184,0,519,184,0,
+ 184,189,0,519,132,0,534,132,0,543,
+ 132,0,519,133,0,534,133,0,543,133,
+ 0,416,419,0,415,418,0,414,417,0,
+ 11,226,0,519,368,0,534,368,0,543,
+ 368,0,4192,411,0,223,235,0,3785,1,
+ 0,543,380,0,534,380,0,519,380,0,
+ 1041,32,0,1852,32,0,519,410,0,534,
+ 410,0,543,410,0,4175,410,0,4173,410,
+ 0,543,253,0,534,253,0,519,253,0,
+ 4192,412,0,1,4014,0,223,236,0,519,
+ 406,0,534,406,0,543,406,0,3994,406,
+ 0,3993,406,0,3992,406,0,3991,406,0,
+ 3942,406,0,3941,406,0,3940,406,0,3939,
+ 406,0,3938,406,0,519,409,0,534,409,
+ 0,543,409,0,4175,409,0,4173,409,0,
+ 179,20,0,8,10,0,1,4196,0,1,
+ 4195,0,1,4194,0,1,4003,0,366,355,
+ 0,367,356,0,113,2741,0
+ };
+ };
+ public final static char baseAction[] = BaseAction.baseAction;
+ public final int baseAction(int index) { return baseAction[index]; }
+ public final static char lhs[] = baseAction;
+ public final int lhs(int index) { return lhs[index]; };
+
+ public interface TermCheck {
+ public final static byte termCheck[] = {0,
+ 0,1,2,3,4,5,6,7,8,9,
+ 10,11,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,27,28,29,
+ 30,31,32,33,34,35,36,0,38,39,
+ 40,41,42,43,44,45,0,0,48,0,
+ 50,51,52,53,54,55,56,57,58,59,
+ 60,61,62,63,64,65,66,67,68,69,
+ 70,71,0,1,2,3,4,5,6,7,
+ 8,9,10,11,12,13,14,15,16,17,
+ 18,19,20,21,22,23,24,25,26,27,
+ 28,29,30,31,32,33,34,35,36,0,
+ 38,39,40,41,42,43,44,45,72,73,
+ 48,74,50,51,52,53,54,55,56,57,
+ 58,59,60,61,62,63,64,65,66,67,
+ 68,69,70,71,0,1,2,3,4,5,
+ 6,7,8,9,10,11,12,13,14,15,
+ 16,17,18,19,20,21,22,23,24,25,
+ 26,27,28,29,30,31,32,33,34,35,
+ 36,0,38,39,40,41,42,43,44,45,
+ 0,10,48,0,50,51,52,53,54,55,
+ 56,57,58,59,60,61,62,63,64,65,
+ 66,67,68,69,70,71,0,1,2,3,
+ 4,5,6,7,8,9,10,11,12,13,
+ 14,15,16,17,18,19,20,21,22,23,
+ 24,25,26,27,28,29,30,31,32,33,
+ 34,35,36,0,38,39,40,41,42,43,
+ 44,45,72,73,48,0,50,51,52,53,
+ 54,55,56,57,58,59,60,61,62,63,
+ 64,65,66,67,68,69,70,0,1,2,
+ 3,4,5,6,7,8,9,10,11,12,
+ 13,14,15,16,17,18,19,20,21,22,
+ 23,24,25,26,27,28,29,30,31,32,
+ 33,34,35,36,0,38,39,40,41,42,
+ 43,44,45,0,1,48,0,50,51,52,
+ 53,54,55,56,57,58,59,60,61,62,
+ 63,64,65,66,67,68,69,70,0,1,
+ 2,3,4,5,28,7,8,9,10,11,
+ 12,13,14,15,16,17,0,19,20,21,
+ 22,23,24,25,26,27,28,29,30,0,
+ 32,33,34,35,36,0,1,39,40,41,
+ 42,43,44,45,0,0,1,0,1,2,
+ 3,4,5,55,7,8,9,10,0,61,
+ 62,63,64,65,66,67,68,69,70,0,
+ 1,2,3,4,5,6,7,8,9,10,
+ 11,12,37,0,37,0,1,2,3,4,
+ 5,0,7,8,9,0,27,28,29,30,
+ 31,32,33,34,35,36,0,38,39,40,
+ 41,42,43,44,45,0,1,2,3,4,
+ 5,0,0,2,55,3,4,6,84,85,
+ 61,62,63,64,65,66,67,68,69,70,
+ 19,0,0,2,49,87,0,0,1,2,
+ 3,4,5,6,7,8,9,10,11,12,
+ 0,39,40,41,42,43,44,45,47,27,
+ 28,29,89,104,27,28,29,30,31,32,
+ 33,34,35,36,89,38,39,40,41,42,
+ 43,44,45,0,0,104,0,37,2,3,
+ 4,5,55,7,8,9,0,11,61,62,
+ 63,64,65,66,67,68,69,70,0,1,
+ 74,27,28,29,6,0,0,1,10,0,
+ 89,13,14,15,16,17,7,8,9,93,
+ 94,95,96,97,98,99,100,101,102,0,
+ 1,104,27,28,29,37,0,1,2,3,
+ 4,5,6,37,46,0,10,11,12,13,
+ 14,15,16,17,0,19,20,21,22,23,
+ 24,25,26,18,91,92,30,13,14,71,
+ 72,73,74,75,76,77,78,79,80,81,
+ 82,83,84,85,86,87,88,0,90,91,
+ 92,93,94,95,96,97,98,99,100,101,
+ 102,0,1,0,0,1,19,6,0,6,
+ 0,10,2,5,13,14,15,16,17,0,
+ 10,0,1,2,3,4,5,6,0,1,
+ 2,3,4,5,31,7,8,9,37,103,
+ 0,1,2,3,4,5,6,46,0,46,
+ 10,11,12,13,14,15,16,17,37,19,
+ 20,21,22,23,24,25,26,46,47,0,
+ 30,0,71,72,73,74,75,76,77,78,
+ 79,80,81,82,83,84,85,86,87,88,
+ 0,90,91,92,93,94,95,96,97,98,
+ 99,100,101,102,0,1,37,0,18,0,
+ 6,2,0,6,10,0,0,13,14,15,
+ 16,17,6,0,0,1,2,3,4,5,
+ 6,7,8,9,10,0,27,2,3,4,
+ 5,37,18,103,75,74,11,0,1,0,
+ 46,27,28,29,30,31,32,33,34,35,
+ 36,37,46,47,0,0,1,2,3,4,
+ 5,47,7,8,9,71,72,73,74,75,
+ 76,77,78,79,80,81,82,83,84,85,
+ 86,87,88,0,90,91,92,93,94,95,
+ 96,97,98,99,100,101,102,0,1,0,
+ 103,18,0,6,49,6,7,10,6,0,
+ 13,14,15,16,17,0,1,2,3,4,
+ 5,0,7,8,9,86,72,73,0,1,
+ 31,10,0,31,37,0,0,1,2,3,
+ 4,5,6,46,16,17,10,11,12,13,
+ 14,15,16,17,18,19,20,21,22,23,
+ 24,25,26,0,49,37,0,1,71,72,
+ 73,74,75,76,77,78,79,80,81,82,
+ 83,84,85,86,87,88,0,90,91,92,
+ 93,94,95,96,97,98,99,100,101,102,
+ 0,1,0,75,72,73,6,71,0,1,
+ 10,0,1,13,14,15,16,17,90,0,
+ 1,2,3,4,5,6,0,1,0,10,
+ 11,12,13,14,15,16,17,37,19,20,
+ 21,22,23,24,25,26,46,0,0,2,
+ 3,4,5,0,7,8,9,0,11,2,
+ 3,4,5,0,7,8,9,19,11,0,
+ 1,71,72,73,74,75,76,77,78,79,
+ 80,81,82,83,84,85,86,87,88,0,
+ 90,91,92,93,94,95,96,97,98,99,
+ 100,101,102,0,0,2,3,4,5,6,
+ 7,8,9,0,11,12,0,89,2,3,
+ 4,5,103,7,8,9,37,11,0,1,
+ 27,28,29,30,0,32,33,34,35,36,
+ 0,38,39,40,41,42,43,44,45,0,
+ 46,0,1,2,3,4,5,6,55,19,
+ 0,27,28,29,61,62,63,64,65,66,
+ 67,68,69,70,71,0,0,2,3,4,
+ 5,6,7,8,9,0,11,12,37,0,
+ 0,0,2,3,4,5,0,6,47,86,
+ 0,11,27,28,29,30,6,32,33,34,
+ 35,36,0,38,39,40,41,42,43,44,
+ 45,72,73,27,28,29,0,37,0,1,
+ 55,31,6,7,8,9,61,62,63,64,
+ 65,66,67,68,69,70,71,0,0,2,
+ 3,4,5,6,7,8,9,31,11,12,
+ 0,1,71,15,0,75,0,7,8,9,
+ 10,7,46,88,27,28,29,30,0,32,
+ 33,34,35,36,6,38,39,40,41,42,
+ 43,44,45,27,28,29,0,37,0,0,
+ 74,2,55,0,6,7,8,9,61,62,
+ 63,64,65,66,67,68,69,70,71,0,
+ 1,2,3,4,5,47,7,8,9,31,
+ 11,12,0,0,2,3,4,5,0,0,
+ 7,8,9,11,46,6,27,28,29,30,
+ 18,32,33,34,35,36,0,0,39,40,
+ 41,42,43,44,45,0,0,2,3,4,
+ 5,15,74,0,55,18,11,0,0,6,
+ 61,62,63,64,65,66,67,68,69,70,
+ 0,88,2,3,4,5,0,7,8,9,
+ 0,11,12,0,0,2,3,4,5,0,
+ 72,73,0,1,11,49,7,27,28,29,
+ 30,18,32,33,34,35,36,18,89,39,
+ 40,41,42,43,44,45,0,0,2,3,
+ 4,5,103,6,71,55,46,11,0,72,
+ 73,61,62,63,64,65,66,67,68,69,
+ 70,0,0,2,3,4,5,0,7,8,
+ 9,0,11,12,78,79,80,81,82,83,
+ 13,14,78,79,80,81,82,83,27,28,
+ 29,30,0,32,33,34,35,36,6,0,
+ 39,40,41,42,43,44,45,0,71,0,
+ 0,49,13,14,0,0,55,7,8,9,
+ 10,6,61,62,63,64,65,66,67,68,
+ 69,70,0,1,2,3,4,5,6,47,
+ 0,49,10,11,12,13,14,15,16,17,
+ 18,19,20,21,22,23,24,25,26,0,
+ 46,0,47,31,0,0,7,8,9,0,
+ 38,7,8,9,10,0,7,8,9,0,
+ 48,2,50,51,52,53,54,0,56,57,
+ 58,59,60,0,87,2,3,4,5,89,
+ 7,8,9,0,11,12,0,0,1,0,
+ 7,8,9,7,8,9,7,8,9,0,
+ 27,28,29,30,0,32,33,34,35,36,
+ 6,0,39,40,41,42,43,44,45,78,
+ 79,80,81,82,83,0,1,0,55,84,
+ 85,6,0,89,61,62,63,64,65,66,
+ 67,68,69,70,0,1,2,3,4,5,
+ 6,47,0,1,10,11,12,13,14,15,
+ 16,17,18,19,20,21,22,23,24,25,
+ 26,0,47,0,0,31,0,1,7,8,
+ 9,0,38,10,0,0,0,2,7,8,
+ 9,6,48,0,50,51,52,53,54,0,
+ 56,57,58,59,60,0,1,2,3,4,
+ 5,6,0,1,0,10,11,12,13,14,
+ 15,16,17,18,19,20,21,22,23,24,
+ 25,26,47,0,0,49,31,0,0,46,
+ 7,8,9,38,7,8,9,48,0,76,
+ 77,0,18,48,6,50,51,52,53,54,
+ 46,56,57,58,59,60,0,1,2,3,
+ 4,5,6,0,0,0,10,11,12,13,
+ 14,15,16,17,18,19,20,21,22,23,
+ 24,25,26,0,46,47,0,31,0,0,
+ 7,8,9,0,38,0,10,0,0,0,
+ 7,8,9,0,48,6,50,51,52,53,
+ 54,46,56,57,58,59,60,0,1,2,
+ 3,4,5,6,0,0,0,10,11,12,
+ 13,14,15,16,17,18,19,20,21,22,
+ 23,24,25,26,0,46,47,49,31,0,
+ 0,0,0,0,10,38,7,8,9,7,
+ 8,9,76,77,0,48,0,50,51,52,
+ 53,54,0,56,57,58,59,60,0,1,
+ 2,3,4,5,6,0,0,0,10,11,
+ 12,13,14,15,16,17,18,19,20,21,
+ 22,23,24,25,26,0,0,0,105,31,
+ 0,0,7,8,9,0,38,0,0,0,
+ 76,77,0,0,18,18,48,74,50,51,
+ 52,53,54,18,56,57,58,59,60,0,
+ 1,2,3,4,5,6,0,0,0,10,
+ 11,12,13,14,15,16,17,18,19,20,
+ 21,22,23,24,25,26,18,0,0,0,
+ 31,49,49,0,0,0,0,38,0,0,
+ 0,0,0,0,0,18,18,48,0,50,
+ 51,52,53,54,18,56,57,58,59,60,
+ 0,1,2,3,4,5,6,0,0,0,
+ 10,11,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,49,49,0,
+ 49,31,49,49,0,0,0,0,38,0,
+ 0,0,0,0,0,0,0,18,48,0,
+ 50,51,52,53,54,18,56,57,58,59,
+ 60,0,1,2,3,4,5,6,0,0,
+ 0,10,11,12,13,14,15,16,17,18,
+ 19,20,21,22,23,24,25,26,49,49,
+ 0,0,31,0,0,0,0,0,0,38,
+ 0,0,0,0,0,0,0,0,0,48,
+ 0,50,51,52,53,54,0,56,57,58,
+ 59,60,0,1,2,3,4,5,6,0,
+ 0,0,10,11,12,13,14,15,16,17,
+ 18,19,20,21,22,23,24,25,26,0,
+ 0,0,0,31,0,0,0,0,0,0,
+ 38,0,0,0,0,0,0,0,0,0,
+ 48,0,50,51,52,53,54,0,56,57,
+ 58,59,60,0,1,2,3,4,5,6,
+ 0,0,0,10,11,12,13,14,15,16,
+ 17,18,19,20,21,22,23,24,25,26,
+ 0,0,0,0,31,0,0,0,0,0,
+ 0,38,0,0,7,8,9,0,0,6,
+ 0,48,0,50,51,52,53,54,0,56,
+ 57,58,59,60,27,28,29,30,0,32,
+ 33,34,35,36,31,0,39,40,41,42,
+ 43,44,45,0,0,0,0,0,0,0,
+ 47,0,55,0,0,0,0,0,61,62,
+ 63,64,65,66,67,0,1,2,3,4,
+ 5,0,0,0,0,10,11,12,13,14,
+ 15,16,17,18,19,20,21,22,23,24,
+ 25,26,0,1,2,3,4,5,6,7,
+ 8,9,10,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,27,
+ 28,29,30,31,32,33,34,35,36,37,
+ 0,1,2,3,4,5,0,0,0,47,
+ 10,11,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,0,1,2,
+ 3,4,5,6,7,8,9,10,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,27,28,29,30,31,32,
+ 33,34,35,36,37,0,1,2,3,4,
+ 5,0,0,0,47,10,11,12,13,14,
+ 15,16,17,18,19,20,21,22,23,24,
+ 25,26,0,1,2,3,4,5,0,0,
+ 0,0,10,11,12,13,14,15,16,17,
+ 18,19,20,21,22,23,24,25,26,0,
+ 1,2,3,4,5,0,0,0,0,10,
+ 11,12,13,14,15,16,17,18,19,20,
+ 21,22,23,24,25,26,0,1,2,3,
+ 4,5,0,0,0,0,10,11,12,13,
+ 14,15,16,17,0,19,20,21,22,23,
+ 24,25,26,0,1,2,3,4,5,0,
+ 0,0,0,10,11,12,13,14,15,16,
+ 17,0,19,20,21,22,23,24,25,26,
+ 0,1,2,3,4,5,0,0,0,0,
+ 10,11,12,13,14,15,16,17,0,19,
+ 20,21,22,23,24,25,26,0,1,2,
+ 3,4,5,0,0,0,0,10,11,12,
+ 13,14,15,16,17,0,19,20,21,22,
+ 23,24,25,26,0,1,2,3,4,5,
+ 0,0,0,0,10,11,12,13,14,15,
+ 16,17,0,19,20,21,22,23,24,25,
+ 26,0,1,2,3,4,5,0,0,0,
+ 0,10,11,12,13,14,15,16,17,0,
+ 19,20,21,22,23,24,25,26,0,0,
+ 0,3,4,0,0,7,8,9,0,0,
+ 6,0,0,0,0,0,1,0,0,0,
+ 0,6,0,0,0,27,28,29,30,0,
+ 32,33,34,35,36,31,0,39,40,41,
+ 42,43,44,45,0,1,2,3,4,5,
+ 46,0,37,0,10,11,12,13,14,15,
+ 16,17,47,19,20,21,22,23,24,25,
+ 26,0,0,0,3,4,0,0,7,8,
+ 9,0,0,0,0,0,0,0,0,1,
+ 0,0,0,0,6,0,0,0,27,28,
+ 29,30,0,32,33,34,35,36,0,0,
+ 39,40,41,42,43,44,45,0,1,2,
+ 3,4,5,0,0,37,0,10,11,12,
+ 13,14,15,16,17,47,19,20,21,22,
+ 23,24,25,26,0,1,2,3,4,5,
+ 0,0,0,0,10,11,12,13,14,15,
+ 16,17,0,19,20,21,22,23,24,25,
+ 26,0,0,0,0,0,0,0,7,8,
+ 9,0,0,0,0,0,0,1,7,8,
+ 9,0,6,0,0,0,0,0,27,28,
+ 29,30,0,32,33,34,35,36,27,28,
+ 29,30,0,32,33,34,35,36,0,7,
+ 8,9,0,37,0,0,0,0,0,7,
+ 8,9,0,47,0,0,0,0,0,27,
+ 28,29,30,0,32,33,34,35,36,27,
+ 28,29,30,0,32,33,34,35,36,0,
+ 7,8,9,0,0,0,0,0,0,0,
+ 7,8,9,0,0,0,0,0,0,0,
+ 27,28,29,30,0,32,33,34,35,36,
+ 27,28,29,30,0,32,33,34,35,36,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0
+ };
+ };
+ public final static byte termCheck[] = TermCheck.termCheck;
+ public final int termCheck(int index) { return termCheck[index]; }
+
+ public interface TermAction {
+ public final static char termAction[] = {0,
+ 3777,1,6257,6201,6198,6200,1801,3537,1,1,
+ 1,6256,1,1,1,1,1,1,818,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,3786,1,1,1,1,1,1,3878,1,
+ 1,1,1,1,1,1,55,157,1643,286,
+ 1178,1076,1404,1719,608,1,1633,1045,1685,1202,
+ 1659,1,1,1,1,1,1,1,1,1,
+ 1,3784,8,3753,3753,3753,3753,3753,3753,3753,
+ 3753,3753,3753,3753,3753,3753,3753,3753,3753,3753,
+ 3753,3753,3753,3753,3753,3753,3753,3753,3753,3753,
+ 3753,3753,3753,3753,3753,3753,3753,3753,3753,3777,
+ 3753,3753,3753,3753,3753,3753,3753,3753,1237,1360,
+ 3753,461,3753,3753,3753,3753,3753,3753,3753,3753,
+ 3753,3753,3753,3753,3753,3753,3753,3753,3753,3753,
+ 3753,3753,3753,3753,3777,1,6257,6201,6198,6200,
+ 1801,3537,1,1,1,6256,1,1,1,1,
+ 1,1,818,1,1,1,1,1,1,1,
+ 1,1,1,1,1,3786,1,1,1,1,
+ 1,3777,3878,1,1,1,1,1,1,1,
+ 358,2195,1643,3777,1178,1076,1404,1719,608,1,
+ 1633,1045,1685,1202,1659,1,1,1,1,1,
+ 1,1,1,1,1,3784,3777,1,6257,6201,
+ 6198,6200,3787,3537,1,1,1,6256,1,1,
+ 1,1,1,1,818,1,1,1,1,1,
+ 1,1,1,1,1,1,1,3786,1,1,
+ 1,1,1,3777,3878,1,1,1,1,1,
+ 1,1,1237,1360,1643,3777,1178,1076,1404,1719,
+ 608,1,1633,1045,1685,1202,1659,1,1,1,
+ 1,1,1,1,1,1,1,3777,1,6257,
+ 6201,6198,6200,3787,3537,1,1,1,6256,1,
+ 1,1,1,1,1,818,1,1,1,1,
+ 1,1,1,1,1,1,1,1,3786,1,
+ 1,1,1,1,3777,3878,1,1,1,1,
+ 1,1,1,3777,479,1643,344,1178,1076,1404,
+ 1719,608,1,1633,1045,1685,1202,1659,1,1,
+ 1,1,1,1,1,1,1,1,3777,3134,
+ 3788,4191,4193,3690,4120,543,519,534,3249,3789,
+ 3388,3238,2288,3258,3364,2095,3777,3793,1182,3790,
+ 3791,3792,737,499,1132,3991,3993,3992,3940,3777,
+ 3941,3939,3994,3942,3938,3777,617,3945,3949,3947,
+ 3948,3946,3951,3952,63,222,490,268,2345,4003,
+ 4194,4196,4195,3950,543,519,534,253,69,3944,
+ 3953,3954,3955,4165,4166,4167,1278,3350,3080,3777,
+ 1,1,1,1,1,3787,3537,1,1,1,
+ 1,1,912,1,912,1,3061,4003,4194,4196,
+ 4195,3777,3546,3540,3543,3777,1,1,1,1,
+ 3786,1,1,1,1,1,3777,4083,1,1,
+ 1,1,1,1,1,1,3061,4003,4194,4196,
+ 4195,3777,3777,1955,1,4173,4175,3783,2866,2849,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1912,1,3777,3693,2633,678,43,3777,1,1,
+ 1,1,1,3787,3537,1,1,1,1,1,
+ 220,4178,4174,4180,4181,4179,4176,4177,3782,3991,
+ 3993,3992,4035,300,1,1,1,1,3786,1,
+ 1,1,1,1,1842,4083,1,1,1,1,
+ 1,1,1,73,249,3536,185,912,3588,3588,
+ 3588,3588,1,3579,3585,3582,3777,3588,1,1,
+ 1,1,1,1,1,1,1,1,1,4193,
+ 1686,1,1,1,4193,248,270,817,4193,182,
+ 4035,4193,4193,4193,4193,4193,543,519,534,1660,
+ 1634,1608,1582,1556,1504,1530,1478,1452,1420,3777,
+ 524,299,3991,3993,3992,4193,1,3134,3788,4191,
+ 4193,4192,3781,912,4193,3777,1000,3789,544,3238,
+ 2288,3258,3364,2095,52,3793,1182,3790,3791,3792,
+ 737,499,1132,629,850,639,787,2827,2422,4193,
+ 4193,4193,4193,4193,4193,4193,4193,4193,4193,4193,
+ 4193,4193,4193,4193,4193,4193,4193,349,4193,4193,
+ 4193,4193,4193,4193,4193,4193,4193,4193,4193,4193,
+ 4193,1,4192,3777,3777,943,1062,4192,3777,3787,
+ 3777,4192,1740,486,4192,4192,4192,4192,4192,3777,
+ 1800,1,2345,4003,4194,4196,4195,262,253,3061,
+ 4003,4194,4196,4195,3786,543,519,534,4192,3780,
+ 3777,3134,3788,4191,4193,4192,3781,4192,3777,2316,
+ 2555,3789,544,3238,2288,3258,3364,2095,912,3793,
+ 1182,3790,3791,3792,737,499,1132,262,262,292,
+ 1816,211,4192,4192,4192,4192,4192,4192,4192,4192,
+ 4192,4192,4192,4192,4192,4192,4192,4192,4192,4192,
+ 229,4192,4192,4192,4192,4192,4192,4192,4192,4192,
+ 4192,4192,4192,4192,1,4191,2023,3777,232,326,
+ 4191,4104,3777,3781,4191,3777,3777,4191,4191,4191,
+ 4191,4191,3783,3777,356,367,367,367,367,367,
+ 3771,367,367,367,3771,3777,4105,3788,4191,4193,
+ 4192,4191,5624,3780,1756,1867,3789,416,3621,67,
+ 4191,367,367,367,367,3771,367,367,367,367,
+ 367,367,455,3782,357,1,3061,4003,4194,4196,
+ 4195,3771,3546,3540,3543,4191,4191,4191,4191,4191,
+ 4191,4191,4191,4191,4191,4191,4191,4191,4191,4191,
+ 4191,4191,4191,1,4191,4191,4191,4191,4191,4191,
+ 4191,4191,4191,4191,4191,4191,4191,1,3789,1,
+ 3780,818,1,3789,1946,117,3537,3789,3787,3777,
+ 3789,3789,3789,3789,3789,1,3061,4003,4194,4196,
+ 4195,3777,3546,3540,3543,1379,1237,1360,32,3660,
+ 117,3373,59,3786,3789,3777,1,3134,5187,4981,
+ 4775,4878,29,3789,3803,3804,3249,5084,544,3238,
+ 2288,3258,3364,2095,5624,3793,1182,3790,3791,3792,
+ 737,499,1132,3777,1946,3663,415,3624,3789,3789,
+ 3789,3789,3789,3789,3789,3789,3789,3789,3789,3789,
+ 3789,3789,3789,3789,3789,3789,3777,3789,3789,3789,
+ 3789,3789,3789,3789,3789,3789,3789,3789,3789,3789,
+ 1,3788,3777,822,1237,1360,3788,29,414,3627,
+ 3788,11,3630,3788,3788,3788,3788,3788,675,3777,
+ 3134,3788,4191,4193,4192,3781,3777,445,1,3249,
+ 3789,544,3238,2288,3258,3364,2095,3788,3793,1182,
+ 3790,3791,3792,737,499,1132,3788,184,3777,3600,
+ 3600,3600,3600,3777,3591,3597,3594,206,3600,6246,
+ 6246,6246,6246,3777,543,519,534,1029,6246,350,
+ 1233,3788,3788,3788,3788,3788,3788,3788,3788,3788,
+ 3788,3788,3788,3788,3788,3788,3788,3788,3788,271,
+ 3788,3788,3788,3788,3788,3788,3788,3788,3788,3788,
+ 3788,3788,3788,3777,347,1,1,1,1,191,
+ 1,1,1,68,1,1,377,4034,6254,6254,
+ 6254,6254,3780,543,519,534,912,6254,337,1548,
+ 1,1,1,1,250,1,1,1,1,1,
+ 3777,3973,1,1,1,1,1,1,1,58,
+ 1002,1,2345,3765,3762,3756,3759,3783,1,1062,
+ 3777,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,191,3777,3777,1,1,1,
+ 1,190,1,1,1,71,1,1,912,3777,
+ 3777,1,3788,4191,4193,4192,251,3648,3782,1379,
+ 3777,3789,1,1,1,1,3787,1,1,1,
+ 1,1,3777,3973,1,1,1,1,1,1,
+ 1,1237,1360,3991,3993,3992,235,1971,3777,3077,
+ 1,3786,223,3645,3645,3645,1,1,1,1,
+ 1,1,1,1,1,1,190,3777,65,1,
+ 1,1,1,191,1,1,1,223,1,1,
+ 268,2320,3784,1767,1,1645,252,543,519,534,
+ 253,3537,223,1104,1,1,1,1,3777,1,
+ 1,1,1,1,3783,3973,1,1,1,1,
+ 1,1,1,3991,3993,3992,3777,912,236,3777,
+ 223,2016,1,72,223,3696,3696,3696,1,1,
+ 1,1,1,1,1,1,1,1,191,1,
+ 3061,729,680,603,3549,3782,3546,3540,3543,223,
+ 3789,453,3777,253,3788,4191,4193,4192,57,3777,
+ 543,519,534,3789,223,3781,3991,3993,3992,3940,
+ 1063,3941,3939,3994,3942,3938,66,3777,3945,3949,
+ 3947,3948,3946,3951,3952,208,3777,3788,4191,4193,
+ 4192,1767,223,3777,3950,1408,3789,56,3777,3785,
+ 3944,3953,3954,3955,4165,4166,4167,1278,3350,3080,
+ 3777,1104,3788,4191,4193,3642,60,543,519,534,
+ 256,3789,453,3777,62,3788,4191,4193,4192,1,
+ 1237,1360,3777,1956,3789,2524,3537,3991,3993,3992,
+ 3940,1066,3941,3939,3994,3942,3938,818,2050,3945,
+ 3949,3947,3948,3946,3951,3952,207,285,1463,1463,
+ 1463,1463,3780,1113,3784,3950,797,1463,3777,1237,
+ 1360,3944,3953,3954,3955,4165,4166,4167,1278,3350,
+ 3080,3777,3777,3788,4191,4193,3690,54,543,519,
+ 534,3777,3789,453,3068,3052,3036,3020,3004,2983,
+ 2827,2422,3068,3052,3036,3020,3004,2983,3991,3993,
+ 3992,3940,3777,3941,3939,3994,3942,3938,3783,53,
+ 3945,3949,3947,3948,3946,3951,3952,70,1113,3777,
+ 1,2551,2827,2422,89,1,3950,3546,3540,3543,
+ 253,3783,3944,3953,3954,3955,4165,4166,4167,1278,
+ 3350,3080,3777,1,6257,6201,6198,6200,3787,3782,
+ 3777,769,1,6256,1,1,1,1,1,1,
+ 818,1,1,1,1,1,1,1,1,159,
+ 1731,61,3782,3786,1,64,543,519,534,378,
+ 3878,3546,3540,3543,253,3777,543,519,534,3777,
+ 1643,4015,1178,1076,1404,1719,608,3777,1633,1045,
+ 1685,1202,1659,3777,678,3788,4191,4193,4192,4035,
+ 543,519,534,381,3789,453,380,3777,2148,372,
+ 543,519,534,3651,3657,3654,543,519,534,3777,
+ 3991,3993,3992,3940,1,3941,3939,3994,3942,3938,
+ 91,3777,3945,3949,3947,3948,3946,3951,3952,3068,
+ 3052,3036,3020,3004,2983,3777,446,3777,3950,2866,
+ 2849,3783,3777,4035,3944,3953,3954,3955,4165,4166,
+ 4167,1278,3350,3080,3777,1,6257,6201,6198,6200,
+ 3787,91,3777,2303,1,6256,1,1,1,1,
+ 1,1,818,1,1,1,1,1,1,1,
+ 1,371,3782,49,3777,3786,324,941,543,519,
+ 534,183,3878,3336,3777,3777,1,1085,543,519,
+ 534,3783,1643,30,1178,1076,1404,1719,608,3777,
+ 1633,1045,1685,1202,1659,3777,1,6257,6201,6198,
+ 6200,3787,3777,2584,207,1,6256,1,1,1,
+ 1,1,1,818,1,1,1,1,1,1,
+ 1,1,3782,253,3777,2,3786,373,3777,3806,
+ 3681,3687,3684,3878,543,519,534,2009,3777,3312,
+ 3298,3777,1513,1643,3783,1178,1076,1404,1719,608,
+ 5623,1633,1045,1685,1202,1659,3777,1,6257,6201,
+ 6198,6200,3787,3777,3777,30,1,6256,1,1,
+ 1,1,1,1,818,1,1,1,1,1,
+ 1,1,1,379,2008,3782,51,3786,3777,3777,
+ 543,519,534,200,3878,3777,3336,3777,3777,3777,
+ 543,519,534,113,1643,3783,1178,1076,1404,1719,
+ 608,757,1633,1045,1685,1202,1659,3777,1,6257,
+ 6201,6198,6200,3787,3777,3777,3777,1,6256,1,
+ 1,1,1,1,1,818,1,1,1,1,
+ 1,1,1,1,50,1294,3782,2623,3786,374,
+ 3777,3777,375,3777,3336,3878,543,519,534,543,
+ 519,534,3312,3298,3777,1643,3777,1178,1076,1404,
+ 1719,608,3777,1633,1045,1685,1202,1659,3777,1,
+ 6257,6201,6198,6200,3787,3777,3777,3777,1,6256,
+ 1,1,1,1,1,1,818,1,1,1,
+ 1,1,1,1,1,376,229,3777,3774,3786,
+ 3777,3777,543,519,534,367,3878,3777,3777,3777,
+ 3312,3298,3777,3777,233,1539,1643,882,1178,1076,
+ 1404,1719,608,5624,1633,1045,1685,1202,1659,3777,
+ 1,6257,6201,6198,6200,3787,3777,3777,356,1,
+ 6256,1,1,1,1,1,1,818,1,1,
+ 1,1,1,1,1,1,5624,354,42,3777,
+ 3786,1894,1920,3777,3777,3777,3777,3878,201,3777,
+ 3777,1,3777,1,1,5624,5624,1643,3777,1178,
+ 1076,1404,1719,608,5624,1633,1045,1685,1202,1659,
+ 3777,1,6257,6201,6198,6200,3787,3777,3777,3777,
+ 1,6256,1,1,1,1,1,1,818,1,
+ 1,1,1,1,1,1,1,1998,4161,189,
+ 4193,3786,4192,4191,3777,3777,3777,381,3878,1,
+ 1,3777,3777,3777,3777,3777,3777,206,1643,3777,
+ 1178,1076,1404,1719,608,377,1633,1045,1685,1202,
+ 1659,3777,1,6257,6201,6198,6200,3787,3777,3777,
+ 3777,1,6256,1,1,1,1,1,1,818,
+ 1,1,1,1,1,1,1,1,3789,3788,
+ 3777,3777,3786,3777,3777,3777,3777,3777,3777,3878,
+ 3777,3777,3777,3777,3777,3777,3777,3777,3777,1643,
+ 3777,1178,1076,1404,1719,608,3777,1633,1045,1685,
+ 1202,1659,3777,1,6257,6201,6198,6200,3787,3777,
+ 3777,3777,1,6256,1,1,1,1,1,1,
+ 818,1,1,1,1,1,1,1,1,3777,
+ 3777,3777,3777,3786,3777,3777,3777,3777,3777,3777,
+ 3878,3777,3777,3777,3777,3777,3777,3777,3777,3777,
+ 1643,3777,1178,1076,1404,1719,608,3777,1633,1045,
+ 1685,1202,1659,3777,1,6257,6201,6198,6200,3787,
+ 3777,3777,3777,1,6256,1,1,1,1,1,
+ 1,818,1,1,1,1,1,1,1,1,
+ 3777,3777,3777,3777,3786,3777,3777,129,3777,3777,
+ 3777,3878,3777,1,3558,3552,3555,3777,3777,117,
+ 3777,1643,3777,1178,1076,1404,1719,608,3777,1633,
+ 1045,1685,1202,1659,3991,3993,3992,3940,3777,3941,
+ 3939,3994,3942,3938,117,3777,3945,3949,3947,3948,
+ 3946,3951,3952,3777,3777,3777,3777,3777,3777,3777,
+ 117,3777,3950,3777,3777,3777,3777,3777,3944,3953,
+ 3954,3955,4165,4166,4167,3777,3134,3788,4191,4193,
+ 4192,3777,3777,3777,3777,3249,3789,544,3238,2288,
+ 3258,3364,2095,5624,3793,1182,3790,3791,3792,737,
+ 499,1132,20,3750,179,179,179,179,3750,179,
+ 179,179,3750,3777,3777,3777,3777,3777,3777,3777,
+ 3777,3777,3777,3777,3777,3777,3777,3777,3777,179,
+ 179,179,179,3750,179,179,179,179,179,3750,
+ 3777,3134,3788,4191,4193,4192,3777,3777,3777,3750,
+ 3249,3789,544,3238,2288,3258,3364,2095,5624,3793,
+ 1182,3790,3791,3792,737,499,1132,355,366,366,
+ 366,366,366,3768,366,366,366,3768,3777,3777,
+ 3777,3777,3777,3777,3777,3777,3777,3777,3777,3777,
+ 3777,3777,3777,3777,366,366,366,366,3768,366,
+ 366,366,366,366,366,1,3134,5187,4981,4775,
+ 4878,3777,3777,3777,3768,3249,5084,544,3238,2288,
+ 3258,3364,2095,5624,3793,1182,3790,3791,3792,737,
+ 499,1132,382,3134,3788,4191,4193,4192,3777,3777,
+ 3777,3777,3249,3789,544,3238,2288,3258,3364,2095,
+ 5624,3793,1182,3790,3791,3792,737,499,1132,3777,
+ 3134,3788,4191,4193,4192,3777,3777,3777,3777,3249,
+ 3789,544,3238,2288,3258,3364,2095,5624,3793,1182,
+ 3790,3791,3792,737,499,1132,3777,2109,3788,4191,
+ 4193,4192,3777,3777,3777,3777,3249,3789,544,3238,
+ 2288,3258,3364,2095,3777,3793,1182,3790,3791,3792,
+ 737,499,1132,3777,3085,3788,4191,4193,4192,3777,
+ 3777,3777,3777,3249,3789,544,3238,2288,3258,3364,
+ 2095,3777,3793,1182,3790,3791,3792,737,499,1132,
+ 3777,3102,3788,4191,4193,4192,3777,3777,3777,3777,
+ 3249,3789,544,3238,2288,3258,3364,2095,3777,3793,
+ 1182,3790,3791,3792,737,499,1132,3777,3123,3788,
+ 4191,4193,4192,3777,3777,3777,3777,3249,3789,544,
+ 3238,2288,3258,3364,2095,3777,3793,1182,3790,3791,
+ 3792,737,499,1132,3777,3134,3788,4191,4193,4192,
+ 3777,3777,3777,3777,3249,3789,544,3238,2288,3258,
+ 3364,2095,3777,3793,1182,3790,3791,3792,737,499,
+ 1132,3777,3148,3788,4191,4193,4192,3777,3777,3777,
+ 3777,3249,3789,544,3238,2288,3258,3364,2095,3777,
+ 3793,1182,3790,3791,3792,737,499,1132,410,3777,
+ 3777,3678,3675,3777,3777,3672,3666,3669,3777,3777,
+ 3787,3777,3777,3777,3777,1,2320,3777,3777,3777,
+ 3777,391,3777,3777,3777,3991,3993,3992,3940,3777,
+ 3941,3939,3994,3942,3938,3786,3777,4178,4174,4180,
+ 4181,4179,4176,4177,1,3134,3788,4191,4193,4192,
+ 2330,3777,912,3777,3249,3789,544,3238,2288,3258,
+ 3364,2095,391,3793,1182,3790,3791,3792,737,499,
+ 1132,409,3777,3777,3747,3744,3777,3777,3741,3735,
+ 3738,3777,3777,3777,3777,3777,3777,3777,1,2320,
+ 3777,3777,3777,3777,265,3777,3777,3777,3991,3993,
+ 3992,3940,3777,3941,3939,3994,3942,3938,3777,3777,
+ 4178,4174,4180,4181,4179,4176,4177,3777,3169,3788,
+ 4191,4193,4192,3777,3777,912,3777,3249,3789,544,
+ 3238,2288,3258,3364,2095,265,3793,1182,3790,3791,
+ 3792,737,499,1132,332,3134,3788,4191,4193,4192,
+ 3777,3777,3777,3777,3249,3789,544,3238,2288,3258,
+ 3364,2095,3777,3793,1182,3790,3791,3792,737,499,
+ 1132,130,3777,3777,3777,3777,3777,3777,3567,3561,
+ 3564,131,3777,3777,3777,3777,1,2320,3576,3570,
+ 3573,3777,3783,3777,3777,3777,3777,3777,3991,3993,
+ 3992,3940,3777,3941,3939,3994,3942,3938,3991,3993,
+ 3992,3940,132,3941,3939,3994,3942,3938,3777,3609,
+ 3603,3606,133,912,3777,3777,3777,3777,3777,3618,
+ 3612,3615,3777,3782,3777,3777,3777,3777,3777,3991,
+ 3993,3992,3940,3777,3941,3939,3994,3942,3938,3991,
+ 3993,3992,3940,368,3941,3939,3994,3942,3938,3777,
+ 3639,3633,3636,406,3777,3777,3777,3777,3777,3777,
+ 3705,3699,3702,3777,3777,3777,3777,3777,3777,3777,
+ 3991,3993,3992,3940,3777,3941,3939,3994,3942,3938,
+ 3717,3711,3714,3726,3777,3723,3729,3708,3720,3732
+ };
+ };
+ public final static char termAction[] = TermAction.termAction;
+ public final int termAction(int index) { return termAction[index]; }
+
+ public interface Asb {
+ public final static char asb[] = {0,
+ 753,1,165,350,348,568,753,166,350,350,
+ 833,141,670,166,166,166,79,660,79,660,
+ 660,79,660,79,355,350,339,339,339,339,
+ 166,79,33,570,9,521,227,350,105,104,
+ 355,230,141,570,521,194,355,263,597,539,
+ 416,706,53,136,660,664,661,664,136,664,
+ 660,350,358,403,417,713,33,33,33,33,
+ 33,33,33,33,33,33,33,617,297,528,
+ 420,527,350,227,227,235,713,350,120,570,
+ 350,681,540,3,706,705,417,267,426,141,
+ 466,358,403,715,617,617,617,617,617,417,
+ 417,417,411,411,555,539,664,664,273,33,
+ 9,522,793,53,227,143,260,749,481,239,
+ 492,497,495,505,499,508,507,510,509,511,
+ 715,463,141,632,570,348,194,263,681,681,
+ 539,31,522,522,664,166,166,18,166,166,
+ 522,102,33,102,348,112,476,292,141,267,
+ 426,466,466,403,403,417,406,570,112,417,
+ 417,417,417,417,78,355,710,111,475,525,
+ 301,33,540,417,33,260,668,417,749,260,
+ 238,235,33,33,33,33,33,33,33,33,
+ 33,33,33,33,33,33,33,33,33,33,
+ 33,33,33,33,33,33,33,33,33,33,
+ 33,33,55,33,112,463,118,350,536,522,
+ 522,553,33,607,33,33,18,102,609,18,
+ 350,3,417,272,417,417,426,463,91,426,
+ 466,471,612,471,403,749,710,355,570,715,
+ 360,360,360,120,141,411,417,796,713,33,
+ 305,617,539,417,33,33,260,239,495,495,
+ 492,492,499,499,497,497,497,497,497,497,
+ 507,505,509,508,102,102,510,668,118,31,
+ 522,417,166,417,417,18,33,18,355,112,
+ 426,93,471,463,33,664,749,403,796,406,
+ 417,715,417,260,260,33,33,471,186,522,
+ 31,18,33,18,18,350,272,463,521,33,
+ 517,93,518,463,403,417,364,463,116,233,
+ 168,664,33,102,14,273,522,417,538,93,
+ 33,518,518,297,120,532,664,33,417,273,
+ 522,18,518,33,260,18,417,260,18
+ };
+ };
+ public final static char asb[] = Asb.asb;
+ public final int asb(int index) { return asb[index]; }
+
+ public interface Asr {
+ public final static byte asr[] = {0,
+ 104,0,6,46,47,2,27,0,6,49,
+ 47,19,0,74,37,75,0,51,53,18,
+ 58,60,54,48,56,57,52,50,59,38,
+ 31,6,1,21,22,23,2,11,3,5,
+ 4,16,17,15,10,13,14,24,25,20,
+ 26,12,19,0,20,21,22,23,19,2,
+ 11,1,16,17,15,10,13,14,24,25,
+ 12,26,5,3,4,49,0,18,37,46,
+ 47,36,33,30,32,35,27,29,28,34,
+ 31,6,10,2,3,5,4,1,7,9,
+ 8,49,0,1,49,74,31,8,9,7,
+ 37,47,6,46,0,6,71,37,75,1,
+ 21,22,23,19,16,17,15,10,13,14,
+ 24,25,20,26,12,2,11,3,5,4,
+ 18,0,27,29,16,17,15,10,13,14,
+ 24,25,20,26,12,2,11,3,5,4,
+ 21,22,23,19,28,1,0,74,1,21,
+ 22,23,19,16,17,15,10,13,14,24,
+ 25,20,26,12,18,2,11,3,5,4,
+ 37,75,0,55,68,33,40,34,41,42,
+ 35,29,43,44,30,69,36,70,45,61,
+ 28,62,63,64,2,11,12,27,39,32,
+ 5,3,4,65,66,67,8,9,7,6,
+ 46,31,74,0,27,29,28,30,16,17,
+ 15,10,13,14,24,25,20,26,12,1,
+ 2,11,3,5,4,21,22,23,19,103,
+ 6,0,6,74,46,31,18,8,9,7,
+ 0,46,20,21,22,23,11,1,16,17,
+ 15,10,13,14,24,25,12,26,5,3,
+ 4,47,6,2,19,0,49,89,103,71,
+ 75,90,16,17,37,15,13,14,76,77,
+ 72,73,78,79,80,81,84,85,86,87,
+ 88,91,92,74,93,94,95,96,97,98,
+ 99,100,101,102,46,82,83,47,32,27,
+ 33,34,35,29,30,36,28,31,6,2,
+ 1,5,3,4,8,9,7,10,0,49,
+ 89,103,71,35,30,36,34,33,32,15,
+ 13,14,76,77,72,73,78,79,80,81,
+ 84,85,86,87,88,91,92,74,93,94,
+ 95,96,97,98,99,100,101,102,82,83,
+ 18,31,27,29,28,46,2,3,5,4,
+ 10,8,9,7,37,1,47,6,0,6,
+ 49,46,47,1,0,32,39,27,55,68,
+ 33,40,34,41,42,35,29,43,44,30,
+ 69,36,70,45,61,28,62,63,64,2,
+ 11,12,8,9,7,5,3,4,65,66,
+ 67,38,6,71,0,2,11,5,3,4,
+ 6,71,46,0,37,6,46,47,1,0,
+ 74,93,94,95,96,97,99,98,100,101,
+ 102,10,76,77,13,14,73,72,78,79,
+ 80,81,82,83,84,85,15,86,87,88,
+ 89,103,47,71,91,92,49,8,9,7,
+ 46,31,6,0,103,31,46,47,6,49,
+ 0,103,6,89,0,47,104,105,71,51,
+ 53,18,58,60,54,48,56,57,52,50,
+ 59,38,6,31,21,22,23,19,16,17,
+ 15,13,14,24,25,20,26,10,1,12,
+ 2,11,68,69,70,61,55,62,63,64,
+ 65,66,67,36,33,30,32,35,27,29,
+ 28,34,7,9,8,5,3,40,4,44,
+ 45,39,43,41,42,0,48,0,49,89,
+ 0,6,46,71,74,0,20,21,22,23,
+ 19,1,16,17,15,10,13,14,24,25,
+ 26,32,39,27,55,68,33,40,34,41,
+ 42,35,29,43,44,30,69,36,70,45,
+ 61,28,62,63,64,12,65,66,67,18,
+ 8,9,7,11,3,5,4,2,0,49,
+ 46,31,61,55,62,63,64,65,66,67,
+ 37,10,5,40,44,45,39,43,41,42,
+ 36,33,30,32,35,27,29,28,34,3,
+ 4,7,9,8,1,47,6,2,0,10,
+ 1,37,47,6,32,39,55,68,33,40,
+ 34,41,42,35,43,44,30,69,36,70,
+ 45,61,62,63,64,2,11,12,8,9,
+ 7,5,3,4,65,66,67,89,27,29,
+ 28,0,104,32,39,27,55,68,33,40,
+ 34,41,42,35,29,43,44,30,69,36,
+ 70,45,61,28,62,63,64,11,1,12,
+ 8,9,5,3,4,65,66,67,31,6,
+ 38,7,2,10,0,10,32,39,27,55,
+ 68,33,40,34,41,42,35,29,43,44,
+ 30,69,36,70,45,61,28,62,63,64,
+ 2,11,12,3,4,65,66,67,89,7,
+ 9,8,5,0
+ };
+ };
+ public final static byte asr[] = Asr.asr;
+ public final int asr(int index) { return asr[index]; }
+
+ public interface Nasb {
+ public final static char nasb[] = {0,
+ 181,34,38,94,103,23,163,34,149,117,
+ 34,19,132,34,34,34,133,122,133,122,
+ 122,133,122,133,188,107,34,34,34,34,
+ 34,133,63,126,15,104,122,106,58,58,
+ 188,34,19,94,104,34,188,34,17,49,
+ 161,35,34,8,42,8,42,8,8,8,
+ 42,177,34,42,161,160,63,63,63,63,
+ 63,63,63,63,63,63,63,137,34,161,
+ 34,34,149,42,122,77,160,120,12,205,
+ 175,33,81,10,65,34,161,122,94,34,
+ 94,34,122,93,137,137,137,137,137,161,
+ 161,161,171,171,1,49,56,56,96,140,
+ 15,104,34,15,42,62,79,21,34,78,
+ 34,34,34,34,34,34,34,34,34,34,
+ 195,94,34,111,26,103,34,34,133,33,
+ 88,102,104,104,8,34,34,44,34,34,
+ 104,34,99,34,103,161,34,161,34,42,
+ 191,94,8,122,94,161,169,26,34,161,
+ 161,161,161,161,155,188,158,58,58,34,
+ 34,63,81,161,63,79,34,161,21,79,
+ 78,124,63,63,63,63,63,63,63,63,
+ 63,63,63,63,63,63,63,63,63,63,
+ 63,63,63,63,63,63,63,63,63,63,
+ 63,63,52,63,161,50,94,149,34,104,
+ 104,199,140,34,140,140,44,34,34,44,
+ 118,10,161,63,161,161,94,50,103,73,
+ 8,68,34,34,94,21,168,188,126,93,
+ 155,155,155,154,155,145,161,186,160,63,
+ 34,137,88,161,63,63,79,78,34,34,
+ 34,34,34,34,34,34,34,34,34,34,
+ 34,34,34,34,34,34,34,34,61,202,
+ 104,161,34,161,161,44,63,44,188,161,
+ 191,149,68,50,63,8,21,124,186,143,
+ 161,93,161,79,79,63,63,68,70,104,
+ 202,44,140,44,44,119,63,50,104,63,
+ 34,106,122,50,124,161,155,50,60,34,
+ 12,8,63,34,40,202,104,161,34,149,
+ 63,122,42,135,12,79,8,63,161,202,
+ 104,44,42,63,79,44,161,79,44
+ };
+ };
+ public final static char nasb[] = Nasb.nasb;
+ public final int nasb(int index) { return nasb[index]; }
+
+ public interface Nasr {
+ public final static char nasr[] = {0,
+ 73,97,94,93,78,92,91,1,0,122,
+ 0,6,57,0,104,0,106,0,120,0,
+ 96,0,34,2,103,97,95,94,93,78,
+ 92,91,73,0,147,18,0,148,0,142,
+ 0,9,0,1,43,2,44,0,2,59,
+ 0,2,33,128,0,108,0,58,0,117,
+ 57,2,6,0,18,124,0,98,0,1,
+ 151,0,2,60,100,0,2,6,54,0,
+ 29,2,42,1,43,110,0,43,1,42,
+ 89,59,29,2,0,2,129,0,6,150,
+ 0,33,2,25,0,9,38,34,2,0,
+ 2,42,29,61,30,0,40,2,36,34,
+ 38,27,0,31,0,78,74,75,76,77,
+ 81,67,50,0,138,0,60,42,30,2,
+ 33,0,34,38,71,70,27,0,2,34,
+ 38,27,0,6,57,55,0,70,71,2,
+ 18,0,2,29,42,118,0,18,34,38,
+ 70,71,2,0,38,40,27,34,36,0,
+ 143,2,29,42,0,2,29,27,65,0,
+ 112,2,60,0,134,2,29,0,42,29,
+ 61,2,82,0,29,2,42,144,0
+ };
+ };
+ public final static char nasr[] = Nasr.nasr;
+ public final int nasr(int index) { return nasr[index]; }
+
+ public interface TerminalIndex {
+ public final static char terminalIndex[] = {0,
+ 2,87,101,102,100,89,99,97,98,9,
+ 88,95,10,11,8,6,7,3,86,70,
+ 83,84,85,12,13,96,50,78,66,71,
+ 94,46,57,62,65,74,1,106,49,58,
+ 63,64,68,69,76,42,92,79,29,47,
+ 48,51,52,53,54,59,60,61,67,73,
+ 77,80,81,82,103,104,105,56,72,75,
+ 93,16,17,31,4,14,15,18,19,20,
+ 21,43,44,22,23,24,25,26,30,5,
+ 27,28,32,33,34,35,36,37,38,39,
+ 40,41,91,107,55,90
+ };
+ };
+ public final static char terminalIndex[] = TerminalIndex.terminalIndex;
+ public final int terminalIndex(int index) { return terminalIndex[index]; }
+
+ public interface NonterminalIndex {
+ public final static char nonterminalIndex[] = {0,
+ 112,0,0,0,0,114,118,119,196,0,
+ 0,0,120,121,122,123,124,109,125,126,
+ 127,128,129,0,111,0,197,130,139,135,
+ 147,0,113,170,0,173,167,169,0,171,
+ 0,206,131,134,0,0,0,0,0,146,
+ 0,0,0,108,117,157,0,172,110,161,
+ 138,0,0,133,168,116,149,0,184,185,
+ 186,0,148,150,151,152,153,158,181,0,
+ 204,0,154,155,156,174,180,183,137,140,
+ 141,142,143,144,145,179,203,0,0,160,
+ 164,166,175,201,0,207,0,115,132,136,
+ 0,159,163,0,165,178,188,193,0,195,
+ 0,198,0,200,0,208,0,0,0,0,
+ 0,162,0,176,177,182,187,0,189,190,
+ 0,191,192,194,0,0,199,0,0,202,
+ 205,0,0,209,0
+ };
+ };
+ public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
+ public final int nonterminalIndex(int index) { return nonterminalIndex[index]; }
+
+ public interface ScopePrefix {
+ public final static char scopePrefix[] = {
+ 221,275,348,239,328,144,170,176,303,118,
+ 377,399,356,20,127,160,186,206,86,283,
+ 338,8,54,54,78,82,94,100,132,182,
+ 254,319,94,435,442,446,373,395,408,422,
+ 408,362,34,46,75,27,27,136,139,191,
+ 139,216,139,264,269,272,325,450,14,69,
+ 106,112,152,258,106,419,429,429,1,27,
+ 152,293,229,386,229,293,39,39,60,252,
+ 60,60,60,60,60,323,417,39,39,64,
+ 165,194,165,194,194
+ };
+ };
+ public final static char scopePrefix[] = ScopePrefix.scopePrefix;
+ public final int scopePrefix(int index) { return scopePrefix[index]; }
+
+ public interface ScopeSuffix {
+ public final static char scopeSuffix[] = {
+ 98,98,335,98,335,150,25,25,98,124,
+ 383,405,343,25,58,150,25,58,91,288,
+ 343,12,58,58,58,58,98,104,58,25,
+ 12,12,98,58,58,25,335,335,335,426,
+ 412,366,37,37,58,25,25,58,142,25,
+ 201,58,219,267,267,267,12,58,17,72,
+ 109,115,167,261,17,72,432,439,4,30,
+ 155,288,246,389,232,296,44,52,62,12,
+ 309,311,313,315,317,12,12,41,49,66,
+ 167,203,155,196,211
+ };
+ };
+ public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
+ public final int scopeSuffix(int index) { return scopeSuffix[index]; }
+
+ public interface ScopeLhs {
+ public final static char scopeLhs[] = {
+ 76,74,48,76,48,65,58,58,74,55,
+ 48,47,48,152,72,65,58,36,10,74,
+ 48,63,81,7,7,121,120,80,72,58,
+ 100,61,30,7,6,6,48,47,47,24,
+ 47,48,113,84,4,142,141,70,88,58,
+ 103,34,56,75,75,75,49,4,63,45,
+ 80,117,65,100,61,45,8,6,42,152,
+ 65,74,76,48,76,74,113,84,97,100,
+ 95,94,93,92,91,61,46,113,84,150,
+ 65,36,65,40,36
+ };
+ };
+ public final static char scopeLhs[] = ScopeLhs.scopeLhs;
+ public final int scopeLhs(int index) { return scopeLhs[index]; }
+
+ public interface ScopeLa {
+ public final static byte scopeLa[] = {
+ 71,71,47,71,47,27,103,103,71,71,
+ 47,105,31,103,47,27,103,47,47,18,
+ 31,31,47,47,47,47,71,18,47,103,
+ 31,31,71,47,47,103,47,47,47,49,
+ 47,31,8,8,47,103,103,47,1,103,
+ 2,47,2,2,2,2,31,47,2,49,
+ 2,74,10,2,2,49,47,47,5,89,
+ 10,18,18,48,2,2,2,2,12,31,
+ 2,68,69,69,61,31,31,2,2,89,
+ 10,1,10,1,1
+ };
+ };
+ public final static byte scopeLa[] = ScopeLa.scopeLa;
+ public final int scopeLa(int index) { return scopeLa[index]; }
+
+ public interface ScopeStateSet {
+ public final static char scopeStateSet[] = {
+ 142,142,38,142,38,218,54,54,142,17,
+ 38,38,38,3,58,218,54,149,168,142,
+ 38,238,142,66,66,14,139,241,58,54,
+ 8,238,30,66,66,66,38,38,38,102,
+ 38,38,5,162,66,1,3,58,60,54,
+ 227,149,155,142,142,142,38,66,238,38,
+ 241,136,218,8,238,38,73,66,231,3,
+ 218,142,142,38,142,142,5,162,144,8,
+ 144,144,144,144,144,238,38,5,162,12,
+ 218,149,218,151,149
+ };
+ };
+ public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet;
+ public final int scopeStateSet(int index) { return scopeStateSet[index]; }
+
+ public interface ScopeRhs {
+ public final static char scopeRhs[] = {0,
+ 211,108,0,100,207,0,0,196,108,148,
+ 0,111,0,108,148,0,140,111,0,170,
+ 89,170,37,0,108,0,170,37,0,30,
+ 133,108,0,207,133,0,197,0,133,0,
+ 164,197,0,164,0,162,133,0,157,197,
+ 0,157,0,172,1,12,0,109,0,179,
+ 0,204,0,170,0,30,133,0,256,51,
+ 0,29,134,0,136,1,0,172,1,26,
+ 0,252,1,228,0,251,1,1,8,0,
+ 109,109,0,216,108,18,0,110,0,209,
+ 108,135,0,195,0,108,135,0,175,195,
+ 0,245,108,0,31,156,0,204,243,108,
+ 18,163,0,110,0,0,192,108,1,176,
+ 0,192,108,1,0,194,1,0,171,108,
+ 0,184,0,108,147,10,147,171,0,179,
+ 0,147,171,0,9,0,0,179,0,108,
+ 147,10,147,0,147,0,9,0,0,134,
+ 30,222,108,37,0,134,222,108,30,37,
+ 0,134,30,37,0,134,222,108,37,0,
+ 134,37,0,140,0,2,0,176,109,0,
+ 173,0,2,109,0,192,108,1,140,0,
+ 2,0,174,109,0,162,1,0,167,0,
+ 204,220,108,18,107,239,68,0,239,68,
+ 0,112,3,0,0,0,110,0,204,220,
+ 108,18,239,68,0,3,0,0,0,110,
+ 0,166,0,238,108,166,0,108,166,0,
+ 162,111,0,205,68,0,112,0,205,70,
+ 0,205,69,0,217,108,18,237,107,236,
+ 184,0,237,107,236,184,0,3,0,0,
+ 110,0,236,184,0,112,0,3,0,0,
+ 110,0,217,108,18,236,184,0,153,0,
+ 152,0,151,0,150,0,149,0,196,108,
+ 135,0,135,0,139,59,0,188,131,188,
+ 167,1,56,0,109,134,0,188,167,1,
+ 56,0,111,0,109,134,0,188,131,188,
+ 131,188,1,56,0,188,131,188,1,56,
+ 0,188,1,56,0,111,0,111,0,109,
+ 134,0,139,1,48,0,139,1,48,150,
+ 54,0,109,111,0,150,54,0,79,2,
+ 113,109,111,0,139,1,60,0,150,124,
+ 139,1,58,0,55,134,0,139,1,58,
+ 0,109,134,55,134,0,149,0,170,51,
+ 0,139,92,129,0,29,130,0,172,1,
+ 0,109,119,0,172,1,20,0,109,117,
+ 0,235,1,112,0,139,37,112,0,139,
+ 1,0
+ };
+ };
+ public final static char scopeRhs[] = ScopeRhs.scopeRhs;
+ public final int scopeRhs(int index) { return scopeRhs[index]; }
+
+ public interface ScopeState {
+ public final static char scopeState[] = {0,
+ 554,0,833,0,2330,2275,0,3346,878,2626,
+ 0,1076,0,455,446,0,882,824,757,1280,
+ 699,1279,2264,1218,1179,1059,673,461,0,3169,
+ 1262,3148,3134,3123,3102,3085,2109,2799,2772,2741,
+ 2733,2706,2673,2633,2623,1223,2551,2524,1101,608,
+ 989,950,0,1161,1134,724,717,2122,2875,2345,
+ 2320,986,3223,2837,0,3388,3364,2095,1182,1132,
+ 544,453,2555,2264,850,678,1104,1767,1379,3068,
+ 3052,3036,3020,3004,2983,2866,2849,2827,2422,1360,
+ 1237,3336,3312,3298,1000,3258,3249,3238,2288,737,
+ 499,2050,2023,882,1998,1971,824,1946,1294,1920,
+ 1894,1867,1842,1816,1790,1731,941,1686,1660,1634,
+ 1608,1582,1556,1530,1504,1478,1452,1420,1193,1152,
+ 1076,787,420,461,912,757,699,0,520,491,
+ 0,1711,1338,658,569,420,521,0,2604,521,
+ 2502,2122,2456,2436,2330,526,2275,2345,986,1220,
+ 3061,2081,2217,2316,1319,2176,0,3470,3450,3426,
+ 2330,3420,526,2502,2122,2275,2875,1711,2081,2217,
+ 658,3373,3268,2409,2963,569,3175,420,2195,2143,
+ 2094,2456,2436,3412,2498,2316,2068,2604,1715,1332,
+ 575,1220,3407,1338,2950,2917,1278,2903,3350,3080,
+ 2888,1061,2469,2230,1319,2176,521,2683,3345,2578,
+ 3322,3273,3210,3206,2795,0,2081,1319,521,0,
+ 3169,3148,3134,3123,3102,3085,2109,3077,1262,3267,
+ 1223,1101,989,950,2333,2503,0
+ };
+ };
+ public final static char scopeState[] = ScopeState.scopeState;
+ public final int scopeState(int index) { return scopeState[index]; }
+
+ public interface InSymb {
+ public final static char inSymb[] = {0,
+ 0,233,7,148,135,108,249,254,108,108,
+ 211,209,197,8,9,7,198,184,199,70,
+ 69,200,68,201,108,1,4,5,3,2,
+ 140,203,12,179,1,196,162,133,144,140,
+ 108,190,209,241,196,146,108,142,5,18,
+ 1,1,1,236,133,205,133,205,239,205,
+ 133,171,147,133,162,1,12,26,20,25,
+ 24,14,13,10,15,17,16,1,112,255,
+ 19,210,46,133,162,37,1,171,74,108,
+ 171,212,108,1,253,2,19,107,18,107,
+ 18,147,10,108,1,1,1,1,1,136,
+ 172,139,148,166,108,18,90,75,1,37,
+ 49,124,1,46,133,30,134,108,113,10,
+ 119,121,120,123,122,126,125,128,127,129,
+ 108,18,163,250,108,135,146,142,179,260,
+ 216,59,50,52,57,56,48,54,60,58,
+ 149,53,51,107,135,251,228,1,237,133,
+ 108,18,108,10,147,192,135,108,193,172,
+ 172,172,172,172,124,108,1,177,176,215,
+ 107,12,108,235,108,139,10,2,108,134,
+ 222,202,102,101,100,98,99,97,96,95,
+ 94,93,74,77,76,10,72,73,14,13,
+ 85,84,83,82,81,80,79,78,86,15,
+ 88,87,92,91,240,108,18,108,6,139,
+ 107,1,1,150,1,1,49,256,170,49,
+ 108,46,124,1,19,2,18,217,166,218,
+ 108,220,107,221,147,108,1,108,179,46,
+ 124,124,124,124,124,171,194,108,1,46,
+ 113,1,216,2,222,30,134,10,120,120,
+ 119,119,122,122,121,121,121,121,121,121,
+ 125,123,127,126,234,139,128,46,108,167,
+ 188,139,48,139,139,49,89,49,108,252,
+ 108,108,220,204,74,46,108,202,108,171,
+ 192,108,172,134,134,49,49,243,108,188,
+ 131,124,1,124,124,171,46,217,238,49,
+ 162,133,207,204,202,192,124,204,46,245,
+ 257,75,37,107,246,131,188,139,150,46,
+ 49,207,133,165,74,170,75,37,188,131,
+ 124,105,133,89,170,124,188,170,124
+ };
+ };
+ public final static char inSymb[] = InSymb.inSymb;
+ public final int inSymb(int index) { return inSymb[index]; }
+
+ public interface Name {
+ public final static String name[] = {
+ "",
+ "[",
+ "(",
+ "{",
+ ".",
+ "->",
+ "++",
+ "--",
+ "&",
+ "*",
+ "+",
+ "-",
+ "~",
+ "!",
+ "/",
+ "%",
+ ">>",
+ "<<",
+ "<",
+ ">",
+ "<=",
+ ">=",
+ "==",
+ "!=",
+ "^",
+ "|",
+ "&&",
+ "||",
+ "?",
+ ":",
+ "...",
+ "=",
+ "*=",
+ "/=",
+ "%=",
+ "+=",
+ "-=",
+ ">>=",
+ "<<=",
+ "&=",
+ "^=",
+ "|=",
+ ",",
+ ">?",
+ "<?",
+ "$empty",
+ "auto",
+ "break",
+ "case",
+ "char",
+ "const",
+ "continue",
+ "default",
+ "do",
+ "double",
+ "else",
+ "enum",
+ "extern",
+ "float",
+ "for",
+ "goto",
+ "if",
+ "inline",
+ "int",
+ "long",
+ "register",
+ "restrict",
+ "return",
+ "short",
+ "signed",
+ "sizeof",
+ "static",
+ "struct",
+ "switch",
+ "typedef",
+ "union",
+ "unsigned",
+ "void",
+ "volatile",
+ "while",
+ "_Bool",
+ "_Complex",
+ "_Imaginary",
+ "integer",
+ "floating",
+ "charconst",
+ "stringlit",
+ "identifier",
+ "Completion",
+ "EndOfCompletion",
+ "Invalid",
+ "RightBracket",
+ "RightParen",
+ "RightBrace",
+ "SemiColon",
+ "typeof",
+ "__alignof__",
+ "__attribute__",
+ "__declspec",
+ "asm",
+ "vector",
+ "pixel",
+ "bool",
+ "_Decimal32",
+ "_Decimal64",
+ "_Decimal128",
+ "ERROR_TOKEN",
+ "EOF_TOKEN",
+ "]",
+ ")",
+ "}",
+ ";",
+ "identifier_token",
+ "expression",
+ "postfix_expression",
+ "member_name",
+ "type_id",
+ "initializer_list",
+ "unary_expression",
+ "cast_expression",
+ "multiplicative_expression",
+ "additive_expression",
+ "shift_expression",
+ "relational_expression",
+ "equality_expression",
+ "and_expression",
+ "exclusive_or_expression",
+ "inclusive_or_expression",
+ "logical_and_expression",
+ "logical_or_expression",
+ "assignment_expression",
+ "expression_in_statement",
+ "expression_list_actual",
+ "constant_expression",
+ "statement",
+ "compound_statement",
+ "block_item_list",
+ "block_item",
+ "declaration",
+ "declaration_specifiers",
+ "init_declarator_list",
+ "simple_declaration_specifiers",
+ "struct_or_union_declaration_sp" +
+ "ecifiers",
+ "elaborated_declaration_specifi" +
+ "ers",
+ "enum_declaration_specifiers",
+ "typdef_name_declaration_specif" +
+ "iers",
+ "no_type_declaration_specifier",
+ "type_qualifier",
+ "no_type_declaration_specifiers",
+ "simple_type_specifier",
+ "struct_or_union_specifier",
+ "elaborated_specifier",
+ "enum_specifier",
+ "type_name_specifier",
+ "init_declarator",
+ "complete_declarator",
+ "initializer",
+ "declarator",
+ "struct_or_union",
+ "struct_declaration_list",
+ "struct_declaration",
+ "specifier_qualifier_list",
+ "struct_declarator_list",
+ "complete_struct_declarator",
+ "struct_declarator",
+ "enumerator_list",
+ "enumerator",
+ "direct_declarator",
+ "pointer_seq",
+ "array_direct_declarator",
+ "basic_direct_declarator",
+ "knr_direct_declarator",
+ "array_modifier",
+ "function_direct_declarator",
+ "parameter_type_list",
+ "function_declarator",
+ "identifier_list",
+ "knr_function_declarator",
+ "array_modifier_type_qualifiers",
+ "type_qualifier_list",
+ "parameter_list",
+ "parameter_declaration",
+ "complete_parameter_declarator",
+ "abstract_declarator",
+ "direct_abstract_declarator",
+ "basic_direct_abstract_declarat" +
+ "or",
+ "array_direct_abstract_declarat" +
+ "or",
+ "initializer_seq",
+ "designated_initializer",
+ "designation",
+ "designator_list",
+ "designator",
+ "external_declaration_list",
+ "external_declaration",
+ "declaration_list",
+ "function_body",
+ "attribute_or_decl_specifier",
+ "attribute_or_decl_specifier_se" +
+ "q",
+ "word",
+ "extended_decl_modifier_seq",
+ "extended_decl_modifier",
+ "extended_asm_param",
+ "case_range_expression",
+ "typeof_declaration_specifiers",
+ "typeof_type_specifier",
+ "field_name_designator",
+ "vector_type",
+ "vector_type_specifier",
+ "all_specifier_qualifiers",
+ "all_specifier_qualifier_list"
+ };
+ };
+ public final static String name[] = Name.name;
+ public final String name(int index) { return name[index]; }
+
+ public final static int
+ ERROR_SYMBOL = 38,
+ SCOPE_UBOUND = 94,
+ SCOPE_SIZE = 95,
+ MAX_NAME_LENGTH = 38;
+
+ public final int getErrorSymbol() { return ERROR_SYMBOL; }
+ public final int getScopeUbound() { return SCOPE_UBOUND; }
+ public final int getScopeSize() { return SCOPE_SIZE; }
+ public final int getMaxNameLength() { return MAX_NAME_LENGTH; }
+
+ public final static int
+ NUM_STATES = 389,
+ NT_OFFSET = 106,
+ LA_STATE_OFFSET = 4196,
+ MAX_LA = 2147483647,
+ NUM_RULES = 419,
+ NUM_NONTERMINALS = 155,
+ NUM_SYMBOLS = 261,
+ SEGMENT_SIZE = 8192,
+ START_STATE = 2503,
+ IDENTIFIER_SYMBOL = 0,
+ EOFT_SYMBOL = 104,
+ EOLT_SYMBOL = 104,
+ ACCEPT_ACTION = 3536,
+ ERROR_ACTION = 3777;
+
+ public final static boolean BACKTRACK = true;
+
+ public final int getNumStates() { return NUM_STATES; }
+ public final int getNtOffset() { return NT_OFFSET; }
+ public final int getLaStateOffset() { return LA_STATE_OFFSET; }
+ public final int getMaxLa() { return MAX_LA; }
+ public final int getNumRules() { return NUM_RULES; }
+ public final int getNumNonterminals() { return NUM_NONTERMINALS; }
+ public final int getNumSymbols() { return NUM_SYMBOLS; }
+ public final int getSegmentSize() { return SEGMENT_SIZE; }
+ public final int getStartState() { return START_STATE; }
+ public final int getStartSymbol() { return lhs[0]; }
+ public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
+ public final int getEoftSymbol() { return EOFT_SYMBOL; }
+ public final int getEoltSymbol() { return EOLT_SYMBOL; }
+ public final int getAcceptAction() { return ACCEPT_ACTION; }
+ public final int getErrorAction() { return ERROR_ACTION; }
+ public final boolean isValidForParser() { return isValidForParser; }
+ public final boolean getBacktrack() { return BACKTRACK; }
+
+ public final int originalState(int state) {
+ return -baseCheck[state];
+ }
+ public final int asi(int state) {
+ return asb[originalState(state)];
+ }
+ public final int nasi(int state) {
+ return nasb[originalState(state)];
+ }
+ public final int inSymbol(int state) {
+ return inSymb[originalState(state)];
+ }
+
+ public final int ntAction(int state, int sym) {
+ return baseAction[state + sym];
+ }
+
+ public final int tAction(int state, int sym) {
+ int i = baseAction[state],
+ k = i + sym;
+ return termAction[termCheck[k] == sym ? k : i];
+ }
+ public final int lookAhead(int la_state, int sym) {
+ int k = la_state + sym;
+ return termAction[termCheck[k] == sym ? k : la_state];
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParsersym.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParsersym.java
new file mode 100644
index 0000000000..bbb01a4465
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParsersym.java
@@ -0,0 +1,236 @@
+/*******************************************************************************
+* Copyright (c) 2006, 2009 IBM Corporation and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* IBM Corporation - initial API and implementation
+*********************************************************************************/
+
+// This file was generated by LPG
+
+package org.eclipse.cdt.internal.core.lrparser.xlc.c;
+
+public interface XlcCParsersym {
+ public final static int
+ TK_auto = 32,
+ TK_break = 50,
+ TK_case = 51,
+ TK_char = 39,
+ TK_const = 27,
+ TK_continue = 52,
+ TK_default = 53,
+ TK_do = 54,
+ TK_double = 55,
+ TK_else = 105,
+ TK_enum = 68,
+ TK_extern = 33,
+ TK_float = 40,
+ TK_for = 56,
+ TK_goto = 57,
+ TK_if = 58,
+ TK_inline = 34,
+ TK_int = 41,
+ TK_long = 42,
+ TK_register = 35,
+ TK_restrict = 29,
+ TK_return = 59,
+ TK_short = 43,
+ TK_signed = 44,
+ TK_sizeof = 20,
+ TK_static = 30,
+ TK_struct = 69,
+ TK_switch = 60,
+ TK_typedef = 36,
+ TK_union = 70,
+ TK_unsigned = 45,
+ TK_void = 61,
+ TK_volatile = 28,
+ TK_while = 48,
+ TK__Bool = 62,
+ TK__Complex = 63,
+ TK__Imaginary = 64,
+ TK_integer = 21,
+ TK_floating = 22,
+ TK_charconst = 23,
+ TK_stringlit = 19,
+ TK_identifier = 2,
+ TK_Completion = 11,
+ TK_EndOfCompletion = 6,
+ TK_Invalid = 106,
+ TK_LeftBracket = 37,
+ TK_LeftParen = 1,
+ TK_LeftBrace = 18,
+ TK_Dot = 75,
+ TK_Arrow = 90,
+ TK_PlusPlus = 16,
+ TK_MinusMinus = 17,
+ TK_And = 15,
+ TK_Star = 10,
+ TK_Plus = 13,
+ TK_Minus = 14,
+ TK_Tilde = 24,
+ TK_Bang = 25,
+ TK_Slash = 76,
+ TK_Percent = 77,
+ TK_RightShift = 72,
+ TK_LeftShift = 73,
+ TK_LT = 78,
+ TK_GT = 79,
+ TK_LE = 80,
+ TK_GE = 81,
+ TK_EQ = 84,
+ TK_NE = 85,
+ TK_Caret = 86,
+ TK_Or = 87,
+ TK_AndAnd = 88,
+ TK_OrOr = 91,
+ TK_Question = 92,
+ TK_Colon = 49,
+ TK_DotDotDot = 89,
+ TK_Assign = 74,
+ TK_StarAssign = 93,
+ TK_SlashAssign = 94,
+ TK_PercentAssign = 95,
+ TK_PlusAssign = 96,
+ TK_MinusAssign = 97,
+ TK_RightShiftAssign = 98,
+ TK_LeftShiftAssign = 99,
+ TK_AndAssign = 100,
+ TK_CaretAssign = 101,
+ TK_OrAssign = 102,
+ TK_Comma = 46,
+ TK_RightBracket = 103,
+ TK_RightParen = 47,
+ TK_RightBrace = 71,
+ TK_SemiColon = 31,
+ TK_typeof = 12,
+ TK___alignof__ = 26,
+ TK___attribute__ = 8,
+ TK___declspec = 9,
+ TK_MAX = 82,
+ TK_MIN = 83,
+ TK_asm = 7,
+ TK_vector = 5,
+ TK_pixel = 3,
+ TK_bool = 4,
+ TK__Decimal32 = 65,
+ TK__Decimal64 = 66,
+ TK__Decimal128 = 67,
+ TK_ERROR_TOKEN = 38,
+ TK_EOF_TOKEN = 104;
+
+ public final static String orderedTerminalSymbols[] = {
+ "",
+ "LeftParen",
+ "identifier",
+ "pixel",
+ "bool",
+ "vector",
+ "EndOfCompletion",
+ "asm",
+ "__attribute__",
+ "__declspec",
+ "Star",
+ "Completion",
+ "typeof",
+ "Plus",
+ "Minus",
+ "And",
+ "PlusPlus",
+ "MinusMinus",
+ "LeftBrace",
+ "stringlit",
+ "sizeof",
+ "integer",
+ "floating",
+ "charconst",
+ "Tilde",
+ "Bang",
+ "__alignof__",
+ "const",
+ "volatile",
+ "restrict",
+ "static",
+ "SemiColon",
+ "auto",
+ "extern",
+ "inline",
+ "register",
+ "typedef",
+ "LeftBracket",
+ "ERROR_TOKEN",
+ "char",
+ "float",
+ "int",
+ "long",
+ "short",
+ "signed",
+ "unsigned",
+ "Comma",
+ "RightParen",
+ "while",
+ "Colon",
+ "break",
+ "case",
+ "continue",
+ "default",
+ "do",
+ "double",
+ "for",
+ "goto",
+ "if",
+ "return",
+ "switch",
+ "void",
+ "_Bool",
+ "_Complex",
+ "_Imaginary",
+ "_Decimal32",
+ "_Decimal64",
+ "_Decimal128",
+ "enum",
+ "struct",
+ "union",
+ "RightBrace",
+ "RightShift",
+ "LeftShift",
+ "Assign",
+ "Dot",
+ "Slash",
+ "Percent",
+ "LT",
+ "GT",
+ "LE",
+ "GE",
+ "MAX",
+ "MIN",
+ "EQ",
+ "NE",
+ "Caret",
+ "Or",
+ "AndAnd",
+ "DotDotDot",
+ "Arrow",
+ "OrOr",
+ "Question",
+ "StarAssign",
+ "SlashAssign",
+ "PercentAssign",
+ "PlusAssign",
+ "MinusAssign",
+ "RightShiftAssign",
+ "LeftShiftAssign",
+ "AndAssign",
+ "CaretAssign",
+ "OrAssign",
+ "RightBracket",
+ "EOF_TOKEN",
+ "else",
+ "Invalid"
+ };
+
+ public final static boolean isValidForParser = true;
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParser.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParser.java
new file mode 100644
index 0000000000..beb7c8d0f7
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParser.java
@@ -0,0 +1,2125 @@
+/*******************************************************************************
+* Copyright (c) 2006, 2009 IBM Corporation and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* IBM Corporation - initial API and implementation
+*********************************************************************************/
+
+// This file was generated by LPG
+
+package org.eclipse.cdt.internal.core.lrparser.xlc.cpp;
+
+import lpg.lpgjavaruntime.*;
+
+import java.util.*;
+import org.eclipse.cdt.core.dom.ast.*;
+import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
+import org.eclipse.cdt.core.dom.lrparser.IParser;
+import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
+import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
+import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
+import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser;
+import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
+import org.eclipse.cdt.core.parser.IScanner;
+import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
+import org.eclipse.cdt.core.index.IIndex;
+
+import org.eclipse.cdt.core.dom.ast.cpp.*;
+import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPNodeFactory;
+import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPBuildASTParserAction;
+import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPSecondaryParserFactory;
+
+import org.eclipse.cdt.core.dom.lrparser.action.gnu.GNUBuildASTParserAction;
+
+import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPBuildASTParserAction;
+import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPSecondaryParserFactory;
+import org.eclipse.cdt.core.dom.ast.gnu.cpp.*;
+
+import org.eclipse.cdt.core.lrparser.xlc.action.XlcCPPBuildASTParserAction;
+import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPSecondaryParserFactory;
+import org.eclipse.cdt.internal.core.lrparser.xlc.ast.XlcCPPNodeFactory;
+
+public class XlcCPPParser extends PrsStream implements RuleAction, ITokenStream,
+ ITokenCollector, IParser< IASTTranslationUnit >
+
+{
+ private static ParseTable prs = new XlcCPPParserprs();
+ private FixedBacktrackingParser btParser;
+
+ public FixedBacktrackingParser getParser() { return btParser; }
+ private void setResult(Object object) { btParser.setSym1(object); }
+ public Object getRhsSym(int i) { return btParser.getSym(i); }
+
+ public int getRhsTokenIndex(int i) { return btParser.getToken(i); }
+ public IToken getRhsIToken(int i) { return super.getIToken(getRhsTokenIndex(i)); }
+
+ public int getRhsFirstTokenIndex(int i) { return btParser.getFirstToken(i); }
+ public IToken getRhsFirstIToken(int i) { return super.getIToken(getRhsFirstTokenIndex(i)); }
+
+ public int getRhsLastTokenIndex(int i) { return btParser.getLastToken(i); }
+ public IToken getRhsLastIToken(int i) { return super.getIToken(getRhsLastTokenIndex(i)); }
+
+ public int getLeftSpan() { return btParser.getFirstToken(); }
+ public IToken getLeftIToken() { return super.getIToken(getLeftSpan()); }
+
+ public int getRightSpan() { return btParser.getLastToken(); }
+ public IToken getRightIToken() { return super.getIToken(getRightSpan()); }
+
+ public int getRhsErrorTokenIndex(int i)
+ {
+ int index = btParser.getToken(i);
+ IToken err = super.getIToken(index);
+ return (err instanceof ErrorToken ? index : 0);
+ }
+ public ErrorToken getRhsErrorIToken(int i)
+ {
+ int index = btParser.getToken(i);
+ IToken err = super.getIToken(index);
+ return (ErrorToken) (err instanceof ErrorToken ? err : null);
+ }
+
+ public XlcCPPParser(LexStream lexStream)
+ {
+ super(lexStream);
+
+ try
+ {
+ super.remapTerminalSymbols(orderedTerminalSymbols(), XlcCPPParserprs.EOFT_SYMBOL);
+ }
+ catch(NullExportedSymbolsException e) {
+ }
+ catch(NullTerminalSymbolsException e) {
+ }
+ catch(UnimplementedTerminalsException e)
+ {
+ java.util.ArrayList unimplemented_symbols = e.getSymbols();
+ System.out.println("The Lexer will not scan the following token(s):");
+ for (int i = 0; i < unimplemented_symbols.size(); i++)
+ {
+ Integer id = (Integer) unimplemented_symbols.get(i);
+ System.out.println(" " + XlcCPPParsersym.orderedTerminalSymbols[id.intValue()]);
+ }
+ System.out.println();
+ }
+ catch(UndefinedEofSymbolException e)
+ {
+ throw new Error(new UndefinedEofSymbolException
+ ("The Lexer does not implement the Eof symbol " +
+ XlcCPPParsersym.orderedTerminalSymbols[XlcCPPParserprs.EOFT_SYMBOL]));
+ }
+ }
+
+ public String[] orderedTerminalSymbols() { return XlcCPPParsersym.orderedTerminalSymbols; }
+ public String getTokenKindName(int kind) { return XlcCPPParsersym.orderedTerminalSymbols[kind]; }
+ public int getEOFTokenKind() { return XlcCPPParserprs.EOFT_SYMBOL; }
+ public PrsStream getParseStream() { return (PrsStream) this; }
+
+ //
+ // Report error message for given error_token.
+ //
+ public final void reportErrorTokenMessage(int error_token, String msg)
+ {
+ int firsttok = super.getFirstErrorToken(error_token),
+ lasttok = super.getLastErrorToken(error_token);
+ String location = super.getFileName() + ':' +
+ (firsttok > lasttok
+ ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
+ : (super.getLine(error_token) + ":" +
+ super.getColumn(error_token) + ":" +
+ super.getEndLine(error_token) + ":" +
+ super.getEndColumn(error_token)))
+ + ": ";
+ super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE), location, msg);
+ }
+
+ public void parser()
+ {
+ parser(null, 0);
+ }
+
+ public void parser(Monitor monitor)
+ {
+ parser(monitor, 0);
+ }
+
+ public void parser(int error_repair_count)
+ {
+ parser(null, error_repair_count);
+ }
+
+ public void parser(Monitor monitor, int error_repair_count)
+ {
+ try
+ {
+ btParser = new FixedBacktrackingParser(monitor, (TokenStream) this, prs, (RuleAction) this);
+ }
+ catch (NotBacktrackParseTableException e)
+ {
+ throw new Error(new NotBacktrackParseTableException
+ ("Regenerate XlcCPPParserprs.java with -BACKTRACK option"));
+ }
+ catch (BadParseSymFileException e)
+ {
+ throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- XlcCPPParsersym.java"));
+ }
+
+ try
+ {
+ btParser.parse(error_repair_count);
+ }
+ catch (BadParseException e)
+ {
+ reset(e.error_token); // point to error token
+ DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
+ diagnoseParser.diagnose(e.error_token);
+ }
+ }
+
+
+private XlcCPPBuildASTParserAction action;
+private IASTCompletionNode compNode;
+
+
+public XlcCPPParser(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String,String> properties) {
+ initActions(properties);
+ action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
+ CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
+}
+
+private void initActions(Map<String,String> properties) {
+ ScopedStack<Object> astStack = new ScopedStack<Object>();
+
+ action = new XlcCPPBuildASTParserAction (this, astStack, XlcCPPNodeFactory.getDefault() , GPPSecondaryParserFactory.getDefault() );
+ action.setParserProperties(properties);
+
+
+
+ gnuAction = new GNUBuildASTParserAction (this, astStack, XlcCPPNodeFactory.getDefault() );
+ gnuAction.setParserProperties(properties);
+
+}
+
+
+public void addToken(IToken token) {
+ token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
+ super.addToken(token);
+}
+
+
+public IASTTranslationUnit parse() {
+ // this has to be done, or... kaboom!
+ setStreamLength(getSize());
+
+ final int errorRepairCount = -1; // -1 means full error handling
+ parser(null, errorRepairCount); // do the actual parse
+ super.resetTokenStream(); // allow tokens to be garbage collected
+
+ compNode = action.getASTCompletionNode(); // the completion node may be null
+ return ( IASTTranslationUnit ) action.getParseResult();
+}
+
+
+public IASTCompletionNode getCompletionNode() {
+ return compNode;
+}
+
+// uncomment this method to use with backtracking parser
+public List<IToken> getRuleTokens() {
+ return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
+}
+
+public String[] getOrderedTerminalSymbols() {
+ return XlcCPPParsersym.orderedTerminalSymbols;
+}
+
+@SuppressWarnings("nls")
+public String getName() {
+ return "XlcCPPParser";
+}
+
+
+private GNUBuildASTParserAction gnuAction;
+
+ public void ruleAction(int ruleNumber)
+ {
+ switch (ruleNumber)
+ {
+
+ //
+ // Rule 1: <openscope-ast> ::= $Empty
+ //
+ case 1: { action. openASTScope(); break;
+ }
+
+ //
+ // Rule 2: <empty> ::= $Empty
+ //
+ case 2: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 13: translation_unit ::= declaration_seq_opt
+ //
+ case 13: { action. consumeTranslationUnit(); break;
+ }
+
+ //
+ // Rule 16: literal ::= integer
+ //
+ case 16: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_integer_constant); break;
+ }
+
+ //
+ // Rule 17: literal ::= floating
+ //
+ case 17: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_float_constant); break;
+ }
+
+ //
+ // Rule 18: literal ::= charconst
+ //
+ case 18: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_char_constant); break;
+ }
+
+ //
+ // Rule 19: literal ::= stringlit
+ //
+ case 19: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_string_literal); break;
+ }
+
+ //
+ // Rule 20: literal ::= true
+ //
+ case 20: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_true); break;
+ }
+
+ //
+ // Rule 21: literal ::= false
+ //
+ case 21: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_false); break;
+ }
+
+ //
+ // Rule 22: literal ::= this
+ //
+ case 22: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_this); break;
+ }
+
+ //
+ // Rule 24: primary_expression ::= ( expression )
+ //
+ case 24: { action. consumeExpressionBracketed(); break;
+ }
+
+ //
+ // Rule 26: id_expression ::= qualified_or_unqualified_name
+ //
+ case 26: { action. consumeExpressionName(); break;
+ }
+
+ //
+ // Rule 33: unqualified_id_name ::= ~ identifier_token
+ //
+ case 33: { action. consumeDestructorName(); break;
+ }
+
+ //
+ // Rule 34: unqualified_id_name ::= ~ template_id_name
+ //
+ case 34: { action. consumeDestructorNameTemplateId(); break;
+ }
+
+ //
+ // Rule 35: identifier_name ::= identifier_token
+ //
+ case 35: { action. consumeIdentifierName(); break;
+ }
+
+ //
+ // Rule 36: template_opt ::= template
+ //
+ case 36: { action. consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 37: template_opt ::= $Empty
+ //
+ case 37: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 38: dcolon_opt ::= ::
+ //
+ case 38: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 39: dcolon_opt ::= $Empty
+ //
+ case 39: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 40: qualified_id_name ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name
+ //
+ case 40: { action. consumeQualifiedId(true); break;
+ }
+
+ //
+ // Rule 41: qualified_id_name ::= :: unqualified_id_name
+ //
+ case 41: { action. consumeGlobalQualifiedId(); break;
+ }
+
+ //
+ // Rule 42: nested_name_specifier ::= class_or_namespace_name :: nested_name_specifier_with_template
+ //
+ case 42: { action. consumeNestedNameSpecifier(true); break;
+ }
+
+ //
+ // Rule 43: nested_name_specifier ::= class_or_namespace_name ::
+ //
+ case 43: { action. consumeNestedNameSpecifier(false); break;
+ }
+
+ //
+ // Rule 44: nested_name_specifier_with_template ::= class_or_namespace_name_with_template :: nested_name_specifier_with_template
+ //
+ case 44: { action. consumeNestedNameSpecifier(true); break;
+ }
+
+ //
+ // Rule 45: nested_name_specifier_with_template ::= class_or_namespace_name_with_template ::
+ //
+ case 45: { action. consumeNestedNameSpecifier(false); break;
+ }
+
+ //
+ // Rule 46: class_or_namespace_name_with_template ::= template_opt class_or_namespace_name
+ //
+ case 46: { action. consumeNameWithTemplateKeyword(); break;
+ }
+
+ //
+ // Rule 48: nested_name_specifier_opt ::= $Empty
+ //
+ case 48: { action. consumeNestedNameSpecifierEmpty(); break;
+ }
+
+ //
+ // Rule 51: postfix_expression ::= postfix_expression [ expression ]
+ //
+ case 51: { action. consumeExpressionArraySubscript(); break;
+ }
+
+ //
+ // Rule 52: postfix_expression ::= postfix_expression ( expression_list_opt )
+ //
+ case 52: { action. consumeExpressionFunctionCall(); break;
+ }
+
+ //
+ // Rule 53: postfix_expression ::= simple_type_specifier ( expression_list_opt )
+ //
+ case 53: { action. consumeExpressionSimpleTypeConstructor(); break;
+ }
+
+ //
+ // Rule 54: postfix_expression ::= typename dcolon_opt nested_name_specifier <empty> identifier_name ( expression_list_opt )
+ //
+ case 54: { action. consumeExpressionTypeName(); break;
+ }
+
+ //
+ // Rule 55: postfix_expression ::= typename dcolon_opt nested_name_specifier template_opt template_id_name ( expression_list_opt )
+ //
+ case 55: { action. consumeExpressionTypeName(); break;
+ }
+
+ //
+ // Rule 56: postfix_expression ::= postfix_expression . qualified_or_unqualified_name
+ //
+ case 56: { action. consumeExpressionFieldReference(false, false); break;
+ }
+
+ //
+ // Rule 57: postfix_expression ::= postfix_expression -> qualified_or_unqualified_name
+ //
+ case 57: { action. consumeExpressionFieldReference(true, false); break;
+ }
+
+ //
+ // Rule 58: postfix_expression ::= postfix_expression . template qualified_or_unqualified_name
+ //
+ case 58: { action. consumeExpressionFieldReference(false, true); break;
+ }
+
+ //
+ // Rule 59: postfix_expression ::= postfix_expression -> template qualified_or_unqualified_name
+ //
+ case 59: { action. consumeExpressionFieldReference(true, true); break;
+ }
+
+ //
+ // Rule 60: postfix_expression ::= postfix_expression . pseudo_destructor_name
+ //
+ case 60: { action. consumeExpressionFieldReference(false, false); break;
+ }
+
+ //
+ // Rule 61: postfix_expression ::= postfix_expression -> pseudo_destructor_name
+ //
+ case 61: { action. consumeExpressionFieldReference(true, false); break;
+ }
+
+ //
+ // Rule 62: postfix_expression ::= postfix_expression ++
+ //
+ case 62: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); break;
+ }
+
+ //
+ // Rule 63: postfix_expression ::= postfix_expression --
+ //
+ case 63: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); break;
+ }
+
+ //
+ // Rule 64: postfix_expression ::= dynamic_cast < type_id > ( expression )
+ //
+ case 64: { action. consumeExpressionCast(ICPPASTCastExpression.op_dynamic_cast); break;
+ }
+
+ //
+ // Rule 65: postfix_expression ::= static_cast < type_id > ( expression )
+ //
+ case 65: { action. consumeExpressionCast(ICPPASTCastExpression.op_static_cast); break;
+ }
+
+ //
+ // Rule 66: postfix_expression ::= reinterpret_cast < type_id > ( expression )
+ //
+ case 66: { action. consumeExpressionCast(ICPPASTCastExpression.op_reinterpret_cast); break;
+ }
+
+ //
+ // Rule 67: postfix_expression ::= const_cast < type_id > ( expression )
+ //
+ case 67: { action. consumeExpressionCast(ICPPASTCastExpression.op_const_cast); break;
+ }
+
+ //
+ // Rule 68: postfix_expression ::= typeid ( expression )
+ //
+ case 68: { action. consumeExpressionUnaryOperator(ICPPASTUnaryExpression.op_typeid); break;
+ }
+
+ //
+ // Rule 69: postfix_expression ::= typeid ( type_id )
+ //
+ case 69: { action. consumeExpressionTypeId(ICPPASTTypeIdExpression.op_typeid); break;
+ }
+
+ //
+ // Rule 70: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt type_name :: destructor_type_name
+ //
+ case 70: { action. consumePsudoDestructorName(true); break;
+ }
+
+ //
+ // Rule 71: pseudo_destructor_name ::= dcolon_opt nested_name_specifier template template_id_name :: destructor_type_name
+ //
+ case 71: { action. consumePsudoDestructorName(true); break;
+ }
+
+ //
+ // Rule 72: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt destructor_type_name
+ //
+ case 72: { action. consumePsudoDestructorName(false); break;
+ }
+
+ //
+ // Rule 73: destructor_type_name ::= ~ identifier_token
+ //
+ case 73: { action. consumeDestructorName(); break;
+ }
+
+ //
+ // Rule 74: destructor_type_name ::= ~ template_id_name
+ //
+ case 74: { action. consumeDestructorNameTemplateId(); break;
+ }
+
+ //
+ // Rule 78: unary_expression ::= ++ cast_expression
+ //
+ case 78: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); break;
+ }
+
+ //
+ // Rule 79: unary_expression ::= -- cast_expression
+ //
+ case 79: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); break;
+ }
+
+ //
+ // Rule 80: unary_expression ::= & cast_expression
+ //
+ case 80: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); break;
+ }
+
+ //
+ // Rule 81: unary_expression ::= * cast_expression
+ //
+ case 81: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); break;
+ }
+
+ //
+ // Rule 82: unary_expression ::= + cast_expression
+ //
+ case 82: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); break;
+ }
+
+ //
+ // Rule 83: unary_expression ::= - cast_expression
+ //
+ case 83: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); break;
+ }
+
+ //
+ // Rule 84: unary_expression ::= ~ cast_expression
+ //
+ case 84: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); break;
+ }
+
+ //
+ // Rule 85: unary_expression ::= ! cast_expression
+ //
+ case 85: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); break;
+ }
+
+ //
+ // Rule 86: unary_expression ::= sizeof unary_expression
+ //
+ case 86: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); break;
+ }
+
+ //
+ // Rule 87: unary_expression ::= sizeof ( type_id )
+ //
+ case 87: { action. consumeExpressionTypeId(ICPPASTTypeIdExpression.op_sizeof); break;
+ }
+
+ //
+ // Rule 88: new_expression ::= dcolon_opt new new_placement_opt new_type_id <openscope-ast> new_array_expressions_opt new_initializer_opt
+ //
+ case 88: { action. consumeExpressionNew(true); break;
+ }
+
+ //
+ // Rule 89: new_expression ::= dcolon_opt new new_placement_opt ( type_id ) <openscope-ast> new_array_expressions_opt new_initializer_opt
+ //
+ case 89: { action. consumeExpressionNew(false); break;
+ }
+
+ //
+ // Rule 91: new_placement_opt ::= $Empty
+ //
+ case 91: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 92: new_type_id ::= type_specifier_seq
+ //
+ case 92: { action. consumeTypeId(false); break;
+ }
+
+ //
+ // Rule 93: new_type_id ::= type_specifier_seq new_declarator
+ //
+ case 93: { action. consumeTypeId(true); break;
+ }
+
+ //
+ // Rule 94: new_declarator ::= <openscope-ast> new_pointer_operators
+ //
+ case 94: { action. consumeNewDeclarator(); break;
+ }
+
+ //
+ // Rule 101: new_initializer ::= ( expression_list_opt )
+ //
+ case 101: { action. consumeNewInitializer(); break;
+ }
+
+ //
+ // Rule 103: new_initializer_opt ::= $Empty
+ //
+ case 103: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 104: delete_expression ::= dcolon_opt delete cast_expression
+ //
+ case 104: { action. consumeExpressionDelete(false); break;
+ }
+
+ //
+ // Rule 105: delete_expression ::= dcolon_opt delete [ ] cast_expression
+ //
+ case 105: { action. consumeExpressionDelete(true); break;
+ }
+
+ //
+ // Rule 107: cast_expression ::= ( type_id ) cast_expression
+ //
+ case 107: { action. consumeExpressionCast(ICPPASTCastExpression.op_cast); break;
+ }
+
+ //
+ // Rule 109: pm_expression ::= pm_expression .* cast_expression
+ //
+ case 109: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmdot); break;
+ }
+
+ //
+ // Rule 110: pm_expression ::= pm_expression ->* cast_expression
+ //
+ case 110: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmarrow); break;
+ }
+
+ //
+ // Rule 112: multiplicative_expression ::= multiplicative_expression * pm_expression
+ //
+ case 112: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiply); break;
+ }
+
+ //
+ // Rule 113: multiplicative_expression ::= multiplicative_expression / pm_expression
+ //
+ case 113: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divide); break;
+ }
+
+ //
+ // Rule 114: multiplicative_expression ::= multiplicative_expression % pm_expression
+ //
+ case 114: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_modulo); break;
+ }
+
+ //
+ // Rule 116: additive_expression ::= additive_expression + multiplicative_expression
+ //
+ case 116: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plus); break;
+ }
+
+ //
+ // Rule 117: additive_expression ::= additive_expression - multiplicative_expression
+ //
+ case 117: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minus); break;
+ }
+
+ //
+ // Rule 119: shift_expression ::= shift_expression << additive_expression
+ //
+ case 119: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeft); break;
+ }
+
+ //
+ // Rule 120: shift_expression ::= shift_expression >> additive_expression
+ //
+ case 120: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRight); break;
+ }
+
+ //
+ // Rule 122: relational_expression ::= relational_expression < shift_expression
+ //
+ case 122: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan); break;
+ }
+
+ //
+ // Rule 123: relational_expression ::= relational_expression > shift_expression
+ //
+ case 123: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan); break;
+ }
+
+ //
+ // Rule 124: relational_expression ::= relational_expression <= shift_expression
+ //
+ case 124: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual); break;
+ }
+
+ //
+ // Rule 125: relational_expression ::= relational_expression >= shift_expression
+ //
+ case 125: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual); break;
+ }
+
+ //
+ // Rule 127: equality_expression ::= equality_expression == relational_expression
+ //
+ case 127: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals); break;
+ }
+
+ //
+ // Rule 128: equality_expression ::= equality_expression != relational_expression
+ //
+ case 128: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals); break;
+ }
+
+ //
+ // Rule 130: and_expression ::= and_expression & equality_expression
+ //
+ case 130: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd); break;
+ }
+
+ //
+ // Rule 132: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
+ //
+ case 132: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor); break;
+ }
+
+ //
+ // Rule 134: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
+ //
+ case 134: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr); break;
+ }
+
+ //
+ // Rule 136: logical_and_expression ::= logical_and_expression && inclusive_or_expression
+ //
+ case 136: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd); break;
+ }
+
+ //
+ // Rule 138: logical_or_expression ::= logical_or_expression || logical_and_expression
+ //
+ case 138: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr); break;
+ }
+
+ //
+ // Rule 140: conditional_expression ::= logical_or_expression ? expression : assignment_expression
+ //
+ case 140: { action. consumeExpressionConditional(); break;
+ }
+
+ //
+ // Rule 141: throw_expression ::= throw
+ //
+ case 141: { action. consumeExpressionThrow(false); break;
+ }
+
+ //
+ // Rule 142: throw_expression ::= throw assignment_expression
+ //
+ case 142: { action. consumeExpressionThrow(true); break;
+ }
+
+ //
+ // Rule 145: assignment_expression ::= logical_or_expression = assignment_expression
+ //
+ case 145: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign); break;
+ }
+
+ //
+ // Rule 146: assignment_expression ::= logical_or_expression *= assignment_expression
+ //
+ case 146: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign); break;
+ }
+
+ //
+ // Rule 147: assignment_expression ::= logical_or_expression /= assignment_expression
+ //
+ case 147: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign); break;
+ }
+
+ //
+ // Rule 148: assignment_expression ::= logical_or_expression %= assignment_expression
+ //
+ case 148: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign); break;
+ }
+
+ //
+ // Rule 149: assignment_expression ::= logical_or_expression += assignment_expression
+ //
+ case 149: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign); break;
+ }
+
+ //
+ // Rule 150: assignment_expression ::= logical_or_expression -= assignment_expression
+ //
+ case 150: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign); break;
+ }
+
+ //
+ // Rule 151: assignment_expression ::= logical_or_expression >>= assignment_expression
+ //
+ case 151: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign); break;
+ }
+
+ //
+ // Rule 152: assignment_expression ::= logical_or_expression <<= assignment_expression
+ //
+ case 152: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign); break;
+ }
+
+ //
+ // Rule 153: assignment_expression ::= logical_or_expression &= assignment_expression
+ //
+ case 153: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign); break;
+ }
+
+ //
+ // Rule 154: assignment_expression ::= logical_or_expression ^= assignment_expression
+ //
+ case 154: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign); break;
+ }
+
+ //
+ // Rule 155: assignment_expression ::= logical_or_expression |= assignment_expression
+ //
+ case 155: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign); break;
+ }
+
+ //
+ // Rule 157: expression_list ::= <openscope-ast> expression_list_actual
+ //
+ case 157: { action. consumeExpressionList(); break;
+ }
+
+ //
+ // Rule 161: expression_list_opt ::= $Empty
+ //
+ case 161: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 163: expression_opt ::= $Empty
+ //
+ case 163: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 166: constant_expression_opt ::= $Empty
+ //
+ case 166: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 175: statement ::= ERROR_TOKEN
+ //
+ case 175: { action. consumeStatementProblem(); break;
+ }
+
+ //
+ // Rule 176: labeled_statement ::= identifier : statement
+ //
+ case 176: { action. consumeStatementLabeled(); break;
+ }
+
+ //
+ // Rule 177: labeled_statement ::= case constant_expression : statement
+ //
+ case 177: { action. consumeStatementCase(); break;
+ }
+
+ //
+ // Rule 178: labeled_statement ::= default : statement
+ //
+ case 178: { action. consumeStatementDefault(); break;
+ }
+
+ //
+ // Rule 179: expression_statement ::= expression ;
+ //
+ case 179: { action. consumeStatementExpression(); break;
+ }
+
+ //
+ // Rule 180: expression_statement ::= ;
+ //
+ case 180: { action. consumeStatementNull(); break;
+ }
+
+ //
+ // Rule 181: compound_statement ::= { <openscope-ast> statement_seq }
+ //
+ case 181: { action. consumeStatementCompoundStatement(true); break;
+ }
+
+ //
+ // Rule 182: compound_statement ::= { }
+ //
+ case 182: { action. consumeStatementCompoundStatement(false); break;
+ }
+
+ //
+ // Rule 185: selection_statement ::= if ( condition ) statement
+ //
+ case 185: { action. consumeStatementIf(false); break;
+ }
+
+ //
+ // Rule 186: selection_statement ::= if ( condition ) statement else statement
+ //
+ case 186: { action. consumeStatementIf(true); break;
+ }
+
+ //
+ // Rule 187: selection_statement ::= switch ( condition ) statement
+ //
+ case 187: { action. consumeStatementSwitch(); break;
+ }
+
+ //
+ // Rule 189: condition ::= type_specifier_seq declarator = assignment_expression
+ //
+ case 189: { action. consumeConditionDeclaration(); break;
+ }
+
+ //
+ // Rule 191: condition_opt ::= $Empty
+ //
+ case 191: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 192: iteration_statement ::= while ( condition ) statement
+ //
+ case 192: { action. consumeStatementWhileLoop(); break;
+ }
+
+ //
+ // Rule 193: iteration_statement ::= do statement while ( expression ) ;
+ //
+ case 193: { action. consumeStatementDoLoop(); break;
+ }
+
+ //
+ // Rule 194: iteration_statement ::= for ( for_init_statement condition_opt ; expression_opt ) statement
+ //
+ case 194: { action. consumeStatementForLoop(); break;
+ }
+
+ //
+ // Rule 196: for_init_statement ::= simple_declaration_with_declspec
+ //
+ case 196: { action. consumeStatementDeclaration(); break;
+ }
+
+ //
+ // Rule 197: jump_statement ::= break ;
+ //
+ case 197: { action. consumeStatementBreak(); break;
+ }
+
+ //
+ // Rule 198: jump_statement ::= continue ;
+ //
+ case 198: { action. consumeStatementContinue(); break;
+ }
+
+ //
+ // Rule 199: jump_statement ::= return expression ;
+ //
+ case 199: { action. consumeStatementReturn(true); break;
+ }
+
+ //
+ // Rule 200: jump_statement ::= return ;
+ //
+ case 200: { action. consumeStatementReturn(false); break;
+ }
+
+ //
+ // Rule 201: jump_statement ::= goto identifier_token ;
+ //
+ case 201: { action. consumeStatementGoto(); break;
+ }
+
+ //
+ // Rule 202: declaration_statement ::= block_declaration
+ //
+ case 202: { action. consumeStatementDeclarationWithDisambiguation(); break;
+ }
+
+ //
+ // Rule 203: declaration_statement ::= function_definition
+ //
+ case 203: { action. consumeStatementDeclaration(); break;
+ }
+
+ //
+ // Rule 211: declaration ::= ERROR_TOKEN
+ //
+ case 211: { action. consumeDeclarationProblem(); break;
+ }
+
+ //
+ // Rule 221: simple_declaration ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ;
+ //
+ case 221: { action. consumeDeclarationSimple(true); break;
+ }
+
+ //
+ // Rule 222: simple_declaration_with_declspec ::= declaration_specifiers <openscope-ast> init_declarator_list_opt ;
+ //
+ case 222: { action. consumeDeclarationSimple(true); break;
+ }
+
+ //
+ // Rule 223: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
+ //
+ case 223: { action. consumeDeclarationSpecifiersSimple(); break;
+ }
+
+ //
+ // Rule 224: declaration_specifiers ::= <openscope-ast> class_declaration_specifiers
+ //
+ case 224: { action. consumeDeclarationSpecifiersComposite(); break;
+ }
+
+ //
+ // Rule 225: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
+ //
+ case 225: { action. consumeDeclarationSpecifiersComposite(); break;
+ }
+
+ //
+ // Rule 226: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
+ //
+ case 226: { action. consumeDeclarationSpecifiersComposite(); break;
+ }
+
+ //
+ // Rule 227: declaration_specifiers ::= <openscope-ast> type_name_declaration_specifiers
+ //
+ case 227: { action. consumeDeclarationSpecifiersTypeName(); break;
+ }
+
+ //
+ // Rule 229: declaration_specifiers_opt ::= $Empty
+ //
+ case 229: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 233: no_type_declaration_specifier ::= friend
+ //
+ case 233: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 234: no_type_declaration_specifier ::= typedef
+ //
+ case 234: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 254: storage_class_specifier ::= auto
+ //
+ case 254: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 255: storage_class_specifier ::= register
+ //
+ case 255: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 256: storage_class_specifier ::= static
+ //
+ case 256: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 257: storage_class_specifier ::= extern
+ //
+ case 257: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 258: storage_class_specifier ::= mutable
+ //
+ case 258: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 259: function_specifier ::= inline
+ //
+ case 259: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 260: function_specifier ::= virtual
+ //
+ case 260: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 261: function_specifier ::= explicit
+ //
+ case 261: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 262: simple_type_specifier ::= simple_type_specifier_token
+ //
+ case 262: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 276: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name
+ //
+ case 276: { action. consumeQualifiedId(false); break;
+ }
+
+ //
+ // Rule 277: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name
+ //
+ case 277: { action. consumeQualifiedId(false); break;
+ }
+
+ //
+ // Rule 278: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name
+ //
+ case 278: { action. consumeQualifiedId(false); break;
+ }
+
+ //
+ // Rule 279: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
+ //
+ case 279: { action. consumeQualifiedId(true); break;
+ }
+
+ //
+ // Rule 281: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
+ //
+ case 281: { action. consumeTypeSpecifierElaborated(false); break;
+ }
+
+ //
+ // Rule 282: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
+ //
+ case 282: { action. consumeTypeSpecifierElaborated(true); break;
+ }
+
+ //
+ // Rule 283: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
+ //
+ case 283: { action. consumeTypeSpecifierElaborated(false); break;
+ }
+
+ //
+ // Rule 287: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
+ //
+ case 287: { action. consumeTypeSpecifierEnumeration(false); break;
+ }
+
+ //
+ // Rule 288: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
+ //
+ case 288: { action. consumeTypeSpecifierEnumeration(true); break;
+ }
+
+ //
+ // Rule 294: enumerator_definition ::= identifier_token
+ //
+ case 294: { action. consumeEnumerator(false); break;
+ }
+
+ //
+ // Rule 295: enumerator_definition ::= identifier_token = constant_expression
+ //
+ case 295: { action. consumeEnumerator(true); break;
+ }
+
+ //
+ // Rule 297: namespace_definition ::= namespace namespace_name namespace_definition_hook { <openscope-ast> declaration_seq_opt }
+ //
+ case 297: { action. consumeNamespaceDefinition(true); break;
+ }
+
+ //
+ // Rule 298: namespace_definition ::= namespace namespace_definition_hook { <openscope-ast> declaration_seq_opt }
+ //
+ case 298: { action. consumeNamespaceDefinition(false); break;
+ }
+
+ //
+ // Rule 300: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ;
+ //
+ case 300: { action. consumeNamespaceAliasDefinition(); break;
+ }
+
+ //
+ // Rule 301: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
+ //
+ case 301: { action. consumeUsingDeclaration(); break;
+ }
+
+ //
+ // Rule 302: typename_opt ::= typename
+ //
+ case 302: { action. consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 303: typename_opt ::= $Empty
+ //
+ case 303: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 304: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
+ //
+ case 304: { action. consumeUsingDirective(); break;
+ }
+
+ //
+ // Rule 305: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
+ //
+ case 305: { action. consumeLinkageSpecification(); break;
+ }
+
+ //
+ // Rule 306: linkage_specification ::= extern stringlit <openscope-ast> declaration
+ //
+ case 306: { action. consumeLinkageSpecification(); break;
+ }
+
+ //
+ // Rule 311: init_declarator_complete ::= init_declarator
+ //
+ case 311: { action. consumeInitDeclaratorComplete(); break;
+ }
+
+ //
+ // Rule 313: init_declarator ::= complete_declarator initializer
+ //
+ case 313: { action. consumeDeclaratorWithInitializer(true); break;
+ }
+
+ //
+ // Rule 316: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
+ //
+ case 316: { action. consumeDeclaratorWithPointer(true); break;
+ }
+
+ //
+ // Rule 318: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
+ //
+ case 318: { action. consumeDeclaratorWithPointer(true); break;
+ }
+
+ //
+ // Rule 322: basic_direct_declarator ::= declarator_id_name
+ //
+ case 322: { action. consumeDirectDeclaratorIdentifier(); break;
+ }
+
+ //
+ // Rule 323: basic_direct_declarator ::= ( declarator )
+ //
+ case 323: { action. consumeDirectDeclaratorBracketed(); break;
+ }
+
+ //
+ // Rule 324: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
+ //
+ case 324: { action. consumeDirectDeclaratorFunctionDeclarator(true); break;
+ }
+
+ //
+ // Rule 325: array_direct_declarator ::= array_direct_declarator array_modifier
+ //
+ case 325: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
+ //
+ // Rule 326: array_direct_declarator ::= basic_direct_declarator array_modifier
+ //
+ case 326: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
+ //
+ // Rule 327: array_modifier ::= [ constant_expression ]
+ //
+ case 327: { action. consumeDirectDeclaratorArrayModifier(true); break;
+ }
+
+ //
+ // Rule 328: array_modifier ::= [ ]
+ //
+ case 328: { action. consumeDirectDeclaratorArrayModifier(false); break;
+ }
+
+ //
+ // Rule 329: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
+ //
+ case 329: { action. consumePointer(); break;
+ }
+
+ //
+ // Rule 330: ptr_operator ::= pointer_hook & pointer_hook
+ //
+ case 330: { action. consumeReferenceOperator(); break;
+ }
+
+ //
+ // Rule 331: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
+ //
+ case 331: { action. consumePointerToMember(); break;
+ }
+
+ //
+ // Rule 338: cv_qualifier ::= const
+ //
+ case 338: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 339: cv_qualifier ::= volatile
+ //
+ case 339: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 341: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
+ //
+ case 341: { action. consumeQualifiedId(false); break;
+ }
+
+ //
+ // Rule 342: type_id ::= type_specifier_seq
+ //
+ case 342: { action. consumeTypeId(false); break;
+ }
+
+ //
+ // Rule 343: type_id ::= type_specifier_seq abstract_declarator
+ //
+ case 343: { action. consumeTypeId(true); break;
+ }
+
+ //
+ // Rule 346: abstract_declarator ::= <openscope-ast> ptr_operator_seq
+ //
+ case 346: { action. consumeDeclaratorWithPointer(false); break;
+ }
+
+ //
+ // Rule 347: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
+ //
+ case 347: { action. consumeDeclaratorWithPointer(true); break;
+ }
+
+ //
+ // Rule 351: basic_direct_abstract_declarator ::= ( abstract_declarator )
+ //
+ case 351: { action. consumeDirectDeclaratorBracketed(); break;
+ }
+
+ //
+ // Rule 352: basic_direct_abstract_declarator ::= ( )
+ //
+ case 352: { action. consumeAbstractDeclaratorEmpty(); break;
+ }
+
+ //
+ // Rule 353: array_direct_abstract_declarator ::= array_modifier
+ //
+ case 353: { action. consumeDirectDeclaratorArrayDeclarator(false); break;
+ }
+
+ //
+ // Rule 354: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
+ //
+ case 354: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
+ //
+ // Rule 355: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
+ //
+ case 355: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
+ //
+ // Rule 356: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
+ //
+ case 356: { action. consumeDirectDeclaratorFunctionDeclarator(true); break;
+ }
+
+ //
+ // Rule 357: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
+ //
+ case 357: { action. consumeDirectDeclaratorFunctionDeclarator(false); break;
+ }
+
+ //
+ // Rule 358: parameter_declaration_clause ::= parameter_declaration_list_opt ...
+ //
+ case 358: { action. consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 359: parameter_declaration_clause ::= parameter_declaration_list_opt
+ //
+ case 359: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 360: parameter_declaration_clause ::= parameter_declaration_list , ...
+ //
+ case 360: { action. consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 366: abstract_declarator_opt ::= $Empty
+ //
+ case 366: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 367: parameter_declaration ::= declaration_specifiers parameter_init_declarator
+ //
+ case 367: { action. consumeParameterDeclaration(); break;
+ }
+
+ //
+ // Rule 368: parameter_declaration ::= declaration_specifiers
+ //
+ case 368: { action. consumeParameterDeclarationWithoutDeclarator(); break;
+ }
+
+ //
+ // Rule 370: parameter_init_declarator ::= declarator = parameter_initializer
+ //
+ case 370: { action. consumeDeclaratorWithInitializer(true); break;
+ }
+
+ //
+ // Rule 372: parameter_init_declarator ::= abstract_declarator = parameter_initializer
+ //
+ case 372: { action. consumeDeclaratorWithInitializer(true); break;
+ }
+
+ //
+ // Rule 373: parameter_init_declarator ::= = parameter_initializer
+ //
+ case 373: { action. consumeDeclaratorWithInitializer(false); break;
+ }
+
+ //
+ // Rule 374: parameter_initializer ::= assignment_expression
+ //
+ case 374: { action. consumeInitializer(); break;
+ }
+
+ //
+ // Rule 375: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body
+ //
+ case 375: { action. consumeFunctionDefinition(false); break;
+ }
+
+ //
+ // Rule 376: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
+ //
+ case 376: { action. consumeFunctionDefinition(true); break;
+ }
+
+ //
+ // Rule 379: initializer ::= ( expression_list )
+ //
+ case 379: { action. consumeInitializerConstructor(); break;
+ }
+
+ //
+ // Rule 380: initializer_clause ::= assignment_expression
+ //
+ case 380: { action. consumeInitializer(); break;
+ }
+
+ //
+ // Rule 382: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq , } end_initializer_list
+ //
+ case 382: { action. consumeInitializerList(); break;
+ }
+
+ //
+ // Rule 383: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq } end_initializer_list
+ //
+ case 383: { action. consumeInitializerList(); break;
+ }
+
+ //
+ // Rule 384: initializer_list ::= { <openscope-ast> }
+ //
+ case 384: { action. consumeInitializerList(); break;
+ }
+
+ //
+ // Rule 385: start_initializer_list ::= $Empty
+ //
+ case 385: { action. initializerListStart(); break;
+ }
+
+ //
+ // Rule 386: end_initializer_list ::= $Empty
+ //
+ case 386: { action. initializerListEnd(); break;
+ }
+
+ //
+ // Rule 391: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt }
+ //
+ case 391: { action. consumeClassSpecifier(); break;
+ }
+
+ //
+ // Rule 392: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt
+ //
+ case 392: { action. consumeClassHead(false); break;
+ }
+
+ //
+ // Rule 393: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
+ //
+ case 393: { action. consumeClassHead(false); break;
+ }
+
+ //
+ // Rule 394: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt
+ //
+ case 394: { action. consumeClassHead(true); break;
+ }
+
+ //
+ // Rule 395: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
+ //
+ case 395: { action. consumeClassHead(true); break;
+ }
+
+ //
+ // Rule 399: identifier_name_opt ::= $Empty
+ //
+ case 399: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 403: visibility_label ::= access_specifier_keyword :
+ //
+ case 403: { action. consumeVisibilityLabel(); break;
+ }
+
+ //
+ // Rule 404: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ;
+ //
+ case 404: { action. consumeDeclarationSimple(true); break;
+ }
+
+ //
+ // Rule 405: member_declaration ::= declaration_specifiers_opt ;
+ //
+ case 405: { action. consumeDeclarationSimple(false); break;
+ }
+
+ //
+ // Rule 408: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;
+ //
+ case 408: { action. consumeMemberDeclarationQualifiedId(); break;
+ }
+
+ //
+ // Rule 414: member_declaration ::= ERROR_TOKEN
+ //
+ case 414: { action. consumeDeclarationProblem(); break;
+ }
+
+ //
+ // Rule 423: member_declarator ::= declarator constant_initializer
+ //
+ case 423: { action. consumeMemberDeclaratorWithInitializer(); break;
+ }
+
+ //
+ // Rule 424: member_declarator ::= bit_field_declarator : constant_expression
+ //
+ case 424: { action. consumeBitField(true); break;
+ }
+
+ //
+ // Rule 425: member_declarator ::= : constant_expression
+ //
+ case 425: { action. consumeBitField(false); break;
+ }
+
+ //
+ // Rule 426: bit_field_declarator ::= identifier_name
+ //
+ case 426: { action. consumeDirectDeclaratorIdentifier(); break;
+ }
+
+ //
+ // Rule 427: constant_initializer ::= = constant_expression
+ //
+ case 427: { action. consumeInitializer(); break;
+ }
+
+ //
+ // Rule 433: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name
+ //
+ case 433: { action. consumeBaseSpecifier(false, false); break;
+ }
+
+ //
+ // Rule 434: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name
+ //
+ case 434: { action. consumeBaseSpecifier(true, true); break;
+ }
+
+ //
+ // Rule 435: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name
+ //
+ case 435: { action. consumeBaseSpecifier(true, true); break;
+ }
+
+ //
+ // Rule 436: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name
+ //
+ case 436: { action. consumeBaseSpecifier(true, false); break;
+ }
+
+ //
+ // Rule 437: access_specifier_keyword ::= private
+ //
+ case 437: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 438: access_specifier_keyword ::= protected
+ //
+ case 438: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 439: access_specifier_keyword ::= public
+ //
+ case 439: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 441: access_specifier_keyword_opt ::= $Empty
+ //
+ case 441: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 443: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt >
+ //
+ case 443: { action. consumeTemplateId(); break;
+ }
+
+ //
+ // Rule 444: conversion_function_id ::= operator conversion_type_id
+ //
+ case 444: { action. consumeConversionName(); break;
+ }
+
+ //
+ // Rule 445: conversion_type_id ::= type_specifier_seq conversion_declarator
+ //
+ case 445: { action. consumeTypeId(true); break;
+ }
+
+ //
+ // Rule 446: conversion_type_id ::= type_specifier_seq
+ //
+ case 446: { action. consumeTypeId(false); break;
+ }
+
+ //
+ // Rule 447: conversion_declarator ::= <openscope-ast> ptr_operator_seq
+ //
+ case 447: { action. consumeDeclaratorWithPointer(false); break;
+ }
+
+ //
+ // Rule 453: mem_initializer ::= mem_initializer_name ( expression_list_opt )
+ //
+ case 453: { action. consumeConstructorChainInitializer(); break;
+ }
+
+ //
+ // Rule 454: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
+ //
+ case 454: { action. consumeQualifiedId(false); break;
+ }
+
+ //
+ // Rule 457: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
+ //
+ case 457: { action. consumeTemplateId(); break;
+ }
+
+ //
+ // Rule 458: operator_id_name ::= operator overloadable_operator
+ //
+ case 458: { action. consumeOperatorName(); break;
+ }
+
+ //
+ // Rule 501: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
+ //
+ case 501: { action. consumeTemplateDeclaration(); break;
+ }
+
+ //
+ // Rule 502: export_opt ::= export
+ //
+ case 502: { action. consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 503: export_opt ::= $Empty
+ //
+ case 503: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 507: template_parameter ::= parameter_declaration
+ //
+ case 507: { action. consumeTemplateParamterDeclaration(); break;
+ }
+
+ //
+ // Rule 508: type_parameter ::= class identifier_name_opt
+ //
+ case 508: { action. consumeSimpleTypeTemplateParameter(false); break;
+ }
+
+ //
+ // Rule 509: type_parameter ::= class identifier_name_opt = type_id
+ //
+ case 509: { action. consumeSimpleTypeTemplateParameter(true); break;
+ }
+
+ //
+ // Rule 510: type_parameter ::= typename identifier_name_opt
+ //
+ case 510: { action. consumeSimpleTypeTemplateParameter(false); break;
+ }
+
+ //
+ // Rule 511: type_parameter ::= typename identifier_name_opt = type_id
+ //
+ case 511: { action. consumeSimpleTypeTemplateParameter(true); break;
+ }
+
+ //
+ // Rule 512: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
+ //
+ case 512: { action. consumeTemplatedTypeTemplateParameter(false); break;
+ }
+
+ //
+ // Rule 513: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
+ //
+ case 513: { action. consumeTemplatedTypeTemplateParameter(true); break;
+ }
+
+ //
+ // Rule 514: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt >
+ //
+ case 514: { action. consumeTemplateId(); break;
+ }
+
+ //
+ // Rule 519: template_argument ::= assignment_expression
+ //
+ case 519: { action. consumeTemplateArgumentExpression(); break;
+ }
+
+ //
+ // Rule 520: template_argument ::= type_id
+ //
+ case 520: { action. consumeTemplateArgumentTypeId(); break;
+ }
+
+ //
+ // Rule 521: explicit_instantiation ::= template declaration
+ //
+ case 521: { action. consumeTemplateExplicitInstantiation(); break;
+ }
+
+ //
+ // Rule 522: explicit_specialization ::= template < > declaration
+ //
+ case 522: { action. consumeTemplateExplicitSpecialization(); break;
+ }
+
+ //
+ // Rule 523: try_block ::= try compound_statement <openscope-ast> handler_seq
+ //
+ case 523: { action. consumeStatementTryBlock(); break;
+ }
+
+ //
+ // Rule 526: handler ::= catch ( exception_declaration ) compound_statement
+ //
+ case 526: { action. consumeStatementCatchHandler(false); break;
+ }
+
+ //
+ // Rule 527: handler ::= catch ( ... ) compound_statement
+ //
+ case 527: { action. consumeStatementCatchHandler(true); break;
+ }
+
+ //
+ // Rule 528: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
+ //
+ case 528: { action. consumeDeclarationSimple(true); break;
+ }
+
+ //
+ // Rule 529: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
+ //
+ case 529: { action. consumeDeclarationSimple(true); break;
+ }
+
+ //
+ // Rule 530: exception_declaration ::= type_specifier_seq
+ //
+ case 530: { action. consumeDeclarationSimple(false); break;
+ }
+
+ //
+ // Rule 532: exception_specification ::= throw ( )
+ //
+ case 532: { action. consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 553: attribute_parameter ::= assignment_expression
+ //
+ case 553: { action. consumeIgnore(); break;
+ }
+
+ //
+ // Rule 564: extended_asm_declaration ::= asm volatile_opt ( extended_asm_param_seq ) ;
+ //
+ case 564: { gnuAction.consumeDeclarationASM(); break;
+ }
+
+ //
+ // Rule 575: unary_expression ::= __alignof__ unary_expression
+ //
+ case 575: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_alignOf); break;
+ }
+
+ //
+ // Rule 576: unary_expression ::= __alignof__ ( type_id )
+ //
+ case 576: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_alignof); break;
+ }
+
+ //
+ // Rule 577: unary_expression ::= typeof unary_expression
+ //
+ case 577: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break;
+ }
+
+ //
+ // Rule 578: unary_expression ::= typeof ( type_id )
+ //
+ case 578: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break;
+ }
+
+ //
+ // Rule 579: relational_expression ::= relational_expression >? shift_expression
+ //
+ case 579: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_max); break;
+ }
+
+ //
+ // Rule 580: relational_expression ::= relational_expression <? shift_expression
+ //
+ case 580: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_min); break;
+ }
+
+ //
+ // Rule 581: conditional_expression ::= logical_or_expression ? <empty> : assignment_expression
+ //
+ case 581: { action. consumeExpressionConditional(); break;
+ }
+
+ //
+ // Rule 582: primary_expression ::= ( compound_statement )
+ //
+ case 582: { gnuAction.consumeCompoundStatementExpression(); break;
+ }
+
+ //
+ // Rule 583: labeled_statement ::= case case_range_expression : statement
+ //
+ case 583: { action. consumeStatementCase(); break;
+ }
+
+ //
+ // Rule 584: case_range_expression ::= constant_expression ... constant_expression
+ //
+ case 584: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break;
+ }
+
+ //
+ // Rule 588: typeof_type_specifier ::= typeof unary_expression
+ //
+ case 588: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break;
+ }
+
+ //
+ // Rule 589: typeof_type_specifier ::= typeof ( type_id )
+ //
+ case 589: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break;
+ }
+
+ //
+ // Rule 590: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
+ //
+ case 590: { action. consumeDeclarationSpecifiersTypeof(); break;
+ }
+
+ //
+ // Rule 603: declarator ::= <openscope-ast> ptr_operator_seq attribute_or_decl_specifier_seq direct_declarator
+ //
+ case 603: { action. consumeDeclaratorWithPointer(true); break;
+ }
+
+ //
+ // Rule 606: simple_type_specifier ::= _Complex
+ //
+ case 606: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 607: simple_type_specifier ::= _Imaginary
+ //
+ case 607: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 608: cv_qualifier ::= restrict
+ //
+ case 608: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 609: explicit_instantiation ::= extern template declaration
+ //
+ case 609: { action. consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_extern); break;
+ }
+
+ //
+ // Rule 610: explicit_instantiation ::= static template declaration
+ //
+ case 610: { action. consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_static); break;
+ }
+
+ //
+ // Rule 611: explicit_instantiation ::= inline template declaration
+ //
+ case 611: { action. consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_inline); break;
+ }
+
+ //
+ // Rule 615: type_id ::= vector_type
+ //
+ case 615: { action. consumeTypeId(false); break;
+ }
+
+ //
+ // Rule 616: type_id ::= vector_type abstract_declarator
+ //
+ case 616: { action. consumeTypeId(true); break;
+ }
+
+ //
+ // Rule 617: vector_declaration ::= vector_type <openscope-ast> init_declarator_list ;
+ //
+ case 617: { action. consumeDeclarationSimple(true); break;
+ }
+
+ //
+ // Rule 618: vector_type ::= <openscope-ast> no_type_declaration_specifiers_opt vector vector_type_specifier all_specifier_qualifier_list_opt
+ //
+ case 618: { action. consumeVectorTypeSpecifier(); break;
+ }
+
+ //
+ // Rule 619: vector_type_specifier ::= vector_type_specifier_token
+ //
+ case 619: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 641: specifier_qualifier ::= typedef
+ //
+ case 641: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 642: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ]
+ //
+ case 642: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break;
+ }
+
+ //
+ // Rule 643: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
+ //
+ case 643: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break;
+ }
+
+ //
+ // Rule 644: array_modifier ::= [ static assignment_expression ]
+ //
+ case 644: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break;
+ }
+
+ //
+ // Rule 645: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
+ //
+ case 645: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break;
+ }
+
+ //
+ // Rule 646: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ]
+ //
+ case 646: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break;
+ }
+
+ //
+ // Rule 647: array_modifier ::= [ * ]
+ //
+ case 647: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break;
+ }
+
+ //
+ // Rule 648: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ]
+ //
+ case 648: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break;
+ }
+
+
+ default:
+ break;
+ }
+ return;
+ }
+}
+
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParserprs.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParserprs.java
new file mode 100644
index 0000000000..8350ddffc7
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParserprs.java
@@ -0,0 +1,3816 @@
+/*******************************************************************************
+* Copyright (c) 2006, 2009 IBM Corporation and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* IBM Corporation - initial API and implementation
+*********************************************************************************/
+
+// This file was generated by LPG
+
+package org.eclipse.cdt.internal.core.lrparser.xlc.cpp;
+
+public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPParsersym {
+
+ public interface IsKeyword {
+ public final static byte isKeyword[] = {0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0
+ };
+ };
+ public final static byte isKeyword[] = IsKeyword.isKeyword;
+ public final boolean isKeyword(int index) { return isKeyword[index] != 0; }
+
+ public interface BaseCheck {
+ public final static short baseCheck[] = {0,
+ 0,0,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,3,1,1,1,1,1,1,
+ 1,1,2,2,1,1,0,1,0,4,
+ 2,3,2,3,2,2,1,0,1,1,
+ 4,4,4,8,8,3,3,4,4,3,
+ 3,2,2,7,7,7,7,4,4,5,
+ 6,3,2,2,1,1,1,2,2,2,
+ 2,2,2,2,2,2,4,7,9,3,
+ 0,1,2,2,1,2,3,4,1,0,
+ 3,1,0,3,5,1,4,1,3,3,
+ 1,3,3,3,1,3,3,1,3,3,
+ 1,3,3,3,3,1,3,3,1,3,
+ 1,3,1,3,1,3,1,3,1,5,
+ 1,2,1,1,3,3,3,3,3,3,
+ 3,3,3,3,3,1,2,1,3,1,
+ 0,1,0,1,1,0,1,1,1,1,
+ 1,1,1,1,1,3,4,3,2,1,
+ 4,2,1,2,5,7,5,1,4,1,
+ 0,5,7,8,1,1,2,2,3,2,
+ 3,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,2,1,0,
+ 4,4,2,2,2,2,2,1,0,1,
+ 1,1,1,1,1,2,1,2,2,2,
+ 1,1,2,2,1,2,2,1,2,2,
+ 1,2,2,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,3,4,4,5,2,
+ 5,6,5,0,1,0,7,8,0,1,
+ 3,1,0,1,3,1,7,6,0,7,
+ 6,1,0,6,6,4,1,3,1,0,
+ 1,1,2,1,1,3,1,3,1,1,
+ 1,1,3,9,2,2,3,2,5,3,
+ 7,0,1,2,2,1,0,1,1,1,
+ 3,1,2,1,1,2,3,1,1,1,
+ 3,2,1,2,2,9,8,2,1,3,
+ 1,3,1,0,1,0,2,1,1,3,
+ 1,3,2,1,5,8,1,2,3,1,
+ 1,7,6,3,0,0,1,3,1,1,
+ 5,6,6,7,7,0,0,1,0,1,
+ 1,1,2,4,2,2,1,5,1,1,
+ 1,1,1,1,1,2,1,0,1,3,
+ 1,1,2,3,2,1,2,2,1,0,
+ 1,3,3,5,5,4,1,1,1,1,
+ 0,1,5,2,2,1,2,2,1,0,
+ 1,3,4,3,1,1,5,2,1,1,
+ 3,3,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,2,2,
+ 7,1,0,1,3,1,1,2,4,2,
+ 4,7,9,5,1,3,1,0,1,1,
+ 2,4,4,1,2,5,5,3,3,1,
+ 4,3,1,0,1,3,1,1,1,1,
+ 2,6,3,1,3,1,4,0,1,1,
+ 1,3,1,0,4,3,1,2,1,3,
+ 4,4,4,6,1,0,1,3,1,3,
+ 0,1,4,5,2,4,2,4,3,3,
+ 5,3,4,3,1,2,2,2,4,2,
+ 1,1,2,2,3,2,2,3,1,1,
+ 1,1,4,1,1,1,1,1,3,3,
+ 3,1,1,1,1,2,4,5,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,2,1,0,1,0,1,1,1,1,
+ 1,4,5,4,6,6,3,5,1,1,
+ 2,-177,0,0,0,-2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-69,
+ 0,0,0,-8,0,0,0,0,0,0,
+ -174,0,0,-231,0,0,0,0,-297,0,
+ 0,0,-477,0,0,0,0,0,0,0,
+ 0,0,-480,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-107,-9,0,0,0,
+ -45,0,0,0,-238,0,0,0,0,-16,
+ -269,0,0,0,0,-13,0,0,0,-195,
+ 0,0,-3,0,0,0,0,0,0,0,
+ 0,0,0,-126,-263,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -10,-54,0,0,0,0,0,0,0,-12,
+ -33,0,0,0,0,0,0,-555,0,0,
+ 0,-18,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-19,0,0,0,0,
+ 0,0,0,0,0,0,-60,0,0,0,
+ 0,0,0,0,-70,0,-241,0,0,0,
+ 0,-425,0,0,-25,-5,0,0,-15,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-197,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-155,0,0,0,0,
+ 0,-59,0,0,0,0,0,0,0,-395,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-17,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-4,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-163,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-426,0,0,0,
+ 0,0,0,0,0,-21,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -264,0,0,0,-41,0,0,0,-180,-22,
+ 0,0,0,0,0,0,0,-420,0,0,
+ 0,0,-199,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-114,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-283,0,0,0,0,0,
+ -179,-295,0,-189,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-165,0,0,0,
+ 0,0,0,0,-190,0,0,0,-23,0,
+ 0,0,0,0,0,0,0,0,-77,0,
+ 0,0,-24,-200,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-593,0,0,0,
+ 0,0,0,0,0,-32,0,0,0,0,
+ 0,0,0,0,0,0,0,-117,0,0,
+ -374,0,0,0,-145,0,0,0,-370,-42,
+ 0,0,0,0,0,-375,0,-150,-26,0,
+ 0,0,-381,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-617,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-377,0,0,0,0,-144,
+ 0,0,0,-650,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-613,-612,0,0,
+ 0,0,0,0,-299,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-585,0,
+ 0,-444,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-43,0,-46,0,0,0,
+ 0,0,0,-567,0,0,0,0,0,0,
+ 0,0,0,-108,0,-75,0,0,-481,0,
+ 0,-48,0,-586,0,0,0,-49,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-267,0,0,0,
+ 0,-362,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-52,0,0,0,0,
+ 0,0,-137,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-365,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-317,0,0,0,0,0,
+ 0,-57,0,0,0,-367,0,0,0,-72,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-318,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-83,0,0,-84,0,0,
+ 0,0,0,-547,0,0,0,-36,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-141,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-98,0,0,0,0,-400,0,0,
+ 0,-378,0,0,0,0,0,0,-99,0,
+ 0,-487,0,-213,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-376,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-78,0,0,
+ 0,0,0,-88,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-230,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -419,0,0,0,0,-100,0,0,0,0,
+ 0,0,0,0,0,0,-38,0,0,-580,
+ 0,-601,0,0,-361,0,0,0,-519,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-55,
+ 0,0,-188,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-504,0,0,0,
+ 0,-431,0,0,0,-101,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-62,0,0,0,-357,
+ 0,0,0,0,0,0,0,0,0,0,
+ -120,0,0,-164,0,0,0,0,-524,0,
+ 0,0,-102,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-133,-119,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-71,0,0,0,-525,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-104,-58,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-407,0,0,0,-151,0,
+ 0,0,0,0,0,0,0,-536,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-63,0,-105,0,-191,0,0,0,0,
+ 0,0,0,0,0,0,-561,0,0,-261,
+ 0,0,0,0,-226,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-160,
+ -203,0,-192,0,0,0,0,0,0,0,
+ 0,0,0,-146,0,0,-322,0,0,0,
+ 0,-346,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-399,0,0,0,-347,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-505,0,0,0,0,0,0,0,0,
+ -109,0,0,0,0,0,0,0,0,0,
+ 0,-73,-80,0,0,0,0,-113,0,-348,
+ 0,0,0,-121,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-215,-642,0,0,-622,0,0,
+ 0,0,0,0,0,0,0,0,-103,0,
+ 0,-236,-122,0,0,0,-349,0,0,0,
+ -615,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -277,0,0,0,0,0,0,0,-123,0,
+ 0,0,0,0,0,-106,0,0,0,0,
+ 0,0,0,-350,0,0,0,-124,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-517,0,0,0,
+ 0,-427,0,0,0,0,0,0,0,0,
+ 0,0,-134,0,0,-237,-193,0,0,0,
+ -351,0,0,0,-147,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-148,0,-204,0,-510,0,
+ 0,0,0,0,0,0,0,0,0,-115,
+ 0,0,-239,0,0,0,0,-352,0,0,
+ 0,-152,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-247,-158,-232,0,0,0,0,0,-181,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-353,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-518,0,0,
+ 0,0,-511,0,0,0,0,0,0,0,
+ 0,0,0,-116,0,0,-249,0,-216,0,
+ 0,-354,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-278,-217,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-319,-484,0,0,0,-355,0,
+ 0,0,-218,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-564,0,0,0,0,-512,0,0,0,
+ 0,0,0,0,0,0,0,-153,0,0,
+ -634,0,0,0,0,-356,0,0,0,-219,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-220,0,0,0,0,0,-221,0,0,
+ 0,0,0,0,-413,0,0,-222,0,0,
+ 0,0,-386,0,0,0,-223,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-422,0,0,0,0,
+ -575,0,0,0,0,0,0,0,0,0,
+ 0,-577,0,0,-405,0,0,0,-627,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-253,-76,0,
+ -224,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-225,-171,-172,0,
+ 0,0,0,0,0,-286,-467,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-227,0,0,-513,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-320,-323,
+ -234,0,0,-468,0,0,0,-240,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-245,0,
+ 0,0,0,0,0,-250,0,0,0,0,
+ 0,0,-127,0,0,0,0,-252,0,0,
+ -301,-532,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-442,-643,0,0,-569,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-388,0,0,0,0,-533,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-265,0,0,0,0,0,0,
+ -266,0,0,0,0,0,0,-268,0,0,
+ 0,-482,0,0,0,-620,0,0,0,-279,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-280,-128,
+ -485,0,0,0,0,0,0,-281,0,0,
+ 0,0,0,0,-131,0,0,-282,0,-397,
+ 0,0,-475,0,0,0,-291,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-82,0,0,0,0,
+ -136,0,0,0,0,0,0,0,0,0,
+ 0,-292,0,0,-486,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-531,-549,0,
+ -398,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-132,0,0,0,0,-173,-293,
+ 0,-125,0,0,0,-294,-539,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-359,0,0,-576,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-540,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-79,-429,0,0,0,0,0,0,0,
+ -303,0,0,0,0,0,0,-546,0,0,
+ -423,0,0,-360,0,0,0,0,0,-305,
+ -551,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-635,0,0,0,0,-640,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-607,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-306,0,-308,0,
+ -30,0,0,0,0,0,0,0,0,0,
+ 0,-139,0,0,0,0,-6,0,0,0,
+ -309,0,-312,0,0,0,0,-288,0,0,
+ 0,0,-508,-469,0,0,0,0,-143,0,
+ 0,0,0,0,-40,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-314,
+ 0,0,0,0,0,-205,0,0,0,0,
+ 0,0,0,0,0,0,0,-39,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -315,-161,0,0,0,0,-212,-316,-534,-363,
+ 0,0,0,0,-443,0,-522,0,-68,0,
+ 0,0,-379,0,0,0,0,-287,-380,0,
+ 0,0,0,0,0,0,0,0,0,-210,
+ -214,0,0,0,0,-385,-20,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-74,0,0,0,0,0,
+ 0,0,0,-244,-258,-260,0,0,0,0,
+ 0,0,-332,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-605,
+ 0,-606,0,0,0,0,-194,0,0,0,
+ -387,-358,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-389,-390,-391,0,0,-246,
+ 0,0,0,0,0,0,0,0,0,0,
+ -118,0,0,0,0,0,-392,0,-394,-473,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-235,0,0,0,0,0,-64,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-474,-408,0,0,0,0,0,-415,
+ -416,0,0,0,0,-262,0,0,-28,0,
+ 0,-611,-371,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-417,
+ -270,0,0,0,0,0,0,0,0,-418,
+ -432,0,-307,0,0,0,0,0,0,0,
+ -324,0,-433,0,0,0,0,0,0,0,
+ 0,0,0,-591,0,0,0,0,0,-440,
+ -441,0,0,0,0,0,-445,0,0,0,
+ -271,0,0,0,0,-446,0,0,-345,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-447,-448,0,-372,0,0,0,
+ 0,0,0,0,0,0,-85,0,0,0,
+ -449,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-343,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-535,-450,-166,-451,0,0,
+ 0,0,0,-452,0,0,0,0,-344,0,
+ 0,0,-382,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-81,0,0,0,0,-56,0,0,0,
+ 0,0,0,0,-272,0,-527,0,0,0,
+ -453,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-436,-454,-273,0,0,-648,0,
+ 0,0,0,-373,-404,0,0,0,0,0,
+ 0,-636,0,0,0,0,-276,-455,-412,0,
+ 0,0,0,-456,0,-457,0,0,-111,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-458,0,0,0,0,-156,
+ 0,0,0,0,0,0,-459,-598,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -289,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-460,-461,-424,-274,0,0,
+ 0,0,0,0,0,0,-462,0,0,0,
+ 0,-290,0,0,0,0,-34,0,0,0,
+ -430,0,-463,0,0,0,0,0,0,0,
+ -296,-599,0,0,0,0,0,0,0,0,
+ 0,-498,0,0,0,0,0,-523,0,0,
+ 0,-464,0,0,0,0,0,0,0,0,
+ 0,0,0,-465,-439,-466,0,-175,0,-300,
+ 0,0,-476,0,-27,-478,-311,-364,0,0,
+ 0,-488,0,0,0,0,0,0,0,0,
+ 0,-490,-608,0,0,0,0,0,0,0,
+ 0,0,-47,0,0,0,-396,0,0,0,
+ 0,-340,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-384,-491,0,0,0,
+ 0,0,0,-496,0,0,0,-366,0,-500,
+ 0,0,0,0,-501,0,0,-368,0,0,
+ 0,-514,0,0,0,0,-369,0,0,0,
+ 0,-402,-521,-592,0,0,0,0,0,0,
+ -515,0,0,0,0,-414,0,0,0,0,
+ 0,0,0,0,0,-516,0,0,0,0,
+ 0,-471,-472,0,-135,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-499,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-558,0,0,-502,0,-562,-566,-544,
+ -506,0,0,-233,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-545,0,0,0,
+ 0,0,0,-483,0,0,-507,-559,0,0,
+ -341,0,0,0,-520,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-565,-568,-578,-579,0,0,0,
+ 0,0,-581,0,-584,0,0,-254,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -629,0,0,0,-342,0,0,0,-537,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-553,-393,-595,
+ -604,0,0,0,0,0,0,0,-228,0,
+ 0,0,-556,0,0,0,0,0,0,0,
+ 0,-583,0,0,0,0,0,0,-597,0,
+ 0,0,0,0,0,-614,-616,0,-560,-563,
+ 0,-621,0,-633,0,0,0,0,-582,0,
+ 0,0,-646,0,0,0,0,0,-571,0,
+ 0,-589,0,-489,-206,-572,0,0,0,-573,
+ 0,0,-574,0,0,0,-603,0,0,0,
+ 0,0,-623,0,0,0,0,0,0,0,
+ 0,0,0,-302,-609,-95,0,0,-610,0,
+ 0,0,0,-624,0,0,-628,-630,0,-625,
+ 0,0,0,0,0,0,0,-639,0,0,
+ 0,0,0,0,0,0,0,0,-492,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -631,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-632,0,
+ 0,0,0,0,0,-641,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-638,0,0,0,-538,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -649,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-543,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-602,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-176,-550,0,0,0,
+ 0,0,0,0,0,0,-207,0,0,0,
+ 0,0,0,0,0,-66,0,0,0,0,
+ -626,0,-44,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-183,0,0,0,0,-552,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-594,0,0,0,0,-554,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-596,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-182,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-600,-503,0,0,0,0,0,-61,0,
+ 0,0,0,0,0,0,-528,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-65,0,0,0,0,
+ 0,0,0,0,0,0,-637,0,0,0,
+ 0,0,-437,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-647,0,0,0,0,-313,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -310,0,0,0,0,0,0,0,0,-259,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-333,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-334,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -335,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-336,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-337,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-541,0,0,0,0,-29,0,0,0,
+ -434,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-338,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-644,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-96,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-1,0,0,0,0,
+ -339,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-588,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-37,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-31,0,0,0,
+ 0,0,0,0,0,0,0,0,-35,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-251,0,
+ 0,0,0,0,0,0,0,-110,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-184,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-138,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-202,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-495,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-7,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-142,
+ 0,0,0,0,-157,0,0,0,0,0,
+ 0,0,0,0,0,-479,0,0,0,0,
+ -542,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-327,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-328,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-208,0,
+ 0,0,0,0,-86,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-185,0,0,0,0,0,
+ -201,0,-209,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-401,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-321,0,0,0,0,0,0,
+ -242,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-329,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-330,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-331,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-470,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-89,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-90,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-91,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-92,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-93,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-94,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-97,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -178,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-325,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-326,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-383,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-410,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-11,0,0,0,0,
+ -87,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-154,0,0,0,0,0,0,-14,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-67,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-50,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-403,0,-51,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-140,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-53,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-275,0,0,-129,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-112,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-130,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -256,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-587,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-149,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-285,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-438,-526,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-255,0,0,0,
+ 0,0,0,0,0,-243,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-198,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-167,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -159,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-168,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-229,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-169,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-170,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-409,-435,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-509,0,0,0,0,0,-570,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-196,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-162,0,0,0,0,0,0,0,0,
+ 0,0,-211,0,0,0,-284,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-298,0,0,0,-304,0,0,0,
+ -548,0,0,0,0,0,0,0,0,0,
+ -557,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-493,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-645,0,-494,0,0,0,
+ 0,0,0,0,-590,0,0,0,0,-618,
+ 0,0,0,0,0,0,-619,0,0,0,
+ 0,0,0,0,0,0,0,-187,0,0,
+ 0,-257,0,0,-248,0,0,0,0,-406,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -428,0,0,0,-421,0,0,0,0,0,
+ 0,-186,0,0,0,0,-411,0,0,0,
+ 0,0,0,0,0,0,0,0,-497,0,
+ 0,0,0,0,0,0,0,-529,0,0,
+ 0,0,0,0,0,0,0,0,0,-530,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-651,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0
+ };
+ };
+ public final static short baseCheck[] = BaseCheck.baseCheck;
+ public final int baseCheck(int index) { return baseCheck[index]; }
+ public final static short rhs[] = baseCheck;
+ public final int rhs(int index) { return rhs[index]; };
+
+ public interface BaseAction {
+ public final static char baseAction[] = {
+ 198,4,143,72,72,32,32,96,96,49,
+ 49,48,48,198,1,1,16,16,16,16,
+ 16,16,16,17,17,17,15,11,11,6,
+ 6,6,6,6,6,2,84,84,5,5,
+ 12,12,63,63,162,162,163,73,73,54,
+ 18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,
+ 164,164,164,144,144,19,19,19,19,19,
+ 19,19,19,19,19,19,19,19,20,20,
+ 199,199,200,200,201,167,167,168,168,165,
+ 165,169,166,166,21,21,22,22,27,27,
+ 27,29,29,29,29,30,30,30,31,31,
+ 31,33,33,33,33,33,34,34,34,35,
+ 35,36,36,37,37,38,38,40,40,41,
+ 41,46,46,45,45,45,45,45,45,45,
+ 45,45,45,45,45,45,47,42,145,145,
+ 105,105,202,202,98,232,232,85,85,85,
+ 85,85,85,85,85,85,86,86,86,83,
+ 83,64,64,203,203,87,87,87,119,119,
+ 204,204,88,88,88,205,205,89,89,89,
+ 89,89,90,90,92,92,92,92,92,92,
+ 92,92,55,55,55,55,55,120,120,118,
+ 118,56,206,28,28,28,28,28,53,53,
+ 76,76,76,76,76,106,106,121,121,121,
+ 121,121,122,122,122,123,123,123,124,124,
+ 124,125,125,125,77,77,77,77,77,78,
+ 78,78,13,14,14,14,14,14,14,14,
+ 14,14,14,14,97,110,110,110,110,110,
+ 110,108,108,108,171,172,172,109,109,207,
+ 174,174,173,173,146,146,126,81,81,147,
+ 58,52,175,175,59,94,94,148,148,170,
+ 170,127,128,128,129,75,75,176,176,70,
+ 70,70,66,66,65,71,71,95,95,74,
+ 74,74,69,99,99,113,112,112,60,60,
+ 67,67,68,68,50,114,114,114,100,100,
+ 100,101,101,102,102,102,103,103,130,130,
+ 130,132,132,131,131,233,233,104,104,209,
+ 209,209,209,209,150,51,51,178,208,208,
+ 151,151,152,152,152,153,180,210,210,44,
+ 44,107,115,115,115,115,212,134,133,133,
+ 111,111,111,181,182,182,182,182,182,182,
+ 182,182,182,182,182,214,214,211,211,213,
+ 213,136,137,137,137,137,138,215,139,135,
+ 135,216,216,183,183,183,183,117,117,117,
+ 217,217,8,8,9,218,218,219,184,177,
+ 177,185,185,186,187,187,7,7,10,220,
+ 220,220,220,220,220,220,220,220,220,220,
+ 220,220,220,220,220,220,220,220,220,220,
+ 220,220,220,220,220,220,220,220,220,220,
+ 220,220,220,220,220,220,220,220,220,220,
+ 220,79,82,82,188,188,155,155,156,156,
+ 156,156,156,156,3,157,157,154,154,140,
+ 140,93,80,91,179,179,141,141,221,221,
+ 221,158,158,149,149,222,222,23,23,23,
+ 43,43,24,24,223,223,189,189,189,190,
+ 190,224,224,191,191,25,25,225,225,192,
+ 192,192,192,26,61,226,226,227,227,193,
+ 193,193,159,159,159,19,19,19,19,33,
+ 33,41,17,86,228,142,142,142,116,116,
+ 28,57,76,129,129,129,136,136,136,207,
+ 212,134,69,75,171,147,13,13,60,93,
+ 93,93,14,14,14,68,68,62,39,160,
+ 161,161,161,161,161,161,161,161,161,195,
+ 195,230,230,229,229,194,194,60,55,1,
+ 1,234,95,95,95,95,95,95,95,196,
+ 197,197,1786,35,2788,2778,1415,6827,27,30,
+ 31,1285,1160,26,28,2769,262,25,23,50,
+ 1874,106,76,77,108,592,537,538,539,2319,
+ 2717,2373,2347,2442,1651,2420,2458,2448,2531,2467,
+ 2547,2729,2582,143,1503,3698,274,158,144,2710,
+ 35,1287,32,4083,7005,27,30,31,1285,1160,
+ 59,28,232,2433,35,3776,32,4589,3803,27,
+ 30,31,1285,1160,340,28,821,2046,235,230,
+ 231,2427,2138,2119,34,1506,3940,537,538,539,
+ 205,2427,35,1136,390,4336,2524,1412,296,275,
+ 2171,35,455,131,650,6847,4287,859,5182,242,
+ 245,248,251,3369,2743,3792,3163,1169,585,540,
+ 537,538,539,3187,855,3775,4987,5197,320,1872,
+ 322,2061,2811,315,1726,49,6398,182,703,1820,
+ 1499,2171,35,280,5209,46,3572,2750,1860,35,
+ 2788,2778,68,6827,27,30,31,1285,1160,26,
+ 28,2769,262,25,23,50,1874,106,76,77,
+ 108,592,537,538,539,2319,414,2373,2347,2442,
+ 2785,2420,2458,2448,2531,2467,2547,1927,2582,143,
+ 6458,619,274,158,144,4080,826,1982,3116,5391,
+ 421,3773,2325,35,455,1539,2245,6847,232,88,
+ 35,1287,32,4589,3803,27,30,31,1285,1160,
+ 340,28,3577,4996,235,230,231,543,592,537,
+ 538,539,540,537,538,539,2427,35,6952,6421,
+ 1655,1342,4194,1680,2205,275,540,537,538,539,
+ 2427,3742,3339,3267,5328,242,245,248,251,3369,
+ 449,290,205,1169,585,232,3062,6152,423,3187,
+ 855,3775,4987,5197,320,1872,322,1909,568,315,
+ 1726,244,230,231,4636,448,2961,2980,1522,3169,
+ 5209,617,330,2750,3489,35,1287,32,3067,5082,
+ 27,30,31,1285,1160,26,28,1819,262,25,
+ 23,50,1874,106,76,77,108,2427,35,1136,
+ 390,2319,344,2373,2347,2442,509,2420,2458,2448,
+ 2531,2467,2547,3768,2582,143,307,311,837,519,
+ 144,2427,35,283,4316,1540,35,1287,32,2921,
+ 799,41,30,31,1285,1160,570,892,2427,35,
+ 3881,454,520,3489,35,1287,32,3067,5082,27,
+ 30,31,1285,1160,26,28,1819,262,25,23,
+ 50,1874,106,76,77,108,3003,452,2961,2980,
+ 2319,344,2373,2347,2442,313,2420,2458,2448,2531,
+ 2467,2547,3768,2582,143,2171,35,280,519,144,
+ 6960,1096,4763,4316,3555,35,1287,32,323,6843,
+ 27,30,31,1285,1160,57,28,2427,35,2119,
+ 277,520,802,3116,515,4695,35,1287,32,805,
+ 6843,27,30,31,1285,1160,56,28,2724,2997,
+ 1920,2731,912,1,3489,35,1287,32,3067,5082,
+ 27,30,31,1285,1160,26,28,1819,262,25,
+ 23,50,1874,106,76,77,108,2427,35,1136,
+ 390,2319,344,2373,2347,2442,1514,2420,2458,2448,
+ 2531,2467,2547,3768,2582,143,1631,3142,1586,519,
+ 144,3838,5541,515,4316,3866,35,1287,32,2921,
+ 1782,2176,30,31,1285,1160,3838,3049,2160,2529,
+ 2731,433,520,4043,35,1287,32,3067,5082,27,
+ 30,31,1285,1160,26,28,1819,262,25,23,
+ 50,1874,106,76,77,108,2427,35,1136,390,
+ 2319,344,2373,2347,2442,1008,2420,2458,2448,2531,
+ 2467,2547,3768,2582,143,3792,3163,2032,519,144,
+ 2427,35,296,4316,3833,35,1287,32,61,7005,
+ 27,30,31,1285,1160,26,28,524,2901,513,
+ 436,520,3311,3320,515,2710,35,1287,32,60,
+ 7005,27,30,31,1285,1160,58,28,3071,219,
+ 3168,2731,4124,35,1287,32,344,5082,27,30,
+ 31,1285,1160,26,28,1819,262,25,23,50,
+ 1874,106,76,77,108,2394,392,2445,4219,2319,
+ 429,2373,2347,2442,4404,2420,2458,2448,2531,2467,
+ 2547,393,2582,143,2013,429,205,380,144,3838,
+ 3181,6621,806,516,3639,35,1287,32,2633,5082,
+ 27,30,31,1285,1160,26,28,1819,262,25,
+ 23,50,1874,106,76,77,108,2427,35,2119,
+ 279,2319,3362,2373,2347,2442,2082,2420,2458,2448,
+ 2531,2467,2547,221,2582,143,613,544,2629,380,
+ 144,290,3181,3726,35,1287,32,445,5082,27,
+ 30,31,1285,1160,26,28,1819,262,25,23,
+ 50,1874,106,76,77,108,324,2160,2365,3169,
+ 2319,3214,2373,2347,2442,533,2420,2458,2448,2531,
+ 2467,2547,651,2582,143,3435,35,398,380,144,
+ 2091,3181,132,387,381,2064,3962,35,1287,32,
+ 1980,5082,27,30,31,1285,1160,26,28,1819,
+ 262,25,23,50,1874,106,76,77,108,383,
+ 3435,35,398,2319,395,2373,2347,2442,429,2420,
+ 2458,2448,2531,2467,2547,2560,2582,143,898,4201,
+ 88,553,144,102,3871,388,381,2064,4529,35,
+ 1287,32,2858,5082,27,30,31,1285,1160,26,
+ 28,1819,262,25,23,50,1874,588,76,77,
+ 3398,35,1287,32,694,5082,27,30,31,1285,
+ 1160,26,28,1819,262,25,23,50,1874,106,
+ 76,77,108,905,378,381,2064,2319,2529,2373,
+ 2347,2442,3734,2420,2458,2448,2531,2467,2547,2635,
+ 2601,164,2427,3163,4397,35,1287,32,3430,5082,
+ 27,30,31,1285,1160,26,28,1819,262,25,
+ 23,50,1874,106,76,77,108,2427,35,2119,
+ 282,2319,328,2373,2347,2442,691,2420,2458,2448,
+ 2531,2467,2547,3431,2582,143,545,2629,205,158,
+ 144,440,3855,6812,4793,35,1287,32,2254,5082,
+ 27,30,31,1285,1160,26,28,1819,262,25,
+ 23,50,1874,106,76,77,85,551,3881,35,
+ 1287,32,2912,5082,27,30,31,1285,1160,26,
+ 28,1819,262,25,23,50,1874,106,76,77,
+ 108,2427,35,2119,3862,2319,2727,2373,2347,2442,
+ 3903,2420,2458,2448,2531,2467,2547,227,2582,143,
+ 2709,726,3581,2974,144,3573,35,1287,32,2292,
+ 5082,27,30,31,1285,1160,26,28,1819,262,
+ 25,23,50,1874,106,76,77,108,291,2750,
+ 2529,3874,2319,4297,2373,2347,2442,1534,2420,2458,
+ 2448,2531,2467,2547,2771,2582,143,4897,35,278,
+ 3084,144,4397,35,1287,32,3197,5082,27,30,
+ 31,1285,1160,26,28,1819,262,25,23,50,
+ 1874,106,76,77,108,160,2036,642,2874,2319,
+ 3498,2373,2347,2442,1534,2420,2458,2448,2531,2467,
+ 2547,3003,2582,143,3610,35,278,374,144,4397,
+ 35,1287,32,3214,5082,27,30,31,1285,1160,
+ 26,28,1819,262,25,23,50,1874,106,76,
+ 77,108,156,499,2529,2157,2319,3764,2373,2347,
+ 2442,2392,2420,2458,2448,2531,2467,2547,3731,2582,
+ 143,525,3606,525,374,144,4397,35,1287,32,
+ 524,5082,27,30,31,1285,1160,26,28,1819,
+ 262,25,23,50,1874,106,76,77,108,997,
+ 2274,325,3180,2319,556,2373,2347,2442,1337,2420,
+ 2458,2448,2531,2467,2547,4892,2582,143,1650,3606,
+ 1008,374,144,541,537,538,539,500,3962,35,
+ 1287,32,373,5082,27,30,31,1285,1160,26,
+ 28,1819,262,25,23,50,1874,106,76,77,
+ 108,555,3953,3752,3919,2319,4297,2373,2347,2442,
+ 1534,2420,2458,2448,2531,2467,2547,2292,2582,143,
+ 3610,35,281,553,144,3800,35,1287,32,372,
+ 5082,27,30,31,1285,1160,26,28,1819,262,
+ 25,23,50,1874,106,76,77,108,160,3116,
+ 2529,2157,2319,131,2373,2347,2442,1534,2420,2458,
+ 2448,2531,2467,2547,2908,2582,143,2427,35,296,
+ 142,144,4397,35,1287,32,370,5082,27,30,
+ 31,1285,1160,26,28,1819,262,25,23,50,
+ 1874,106,76,77,108,156,2223,326,3366,2319,
+ 2651,2373,2347,2442,1557,2420,2458,2448,2531,2467,
+ 2547,3770,2582,143,557,2427,3850,155,144,4397,
+ 35,1287,32,462,5082,27,30,31,1285,1160,
+ 26,28,1819,262,25,23,50,1874,106,76,
+ 77,108,3914,35,2119,277,2319,1839,2373,2347,
+ 2442,2246,2420,2458,2448,2531,2467,2547,524,2582,
+ 143,558,131,131,154,144,6123,944,1671,552,
+ 4397,35,1287,32,2309,5082,27,30,31,1285,
+ 1160,26,28,1819,262,25,23,50,1874,106,
+ 76,77,108,3155,2529,2529,1652,2319,4363,2373,
+ 2347,2442,1534,2420,2458,2448,2531,2467,2547,205,
+ 2582,143,2013,3191,6948,153,144,4397,35,1287,
+ 32,219,5082,27,30,31,1285,1160,26,28,
+ 1819,262,25,23,50,1874,106,76,77,108,
+ 156,3215,3411,691,2319,162,2373,2347,2442,3360,
+ 2420,2458,2448,2531,2467,2547,131,2582,143,527,
+ 2177,304,152,144,4397,35,1287,32,1520,5082,
+ 27,30,31,1285,1160,26,28,1819,262,25,
+ 23,50,1874,106,76,77,108,2427,4006,2119,
+ 74,2319,4297,2373,2347,2442,1534,2420,2458,2448,
+ 2531,2467,2547,205,2582,143,2013,821,6823,151,
+ 144,4397,35,1287,32,1003,5082,27,30,31,
+ 1285,1160,26,28,1819,262,25,23,50,1874,
+ 106,76,77,108,160,2466,354,2157,2319,131,
+ 2373,2347,2442,1534,2420,2458,2448,2531,2467,2547,
+ 131,2582,143,2013,1013,301,150,144,4397,35,
+ 1287,32,1004,5082,27,30,31,1285,1160,26,
+ 28,1819,262,25,23,50,1874,106,76,77,
+ 108,156,3361,3103,2157,2319,4119,2373,2347,2442,
+ 1653,2420,2458,2448,2531,2467,2547,3985,2582,143,
+ 4254,382,564,149,144,4397,35,1287,32,461,
+ 5082,27,30,31,1285,1160,26,28,1819,262,
+ 25,23,50,1874,106,76,77,108,3914,35,
+ 2119,4007,2319,131,2373,2347,2442,1534,2420,2458,
+ 2448,2531,2467,2547,131,2582,143,4028,1104,2302,
+ 148,144,4397,35,1287,32,327,5082,27,30,
+ 31,1285,1160,26,28,1819,262,25,23,50,
+ 1874,106,76,77,108,156,4006,2131,391,2319,
+ 4126,2373,2347,2442,4154,2420,2458,2448,2531,2467,
+ 2547,449,2582,143,3361,3734,406,147,144,4397,
+ 35,1287,32,2275,5082,27,30,31,1285,1160,
+ 26,28,1819,262,25,23,50,1874,106,76,
+ 77,108,2427,35,2119,4061,2319,131,2373,2347,
+ 2442,1534,2420,2458,2448,2531,2467,2547,3003,2582,
+ 143,3435,35,398,146,144,4397,35,1287,32,
+ 4005,5082,27,30,31,1285,1160,26,28,1819,
+ 262,25,23,50,1874,106,76,77,108,156,
+ 563,355,210,2319,4130,2373,2347,2442,304,2420,
+ 2458,2448,2531,2467,2547,2800,2582,143,300,6762,
+ 305,145,144,4793,35,1287,32,2151,5082,27,
+ 30,31,1285,1160,26,28,1819,262,25,23,
+ 50,1874,106,76,77,108,3678,35,1136,390,
+ 2319,4297,2373,2347,2442,1534,2420,2458,2448,2531,
+ 2467,2547,2290,2601,164,4397,35,1287,32,4602,
+ 5082,27,30,31,1285,1160,26,28,1819,262,
+ 25,23,50,1874,106,76,77,108,403,4430,
+ 274,1195,2319,160,2373,2347,2442,2859,2420,2458,
+ 2448,2531,2467,2547,4113,2582,143,1294,3003,3003,
+ 159,144,541,537,538,539,2157,4397,35,1287,
+ 32,3837,5082,27,30,31,1285,1160,26,28,
+ 1819,262,25,23,50,1874,106,76,77,108,
+ 589,582,2994,3896,2319,131,2373,2347,2442,1534,
+ 2420,2458,2448,2531,2467,2547,4155,2582,143,3361,
+ 3361,399,3149,144,4397,35,1287,32,2276,5082,
+ 27,30,31,1285,1160,26,28,1819,262,25,
+ 23,50,1874,106,76,77,108,156,6063,1102,
+ 72,2319,4133,2373,2347,2442,1118,2420,2458,2448,
+ 2531,2467,2547,131,2582,143,70,4125,3405,3535,
+ 144,2157,4397,35,1287,32,93,5082,27,30,
+ 31,1285,1160,26,28,1819,262,25,23,50,
+ 1874,106,76,77,108,89,3361,2529,102,2319,
+ 131,2373,2347,2442,1534,2420,2458,2448,2531,2467,
+ 2547,3792,2582,143,2013,298,384,581,144,4397,
+ 35,1287,32,912,5082,27,30,31,1285,1160,
+ 26,28,1819,262,25,23,50,1874,106,76,
+ 77,108,156,51,1108,691,2319,3793,2373,2347,
+ 2442,2718,2420,2458,2448,2531,2467,2547,1201,2582,
+ 143,526,3838,179,140,144,4463,35,1287,32,
+ 2837,5082,27,30,31,1285,1160,26,28,1819,
+ 262,25,23,50,1874,106,76,77,108,1300,
+ 131,3361,297,2319,4327,2373,2347,2442,5351,2420,
+ 2458,2448,2531,2467,2547,131,2582,143,5334,5499,
+ 2013,189,144,4793,35,1287,32,1316,5082,27,
+ 30,31,1285,1160,26,28,1819,262,25,23,
+ 50,1874,106,76,77,108,2427,35,1136,390,
+ 2319,131,2373,2347,2442,1534,2420,2458,2448,2531,
+ 2467,2547,1405,2601,164,4793,35,1287,32,198,
+ 5082,27,30,31,1285,1160,26,28,1819,262,
+ 25,23,50,1874,106,76,77,108,5208,3361,
+ 274,2013,2319,3147,2373,2347,2442,287,2420,2458,
+ 2448,2531,2467,2547,131,2601,164,394,5543,3003,
+ 2463,429,2427,35,1136,390,2812,4793,35,1287,
+ 32,425,5082,27,30,31,1285,1160,26,28,
+ 1819,262,25,23,50,1874,106,76,77,108,
+ 197,24,1503,276,2319,4297,2373,2347,2442,1534,
+ 2420,2458,2448,2531,2467,2547,274,2601,164,4793,
+ 35,1287,32,295,5082,27,30,31,1285,1160,
+ 26,28,1819,262,25,23,50,1874,106,76,
+ 77,108,3464,3684,1259,288,2319,160,2373,2347,
+ 2442,3016,2420,2458,2448,2531,2467,2547,1498,2601,
+ 164,4303,650,6925,2157,541,537,538,539,341,
+ 1492,4793,35,1287,32,424,5082,27,30,31,
+ 1285,1160,26,28,1819,262,25,23,50,1874,
+ 106,76,77,108,2427,35,1136,390,2319,524,
+ 2373,2347,2442,3157,2420,2458,2448,2531,2467,2547,
+ 4159,2601,164,4925,35,1287,32,427,5082,27,
+ 30,31,1285,1160,26,28,1819,262,25,23,
+ 50,1874,106,76,77,108,644,2011,435,2906,
+ 2319,2389,2373,2347,2442,3116,2420,2458,2448,2531,
+ 2467,2547,4030,2601,164,329,336,4991,35,1136,
+ 390,3199,3717,1299,540,537,538,539,131,584,
+ 237,262,1534,3849,2157,541,537,538,539,4158,
+ 592,537,538,539,2952,3270,35,1287,32,4589,
+ 3803,27,30,31,1285,1160,340,28,2557,1342,
+ 3105,274,541,537,538,539,3866,35,1287,32,
+ 3886,4031,40,30,31,1285,1160,232,2116,35,
+ 1287,32,4589,6379,27,30,31,1285,1160,340,
+ 28,2624,131,235,230,231,765,3003,3496,2157,
+ 75,540,537,538,539,2013,643,3684,357,1506,
+ 320,1872,322,1699,275,315,1726,533,1393,3893,
+ 1036,3639,3311,5182,242,245,248,251,3369,379,
+ 131,131,1169,585,5614,2600,3875,2014,3187,855,
+ 3775,4987,5197,320,1872,322,344,2038,315,1726,
+ 239,262,333,4636,300,3435,35,2253,5375,5209,
+ 592,537,538,539,3111,131,131,3157,2455,1151,
+ 1166,645,1578,4793,35,1287,32,5238,5082,27,
+ 30,31,1285,1160,26,28,1819,262,25,23,
+ 50,1874,106,76,77,108,3848,232,1294,49,
+ 2319,4005,2373,2347,3536,307,311,837,1099,1458,
+ 4365,826,4297,240,230,231,1534,2529,886,335,
+ 336,3999,4793,35,1287,32,2021,5082,27,30,
+ 31,1285,1160,26,28,1819,262,25,23,50,
+ 1874,106,76,77,108,233,1668,2153,1304,2319,
+ 3721,2373,2347,2442,160,2420,2458,2448,2531,2467,
+ 3766,5103,35,1136,390,691,3717,2649,2205,2703,
+ 3866,35,1287,32,237,262,4039,30,31,1285,
+ 1160,377,560,5149,592,537,538,539,3660,88,
+ 35,1287,32,4589,3803,27,30,31,1285,1160,
+ 340,28,567,5214,5412,274,541,537,538,539,
+ 2891,3469,541,537,538,539,131,4167,3629,4231,
+ 1215,232,2290,2248,35,3776,32,4589,6379,27,
+ 30,31,1285,1160,340,28,1934,235,230,231,
+ 3840,3003,540,537,538,539,540,537,538,539,
+ 3998,2460,404,131,320,1872,322,2953,275,315,
+ 1726,131,2529,3475,5370,1262,713,5328,242,245,
+ 248,251,3369,578,205,2509,1169,585,4005,6930,
+ 3874,3889,3187,855,3775,4987,5197,3172,320,1872,
+ 322,3003,2038,315,1726,375,3266,333,703,4793,
+ 35,1287,32,5209,5082,27,30,31,1285,1160,
+ 26,28,1819,262,25,23,50,1874,106,76,
+ 77,108,5238,576,3283,4007,2319,131,2373,2347,
+ 2442,1309,2420,2458,2448,2531,3723,4595,35,1287,
+ 32,4169,5082,27,30,31,1285,1160,26,28,
+ 1819,262,25,23,50,1874,577,76,77,5386,
+ 421,3773,4793,35,1287,32,71,5082,27,30,
+ 31,1285,1160,26,28,1819,262,25,23,50,
+ 1874,106,76,77,108,2157,216,4568,408,2319,
+ 1306,2373,2347,2442,516,2420,2458,2448,3696,4793,
+ 35,1287,32,4768,5082,27,30,31,1285,1160,
+ 26,28,1819,262,25,23,50,1874,106,76,
+ 77,108,2427,35,1136,390,2319,2010,2373,2347,
+ 2442,3205,2420,2458,3707,3003,3353,1984,35,1287,
+ 32,606,6379,27,30,31,1285,1160,340,28,
+ 540,537,538,539,2310,612,3003,646,3311,524,
+ 540,537,538,539,131,131,49,87,2742,4583,
+ 1820,741,2427,35,1136,390,1458,4826,714,131,
+ 4069,6232,4717,3083,4031,1744,4084,741,6040,2612,
+ 35,1287,32,4589,3803,27,30,31,1285,1160,
+ 340,28,320,1872,322,498,2038,316,1726,352,
+ 4961,334,541,537,538,539,434,5151,3522,35,
+ 1287,32,4589,3803,27,30,31,1285,1160,340,
+ 28,3003,353,540,537,538,539,347,2346,2111,
+ 350,540,537,538,539,5153,2409,131,431,42,
+ 2738,1659,652,4790,320,1872,322,1858,362,315,
+ 1726,3339,3003,69,5370,44,2738,2142,35,1136,
+ 390,131,353,4050,1774,3748,228,345,2346,2111,
+ 350,3003,131,320,1872,322,1534,753,315,1726,
+ 156,3872,2013,4636,68,2694,691,180,3888,203,
+ 215,5357,4004,202,212,213,214,216,356,591,
+ 638,49,169,53,4033,131,1670,533,4962,4597,
+ 3003,1458,6335,4159,156,1672,130,3003,3003,4164,
+ 1455,168,332,183,167,170,171,172,173,174,
+ 2816,201,4160,2157,3215,307,311,837,592,537,
+ 538,539,52,2142,35,1136,390,5046,3157,3721,
+ 573,1534,4793,35,1287,32,2021,5082,27,30,
+ 31,1285,1160,26,28,1819,262,25,23,50,
+ 1874,106,76,77,108,232,134,4032,4143,2319,
+ 652,2373,2347,2442,415,2420,3655,49,3003,156,
+ 5154,247,230,231,3920,131,200,1458,3003,1887,
+ 4082,336,4190,353,228,97,764,3003,345,2346,
+ 2111,350,3003,131,205,753,2882,4109,156,6937,
+ 542,4191,616,2694,691,180,3003,203,215,5357,
+ 562,202,212,213,214,216,1999,591,638,561,
+ 169,3836,3003,3570,351,88,35,1287,32,4589,
+ 3803,27,30,31,1285,1160,340,28,90,168,
+ 2013,184,167,170,171,172,173,174,540,537,
+ 538,539,181,131,574,547,3003,3668,131,131,
+ 2448,3003,4300,3260,4198,35,1287,32,3339,5082,
+ 27,30,31,1285,1160,26,28,1819,262,25,
+ 23,50,1874,106,76,77,81,4368,3938,199,
+ 320,1872,322,4004,3087,315,1726,3003,4337,6851,
+ 4636,4793,35,1287,32,3003,5082,27,30,31,
+ 1285,1160,26,28,1819,262,25,23,50,1874,
+ 106,76,77,108,5429,4087,4308,2894,2319,3939,
+ 2373,2347,2442,4562,3667,3014,647,453,3759,35,
+ 1287,32,3373,3803,27,30,31,1285,1160,340,
+ 28,2157,308,311,837,4793,35,1287,32,2013,
+ 5082,27,30,31,1285,1160,26,28,1819,262,
+ 25,23,50,1874,106,76,77,108,3003,530,
+ 5164,4573,2319,652,2373,2347,2442,405,3695,1740,
+ 35,1287,32,3003,3803,27,30,31,1285,1160,
+ 340,28,131,317,1312,322,1237,228,408,2013,
+ 4452,2968,541,537,538,539,2841,3723,753,3003,
+ 3003,156,2015,98,4668,4517,2694,691,180,3684,
+ 203,215,5357,5206,202,212,213,214,216,3003,
+ 591,638,3087,169,629,5475,3003,6851,652,3311,
+ 3003,4582,4137,3003,320,1872,322,131,2068,603,
+ 1726,4341,168,2013,3844,167,170,171,172,173,
+ 174,67,228,4717,2529,3003,2905,431,66,3003,
+ 652,8155,65,753,3003,64,156,3003,3003,3157,
+ 131,2694,691,180,3009,203,215,5357,2013,202,
+ 212,213,214,216,344,591,638,55,169,728,
+ 3967,54,222,652,1647,3768,4178,8155,156,101,
+ 2065,3003,691,2879,691,8155,4316,168,8155,178,
+ 167,170,171,172,173,174,8155,228,377,5497,
+ 2549,331,336,5067,2548,8155,131,193,753,361,
+ 3609,156,8155,2677,8155,8155,2694,691,180,2968,
+ 203,215,5357,8155,202,212,213,214,216,8155,
+ 591,638,8155,169,3003,3777,3073,3110,3202,35,
+ 3776,32,4589,3803,27,30,31,1285,1160,340,
+ 28,3878,168,8155,176,167,170,171,172,173,
+ 174,540,537,538,539,8155,4712,3296,35,3776,
+ 32,4589,3803,27,30,31,1285,1160,340,28,
+ 3888,4287,8155,531,8155,432,8155,8155,8155,8155,
+ 3940,537,538,539,8155,8155,5495,827,8155,8155,
+ 6335,652,8155,320,1872,322,8155,3775,315,1726,
+ 4287,3311,3697,703,8155,8155,3308,35,1136,390,
+ 8155,3888,8155,5205,8155,228,8155,3311,8155,8155,
+ 8155,8155,320,1872,322,4717,753,315,1726,156,
+ 3157,8155,703,8155,2694,691,180,8155,203,215,
+ 5357,344,202,212,213,214,216,8155,591,638,
+ 49,169,131,8155,8155,8155,3067,926,8155,8155,
+ 1458,652,8155,1148,6443,421,3773,8155,8155,47,
+ 168,3157,583,167,170,171,172,173,174,1220,
+ 344,353,4170,336,8155,228,345,2346,2111,350,
+ 8155,3768,8155,5391,421,3773,753,8155,8155,156,
+ 343,507,4316,8155,2694,691,180,8155,203,215,
+ 5357,8155,202,212,213,214,216,8155,591,638,
+ 2797,169,1025,4226,336,8155,652,3705,35,1287,
+ 32,4589,3803,27,30,31,1285,1160,340,28,
+ 168,8155,177,167,170,171,172,173,174,8155,
+ 228,8155,504,506,8155,8155,8155,8155,8155,8155,
+ 8155,753,8155,8155,156,8155,8155,8155,8155,2694,
+ 691,180,8155,203,215,5357,8155,202,212,213,
+ 214,216,8155,591,638,3141,169,1124,8155,8155,
+ 8155,652,320,1872,322,8155,8155,315,1726,8155,
+ 8155,8155,4060,8155,8155,168,8155,187,167,170,
+ 171,172,173,174,8155,228,8155,8155,8155,131,
+ 8155,8155,8155,652,8155,8155,753,8155,8155,156,
+ 8155,444,8155,458,2694,691,180,8155,203,215,
+ 5357,8155,202,212,213,214,216,344,591,638,
+ 8155,169,1223,5475,8155,8155,652,3311,3768,1669,
+ 8155,156,8155,8155,6276,8155,3712,3930,8155,4316,
+ 168,3311,4102,167,170,171,172,173,174,8155,
+ 228,4717,540,537,538,539,8155,3681,8155,8155,
+ 8155,753,8155,8155,156,4717,8155,8155,8155,2694,
+ 691,180,3062,203,215,5357,3608,202,212,213,
+ 214,216,8155,591,638,8155,169,1322,8155,8155,
+ 8155,652,8155,3775,8155,8155,8155,3311,2038,540,
+ 537,538,539,333,8155,168,8155,192,167,170,
+ 171,172,173,174,8155,228,8155,8155,8155,3089,
+ 8155,4717,8155,8155,8155,8155,753,361,5313,156,
+ 8155,8155,8155,8155,2694,691,180,8155,203,215,
+ 5357,507,202,212,213,214,216,8155,591,638,
+ 8155,169,1421,4100,3073,3110,652,5480,35,1287,
+ 32,6734,3803,27,30,31,1285,1160,340,28,
+ 168,8155,186,167,170,171,172,173,174,8155,
+ 228,8155,8155,8155,8155,8155,8155,8155,8155,8155,
+ 8155,753,504,506,156,8155,8155,507,8155,2694,
+ 691,180,8155,203,215,5357,8155,202,212,213,
+ 214,216,8155,591,638,8155,169,8155,8155,8155,
+ 8155,1719,320,1872,322,4015,6276,315,1726,8155,
+ 5233,8155,3413,8155,8155,168,8155,194,167,170,
+ 171,172,173,174,540,537,538,539,505,506,
+ 8155,8155,353,541,537,538,539,345,2346,2111,
+ 350,8155,8155,8155,3062,8155,8155,4793,35,1287,
+ 32,3401,5082,27,30,31,1285,1160,26,28,
+ 1819,262,25,23,50,1874,106,76,77,108,
+ 2038,8155,8155,8155,2319,334,2373,2347,3538,4793,
+ 35,1287,32,8155,5082,27,30,31,1285,1160,
+ 26,28,1819,262,25,23,50,1874,106,76,
+ 77,108,8155,8155,8155,8155,2319,8155,2373,2347,
+ 3544,4793,35,1287,32,8155,5082,27,30,31,
+ 1285,1160,26,28,1819,262,25,23,50,1874,
+ 106,76,77,108,8155,8155,8155,8155,2319,8155,
+ 2373,2347,3591,8155,8155,8155,367,4793,35,1287,
+ 32,8155,5082,27,30,31,1285,1160,26,28,
+ 1819,262,25,23,50,1874,106,76,77,108,
+ 8155,8155,8155,8155,2319,8155,2373,2347,3605,4793,
+ 35,1287,32,8155,5082,27,30,31,1285,1160,
+ 26,28,1819,262,25,23,50,1874,106,76,
+ 77,108,5270,8155,8155,8155,2319,2379,2373,2347,
+ 3628,3364,35,1287,32,6516,3803,27,30,31,
+ 1285,1160,340,28,8155,541,537,538,539,8155,
+ 592,537,538,539,8155,8155,8155,8155,8155,4793,
+ 35,1287,32,352,5082,27,30,31,1285,1160,
+ 26,28,1819,262,25,23,50,1874,106,76,
+ 77,108,8155,8155,8155,8155,2319,232,2373,3634,
+ 8155,8155,8155,8155,8155,8155,320,1872,322,8155,
+ 8155,315,1726,250,230,231,1036,4628,35,1287,
+ 32,6734,3803,27,30,31,1285,1160,340,28,
+ 8155,8155,2304,35,1136,390,353,8155,8155,8155,
+ 8155,345,2346,2111,350,8155,2333,8155,8155,8155,
+ 3067,4793,35,1287,32,3872,5082,27,30,31,
+ 1285,1160,26,28,1819,262,25,23,50,1874,
+ 106,76,77,108,228,8155,49,8155,2319,8155,
+ 2373,3636,320,1872,322,753,1458,315,1726,8155,
+ 5223,8155,528,8155,8155,999,8155,205,215,5357,
+ 8155,204,212,213,214,216,8155,591,638,8155,
+ 8155,8155,353,541,537,538,539,345,2346,2111,
+ 350,8155,8155,8155,8155,206,208,210,684,8155,
+ 8155,529,5047,35,1136,390,8155,3717,217,207,
+ 209,8155,8155,8155,8155,238,262,2514,8155,8155,
+ 8155,8155,8155,8155,8155,592,537,538,539,2890,
+ 8155,8155,8155,8155,13,8155,6130,8155,8155,8155,
+ 592,537,538,539,8155,8155,274,8155,8155,2524,
+ 35,296,592,537,538,539,8155,8155,1607,35,
+ 1287,32,232,6379,27,30,31,1285,1160,340,
+ 28,8155,540,537,538,539,8155,232,236,230,
+ 231,540,537,538,539,8155,8155,131,8155,232,
+ 8155,3067,1820,253,230,231,8155,8155,8155,275,
+ 8155,3062,8155,8155,8155,587,230,231,8155,243,
+ 246,249,252,3369,656,344,8155,1169,586,8155,
+ 8155,8155,8155,320,1872,322,3768,2038,318,1726,
+ 8155,8155,334,1607,35,1287,32,4316,6379,27,
+ 30,31,1285,1160,340,28,8155,8155,5159,35,
+ 1136,390,8155,3717,8155,2832,540,537,538,539,
+ 8155,238,262,5046,8155,8155,8155,798,8155,8155,
+ 8155,592,537,538,539,3577,4069,3176,35,1287,
+ 32,3128,3803,27,30,31,1285,1160,340,28,
+ 4110,3933,274,8155,8155,2821,1680,8155,320,1872,
+ 322,8155,2038,316,1726,156,5237,334,232,8155,
+ 2694,5289,180,540,537,538,539,8155,540,537,
+ 538,539,8155,8155,236,230,231,8155,8155,540,
+ 537,538,539,3333,540,537,538,539,4790,8155,
+ 8155,8155,317,1312,322,275,195,8155,8155,4982,
+ 8155,8155,8155,8155,5140,243,246,249,252,3369,
+ 8155,8155,8155,1169,586,4793,35,1287,32,8155,
+ 5082,27,30,31,1285,1160,26,28,1819,262,
+ 25,23,50,1874,106,76,77,108,8155,8155,
+ 8155,8155,2319,8155,3437,4793,35,1287,32,8155,
+ 5082,27,30,31,1285,1160,26,28,1819,262,
+ 25,23,50,1874,106,76,77,108,8155,2562,
+ 8155,8155,2319,3067,3446,4661,35,1287,32,3216,
+ 5082,27,30,31,1285,1160,26,28,1819,262,
+ 25,23,50,1874,575,76,77,228,8155,8155,
+ 8155,8155,8155,1647,8155,131,8155,8155,753,3067,
+ 8155,1669,8155,2656,8155,8155,6276,3067,6861,196,
+ 205,215,5357,8155,204,212,213,214,216,8155,
+ 591,638,8155,344,540,537,538,539,8155,8155,
+ 8155,228,8155,8155,3768,8155,8155,8155,206,208,
+ 210,684,753,2826,3062,4316,8155,8155,6276,8155,
+ 8155,217,207,209,205,215,5357,8155,204,212,
+ 213,214,216,2880,591,638,540,537,538,539,
+ 2038,8155,8155,8155,2750,333,8155,2364,3067,6130,
+ 8155,2984,206,208,210,684,3062,8155,8155,8155,
+ 8155,8155,8155,8155,8155,217,207,209,8155,8155,
+ 4781,8155,228,8155,592,537,538,539,8155,8155,
+ 8155,8155,2038,753,8155,8155,8155,334,8155,8155,
+ 8155,2599,8155,6130,8155,205,215,5357,8155,204,
+ 212,213,214,216,8155,591,638,8155,353,8155,
+ 8155,232,8155,347,2346,2111,350,8155,8155,8155,
+ 8155,8155,8155,206,208,210,684,236,230,231,
+ 8155,8155,8155,8155,8155,8155,217,207,209,4793,
+ 35,1287,32,8155,5082,27,30,31,1285,1160,
+ 26,28,1819,262,25,23,50,1874,106,76,
+ 77,108,2676,8155,6130,8155,3474,4793,35,1287,
+ 32,8155,5082,27,30,31,1285,1160,26,28,
+ 1819,262,25,23,50,1874,106,76,77,108,
+ 4793,35,1287,32,3475,5082,27,30,31,1285,
+ 1160,26,28,1819,262,25,23,50,1874,106,
+ 76,77,108,4264,35,1287,32,3491,5082,27,
+ 30,31,1285,1160,26,28,1819,262,25,23,
+ 50,1874,106,76,77,81,4793,35,1287,32,
+ 8155,5082,27,30,31,1285,1160,26,28,1819,
+ 262,25,23,50,1874,106,76,77,83,4793,
+ 35,1287,32,8155,5082,27,30,31,1285,1160,
+ 26,28,1819,262,25,23,50,1874,106,76,
+ 77,82,8155,8155,8155,648,4793,35,1287,32,
+ 8155,5082,27,30,31,1285,1160,26,28,1819,
+ 262,25,23,50,1874,106,76,77,81,4793,
+ 35,1287,32,8155,5082,27,30,31,1285,1160,
+ 26,28,1819,262,25,23,50,1874,106,76,
+ 77,80,4793,35,1287,32,8155,5082,27,30,
+ 31,1285,1160,26,28,1819,262,25,23,50,
+ 1874,106,76,77,79,4793,35,1287,32,8155,
+ 5082,27,30,31,1285,1160,26,28,1819,262,
+ 25,23,50,1874,106,76,77,78,4793,2138,
+ 1287,2260,8155,5082,27,30,31,1285,1160,26,
+ 28,1819,262,25,23,50,1874,106,76,77,
+ 84,4330,35,1287,32,8155,5082,27,30,31,
+ 1285,1160,26,28,1819,262,25,23,50,1874,
+ 106,76,77,104,4793,35,1287,32,8155,5082,
+ 27,30,31,1285,1160,26,28,1819,262,25,
+ 23,50,1874,106,76,77,110,4793,35,1287,
+ 32,8155,5082,27,30,31,1285,1160,26,28,
+ 1819,262,25,23,50,1874,106,76,77,109,
+ 4793,35,1287,32,8155,5082,27,30,31,1285,
+ 1160,26,28,1819,262,25,23,50,1874,106,
+ 76,77,107,4793,35,1287,32,8155,5082,27,
+ 30,31,1285,1160,26,28,1819,262,25,23,
+ 50,1874,106,76,77,105,2468,8155,8155,8155,
+ 3067,4727,35,1287,32,8155,5082,27,30,31,
+ 1285,1160,26,28,1819,262,25,23,50,1874,
+ 86,76,77,8155,228,8155,8155,8155,8155,8155,
+ 8155,8155,8155,1934,8155,753,8155,3311,6955,8155,
+ 2198,8155,8155,8155,3067,8155,8155,205,215,5357,
+ 8155,204,212,213,214,216,8155,591,638,8155,
+ 8155,228,3390,35,1136,390,8155,8155,228,8155,
+ 8155,8155,8155,8155,8155,206,208,210,684,753,
+ 8155,8155,8155,8155,2317,409,4018,8155,521,207,
+ 209,205,215,5357,8155,204,212,213,214,216,
+ 2844,591,638,8155,3067,8155,49,8155,8155,8155,
+ 8155,8155,410,411,412,684,1458,8155,8155,206,
+ 208,210,684,8155,8155,47,8155,8155,228,8155,
+ 8155,8155,218,207,209,1155,8155,8155,8155,753,
+ 8155,8155,2638,8155,2938,8155,3311,6276,3067,8155,
+ 2636,205,215,5357,8155,204,212,213,214,216,
+ 8155,591,638,8155,8155,540,537,538,539,8155,
+ 4717,8155,228,8155,8155,8155,8155,8155,8155,206,
+ 208,210,684,753,8155,3062,2427,35,1136,390,
+ 8155,8155,611,207,209,205,215,5357,8155,204,
+ 212,213,214,216,3032,591,638,8155,3067,8155,
+ 8155,2038,8155,8155,413,415,333,8155,8155,8155,
+ 8155,8155,8155,206,208,210,684,8155,8155,8155,
+ 49,8155,228,8155,8155,8155,610,207,209,8155,
+ 1458,5583,8155,753,2252,1669,361,6547,3126,6655,
+ 6276,8155,3067,8155,8155,205,215,5357,8155,204,
+ 212,213,214,216,8155,591,638,8155,540,537,
+ 538,539,3936,3073,3110,8155,228,8155,8155,8155,
+ 8155,8155,8155,206,208,210,684,753,3062,2142,
+ 35,1136,390,8155,8155,8155,609,207,209,205,
+ 215,5357,8155,204,212,213,214,216,3220,591,
+ 638,8155,3067,8155,2038,8155,8155,8155,8155,333,
+ 8155,8155,8155,8155,8155,8155,8155,206,208,210,
+ 684,4961,8155,49,8155,8155,228,8155,8155,8155,
+ 522,207,209,1458,5583,8155,8155,753,8155,8155,
+ 8155,8155,6795,5399,540,537,538,539,8155,205,
+ 215,5357,2882,204,212,213,214,216,2147,591,
+ 638,8155,8155,8155,4790,8155,540,537,538,539,
+ 8155,8155,8155,8155,8155,8155,8155,206,208,210,
+ 684,592,537,538,539,8155,4982,8155,8155,8155,
+ 306,207,209,4859,35,1287,32,8155,5082,27,
+ 30,31,1285,1160,26,28,1819,262,25,23,
+ 50,1874,3354,76,77,3314,2638,8155,232,3067,
+ 3311,6276,8155,8155,8155,8155,8155,8155,8155,8155,
+ 8155,8155,8155,8155,235,230,231,8155,8155,540,
+ 537,538,539,228,4717,8155,8155,2066,8155,8155,
+ 8155,3311,6955,8155,753,3477,2278,8155,8155,3062,
+ 8155,8155,8155,8155,5621,8155,205,215,5357,8155,
+ 204,212,213,214,216,228,591,638,8155,592,
+ 537,538,539,8155,8155,2038,8155,8155,4996,8155,
+ 333,8155,8155,8155,206,208,210,684,2317,409,
+ 4018,8155,2905,8155,8155,8155,652,501,207,209,
+ 8155,540,537,538,539,3587,232,8155,629,619,
+ 361,3390,35,1136,390,8155,410,411,412,684,
+ 344,3062,235,230,231,2905,8155,8155,8155,652,
+ 8155,3768,8155,8155,156,8155,3936,3073,3110,2879,
+ 691,8155,4316,631,8155,5093,8155,3403,8155,8155,
+ 8155,8155,5621,344,2636,49,2549,8155,8155,8155,
+ 3391,8155,2905,8155,3768,1458,652,156,540,537,
+ 538,539,2879,691,47,4316,8155,618,6556,8155,
+ 8155,8155,8155,8155,1890,8155,8155,8155,3062,2549,
+ 344,8155,2905,3441,8155,8155,652,8155,8155,8155,
+ 8155,3768,8155,8155,156,8155,629,619,8155,2879,
+ 691,8155,4316,8155,3047,8155,8155,8155,413,416,
+ 344,8155,8155,2905,1669,8155,2549,652,8155,6276,
+ 3585,3768,8155,8155,156,8155,8155,8155,8155,2879,
+ 691,632,4316,8155,8155,8155,8155,540,537,538,
+ 539,344,1669,8155,8155,8155,2549,6276,3082,8155,
+ 3606,8155,3768,6276,8155,156,8155,3062,8155,8155,
+ 2879,691,8155,4316,8155,540,537,538,539,8155,
+ 8155,540,537,538,539,4499,8155,2549,8155,8155,
+ 8155,3941,8155,2038,8155,3062,8155,8155,333,8155,
+ 8155,3062,2142,35,1136,390,8155,8155,540,537,
+ 538,539,8155,3479,35,1136,390,3484,35,1136,
+ 390,2038,8155,3587,8155,8155,6768,2038,3062,8155,
+ 8155,8155,6768,3390,35,1136,390,2142,35,1136,
+ 390,2142,35,1136,390,8155,49,8155,8155,8155,
+ 8155,5238,8155,8155,3047,798,1458,49,8155,8155,
+ 8155,49,8155,8155,8155,47,8155,1458,8155,3116,
+ 8155,1458,8155,8155,8155,991,47,49,8155,344,
+ 1835,49,8155,8155,131,49,1937,1458,798,8155,
+ 2816,1458,8155,156,8155,1458,2971,8155,188,8155,
+ 47,4457,8155,8155,47,5498,2486,131,8155,3067,
+ 967,798,344,8155,1127,2142,35,1136,390,94,
+ 2142,35,1136,390,8155,96,156,2142,35,1136,
+ 390,188,8155,344,4457,344,8155,532,2427,35,
+ 1136,390,4364,8155,3768,2427,35,1136,390,156,
+ 2427,35,1136,390,188,4316,8155,4457,8155,49,
+ 8155,8155,8155,8155,49,540,537,538,539,1458,
+ 190,49,8155,535,1458,8155,8155,8155,47,8155,
+ 8155,1458,49,47,8155,4790,8155,8155,1196,49,
+ 47,4996,1458,3004,49,2427,35,1136,390,1458,
+ 3622,1062,131,4058,1458,8155,3067,131,1159,8155,
+ 8155,3067,8155,1697,540,537,538,539,8155,131,
+ 8155,8155,8155,798,8155,8155,4073,8155,131,8155,
+ 344,8155,3067,8155,3062,344,8155,8155,8155,49,
+ 131,3768,8155,8155,3067,8155,3768,344,8155,1458,
+ 8155,8155,4316,8155,8155,4089,344,4316,999,8155,
+ 3873,156,8155,8155,8155,8155,188,3768,344,4457,
+ 2886,8155,8155,131,8155,3977,3614,3067,4316,3768,
+ 8155,8155,8155,8155,8155,8155,8155,8155,8155,8155,
+ 4316,8155,8155,8155,8155,8155,511,8155,8155,8155,
+ 8155,344,8155,8155,8155,8155,8155,8155,509,8155,
+ 8155,8155,3768,8155,8155,8155,8155,8155,8155,8155,
+ 8155,8155,8155,4316,8155,8155,8155,4271,8155,8155,
+ 8155,8155,8155,8155,8155,8155,8155,8155,4099,8155,
+ 8155,536,8155,0,1,229,856,0,503,6086,
+ 0,1,229,0,39,8795,0,39,8794,636,
+ 0,39,8170,0,39,8169,0,1,3095,0,
+ 995,1,0,39,1,8795,0,39,1,8794,
+ 0,39,1,8170,0,39,1,8169,0,1,
+ 4343,0,1,731,0,229,219,0,1,976,
+ 0,1,1000,0,1,1089,0,8389,223,0,
+ 8388,223,0,976,223,0,1000,223,0,1089,
+ 223,0,1103,223,0,8494,223,0,8493,223,
+ 0,8416,223,0,8415,223,0,8414,223,0,
+ 8413,223,0,8412,223,0,8411,223,0,8410,
+ 223,0,8409,223,0,608,637,0,8389,224,
+ 0,8388,224,0,976,224,0,1000,224,0,
+ 1089,224,0,1103,224,0,8494,224,0,8493,
+ 224,0,8416,224,0,8415,224,0,8414,224,
+ 0,8413,224,0,8412,224,0,8411,224,0,
+ 8410,224,0,8409,224,0,8389,225,0,8388,
+ 225,0,976,225,0,1000,225,0,1089,225,
+ 0,1103,225,0,8494,225,0,8493,225,0,
+ 8416,225,0,8415,225,0,8414,225,0,8413,
+ 225,0,8412,225,0,8411,225,0,8410,225,
+ 0,8409,225,0,1089,396,0,1000,396,0,
+ 976,396,0,284,396,0,8389,226,0,8388,
+ 226,0,976,226,0,1000,226,0,1089,226,
+ 0,1103,226,0,8494,226,0,8493,226,0,
+ 8416,226,0,8415,226,0,8414,226,0,8413,
+ 226,0,8412,226,0,8411,226,0,8410,226,
+ 0,8409,226,0,284,289,0,8389,227,0,
+ 8388,227,0,976,227,0,1000,227,0,1089,
+ 227,0,1103,227,0,8494,227,0,8493,227,
+ 0,8416,227,0,8415,227,0,8414,227,0,
+ 8413,227,0,8412,227,0,8411,227,0,8410,
+ 227,0,8409,227,0,2033,389,0,39,8794,
+ 0,8795,48,0,8794,48,0,8170,48,0,
+ 8169,48,0,8389,590,0,8388,590,0,976,
+ 590,0,1000,590,0,1089,590,0,1103,590,
+ 0,8494,590,0,8493,590,0,8416,590,0,
+ 8415,590,0,8414,590,0,8413,590,0,8412,
+ 590,0,8411,590,0,8410,590,0,8409,590,
+ 0,8389,241,0,8388,241,0,976,241,0,
+ 1000,241,0,1089,241,0,1103,241,0,8494,
+ 241,0,8493,241,0,8416,241,0,8415,241,
+ 0,8414,241,0,8413,241,0,8412,241,0,
+ 8411,241,0,8410,241,0,8409,241,0,8769,
+ 241,0,8768,241,0,8767,241,0,8428,241,
+ 0,8427,241,0,8426,241,0,8425,241,0,
+ 8424,241,0,8423,241,0,8422,241,0,8421,
+ 241,0,8420,241,0,8419,241,0,8418,241,
+ 0,8762,241,0,8761,241,0,39,241,8795,
+ 0,39,241,8794,635,0,39,241,8170,0,
+ 39,241,8169,0,8193,241,0,1,332,0,
+ 38,731,0,38,8795,0,38,8794,0,38,
+ 8170,0,38,8169,0,456,2220,0,442,2314,
+ 0,2033,29,0,8167,1,0,2643,319,0,
+ 1089,600,0,1000,600,0,976,600,0,604,
+ 600,0,604,599,0,8218,75,0,8217,75,
+ 0,1064,75,0,1085,75,0,1876,75,0,
+ 1923,75,0,1,602,0,1,446,0,460,
+ 1921,0,459,2207,0,35,33,0,47,37,
+ 0,8167,385,0,8166,385,0,1089,602,0,
+ 1000,602,0,976,602,0,976,634,0,1000,
+ 634,0,1089,634,0,8775,634,0,503,2648,
+ 0,8193,1,229,0,39,1,229,0,229,
+ 418,0,1,2079,0,1,8769,0,1,8768,
+ 0,1,8767,0,1,8428,0,1,8427,0,
+ 1,8426,0,1,8425,0,1,8424,0,1,
+ 8423,0,1,8422,0,1,8421,0,1,8420,
+ 0,1,8419,0,1,8418,0,1,8762,0,
+ 1,8761,0,1,3487,0,8795,37,0,8794,
+ 37,0,8170,37,0,8169,37,0,43,8191,
+ 0,43,37,0,8163,1,0,3078,91,0,
+ 32,34,0,39,731,0,1089,332,0,1000,
+ 332,0,976,332,0,39,241,8794,0,1,
+ 1405,0,1,1440,0,229,220,0,4927,126,
+ 0,8389,630,0,8388,630,0,976,630,0,
+ 1000,630,0,1089,630,0,1103,630,0,8494,
+ 630,0,8493,630,0,8416,630,0,8415,630,
+ 0,8414,630,0,8413,630,0,8412,630,0,
+ 8411,630,0,8410,630,0,8409,630,0,976,
+ 633,0,1000,633,0,1089,633,0,8775,633,
+ 0,8165,407,0,8164,407,0,229,417,0,
+ 1,229,3271,0,8164,229,0,3295,229,0,
+ 8161,1,0,8160,1,0,237,1683,0,390,
+ 32,0,389,29,0,1089,447,0,1000,447,
+ 0,976,447,0,8193,447,0,39,447,0,
+ 332,447,0,8191,45,0,37,45,0,3782,
+ 229,0,10,12,0,8193,1,0,39,1,
+ 0,588,577,0,1,92,0,1103,337,0,
+ 8494,337,0,8493,337,0,4927,128,0,4927,
+ 127,0,8,10,12,0,8795,2,37,0,
+ 8794,2,37,0,8170,2,37,0,8169,2,
+ 37,0,8795,36,0,8794,36,0,8170,36,
+ 0,8169,36,0,2680,100,0,1089,597,0,
+ 1000,597,0,976,597,0,1089,596,0,1000,
+ 596,0,976,596,0,540,541,0,589,578,
+ 0,3262,103,0,3023,99,0,1089,95,0,
+ 1000,95,0,976,95,0,8193,95,0,39,
+ 95,0,332,95,0,35,73,0,4097,385,
+ 0,1089,597,598,0,1000,597,598,0,976,
+ 597,598,0,597,598,0,279,2491,0,8,
+ 12,0,185,4647,0
+ };
+ };
+ public final static char baseAction[] = BaseAction.baseAction;
+ public final int baseAction(int index) { return baseAction[index]; }
+ public final static char lhs[] = baseAction;
+ public final int lhs(int index) { return lhs[index]; };
+
+ public interface TermCheck {
+ public final static char termCheck[] = {0,
+ 0,1,2,3,4,5,6,7,8,9,
+ 10,11,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,27,28,29,
+ 30,31,32,33,34,35,36,37,38,39,
+ 40,41,42,43,44,45,46,47,48,49,
+ 50,51,52,53,54,55,56,57,58,59,
+ 60,61,62,63,64,65,66,0,68,69,
+ 70,71,5,73,0,1,76,77,78,79,
+ 80,81,82,83,84,85,86,0,1,2,
+ 3,4,5,6,7,8,9,10,11,99,
+ 100,101,102,103,104,105,106,107,108,109,
+ 110,111,112,113,114,115,116,117,118,119,
+ 120,121,122,123,124,125,126,127,128,0,
+ 0,0,132,0,1,2,3,4,5,6,
+ 7,8,9,10,11,12,13,14,15,16,
+ 17,18,19,20,21,22,23,24,25,26,
+ 27,28,29,30,31,32,33,34,35,36,
+ 37,38,39,40,41,42,43,44,45,46,
+ 47,48,49,50,51,52,53,54,55,56,
+ 57,58,59,60,61,62,63,64,65,66,
+ 71,68,69,70,0,72,73,74,75,0,
+ 6,82,79,80,81,0,85,84,0,86,
+ 87,88,89,90,91,92,0,94,95,96,
+ 97,98,0,1,2,3,4,5,6,7,
+ 8,9,10,11,12,13,14,15,16,17,
+ 18,19,20,21,22,23,24,25,26,27,
+ 28,29,30,31,32,33,34,35,36,37,
+ 38,39,40,41,42,43,44,45,46,47,
+ 48,49,50,51,52,53,54,55,56,57,
+ 58,59,60,61,62,63,64,65,66,0,
+ 68,69,70,0,72,73,74,75,99,100,
+ 84,79,80,81,99,100,84,14,86,87,
+ 88,89,90,91,92,0,94,95,96,97,
+ 98,0,1,2,3,4,5,6,7,8,
+ 9,10,11,12,13,14,15,16,17,18,
+ 19,20,21,22,23,24,25,26,27,28,
+ 29,30,31,32,33,34,35,36,37,38,
+ 39,40,41,42,43,44,45,46,47,48,
+ 49,50,51,52,53,54,55,56,57,58,
+ 59,60,61,62,63,64,65,66,0,68,
+ 69,70,0,72,73,74,75,0,109,110,
+ 79,80,81,0,0,84,3,86,87,88,
+ 89,90,91,92,22,94,95,96,97,98,
+ 0,1,2,3,4,5,6,7,8,9,
+ 10,11,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,27,28,29,
+ 30,31,32,33,34,35,36,37,38,39,
+ 40,41,42,43,44,45,46,47,48,49,
+ 50,51,52,53,54,55,56,57,58,59,
+ 60,61,62,63,64,65,66,0,68,69,
+ 70,87,72,73,74,75,99,100,0,79,
+ 80,81,114,5,84,0,118,87,88,89,
+ 90,91,92,0,94,95,96,97,98,0,
+ 1,2,3,4,5,6,7,8,9,10,
+ 11,12,13,14,15,16,17,18,19,20,
+ 21,22,23,24,25,26,27,28,29,30,
+ 31,32,33,34,35,36,37,38,39,40,
+ 41,42,43,44,45,46,47,48,49,50,
+ 51,52,53,54,55,56,57,58,59,60,
+ 61,62,63,64,65,66,73,68,69,70,
+ 0,72,73,74,75,0,109,110,79,80,
+ 81,0,0,84,99,100,87,88,89,90,
+ 91,92,0,94,95,96,97,98,0,1,
+ 2,3,4,5,6,7,8,9,10,11,
+ 12,13,14,15,16,17,18,19,20,21,
+ 22,23,24,25,26,27,28,29,30,31,
+ 32,33,34,35,36,37,38,39,40,41,
+ 42,43,44,45,46,47,48,49,50,51,
+ 52,53,54,55,56,57,58,59,60,61,
+ 62,63,64,65,66,83,68,69,70,0,
+ 72,73,74,75,99,100,0,79,80,81,
+ 99,100,84,0,0,87,88,89,90,91,
+ 92,0,94,95,96,97,98,0,1,2,
+ 3,4,5,6,7,8,9,10,11,12,
+ 13,14,15,16,17,18,19,20,21,22,
+ 23,24,25,26,27,28,29,30,31,32,
+ 33,34,35,36,37,38,39,40,41,42,
+ 43,44,45,46,47,48,49,50,51,52,
+ 53,54,55,56,57,58,59,60,61,62,
+ 63,64,65,66,0,68,69,70,0,72,
+ 73,74,75,5,0,0,79,80,81,5,
+ 5,84,99,100,87,88,89,90,91,92,
+ 0,94,95,96,97,98,0,1,2,3,
+ 4,5,6,7,8,9,10,11,12,13,
+ 14,15,16,17,18,19,20,21,22,23,
+ 24,25,26,27,28,29,30,31,32,33,
+ 34,35,36,37,38,39,40,41,42,43,
+ 44,45,46,47,48,49,50,51,52,53,
+ 54,55,56,57,58,59,60,61,62,63,
+ 64,65,66,0,68,69,70,0,72,73,
+ 74,75,82,6,0,79,80,81,0,5,
+ 84,0,0,87,88,89,90,91,92,0,
+ 94,95,96,97,98,0,1,2,3,4,
+ 5,6,7,8,9,10,11,12,13,14,
+ 15,16,17,18,19,20,21,22,23,24,
+ 25,26,27,28,29,30,31,32,33,34,
+ 35,36,37,38,39,40,41,42,43,44,
+ 45,46,47,48,49,50,51,52,53,54,
+ 55,56,57,58,59,60,61,62,63,64,
+ 65,66,0,68,69,70,0,72,73,74,
+ 75,5,0,0,79,80,81,5,5,84,
+ 0,0,87,88,89,90,91,92,0,94,
+ 95,96,97,98,0,1,2,3,4,5,
+ 6,7,8,9,10,11,12,13,14,15,
+ 16,17,18,19,20,21,22,23,24,25,
+ 26,27,28,29,30,31,32,33,34,35,
+ 36,37,38,39,40,41,42,43,44,45,
+ 46,47,48,49,50,51,52,53,54,55,
+ 56,57,58,59,60,61,62,63,64,65,
+ 66,0,68,69,70,0,72,73,74,75,
+ 5,0,0,79,80,81,5,0,84,0,
+ 0,87,88,89,90,91,92,0,94,95,
+ 96,97,98,0,1,2,3,4,5,6,
+ 7,8,9,10,11,12,13,14,15,16,
+ 17,18,19,20,21,22,23,24,25,26,
+ 27,28,29,30,31,32,33,34,35,36,
+ 37,38,39,40,41,42,43,44,45,46,
+ 47,48,49,50,51,52,53,54,55,56,
+ 57,58,59,60,61,62,63,64,65,66,
+ 83,68,69,70,0,72,73,74,75,82,
+ 0,0,79,80,81,0,6,84,0,0,
+ 87,88,89,90,91,92,0,94,95,96,
+ 97,98,0,1,2,3,4,5,6,7,
+ 8,9,10,11,12,13,14,15,16,17,
+ 18,19,20,21,22,23,24,25,26,27,
+ 28,29,30,31,32,33,34,35,36,37,
+ 38,39,40,41,42,43,44,45,46,47,
+ 48,49,50,51,52,53,54,55,56,57,
+ 58,59,60,61,62,63,64,65,66,0,
+ 68,69,70,0,72,73,74,75,0,0,
+ 0,79,80,81,5,111,84,0,0,87,
+ 88,89,90,91,92,0,94,95,96,97,
+ 98,0,1,2,3,4,5,6,7,8,
+ 9,10,11,12,13,14,15,16,17,18,
+ 19,20,21,22,23,24,25,26,27,28,
+ 29,30,31,32,33,34,35,36,37,38,
+ 39,40,41,42,43,44,45,46,47,48,
+ 49,50,51,52,53,54,55,56,57,58,
+ 59,60,61,62,63,64,65,66,0,68,
+ 69,70,0,72,73,74,75,5,83,101,
+ 79,80,81,0,0,84,113,0,87,88,
+ 89,90,91,92,0,94,95,96,97,98,
+ 0,1,2,3,4,5,6,7,8,9,
+ 10,11,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,27,28,29,
+ 30,31,32,33,34,35,36,37,38,39,
+ 40,41,42,43,44,45,46,47,48,49,
+ 50,51,52,53,54,55,56,57,58,59,
+ 60,61,62,63,64,65,66,83,68,69,
+ 70,0,72,73,74,75,5,0,0,79,
+ 80,81,0,6,84,0,0,87,88,89,
+ 90,91,92,0,94,95,96,97,98,0,
+ 1,2,3,4,5,6,7,8,9,10,
+ 11,12,13,14,37,33,34,35,0,0,
+ 1,2,3,4,46,7,8,9,134,10,
+ 11,46,33,34,35,36,37,38,39,40,
+ 41,42,43,44,45,67,47,48,49,50,
+ 51,33,34,35,36,37,38,39,40,41,
+ 42,43,44,45,71,0,1,2,3,4,
+ 71,6,7,8,9,76,77,78,13,14,
+ 81,82,83,84,85,86,0,1,2,3,
+ 4,5,6,7,8,9,10,11,99,100,
+ 101,102,103,104,105,106,107,108,109,110,
+ 111,112,113,114,115,116,117,118,119,120,
+ 121,122,123,124,125,126,127,128,0,0,
+ 0,132,0,1,2,3,4,5,6,7,
+ 8,9,10,11,12,13,14,0,0,0,
+ 0,0,5,0,6,7,8,9,7,8,
+ 9,13,14,13,14,33,34,35,36,37,
+ 38,39,40,41,42,43,44,45,0,47,
+ 48,49,50,51,33,34,35,36,37,38,
+ 39,40,41,42,43,44,45,67,0,1,
+ 2,3,4,71,6,7,8,9,76,77,
+ 78,13,14,81,82,83,84,85,86,0,
+ 1,2,3,4,5,6,7,8,9,10,
+ 11,99,100,101,102,103,104,105,106,107,
+ 108,109,110,111,112,113,114,115,116,117,
+ 118,119,120,121,122,123,124,125,126,127,
+ 128,0,113,85,132,0,1,2,3,4,
+ 5,6,7,8,9,10,11,0,13,14,
+ 15,16,17,18,19,20,21,22,23,24,
+ 25,26,27,28,29,30,31,32,33,34,
+ 35,36,37,38,39,40,41,42,43,44,
+ 45,46,47,48,0,50,51,52,53,54,
+ 55,56,57,58,59,60,61,62,63,64,
+ 65,66,71,68,69,70,0,0,73,0,
+ 1,2,3,4,5,6,7,8,9,10,
+ 11,14,13,14,15,16,17,18,19,20,
+ 21,22,23,24,25,26,27,28,29,30,
+ 31,32,33,34,35,36,37,38,39,40,
+ 41,42,43,44,45,46,47,48,0,50,
+ 51,52,53,54,55,56,57,58,59,60,
+ 61,62,63,64,65,66,0,68,69,70,
+ 22,5,73,0,1,2,3,4,5,6,
+ 7,8,9,10,11,12,13,14,15,16,
+ 17,18,19,20,21,22,23,24,25,26,
+ 27,28,29,30,31,32,33,34,35,36,
+ 37,38,39,40,41,42,43,44,45,0,
+ 72,0,49,0,1,2,3,4,5,6,
+ 7,8,9,10,11,0,13,14,0,66,
+ 67,68,69,70,6,72,0,74,75,0,
+ 0,85,0,0,0,82,7,8,9,86,
+ 7,8,9,13,12,46,93,46,15,16,
+ 17,18,19,20,21,0,23,24,25,26,
+ 27,28,29,30,31,0,33,34,35,36,
+ 37,38,39,40,41,42,43,44,45,76,
+ 0,49,129,130,131,0,1,2,3,4,
+ 5,6,7,8,9,10,11,12,13,14,
+ 15,16,17,18,19,20,21,22,23,24,
+ 25,26,27,28,29,30,31,32,33,34,
+ 35,36,37,38,39,40,41,42,43,44,
+ 45,76,67,0,49,0,1,2,3,4,
+ 5,6,7,8,9,10,11,67,13,14,
+ 0,66,67,68,69,70,0,72,0,74,
+ 75,0,1,2,3,4,0,82,2,135,
+ 0,86,0,7,8,9,0,5,93,0,
+ 1,15,16,17,18,19,20,21,12,23,
+ 0,1,2,3,4,0,6,47,48,33,
+ 34,35,36,37,38,39,40,41,42,43,
+ 44,45,33,0,129,130,131,0,1,2,
+ 3,4,5,6,7,8,9,10,11,12,
+ 13,14,15,16,17,18,19,20,21,22,
+ 23,24,25,26,27,28,29,30,31,32,
+ 33,34,35,36,37,38,39,40,41,42,
+ 43,44,45,0,0,0,49,0,1,2,
+ 3,4,5,6,7,8,9,10,11,103,
+ 13,14,112,66,67,68,69,70,0,72,
+ 0,74,75,0,0,0,1,0,34,2,
+ 7,8,9,86,7,8,9,13,13,0,
+ 93,0,15,16,17,18,19,20,21,10,
+ 23,0,0,0,1,2,3,4,0,0,
+ 33,34,35,36,37,38,39,40,41,42,
+ 43,44,45,78,0,1,2,3,4,82,
+ 6,134,0,1,2,3,4,5,6,7,
+ 8,9,10,11,12,13,14,15,16,17,
+ 18,19,20,21,22,23,24,25,26,27,
+ 28,29,30,31,32,33,34,35,36,37,
+ 38,39,40,41,42,43,44,45,0,105,
+ 106,49,79,80,76,7,8,9,0,1,
+ 2,3,4,0,6,7,8,9,66,67,
+ 68,69,70,102,72,104,74,75,0,0,
+ 101,33,34,35,36,37,38,39,40,41,
+ 42,43,44,45,133,93,0,1,2,3,
+ 4,0,0,1,2,3,4,5,6,7,
+ 8,9,10,11,0,13,14,0,1,2,
+ 3,4,5,6,7,8,9,10,11,0,
+ 13,14,0,0,71,0,134,0,1,2,
+ 3,4,5,6,7,8,9,10,11,12,
+ 13,14,15,16,17,18,19,20,21,22,
+ 23,24,25,26,27,28,29,30,31,32,
+ 33,34,35,36,37,38,39,40,41,42,
+ 43,44,45,0,82,71,49,0,0,111,
+ 7,8,9,0,1,2,3,4,0,82,
+ 7,8,9,66,67,68,69,70,71,72,
+ 12,74,75,78,85,83,33,34,35,36,
+ 37,38,39,40,41,42,43,44,45,0,
+ 93,0,1,2,3,4,5,6,7,8,
+ 9,10,11,12,13,14,15,16,17,18,
+ 19,20,21,22,23,24,25,26,27,28,
+ 29,30,31,32,33,34,35,36,37,38,
+ 39,40,41,42,43,44,45,0,0,81,
+ 49,0,1,2,3,4,5,6,7,8,
+ 9,10,11,0,13,14,67,66,67,68,
+ 69,70,0,72,0,74,75,0,1,2,
+ 3,4,0,6,7,8,9,86,0,12,
+ 13,14,0,5,93,0,1,2,3,4,
+ 5,6,7,8,9,10,11,12,13,14,
+ 15,16,17,18,19,20,21,22,23,24,
+ 25,26,27,28,29,30,31,32,33,34,
+ 35,36,37,38,39,40,41,42,43,44,
+ 45,78,0,71,49,71,83,5,0,0,
+ 1,2,3,4,77,6,0,0,2,10,
+ 11,66,67,68,69,70,0,72,0,74,
+ 75,15,16,17,18,19,20,21,101,23,
+ 12,86,0,1,2,3,4,0,93,0,
+ 1,2,3,4,5,6,7,8,9,10,
+ 11,12,13,14,15,16,17,18,19,20,
+ 21,22,23,24,25,26,27,28,29,30,
+ 31,32,33,34,35,36,37,38,39,40,
+ 41,42,43,44,45,78,0,71,49,0,
+ 1,2,3,4,0,6,7,8,9,67,
+ 0,0,13,14,86,66,67,68,69,70,
+ 0,72,12,74,75,0,6,7,8,9,
+ 5,6,7,8,9,86,0,12,13,14,
+ 0,133,93,0,1,2,3,4,5,6,
+ 7,8,9,10,11,12,13,14,15,16,
+ 17,18,19,20,21,22,23,24,25,26,
+ 27,28,29,30,31,32,33,34,35,36,
+ 37,38,39,40,41,42,43,44,45,0,
+ 0,81,49,0,83,5,7,8,9,6,
+ 0,76,77,78,0,0,66,0,83,66,
+ 67,68,69,70,78,72,12,74,75,12,
+ 0,0,33,34,35,36,37,38,39,40,
+ 41,42,43,44,45,0,93,0,1,2,
+ 3,4,5,6,7,8,9,10,11,12,
+ 13,14,15,16,17,18,19,20,21,22,
+ 23,24,25,26,27,28,29,30,31,32,
+ 33,34,35,36,37,38,39,40,41,42,
+ 43,44,45,0,77,81,49,67,83,82,
+ 7,8,9,0,0,0,0,1,2,3,
+ 4,101,0,66,67,68,69,70,12,72,
+ 0,74,75,0,12,0,33,34,35,36,
+ 37,38,39,40,41,42,43,44,45,0,
+ 93,0,1,2,3,4,5,6,7,8,
+ 9,10,11,12,13,14,15,16,17,18,
+ 19,20,21,22,23,24,25,26,27,28,
+ 29,30,31,32,33,34,35,36,37,38,
+ 39,40,41,42,43,44,45,81,85,77,
+ 49,0,1,2,3,4,0,6,7,8,
+ 9,78,6,78,13,14,83,66,67,68,
+ 69,70,0,72,0,74,75,114,6,0,
+ 0,118,119,120,121,122,123,124,125,126,
+ 127,128,12,37,93,0,1,2,3,4,
+ 5,6,7,8,9,10,11,12,13,14,
+ 15,16,17,18,19,20,21,22,23,24,
+ 25,26,27,28,29,30,31,32,33,34,
+ 35,36,37,38,39,40,41,42,43,44,
+ 45,0,0,71,49,0,1,2,3,4,
+ 5,6,78,0,13,10,11,77,78,0,
+ 0,66,67,68,69,70,0,72,0,74,
+ 75,0,1,2,3,4,5,6,7,8,
+ 9,10,11,0,0,129,130,131,93,0,
+ 1,2,3,4,5,6,7,8,9,10,
+ 11,12,13,14,15,16,17,18,19,20,
+ 21,22,23,24,25,26,27,28,29,30,
+ 31,32,33,34,35,36,37,38,39,40,
+ 41,42,43,44,45,0,76,71,49,0,
+ 1,2,3,4,5,6,105,106,13,10,
+ 11,83,0,82,71,66,67,68,69,70,
+ 76,72,0,74,75,0,1,2,3,4,
+ 5,6,7,8,9,10,11,0,1,2,
+ 3,4,93,0,1,2,3,4,5,6,
+ 7,8,9,10,11,12,13,14,15,16,
+ 17,18,19,20,21,22,23,24,25,26,
+ 27,28,29,30,31,32,33,34,35,36,
+ 37,38,39,40,41,42,43,44,45,0,
+ 0,0,49,0,1,2,3,4,5,6,
+ 105,106,12,10,11,12,0,82,0,66,
+ 67,68,69,70,102,72,104,74,75,0,
+ 1,2,3,4,33,34,35,0,1,2,
+ 3,4,5,6,0,0,93,10,11,12,
+ 13,14,15,16,17,18,19,20,21,22,
+ 23,24,25,26,27,28,29,30,31,32,
+ 71,0,0,36,0,1,2,3,4,76,
+ 77,0,0,46,47,48,86,50,51,52,
+ 53,54,55,56,57,58,59,60,61,62,
+ 63,64,65,0,1,2,3,4,0,6,
+ 7,8,9,5,0,71,79,80,0,1,
+ 2,3,4,0,1,2,3,4,0,1,
+ 2,3,4,5,6,0,0,0,10,11,
+ 103,13,14,15,16,17,18,19,20,21,
+ 22,23,24,25,26,27,28,29,30,31,
+ 32,0,1,2,3,4,5,6,7,8,
+ 9,10,11,12,46,47,48,0,50,51,
+ 52,53,54,55,56,57,58,59,60,61,
+ 62,63,64,65,0,1,2,3,4,85,
+ 6,73,79,80,10,11,71,79,80,0,
+ 49,83,0,1,2,3,4,5,6,82,
+ 0,12,10,11,12,13,14,15,16,17,
+ 18,19,20,21,22,23,24,25,26,27,
+ 28,29,30,31,32,0,1,0,36,0,
+ 1,2,3,4,7,8,9,12,46,47,
+ 48,67,50,51,52,53,54,55,56,57,
+ 58,59,60,61,62,63,64,65,0,1,
+ 2,3,4,5,6,73,77,78,10,11,
+ 12,13,14,15,16,17,18,19,20,21,
+ 22,23,24,25,26,27,28,29,30,31,
+ 32,0,0,0,0,103,67,0,1,2,
+ 3,4,77,0,46,47,48,10,50,51,
+ 52,53,54,55,56,57,58,59,60,61,
+ 62,63,64,65,0,1,2,3,4,5,
+ 6,73,0,133,10,11,33,34,35,81,
+ 0,1,0,0,86,0,1,2,3,4,
+ 5,6,12,0,12,10,11,12,13,14,
+ 15,16,17,18,19,20,21,22,23,24,
+ 25,26,27,28,29,30,31,32,0,1,
+ 2,3,4,5,6,0,46,0,10,11,
+ 12,46,47,48,0,50,51,52,53,54,
+ 55,56,57,58,59,60,61,62,63,64,
+ 65,0,1,2,3,4,22,77,73,0,
+ 1,2,3,4,5,6,81,49,86,10,
+ 11,78,13,14,15,16,17,18,19,20,
+ 21,22,23,24,25,26,27,28,29,30,
+ 31,32,0,1,2,3,4,0,6,0,
+ 66,67,10,11,5,46,47,48,0,50,
+ 51,52,53,54,55,56,57,58,59,60,
+ 61,62,63,64,65,0,1,2,3,4,
+ 0,0,73,0,0,10,11,0,79,80,
+ 0,1,2,3,4,5,6,0,0,12,
+ 10,11,0,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,27,28,29,
+ 30,31,32,0,1,2,3,4,0,82,
+ 33,34,35,5,76,0,46,47,48,0,
+ 50,51,52,53,54,55,56,57,58,59,
+ 60,61,62,63,64,65,0,1,2,3,
+ 4,22,0,73,77,78,82,5,85,79,
+ 80,0,1,2,3,4,5,6,50,51,
+ 78,10,11,85,13,14,15,16,17,18,
+ 19,20,21,22,23,24,25,26,27,28,
+ 29,30,31,32,76,66,67,0,0,129,
+ 130,131,5,0,0,0,0,46,47,48,
+ 5,50,51,52,53,54,55,56,57,58,
+ 59,60,61,62,63,64,65,0,76,0,
+ 0,0,0,0,73,117,7,8,9,12,
+ 79,80,0,1,2,3,4,5,6,0,
+ 132,0,10,11,0,13,14,15,16,17,
+ 18,19,20,21,22,23,24,25,26,27,
+ 28,29,30,31,32,71,49,47,48,0,
+ 82,76,0,0,5,82,0,83,46,47,
+ 48,12,50,51,52,53,54,55,56,57,
+ 58,59,60,61,62,63,64,65,102,0,
+ 104,107,108,82,82,73,7,8,9,115,
+ 116,79,80,0,1,2,3,4,5,6,
+ 47,48,101,10,11,12,13,14,15,16,
+ 17,18,19,20,21,22,23,24,25,26,
+ 27,28,29,30,31,32,77,0,0,0,
+ 0,112,76,0,7,8,9,85,0,46,
+ 47,48,0,50,51,52,53,54,55,56,
+ 57,58,59,60,61,62,63,64,65,0,
+ 0,0,0,0,5,5,73,0,1,2,
+ 3,4,5,6,81,12,0,10,11,12,
+ 13,14,15,16,17,18,19,20,21,22,
+ 23,24,25,26,27,28,29,30,31,32,
+ 0,1,2,3,4,0,6,7,8,9,
+ 82,82,49,46,47,48,0,50,51,52,
+ 53,54,55,56,57,58,59,60,61,62,
+ 63,64,65,0,1,2,3,4,5,6,
+ 102,78,104,10,11,12,13,14,15,16,
+ 17,18,19,20,21,22,23,24,25,26,
+ 27,28,29,30,31,32,0,67,0,0,
+ 103,0,0,1,2,3,4,0,12,46,
+ 47,48,10,50,51,52,53,54,55,56,
+ 57,58,59,60,61,62,63,64,65,0,
+ 1,2,3,4,5,6,0,0,0,10,
+ 11,5,13,14,15,16,17,18,19,20,
+ 21,22,23,24,25,26,27,28,29,30,
+ 31,32,0,0,0,67,103,0,67,67,
+ 7,8,9,77,12,46,47,48,71,50,
+ 51,52,53,54,55,56,57,58,59,60,
+ 61,62,63,64,65,0,0,1,2,3,
+ 4,5,6,0,0,76,10,11,5,13,
+ 14,15,16,17,18,19,20,21,22,23,
+ 24,25,26,27,28,29,30,31,32,0,
+ 1,2,3,4,71,6,7,8,9,77,
+ 76,0,46,47,48,78,50,51,52,53,
+ 54,55,56,57,58,59,60,61,62,63,
+ 64,65,0,1,2,3,4,5,6,73,
+ 0,0,10,11,0,13,14,15,16,17,
+ 18,19,20,21,22,23,24,25,26,27,
+ 28,29,30,31,32,0,67,0,0,1,
+ 2,3,4,0,0,7,8,9,46,47,
+ 48,13,50,51,52,53,54,55,56,57,
+ 58,59,60,61,62,63,64,65,0,1,
+ 2,3,4,5,6,73,0,0,10,11,
+ 0,13,14,15,16,17,18,19,20,21,
+ 22,23,24,25,26,27,28,29,30,31,
+ 32,0,0,0,0,67,5,0,1,2,
+ 3,4,0,0,46,47,48,5,50,51,
+ 52,53,54,55,56,57,58,59,60,61,
+ 62,63,64,65,0,1,2,3,4,5,
+ 6,0,0,0,10,11,5,13,14,15,
+ 16,17,18,19,20,21,22,23,24,25,
+ 26,27,28,29,30,31,32,0,1,2,
+ 3,4,5,6,67,71,0,10,11,0,
+ 46,47,48,0,50,51,52,53,54,55,
+ 56,57,58,59,60,61,62,63,64,65,
+ 0,1,2,3,4,5,6,0,0,0,
+ 10,11,5,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,27,28,29,
+ 30,31,32,0,0,1,2,3,4,0,
+ 6,0,0,76,10,11,46,47,48,0,
+ 50,51,52,53,54,55,56,57,58,59,
+ 60,61,62,63,64,65,0,1,2,3,
+ 4,5,6,0,0,0,10,11,0,13,
+ 14,15,16,17,18,19,20,21,22,23,
+ 24,25,26,27,28,29,30,31,32,0,
+ 0,67,0,1,2,3,4,0,1,2,
+ 3,4,46,47,48,0,50,51,52,53,
+ 54,55,56,57,58,59,60,61,62,63,
+ 64,65,0,1,2,3,4,5,6,0,
+ 0,0,10,11,0,13,14,15,16,17,
+ 18,19,20,21,22,23,24,25,26,27,
+ 28,29,30,31,32,0,0,0,0,67,
+ 5,0,0,0,67,0,0,12,46,47,
+ 48,0,50,51,52,53,54,55,56,57,
+ 58,59,60,61,62,63,64,65,0,1,
+ 2,3,4,5,6,0,0,0,10,11,
+ 0,13,14,15,16,17,18,19,20,21,
+ 22,23,24,25,26,27,28,29,30,31,
+ 32,0,1,2,3,4,0,1,2,3,
+ 4,76,77,0,46,47,48,0,50,51,
+ 52,53,54,55,56,57,58,59,60,61,
+ 62,63,64,65,0,1,2,3,4,5,
+ 6,0,0,0,10,11,0,13,14,15,
+ 16,17,18,19,20,21,22,23,24,25,
+ 26,27,28,29,30,31,32,0,67,0,
+ 0,0,0,67,0,0,5,7,8,9,
+ 46,47,48,12,50,51,52,53,54,55,
+ 56,57,58,59,60,61,62,63,64,65,
+ 0,1,2,3,4,0,6,7,8,9,
+ 0,0,7,8,9,15,16,17,18,19,
+ 20,21,22,23,24,25,26,27,28,29,
+ 30,31,32,33,34,35,36,37,38,39,
+ 40,41,42,43,44,45,0,76,77,78,
+ 0,0,6,0,83,0,0,1,2,3,
+ 4,0,6,7,8,9,66,12,68,69,
+ 70,15,16,17,18,19,20,21,22,23,
+ 24,25,26,27,28,29,30,31,32,33,
+ 34,35,36,37,38,39,40,41,42,43,
+ 44,45,0,0,49,0,0,0,0,7,
+ 8,9,0,1,2,3,4,71,6,7,
+ 8,9,66,0,68,69,70,15,16,17,
+ 18,19,20,21,22,23,24,25,26,27,
+ 28,29,30,31,32,33,34,35,36,37,
+ 38,39,40,41,42,43,44,45,0,0,
+ 0,0,0,0,0,7,8,9,0,1,
+ 2,3,4,0,6,7,8,9,66,0,
+ 68,69,70,15,16,17,18,19,20,21,
+ 22,23,24,25,26,27,28,29,30,31,
+ 32,33,34,35,36,37,38,39,40,41,
+ 42,43,44,45,0,0,0,0,0,5,
+ 0,0,0,0,10,0,6,13,14,12,
+ 0,71,0,71,66,12,68,69,70,7,
+ 8,9,0,83,12,83,0,0,85,7,
+ 8,9,0,7,8,9,0,0,85,12,
+ 0,47,48,0,50,51,52,107,108,107,
+ 108,0,49,0,0,115,116,115,116,0,
+ 0,49,0,0,0,71,7,8,9,0,
+ 76,71,78,79,80,78,49,83,0,85,
+ 85,78,0,86,0,7,8,9,0,46,
+ 78,0,0,99,100,0,102,0,0,105,
+ 106,107,108,109,110,111,112,113,114,0,
+ 67,117,0,119,120,121,122,123,124,125,
+ 126,127,128,0,1,2,3,4,5,6,
+ 7,8,9,10,11,12,13,14,0,0,
+ 0,1,2,3,4,5,6,7,8,9,
+ 10,11,12,13,14,0,33,34,35,36,
+ 37,38,39,40,41,42,43,44,45,0,
+ 0,0,49,33,34,35,36,37,38,39,
+ 40,41,42,43,44,45,0,0,0,49,
+ 0,0,0,0,71,7,8,9,0,76,
+ 77,0,1,2,3,4,5,6,7,8,
+ 9,10,11,12,13,14,76,77,0,1,
+ 2,3,4,5,6,7,8,9,10,11,
+ 12,13,14,0,33,34,35,36,37,38,
+ 39,40,41,42,43,44,45,0,0,0,
+ 49,33,34,35,36,37,38,39,40,41,
+ 42,43,44,45,0,0,0,49,0,0,
+ 1,2,3,4,5,6,12,76,77,10,
+ 11,12,0,0,0,0,0,0,6,5,
+ 0,6,0,0,76,77,12,0,12,12,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,77,0,0,0,76,77,78,0,0,
+ 0,0,83,71,85,0,71,0,0,0,
+ 76,77,78,77,77,101,0,83,0,0,
+ 101,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0
+ };
+ };
+ public final static char termCheck[] = TermCheck.termCheck;
+ public final int termCheck(int index) { return termCheck[index]; }
+
+ public interface TermAction {
+ public final static char termAction[] = {0,
+ 8155,7265,7265,7265,7265,7265,7265,7265,7265,7265,
+ 7265,7265,7265,7265,7265,7265,7265,7265,7265,7265,
+ 7265,7265,7265,7265,7265,7265,7265,7265,7265,7265,
+ 7265,7265,7265,7265,7265,7265,7265,7265,7265,7265,
+ 7265,7265,7265,7265,7265,7265,7265,7265,7265,7265,
+ 7265,7265,7265,7265,7265,7265,7265,7265,7265,7265,
+ 7265,7265,7265,7265,7265,7265,7265,8155,7265,7265,
+ 7265,7265,3159,7265,8155,3902,7265,7265,7265,7265,
+ 7265,7265,7265,7265,7265,7265,7265,1,7195,7183,
+ 7187,7191,3095,7180,7214,7208,7211,731,4343,7265,
+ 7265,7265,7265,7265,7265,7265,7265,7265,7265,7265,
+ 7265,7265,7265,7265,7265,7265,7265,7265,7265,7265,
+ 7265,7265,7265,7265,7265,7265,7265,7265,7265,29,
+ 1,35,7265,8155,7960,7161,7161,7161,7161,7161,
+ 7154,7161,7161,7161,7161,8009,7161,7161,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,7964,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 2033,1,1,1,39,1985,1,927,8330,121,
+ 8193,426,1,1,8166,580,2173,1518,386,8162,
+ 3319,2861,2463,2790,3186,4059,1,3317,900,3297,
+ 3807,3296,10,8012,8012,8012,8012,8012,8012,8012,
+ 8012,8012,8012,8012,8012,8012,8012,8012,8012,8012,
+ 8012,8012,8012,8012,8012,8012,8012,8012,8012,8012,
+ 8012,8012,8012,8012,8012,8012,8012,8012,8012,8012,
+ 8012,8012,8012,8012,8012,8012,8012,8012,8012,8012,
+ 8012,8012,8012,8012,8012,8012,8012,8012,8012,8012,
+ 8012,8012,8012,8012,8012,8012,8012,8012,8012,129,
+ 8012,8012,8012,131,8012,8012,8012,8012,5019,5101,
+ 2126,8012,8012,8012,5019,5101,8012,3812,8012,8012,
+ 8012,8012,8012,8012,8012,8155,8012,8012,8012,8012,
+ 8012,8,8042,8042,8042,8042,8042,8042,8042,8042,
+ 8042,8042,8042,8042,8042,8042,8042,8042,8042,8042,
+ 8042,8042,8042,8042,8042,8042,8042,8042,8042,8042,
+ 8042,8042,8042,8042,8042,8042,8042,8042,8042,8042,
+ 8042,8042,8042,8042,8042,8042,8042,8042,8042,8042,
+ 8042,8042,8042,8042,8042,8042,8042,8042,8042,8042,
+ 8042,8042,8042,8042,8042,8042,8042,8042,139,8042,
+ 8042,8042,303,8042,8042,8042,8042,579,4035,3981,
+ 8042,8042,8042,8155,8155,8042,680,8042,8042,8042,
+ 8042,8042,8042,8042,8457,8042,8042,8042,8042,8042,
+ 8155,7960,7161,7161,7161,7161,7161,7154,7161,7161,
+ 7161,7161,7967,7161,7161,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,7964,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,130,1,1,
+ 1,3978,1985,1,927,8330,5019,5101,8155,1,
+ 1,8166,3272,845,1518,125,1730,3319,2861,2463,
+ 2790,3186,4059,534,3317,900,3297,3807,3296,8155,
+ 7960,7161,7161,7161,7161,7161,7154,7161,7161,7161,
+ 7161,7967,7161,7161,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,7964,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,4104,1,1,1,
+ 8155,1985,1,927,8330,124,4035,3981,1,1,
+ 8166,123,8155,1518,5019,5101,3319,2861,2463,2790,
+ 3186,4059,8155,3317,900,3297,3807,3296,8155,7960,
+ 7161,7161,7161,7161,7161,7154,7161,7161,7161,7161,
+ 7967,7161,7161,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,7964,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,6338,1,1,1,8155,
+ 1985,1,927,8330,5019,5101,8155,1,1,8166,
+ 5019,5101,1518,122,8155,3319,2861,2463,2790,3186,
+ 4059,8155,3317,900,3297,3807,3296,8155,7960,7161,
+ 7161,7161,7161,7161,7154,7161,7161,7161,7161,7967,
+ 7161,7161,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,7964,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,8155,1,1,1,8155,1985,
+ 1,927,8330,1792,8155,8155,1,1,8166,1420,
+ 2643,1518,5019,5101,3319,2861,2463,2790,3186,4059,
+ 450,3317,900,3297,3807,3296,8155,7960,7161,7161,
+ 7161,7161,7161,7154,7161,7161,7161,7161,7967,7161,
+ 7161,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,7964,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,8155,1,1,1,8155,1985,1,
+ 927,8330,750,3537,8155,1,1,8166,8155,4549,
+ 1518,8155,8155,3319,2861,2463,2790,3186,4059,8155,
+ 3317,900,3297,3807,3296,8155,7960,7161,7161,7161,
+ 7161,7161,7154,7161,7161,7161,7161,7967,7161,7161,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,7964,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,8155,1,1,1,8155,1985,1,927,
+ 8330,1683,572,559,1,1,8166,2608,3300,1518,
+ 8155,8155,3319,2861,2463,2790,3186,4059,8155,3317,
+ 900,3297,3807,3296,8155,7960,7161,7161,7161,7161,
+ 7161,7154,7161,7161,7161,7161,7967,7161,7161,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,7964,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,8155,1,1,1,91,1985,1,927,8330,
+ 7857,546,8155,1,1,8166,1416,8155,1518,8155,
+ 8155,3319,2861,2463,2790,3186,4059,8155,3317,900,
+ 3297,3807,3296,8155,7960,7161,7161,7161,7161,7161,
+ 7154,7161,7161,7161,7161,7967,7161,7161,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,7964,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 8669,1,1,1,133,1985,1,927,8330,8558,
+ 8155,8155,1,1,8166,8155,3553,1518,8155,8155,
+ 3319,2861,2463,2790,3186,4059,8155,3317,900,3297,
+ 3807,3296,8155,7960,7161,7161,7161,7161,7161,7154,
+ 7161,7161,7161,7161,7967,7161,7161,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,7964,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,8155,
+ 1,1,1,137,1985,1,927,8330,359,237,
+ 8155,1,1,8166,7976,3549,1518,8155,8155,3319,
+ 2861,2463,2790,3186,4059,8155,3317,900,3297,3807,
+ 3296,8155,7960,7161,7161,7161,7161,7161,7154,7161,
+ 7161,7161,7161,7967,7161,7161,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 7964,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,8155,1,
+ 1,1,1,1985,1,927,8330,7017,3360,8513,
+ 1,1,8166,8155,8155,1518,3449,8155,3319,2861,
+ 2463,2790,3186,4059,8155,3317,900,3297,3807,3296,
+ 8155,7960,7161,7161,7161,7161,7161,7154,7161,7161,
+ 7161,7161,7967,7161,7161,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,7964,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,3361,1,1,
+ 1,8155,1985,1,927,8330,2162,39,8155,1,
+ 1,8166,8155,8193,1518,571,8155,3319,2861,2463,
+ 2790,3186,4059,389,3317,900,3297,3807,3296,8155,
+ 7735,7735,7735,7735,7735,7735,7735,7735,7735,7735,
+ 7735,7735,7735,7735,3424,8493,8494,1103,224,38,
+ 7672,7663,7666,7669,782,7280,7274,7277,7153,7660,
+ 4343,2185,7735,7735,7735,7735,7735,7735,7735,7735,
+ 7735,7735,7735,7735,7735,6294,7735,7735,7735,7735,
+ 7735,7289,7286,7283,7307,7295,7313,7292,7304,7271,
+ 7298,7301,7310,7268,7475,446,7726,7726,7726,7726,
+ 7735,7726,7726,7726,7726,7735,7735,7735,7726,7726,
+ 7735,7735,7735,7735,7735,7735,332,7174,7164,7478,
+ 7171,3095,995,1089,976,1000,731,4343,7735,7735,
+ 7735,7735,7735,7735,7735,7735,7735,7735,7735,7735,
+ 7735,7735,7735,7735,7735,7735,7735,7735,7735,7735,
+ 7735,7735,7735,7735,7735,7735,7735,7735,8155,8155,
+ 8155,7735,8155,7860,7860,7860,7860,7860,7860,7860,
+ 7860,7860,7860,7860,7860,7860,7860,8155,39,138,
+ 8155,225,6894,8155,8193,1089,976,1000,7328,7322,
+ 7325,332,332,6588,873,7860,7860,7860,7860,7860,
+ 7860,7860,7860,7860,7860,7860,7860,7860,294,7860,
+ 7860,7860,7860,7860,7337,7334,7331,7355,7343,7361,
+ 7340,7352,7319,7346,7349,7358,7316,1318,447,7997,
+ 7997,7997,7997,7860,7994,7985,7991,7988,7860,7860,
+ 7860,8000,8000,7860,7860,7860,7860,7860,7860,602,
+ 7174,7164,7478,7171,3095,995,1089,976,1000,731,
+ 4343,7860,7860,7860,7860,7860,7860,7860,7860,7860,
+ 7860,7860,7860,7860,7860,7860,7860,7860,7860,7860,
+ 7860,7860,7860,7860,7860,7860,7860,7860,7860,7860,
+ 7860,456,3449,2835,7860,39,7174,7164,7167,7171,
+ 6702,995,1089,976,1000,5948,4343,8155,5856,5879,
+ 8420,8418,8426,8422,8423,8421,8424,1055,8425,8761,
+ 8762,8427,8428,8419,8767,8768,8769,6493,8493,8494,
+ 1103,8411,8415,8409,8416,8412,8388,8414,8413,8410,
+ 8389,8174,5829,5806,8155,5925,5902,1584,1529,1753,
+ 8176,1636,6091,1706,8177,8175,1513,8171,8172,8173,
+ 5505,8555,7675,3051,8556,8557,8155,132,1895,39,
+ 7174,7164,7478,7171,6702,995,1089,976,1000,5948,
+ 4343,3812,5856,5879,8420,8418,8426,8422,8423,8421,
+ 8424,1055,8425,8761,8762,8427,8428,8419,8767,8768,
+ 8769,6493,8493,8494,1103,8411,8415,8409,8416,8412,
+ 8388,8414,8413,8410,8389,8174,5829,5806,303,5925,
+ 5902,1584,1529,1753,8176,1636,6091,1706,8177,8175,
+ 1513,8171,8172,8173,5505,8555,312,3051,8556,8557,
+ 8457,2821,1895,8155,7775,7775,7775,7775,229,7771,
+ 7161,7161,7161,229,229,7779,229,229,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,8155,
+ 740,8155,229,346,7174,7164,7478,7171,4991,995,
+ 1089,976,1000,731,4343,8155,332,332,8155,1,
+ 7768,1,1,1,2502,5229,8155,2528,8569,299,
+ 8155,1363,8155,223,185,229,1089,976,1000,418,
+ 7229,7223,7226,7001,8165,2408,8657,2185,8420,8418,
+ 8426,8422,8423,8421,8424,321,8425,8761,8762,8427,
+ 8428,8419,8767,8768,8769,8155,7238,7235,7232,7256,
+ 7244,7262,7241,7253,7220,7247,7250,7259,7217,1490,
+ 8155,8164,8592,8593,8594,8155,7775,7775,7775,7775,
+ 229,7771,7161,7161,7161,229,229,7957,229,229,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1490,6190,8155,229,310,7195,7183,7187,7191,
+ 3095,7180,7214,7208,7211,731,4343,6234,7657,7657,
+ 118,1,7768,1,1,1,8155,5229,8155,2528,
+ 8569,8155,7490,7481,7484,7487,634,229,7765,8152,
+ 135,417,8155,7762,7756,7759,8155,6917,8657,548,
+ 8704,8777,8780,8776,8782,8783,8781,8778,8159,8779,
+ 8155,7174,7164,7478,7171,8155,8193,5475,5445,8493,
+ 8494,1103,8411,8415,8409,8416,8412,8388,8414,8413,
+ 8410,8389,8705,8155,8592,8593,8594,8155,7161,7161,
+ 7161,7161,229,7161,7154,7161,7161,229,229,7205,
+ 229,229,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,13108,1,1,1,14060,1,13105,
+ 1,1,1,8155,566,309,229,8155,7195,7183,
+ 7187,7191,3095,7180,7214,7208,7211,731,4343,8158,
+ 7657,7657,3512,1,7158,1,1,1,8155,746,
+ 8155,927,8366,605,115,8155,3778,633,8720,7948,
+ 1089,976,1000,219,7945,7939,7942,5760,3150,8155,
+ 8657,8155,8777,8780,8776,8782,8783,8781,8778,2157,
+ 8779,111,8155,8155,8169,8795,8794,8170,460,1,
+ 8493,8494,1103,8411,8415,8409,8416,8412,8388,8414,
+ 8413,8410,8389,3905,8155,7174,7164,7478,7171,2793,
+ 8193,219,8155,7161,7161,7161,7161,229,7161,7154,
+ 7161,7161,229,229,229,229,229,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,13108,1,
+ 1,1,14060,1,13105,1,1,1,226,5737,
+ 5709,229,5971,1061,7729,7388,7382,7385,289,7424,
+ 7424,7424,7424,442,284,1089,976,1000,1,7158,
+ 1,1,1,5994,746,6017,927,8366,134,8155,
+ 8515,7397,7394,7391,7415,7403,7421,7400,7412,7379,
+ 7406,7409,7418,7376,4013,8657,8155,8169,8795,8794,
+ 8170,8155,8155,7195,7183,7187,7191,3095,7180,7214,
+ 7208,7211,731,4343,29,7723,7723,8155,8095,8095,
+ 8095,8095,8095,8095,8095,8095,8095,8095,8095,371,
+ 8095,8095,8155,8155,7678,569,220,8155,7161,7161,
+ 7161,7161,229,7161,7154,7161,7161,229,229,229,
+ 229,229,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,13108,1,1,1,14060,1,13105,
+ 1,1,1,227,2793,7681,229,8155,8155,3549,
+ 7439,7433,7436,299,8169,8795,8794,8170,8155,8095,
+ 1089,976,1000,1,7158,1,1,1,1356,746,
+ 8167,927,8366,847,1749,3390,7448,7445,7442,7466,
+ 7454,7472,7451,7463,7430,7457,7460,7469,7427,47,
+ 8657,8155,7161,7161,7161,7161,229,7161,7154,7161,
+ 7161,229,229,7885,229,229,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,13108,1,1,
+ 1,14060,1,13105,1,1,1,8155,8155,8166,
+ 229,8155,7195,7183,7187,7191,3095,7180,7214,7208,
+ 7211,731,4343,8155,7723,7723,1077,1,7158,1,
+ 1,1,8155,746,8155,927,8366,1,8018,8018,
+ 8018,8018,8155,8015,7214,7208,7211,220,8155,364,
+ 332,332,8155,5343,8657,8155,7161,7161,7161,7161,
+ 229,7161,7154,7161,7161,229,229,7885,229,229,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,13108,1,1,1,14060,1,13105,1,1,
+ 1,4653,8155,2770,229,4382,6515,7029,376,8155,
+ 7174,7164,7478,7171,364,995,8155,517,8775,731,
+ 4343,1,7158,1,1,1,8155,746,1,927,
+ 8366,8777,8780,8776,8782,8783,8781,8778,364,8779,
+ 7854,220,37,7738,7738,7738,7738,8155,8657,8155,
+ 7161,7161,7161,7161,229,7161,7154,7161,7161,229,
+ 229,7885,229,229,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,13108,1,1,1,14060,
+ 1,13105,1,1,1,1173,8155,5267,229,92,
+ 8024,8024,8024,8024,8155,8024,8024,8024,8024,8191,
+ 1,8155,8024,8024,8162,1,7158,1,1,1,
+ 397,746,7684,927,8366,39,390,1089,976,1000,
+ 3627,8193,1089,976,1000,220,157,346,332,332,
+ 8155,4013,8657,8155,7161,7161,7161,7161,229,7161,
+ 7154,7161,7161,229,229,229,229,229,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,13108,
+ 1,1,1,14060,1,13105,1,1,1,590,
+ 8155,8166,229,8155,3400,2209,7505,7499,7502,3372,
+ 1,1490,346,346,1,8155,2411,8155,346,1,
+ 7158,1,1,1,2505,746,8167,927,8366,8161,
+ 37,8155,7514,7511,7508,7532,7520,7538,7517,7529,
+ 7496,7523,7526,7535,7493,8155,8657,8155,7161,7161,
+ 7161,7161,229,7161,7154,7161,7161,229,229,229,
+ 229,229,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,13108,1,1,1,14060,1,13105,
+ 1,1,1,630,8160,8166,229,8191,8612,735,
+ 7903,7897,7900,139,8155,8155,8155,8169,8795,8794,
+ 8170,4168,8155,1,7158,1,1,1,8167,746,
+ 8155,927,8366,8155,8161,451,7912,7909,7906,7930,
+ 7918,7936,7915,7927,7894,7921,7924,7933,7891,8155,
+ 8657,8155,7161,7161,7161,7161,229,7161,7154,7161,
+ 7161,229,229,229,229,229,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,13108,1,1,
+ 1,14060,1,13105,1,1,1,8166,2416,8160,
+ 229,95,8119,8119,8119,8119,39,8116,8107,8113,
+ 8110,4653,8193,852,8122,8122,4096,1,7158,1,
+ 1,1,398,746,363,927,8366,3272,389,8155,
+ 8155,1730,2369,2322,2275,2228,2181,2134,2087,2040,
+ 1989,1942,8161,1464,8657,8155,7161,7161,7161,7161,
+ 229,7161,7154,7161,7161,229,229,229,229,229,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,13108,1,1,1,14060,1,13105,1,1,
+ 1,117,8155,2033,229,1,7195,7183,7187,7191,
+ 7177,7180,3604,8155,5760,7202,7199,8160,1387,8155,
+ 459,1,7158,1,1,1,8155,746,8155,927,
+ 8366,1,7195,7183,7187,7191,3095,7180,7214,7208,
+ 7211,731,4343,8155,349,8592,8593,8594,8657,8155,
+ 7161,7161,7161,7161,229,7161,7154,7161,7161,229,
+ 229,229,229,229,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,13108,1,1,1,14060,
+ 1,13105,1,1,1,116,7732,5535,229,1,
+ 7195,7183,7187,7191,3095,7180,5737,5709,5760,731,
+ 4343,8598,114,2793,7012,1,7158,1,1,1,
+ 1490,746,8155,927,8366,1,7195,7183,7187,7191,
+ 3095,7180,7214,7208,7211,731,4343,8155,14302,13843,
+ 14017,14299,8657,8155,7161,7161,7161,7161,229,7161,
+ 7154,7161,7161,229,229,229,229,229,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,13108,
+ 1,1,1,14060,1,13105,1,1,1,8155,
+ 8155,649,229,1,7195,7183,7187,7191,4991,7180,
+ 5737,5709,8163,731,4343,7970,8155,2793,8155,1,
+ 7158,1,1,1,5994,746,6017,927,8366,48,
+ 7490,7481,7484,7487,8493,8494,1103,1,7174,7164,
+ 7478,7171,6702,995,8155,8155,8657,5948,4343,8159,
+ 3944,5879,8420,8418,8426,8422,8423,8421,8424,2079,
+ 8425,8761,8762,8427,8428,8419,8767,8768,8769,3487,
+ 2033,8155,8155,1608,399,8169,8795,8794,8170,1490,
+ 7973,8155,8155,8174,5829,5806,8162,5925,5902,1584,
+ 1529,1753,8176,1636,6091,1706,8177,8175,1513,8171,
+ 8172,8173,5505,599,7702,7702,7702,7702,8155,604,
+ 1089,976,1000,2303,369,1356,39,39,8155,14302,
+ 13843,14017,14299,8155,7490,7481,7484,7487,1,7195,
+ 7183,7187,7191,6702,7180,8155,8155,1,5948,4343,
+ 8158,5856,5879,7818,7824,7800,7812,7809,7815,7806,
+ 7782,7803,7830,7827,7797,7794,7821,7791,7788,7785,
+ 7833,1,7195,7183,7187,7191,3095,7180,7214,7208,
+ 7211,731,4343,310,8174,5829,5806,8155,5925,5902,
+ 1584,1529,1753,8176,1636,6091,1706,8177,8175,1513,
+ 8171,8172,8173,5505,8155,7174,7164,7478,7171,1796,
+ 995,1895,5971,1061,7863,4343,3765,39,39,8155,
+ 310,518,39,7174,7164,7478,7171,6702,995,2,
+ 523,8161,5948,4343,8159,5783,5879,8420,8418,8426,
+ 8422,8423,8421,8424,2079,8425,8761,8762,8427,8428,
+ 8419,8767,8768,8769,3487,8155,2232,314,2604,8155,
+ 7845,7836,7839,7842,1089,976,1000,8161,8174,5829,
+ 5806,699,5925,5902,1584,1529,1753,8176,1636,6091,
+ 1706,8177,8175,1513,8171,8172,8173,5505,39,7174,
+ 7164,7478,7171,6702,995,1895,8160,1848,5948,4343,
+ 8128,5856,5879,8420,8418,8426,8422,8423,8421,8424,
+ 2079,8425,8761,8762,8427,8428,8419,8767,8768,8769,
+ 3487,8155,8155,8155,8155,8158,8191,8155,8169,8795,
+ 8794,8170,8160,337,8174,5829,5806,2157,5925,5902,
+ 1584,1529,1753,8176,1636,6091,1706,8177,8175,1513,
+ 8171,8172,8173,5505,1,7195,7183,7187,7191,3095,
+ 7180,1895,8155,4013,731,4343,8033,8030,8027,7744,
+ 8155,3867,8,8155,8162,39,7174,7164,7478,7171,
+ 6702,995,8161,286,8149,5948,4343,7741,5856,5879,
+ 8420,8418,8426,8422,8423,8421,8424,2079,8425,8761,
+ 8762,8427,8428,8419,8767,8768,8769,3487,1,7195,
+ 7183,7187,7191,7177,7180,8155,3858,8155,7202,7199,
+ 8165,8174,5829,5806,1,5925,5902,1584,1529,1753,
+ 8176,1636,6091,1706,8177,8175,1513,8171,8172,8173,
+ 5505,293,8169,8795,8794,8170,7879,8160,1895,141,
+ 7174,7164,7478,7171,6702,995,7744,8164,8149,5948,
+ 4343,8440,5856,5879,8420,8418,8426,8422,8423,8421,
+ 8424,2079,8425,8761,8762,8427,8428,8419,8767,8768,
+ 8769,3487,8155,7174,7164,7478,7171,430,995,8155,
+ 7882,3148,731,4343,2397,8174,5829,5806,100,5925,
+ 5902,1584,1529,1753,8176,1636,6091,1706,8177,8175,
+ 1513,8171,8172,8173,5505,8155,8169,8795,8794,8170,
+ 441,8155,1895,510,8155,731,4343,8155,39,39,
+ 1,7174,7164,7478,7171,6702,995,337,508,8161,
+ 5948,4343,292,5856,5879,8420,8418,8426,8422,8423,
+ 8421,8424,2079,8425,8761,8762,8427,8428,8419,8767,
+ 8768,8769,3487,36,8071,8062,8065,8068,75,3974,
+ 8493,8494,1103,7717,8074,8155,8174,5829,5806,1,
+ 5925,5902,1584,1529,1753,8176,1636,6091,1706,8177,
+ 8175,1513,8171,8172,8173,5505,292,1532,1532,1532,
+ 1532,7879,319,1895,8160,7083,4124,7687,7038,39,
+ 39,554,7174,7164,7478,7171,6702,995,7708,7705,
+ 12753,5948,4343,7050,5856,5879,8420,8418,8426,8422,
+ 8423,8421,8424,2079,8425,8761,8762,8427,8428,8419,
+ 8767,8768,8769,3487,7720,7882,3148,8155,8155,8592,
+ 8593,8594,2585,8155,126,348,113,8174,5829,5806,
+ 3615,5925,5902,1584,1529,1753,8176,1636,6091,1706,
+ 8177,8175,1513,8171,8172,8173,5505,407,1490,602,
+ 120,8155,8155,8155,1895,7711,7747,7753,7750,7951,
+ 39,39,1,7195,7183,7187,7191,6702,7180,136,
+ 7714,8155,5948,4343,8155,5856,5879,7818,7824,7800,
+ 7812,7809,7815,7806,7782,7803,7830,7827,7797,7794,
+ 7821,7791,7788,7785,7833,4959,7954,5475,5445,8155,
+ 4189,1490,422,119,1168,2652,99,7888,8174,5829,
+ 5806,8161,5925,5902,1584,1529,1753,8176,1636,6091,
+ 1706,8177,8175,1513,8171,8172,8173,5505,5994,593,
+ 6017,4891,4859,4387,2699,1895,1089,976,1000,4827,
+ 3223,39,39,39,7174,7164,7478,7171,6702,995,
+ 5475,5445,2981,5948,4343,7741,5856,5879,8420,8418,
+ 8426,8422,8423,8421,8424,2079,8425,8761,8762,8427,
+ 8428,8419,8767,8768,8769,3487,8160,594,8155,8155,
+ 8155,3512,8104,8155,1089,976,1000,2929,112,8174,
+ 5829,5806,8155,5925,5902,1584,1529,1753,8176,1636,
+ 6091,1706,8177,8175,1513,8171,8172,8173,5505,8155,
+ 8155,8155,8155,8155,2491,2915,1895,39,7174,7164,
+ 7478,7171,6702,995,7744,8165,8155,5948,4343,8159,
+ 5856,5879,8420,8418,8426,8422,8423,8421,8424,2079,
+ 8425,8761,8762,8427,8428,8419,8767,8768,8769,3487,
+ 396,7373,7373,7373,7373,8155,284,7364,7370,7367,
+ 2887,4317,8164,8174,5829,5806,8155,5925,5902,1584,
+ 1529,1753,8176,1636,6091,1706,8177,8175,1513,8171,
+ 8172,8173,5505,39,7174,7164,7478,7171,6702,995,
+ 5994,3905,6017,5948,4343,8159,5856,5879,8420,8418,
+ 8426,8422,8423,8421,8424,2079,8425,8761,8762,8427,
+ 8428,8419,8767,8768,8769,3487,1,284,1,8155,
+ 8158,1,37,7738,7738,7738,7738,73,161,8174,
+ 5829,5806,7738,5925,5902,1584,1529,1753,8176,1636,
+ 6091,1706,8177,8175,1513,8171,8172,8173,5505,39,
+ 7174,7164,7478,7171,6702,995,8155,8155,8155,5948,
+ 4343,3732,5856,5879,8420,8418,8426,8422,8423,8421,
+ 8424,2079,8425,8761,8762,8427,8428,8419,8767,8768,
+ 8769,3487,1,397,100,727,8158,428,781,2298,
+ 1089,976,1000,161,163,8174,5829,5806,8125,5925,
+ 5902,1584,1529,1753,8176,1636,6091,1706,8177,8175,
+ 1513,8171,8172,8173,5505,8155,39,7174,7164,7478,
+ 7171,6702,995,103,8155,2556,5948,4343,8101,5856,
+ 5879,8420,8418,8426,8422,8423,8421,8424,2079,8425,
+ 8761,8762,8427,8428,8419,8767,8768,8769,3487,600,
+ 7699,7699,7699,7699,2033,604,7690,7696,7693,163,
+ 8074,8155,8174,5829,5806,4122,5925,5902,1584,1529,
+ 1753,8176,1636,6091,1706,8177,8175,1513,8171,8172,
+ 8173,5505,39,7174,7164,7478,7171,6702,995,1895,
+ 8155,8155,5948,4343,8155,5856,5879,8420,8418,8426,
+ 8422,8423,8421,8424,2079,8425,8761,8762,8427,8428,
+ 8419,8767,8768,8769,3487,8155,604,8155,37,7738,
+ 7738,7738,7738,8155,8155,1089,976,1000,8174,5829,
+ 5806,332,5925,5902,1584,1529,1753,8176,1636,6091,
+ 1706,8177,8175,1513,8171,8172,8173,5505,39,7174,
+ 7164,7478,7171,4156,995,1895,8155,8155,5948,4343,
+ 8155,5856,5879,8420,8418,8426,8422,8423,8421,8424,
+ 2079,8425,8761,8762,8427,8428,8419,8767,8768,8769,
+ 3487,8155,8155,8155,2,8191,1238,43,7851,7851,
+ 7851,7851,279,8155,8174,5829,5806,8146,5925,5902,
+ 1584,1529,1753,8176,1636,6091,1706,8177,8175,1513,
+ 8171,8172,8173,5505,39,7174,7164,7478,7171,6602,
+ 995,103,8155,8155,5948,4343,8101,5856,5879,8420,
+ 8418,8426,8422,8423,8421,8424,2079,8425,8761,8762,
+ 8427,8428,8419,8767,8768,8769,3487,1,7195,7183,
+ 7187,7191,4991,7180,7848,37,8155,731,4343,8155,
+ 8174,5829,5806,8155,5925,5902,1584,1529,1753,8176,
+ 1636,6091,1706,8177,8175,1513,8171,8172,8173,5505,
+ 39,7174,7164,7478,7171,6635,995,8155,8155,8155,
+ 5948,4343,6915,5856,5879,8420,8418,8426,8422,8423,
+ 8421,8424,2079,8425,8761,8762,8427,8428,8419,8767,
+ 8768,8769,3487,8155,8155,7174,7164,7478,7171,8155,
+ 995,8155,8155,1490,7863,4343,8174,5829,5806,8155,
+ 5925,5902,1584,1529,1753,8176,1636,6091,1706,8177,
+ 8175,1513,8171,8172,8173,5505,39,7174,7164,7478,
+ 7171,6672,995,8155,8155,8155,5948,4343,8155,5856,
+ 5879,8420,8418,8426,8422,8423,8421,8424,2079,8425,
+ 8761,8762,8427,8428,8419,8767,8768,8769,3487,8155,
+ 8155,1245,8155,13371,13371,13371,13371,45,8006,8006,
+ 8006,8006,8174,5829,5806,8155,5925,5902,1584,1529,
+ 1753,8176,1636,6091,1706,8177,8175,1513,8171,8172,
+ 8173,5505,39,7174,7164,7478,7171,6702,995,8155,
+ 8155,8155,5948,4343,8155,5856,5879,8420,8418,8426,
+ 8422,8423,8421,8424,2079,8425,8761,8762,8427,8428,
+ 8419,8767,8768,8769,3487,1,8155,8155,8155,8191,
+ 3627,8155,8155,8155,8003,8155,8155,7970,8174,5829,
+ 5806,8155,5925,5902,1584,1529,1753,8176,1636,6091,
+ 1706,8177,8175,1513,8171,8172,8173,5505,39,7174,
+ 7164,7478,7171,6733,995,8155,8155,8155,5948,4343,
+ 8155,5856,5879,8420,8418,8426,8422,8423,8421,8424,
+ 2079,8425,8761,8762,8427,8428,8419,8767,8768,8769,
+ 3487,37,7738,7738,7738,7738,8155,8058,8046,8050,
+ 8054,1490,7973,8155,8174,5829,5806,8155,5925,5902,
+ 1584,1529,1753,8176,1636,6091,1706,8177,8175,1513,
+ 8171,8172,8173,5505,39,7174,7164,7478,7171,6702,
+ 995,8155,8155,8155,5948,4343,8155,5856,5879,8420,
+ 8418,8426,8422,8423,8421,8424,2079,8425,8761,8762,
+ 8427,8428,8419,8767,8768,8769,3487,8155,2012,8155,
+ 397,1,8155,8191,8155,8155,3627,1089,976,1000,
+ 8174,5829,5806,615,5925,5902,1584,1529,1753,8176,
+ 1636,6091,1706,8177,8175,1513,8171,8172,8173,5505,
+ 8155,7174,7164,7167,7171,332,8193,1089,976,1000,
+ 8155,8155,7866,7872,7869,8420,8418,8426,8422,8423,
+ 8421,8424,791,8425,8761,8762,8427,8428,8419,8767,
+ 8768,8769,1468,8493,8494,1103,8411,8415,8409,8416,
+ 8412,8388,8414,8413,8410,8389,48,1490,615,615,
+ 8155,8155,8795,8155,615,1,241,7650,7637,7641,
+ 7646,8155,7654,7553,7547,7550,8555,8165,3051,8556,
+ 8557,7622,7628,7604,7616,7613,7619,7610,791,7607,
+ 7634,7631,7601,7598,7625,7595,7592,7589,1468,7562,
+ 7559,7556,7580,7568,7586,7565,7577,7544,7571,7574,
+ 7583,7541,332,8155,8164,8155,8155,8155,8155,1089,
+ 976,1000,8155,7174,7164,7478,7171,8795,8193,1089,
+ 976,1000,8555,8155,3051,8556,8557,8420,8418,8426,
+ 8422,8423,8421,8424,791,8425,8761,8762,8427,8428,
+ 8419,8767,8768,8769,1468,8493,8494,1103,8411,8415,
+ 8409,8416,8412,8388,8414,8413,8410,8389,595,8155,
+ 128,8155,127,8155,8155,1089,976,1000,241,7650,
+ 7637,7875,7646,8155,7654,7553,7547,7550,8555,8155,
+ 3051,8556,8557,7622,7628,7604,7616,7613,7619,7610,
+ 791,7607,7634,7631,7601,7598,7625,7595,7592,7589,
+ 1468,7562,7559,7556,7580,7568,7586,7565,7577,7544,
+ 7571,7574,7583,7541,1,512,8155,8155,8155,1741,
+ 48,8155,8155,8155,8626,8155,8794,8620,8624,8163,
+ 8155,4959,8155,4959,8555,8165,3051,8556,8557,8131,
+ 8139,8135,601,8036,8143,8039,419,1,2173,1089,
+ 976,1000,8155,1089,976,1000,8155,8155,2746,191,
+ 8155,8618,8619,1,8649,8650,8627,4891,4859,4891,
+ 4859,8155,8164,8155,8155,4827,3223,4827,3223,597,
+ 8155,8143,8155,8155,8155,8629,8077,8083,8080,8155,
+ 1775,8794,8651,2044,2083,1314,191,8630,596,8628,
+ 1224,4258,8155,8162,8155,8086,8092,8089,8155,790,
+ 8143,8155,8155,8640,8639,8155,8652,8155,8155,8621,
+ 8622,8645,8646,8643,8644,8623,8625,8647,8648,8155,
+ 790,8653,8155,8633,8634,8635,8631,8632,8641,8642,
+ 8637,8636,8638,29,389,389,389,389,7982,389,
+ 389,389,389,389,389,7982,7982,7982,8155,8155,
+ 32,390,390,390,390,7979,390,390,390,390,
+ 390,390,7979,7979,7979,8155,389,389,389,389,
+ 389,389,389,389,389,389,389,389,389,8155,
+ 8155,8155,7982,390,390,390,390,390,390,390,
+ 390,390,390,390,390,390,8155,8155,420,7979,
+ 8155,8155,8155,8155,7681,1089,976,1000,8155,7982,
+ 7982,577,588,588,588,588,588,588,588,588,
+ 588,588,588,8021,8021,8021,7979,7979,578,589,
+ 589,589,589,589,589,589,589,589,589,589,
+ 8098,8098,8098,8155,588,588,588,588,588,588,
+ 588,588,588,588,588,588,588,8155,8155,8155,
+ 8021,589,589,589,589,589,589,589,589,589,
+ 589,589,589,589,1,8155,8155,8098,8155,1,
+ 7195,7183,7187,7191,4991,7180,364,588,8021,731,
+ 4343,368,48,8155,1,48,1,1,8170,3627,
+ 8155,8169,8155,8155,589,8098,342,8155,530,8161,
+ 8155,8155,8155,8155,8155,8155,8155,8155,8155,8155,
+ 8155,8155,8155,8155,8155,8155,8155,8155,8155,8155,
+ 8155,8155,8155,8155,8155,8155,8155,8155,8155,8155,
+ 8155,8155,8155,8155,8155,8155,8155,8155,8155,8155,
+ 8155,364,8155,8155,8155,1490,368,368,8155,8155,
+ 8155,8155,368,8170,1702,8155,8169,8155,8155,8155,
+ 1490,342,342,530,8160,364,8155,342,8155,8155,
+ 368
+ };
+ };
+ public final static char termAction[] = TermAction.termAction;
+ public final int termAction(int index) { return termAction[index]; }
+
+ public interface Asb {
+ public final static char asb[] = {0,
+ 1471,1,175,1460,63,1181,1512,577,577,577,
+ 1413,60,784,1470,175,183,1133,1352,649,99,
+ 1352,1352,1352,75,115,251,115,781,115,677,
+ 115,115,183,184,115,922,1299,328,1512,175,
+ 642,115,115,1141,184,115,184,1352,254,523,
+ 523,1039,523,3,251,397,321,397,767,866,
+ 178,387,387,175,851,184,1134,771,962,1350,
+ 514,1411,518,783,572,781,247,183,677,579,
+ 184,184,573,1223,922,922,922,922,922,922,
+ 922,922,922,922,1068,644,922,1352,254,254,
+ 254,254,183,1352,115,662,662,768,767,175,
+ 175,184,1022,515,579,579,115,1181,384,515,
+ 115,115,254,115,184,52,1252,534,523,523,
+ 522,522,251,183,175,921,1088,175,115,184,
+ 257,851,851,184,1134,669,651,668,1528,189,
+ 514,1349,515,518,184,396,1354,657,573,251,
+ 688,184,579,573,184,48,1068,1068,1068,1068,
+ 515,515,515,882,1551,1551,901,1362,1180,52,
+ 115,901,1181,1181,1181,1181,184,465,66,66,
+ 465,921,662,251,183,48,115,115,579,579,
+ 178,93,384,384,1134,1252,534,522,522,522,
+ 184,515,921,693,251,725,730,727,734,732,
+ 741,739,743,742,744,455,745,175,1523,918,
+ 1295,384,261,758,851,768,768,771,768,310,
+ 1411,1528,1528,1564,1563,513,693,184,518,453,
+ 784,254,1132,1051,518,396,658,662,396,662,
+ 573,688,688,184,1039,1038,184,1223,184,515,
+ 515,515,515,883,178,1248,1238,1237,666,1307,
+ 121,121,183,644,922,384,1180,921,515,515,
+ 1039,1039,1039,1039,573,515,1133,1135,1133,515,
+ 384,251,673,184,1352,1526,115,1039,1039,115,
+ 515,1242,1225,1241,1038,254,313,313,693,693,
+ 522,184,693,1088,922,922,922,922,922,922,
+ 922,922,922,922,922,922,922,922,922,922,
+ 922,922,922,922,922,921,921,921,921,921,
+ 921,921,921,921,921,921,403,922,1295,384,
+ 333,256,187,515,189,515,464,515,515,52,
+ 1053,662,662,662,662,184,688,692,776,692,
+ 901,48,922,882,453,922,453,768,881,1352,
+ 1352,1352,883,1352,184,972,768,768,184,251,
+ 1551,515,1250,1252,921,184,52,125,1068,922,
+ 1181,115,115,515,1352,1352,1352,1352,184,184,
+ 184,1135,52,839,183,184,465,115,115,841,
+ 921,1239,1239,1246,178,794,534,523,534,1037,
+ 1037,693,768,1088,727,727,725,725,725,732,
+ 732,732,732,732,732,730,730,739,734,734,
+ 742,741,743,453,453,744,921,921,384,261,
+ 515,1564,1134,767,922,453,852,860,764,1053,
+ 662,662,1041,692,693,922,184,872,883,453,
+ 1025,883,901,901,899,1028,901,768,768,858,
+ 839,515,1252,573,1134,515,515,115,178,921,
+ 921,921,921,1352,1352,1223,184,1134,839,515,
+ 115,696,841,921,921,1250,1225,534,1181,1181,
+ 692,921,921,384,384,464,768,1053,922,922,
+ 764,764,1053,1053,673,1218,1042,184,693,883,
+ 922,883,515,175,901,515,899,1512,1352,515,
+ 839,1030,515,184,125,115,115,115,921,115,
+ 515,515,515,515,465,465,1139,115,1223,873,
+ 1352,115,844,1038,195,200,764,764,1041,184,
+ 183,183,184,883,858,883,768,1512,921,883,
+ 880,1030,1030,158,115,465,922,384,515,515,
+ 1139,794,844,837,195,195,184,184,184,921,
+ 881,465,768,515,1033,1030,115,515,384,515,
+ 515,172,1352,313,184,184,883,515,768,1033,
+ 1033,251,251,174,1253,1037,883,1033,1564,1133,
+ 1181
+ };
+ };
+ public final static char asb[] = Asb.asb;
+ public final int asb(int index) { return asb[index]; }
+
+ public interface Asr {
+ public final static char asr[] = {0,
+ 134,0,24,25,35,38,15,16,66,33,
+ 26,68,39,93,40,17,41,42,18,19,
+ 43,72,44,20,21,36,69,45,22,70,
+ 23,74,37,27,34,28,5,14,6,49,
+ 32,29,30,31,75,81,12,13,8,9,
+ 7,11,10,67,1,4,3,2,0,46,
+ 67,0,5,34,0,11,6,67,10,1,
+ 4,3,2,0,53,79,54,55,80,56,
+ 57,58,59,73,60,61,62,63,64,46,
+ 52,65,32,22,68,66,69,70,16,28,
+ 15,20,18,19,21,23,17,26,27,29,
+ 30,31,24,25,84,82,101,103,86,81,
+ 132,117,50,51,104,102,47,48,105,106,
+ 99,100,71,83,107,108,109,110,111,112,
+ 113,114,118,85,119,120,121,122,123,124,
+ 125,126,127,128,78,115,116,35,38,33,
+ 39,40,41,42,43,44,36,45,37,34,
+ 49,12,77,76,11,5,10,14,13,8,
+ 9,7,6,4,3,2,1,0,12,78,
+ 77,1,33,0,12,78,86,49,0,79,
+ 80,73,50,51,14,13,47,48,10,52,
+ 57,65,32,5,6,11,62,63,64,46,
+ 60,55,59,24,25,16,28,15,20,18,
+ 19,21,23,17,26,27,29,30,31,22,
+ 54,58,56,53,61,86,1,4,3,2,
+ 81,12,0,71,0,73,35,33,34,36,
+ 79,80,103,12,50,51,14,47,48,10,
+ 52,57,65,32,5,6,11,62,63,64,
+ 46,60,55,59,24,25,16,28,15,20,
+ 18,19,21,23,17,26,27,29,30,31,
+ 22,54,58,56,53,61,4,3,2,1,
+ 13,0,83,85,78,1,4,3,2,0,
+ 7,12,81,8,9,85,0,12,82,81,
+ 84,0,79,80,5,22,54,58,56,53,
+ 61,16,28,15,20,18,19,21,23,17,
+ 26,27,29,30,31,24,25,62,63,64,
+ 46,60,55,59,10,11,6,50,51,14,
+ 13,47,48,52,57,65,32,73,36,1,
+ 4,3,2,103,12,0,84,5,83,101,
+ 85,78,77,49,76,82,12,81,8,9,
+ 7,0,24,25,15,16,53,79,26,54,
+ 55,17,18,19,80,11,56,20,21,57,
+ 58,59,73,60,61,22,23,27,28,62,
+ 63,64,46,1,4,5,50,51,14,13,
+ 47,48,10,52,6,32,65,3,2,29,
+ 30,31,82,0,7,83,82,101,103,86,
+ 49,8,9,78,24,25,15,16,53,79,
+ 26,54,55,17,18,19,80,11,56,20,
+ 21,57,58,59,73,60,61,22,23,27,
+ 28,62,63,64,4,5,50,51,14,13,
+ 47,48,10,52,6,32,65,3,2,29,
+ 30,31,46,1,77,12,0,129,130,131,
+ 82,86,11,12,5,14,13,10,49,75,
+ 72,93,74,24,25,35,7,38,15,16,
+ 66,33,26,68,39,40,17,41,42,18,
+ 19,43,44,20,21,36,69,45,22,70,
+ 23,37,27,34,28,32,8,9,29,30,
+ 31,6,1,4,3,2,67,0,24,25,
+ 35,7,38,15,16,66,33,53,26,54,
+ 68,39,40,55,17,41,42,18,19,43,
+ 44,56,20,21,57,36,58,69,59,73,
+ 60,45,61,22,70,23,37,27,34,28,
+ 62,63,64,46,5,50,51,14,13,47,
+ 48,52,83,6,32,65,8,9,29,30,
+ 31,11,10,1,4,2,80,79,3,0,
+ 12,82,78,77,5,0,6,8,9,7,
+ 71,12,82,81,0,103,49,78,77,12,
+ 82,0,12,81,78,0,6,12,81,8,
+ 9,7,1,4,3,2,0,1,4,3,
+ 2,78,12,86,0,38,39,40,41,42,
+ 43,11,44,36,73,84,45,37,1,4,
+ 76,5,132,117,50,51,10,6,81,3,
+ 2,33,34,35,104,102,13,105,106,47,
+ 48,100,99,71,107,108,115,116,109,110,
+ 14,111,112,113,83,77,85,119,120,121,
+ 122,123,124,125,126,127,128,82,101,103,
+ 86,114,118,8,9,7,78,49,12,0,
+ 12,82,77,46,0,12,78,86,85,0,
+ 6,67,82,12,81,8,9,7,1,4,
+ 3,2,0,24,25,35,7,38,15,16,
+ 33,26,68,39,40,17,41,42,18,19,
+ 43,44,20,21,36,69,45,22,70,23,
+ 37,27,34,28,1,4,6,32,8,9,
+ 3,2,29,30,31,101,66,0,133,0,
+ 35,33,34,73,84,83,82,101,77,81,
+ 5,7,12,78,49,8,9,85,0,82,
+ 7,76,8,9,71,12,78,49,85,5,
+ 0,77,93,129,130,131,67,82,134,133,
+ 135,86,75,84,74,72,88,90,97,95,
+ 87,92,94,96,98,81,89,91,49,12,
+ 68,66,69,70,38,44,36,40,43,42,
+ 37,39,7,9,8,41,45,35,33,34,
+ 73,79,80,22,54,58,56,53,61,28,
+ 26,27,29,30,31,24,25,62,63,64,
+ 46,60,55,59,10,11,6,5,50,51,
+ 14,13,47,48,52,57,65,32,1,4,
+ 3,2,17,15,21,23,16,20,18,19,
+ 0,24,25,15,16,53,79,26,54,55,
+ 17,18,19,80,11,56,20,21,57,58,
+ 59,73,60,61,22,23,27,28,62,63,
+ 64,46,1,4,5,50,51,47,48,10,
+ 52,6,32,65,3,2,29,30,31,49,
+ 12,13,14,0,82,101,0,87,0,35,
+ 33,34,73,12,101,77,85,78,83,0,
+ 37,1,4,6,3,2,129,130,131,0,
+ 49,12,5,11,10,82,14,13,6,1,
+ 4,3,2,8,9,7,0,35,7,38,
+ 66,33,68,39,40,41,42,43,44,36,
+ 69,45,70,37,34,8,9,79,80,73,
+ 50,51,14,13,47,48,52,57,65,32,
+ 5,62,63,64,46,60,55,59,24,25,
+ 16,28,15,20,18,19,21,23,17,26,
+ 27,29,30,31,54,58,56,53,61,81,
+ 12,22,6,11,1,4,3,2,10,0,
+ 80,79,47,48,13,105,106,111,14,112,
+ 10,52,85,71,83,122,123,119,120,121,
+ 127,126,128,100,99,124,125,109,110,107,
+ 108,113,114,50,51,78,102,117,76,5,
+ 32,22,68,66,69,70,24,25,16,28,
+ 15,20,18,19,21,23,17,26,27,29,
+ 30,31,38,44,36,40,43,42,39,33,
+ 34,35,7,9,8,41,45,1,4,3,
+ 2,37,6,0,7,14,13,8,9,11,
+ 10,6,1,4,3,2,5,76,83,85,
+ 78,12,77,101,0,10,11,5,76,13,
+ 14,101,24,25,7,38,15,16,66,26,
+ 68,39,40,17,41,42,18,19,43,44,
+ 20,21,36,69,45,22,70,23,37,27,
+ 28,1,4,6,32,8,9,3,2,29,
+ 30,31,77,12,33,34,35,0,83,78,
+ 32,22,68,66,69,70,24,25,35,7,
+ 38,15,16,33,26,39,40,17,41,42,
+ 18,19,43,11,44,20,21,36,45,23,
+ 37,27,34,28,4,76,14,13,10,6,
+ 49,8,9,3,2,29,30,31,1,77,
+ 12,5,0,6,12,82,81,8,9,7,
+ 0,79,80,50,51,14,13,47,48,10,
+ 52,57,65,32,5,6,11,62,63,64,
+ 60,55,59,24,25,16,28,15,20,18,
+ 19,21,23,17,26,27,29,30,31,22,
+ 54,58,56,53,61,76,1,4,3,2,
+ 46,0,33,26,68,39,17,41,18,19,
+ 43,44,20,21,69,45,70,23,37,27,
+ 34,28,66,16,15,32,38,35,25,24,
+ 29,30,31,12,5,14,13,49,74,93,
+ 40,36,42,75,71,8,9,7,67,11,
+ 1,4,10,6,3,2,22,72,0,86,
+ 24,25,35,38,15,16,66,33,26,68,
+ 39,17,41,18,19,43,44,20,21,69,
+ 45,22,70,23,37,27,34,28,32,29,
+ 30,31,134,75,72,40,36,42,93,74,
+ 67,12,14,49,10,11,1,4,3,2,
+ 6,5,8,9,7,13,0,11,10,17,
+ 15,21,23,16,20,18,19,38,44,36,
+ 40,43,42,37,39,33,34,35,41,45,
+ 83,7,1,4,14,13,6,8,9,3,
+ 2,76,5,77,12,78,0
+ };
+ };
+ public final static char asr[] = Asr.asr;
+ public final int asr(int index) { return asr[index]; }
+
+ public interface Nasb {
+ public final static char nasb[] = {0,
+ 253,13,45,36,34,5,218,13,13,13,
+ 290,13,25,290,147,251,251,13,13,266,
+ 13,13,13,13,267,196,267,153,267,153,
+ 267,13,11,198,267,74,259,45,146,246,
+ 182,13,13,239,287,13,198,13,13,290,
+ 290,13,290,195,196,153,13,170,203,32,
+ 305,110,110,164,153,236,236,155,14,325,
+ 119,13,45,157,251,170,55,251,170,45,
+ 198,12,13,13,74,74,74,74,74,74,
+ 74,74,74,74,229,198,283,13,13,13,
+ 13,13,251,13,13,45,23,203,13,178,
+ 164,198,13,325,45,45,58,5,92,325,
+ 13,13,13,13,12,108,45,45,290,290,
+ 45,45,196,251,147,141,72,178,170,198,
+ 86,153,170,270,182,325,13,13,309,63,
+ 122,13,325,296,158,153,153,13,236,196,
+ 45,236,38,116,158,172,229,229,229,229,
+ 325,325,325,16,187,187,1,74,47,108,
+ 13,231,232,232,232,232,198,103,49,49,
+ 103,210,23,161,28,311,153,153,38,38,
+ 305,259,92,92,182,274,274,253,253,45,
+ 236,325,74,45,196,13,13,13,13,13,
+ 13,13,13,13,13,74,13,165,153,40,
+ 19,92,87,13,170,203,203,155,203,13,
+ 155,267,309,325,13,325,17,198,203,13,
+ 269,13,36,217,296,153,153,45,170,45,
+ 116,45,288,12,13,13,158,13,12,325,
+ 325,325,325,191,305,186,110,110,13,13,
+ 13,13,11,198,74,92,233,141,325,325,
+ 13,13,13,13,107,325,181,198,181,325,
+ 92,161,13,236,13,13,45,13,13,279,
+ 325,13,244,13,13,13,82,82,17,17,
+ 253,270,17,45,74,74,74,74,74,74,
+ 74,74,74,74,74,74,74,74,74,74,
+ 74,74,74,74,74,74,74,74,74,74,
+ 74,74,74,74,74,74,112,74,19,92,
+ 87,80,13,325,63,325,74,325,325,108,
+ 146,45,45,61,61,158,288,97,13,13,
+ 38,172,74,205,13,131,13,203,13,13,
+ 13,13,206,13,288,201,203,203,288,94,
+ 277,325,303,45,74,198,108,13,229,74,
+ 232,45,128,325,13,13,13,13,158,12,
+ 198,138,108,45,28,12,103,153,80,45,
+ 74,13,13,243,305,274,274,290,45,13,
+ 13,17,203,72,13,13,13,13,13,13,
+ 13,13,13,13,13,13,13,13,13,13,
+ 13,13,13,13,13,13,74,74,92,87,
+ 325,325,182,203,74,13,21,13,153,164,
+ 61,61,213,97,17,74,288,13,206,13,
+ 13,206,318,318,272,13,318,203,203,13,
+ 45,325,274,106,158,325,325,144,279,210,
+ 210,210,210,13,13,13,287,158,101,325,
+ 45,80,80,74,74,303,176,274,232,232,
+ 17,74,74,92,92,74,203,147,74,74,
+ 170,153,164,13,13,251,84,236,17,206,
+ 74,206,325,246,1,325,314,45,13,325,
+ 101,45,325,158,13,45,69,13,210,279,
+ 325,325,325,325,103,103,139,13,13,99,
+ 13,80,45,13,67,71,153,170,225,236,
+ 251,251,12,206,13,206,203,147,210,206,
+ 99,80,45,13,144,103,74,92,325,325,
+ 139,233,65,13,67,13,12,236,236,74,
+ 13,125,203,325,45,80,69,325,92,325,
+ 325,45,13,82,12,12,206,325,203,65,
+ 45,94,94,244,322,13,206,65,325,181,
+ 232
+ };
+ };
+ public final static char nasb[] = Nasb.nasb;
+ public final int nasb(int index) { return nasb[index]; }
+
+ public interface Nasr {
+ public final static char nasr[] = {0,
+ 3,13,10,9,106,142,124,111,123,122,
+ 5,2,0,160,0,4,96,0,197,0,
+ 215,0,177,0,43,1,0,187,5,186,
+ 0,208,0,226,0,175,0,50,39,13,
+ 2,9,10,5,4,0,199,0,5,2,
+ 9,10,164,0,48,1,0,4,219,0,
+ 135,0,190,0,149,0,180,0,166,0,
+ 96,153,48,13,2,9,10,5,0,60,
+ 0,133,0,217,0,4,5,10,9,2,
+ 13,72,0,48,64,0,172,0,141,0,
+ 179,0,4,105,0,2,143,84,0,95,
+ 0,4,47,143,0,2,84,0,225,32,
+ 0,32,192,0,4,202,0,4,201,0,
+ 13,2,9,10,5,228,0,2,144,0,
+ 4,42,0,168,0,99,71,5,2,9,
+ 10,4,43,0,159,0,63,2,3,0,
+ 48,178,0,4,5,10,9,2,71,23,
+ 0,84,163,162,0,102,101,43,71,74,
+ 5,10,9,2,0,32,101,102,4,0,
+ 39,53,47,203,4,48,0,2,63,0,
+ 4,47,49,0,96,48,53,39,85,4,
+ 47,0,5,117,216,0,49,5,2,9,
+ 10,4,176,0,5,117,183,0,48,64,
+ 47,39,4,50,0,2,73,0,4,50,
+ 220,0,32,102,101,71,2,9,10,4,
+ 5,0,120,82,53,4,39,0,2,5,
+ 111,107,108,109,116,13,76,0,43,126,
+ 0,47,205,28,4,0,102,101,43,5,
+ 74,0,5,10,9,13,3,1,0,4,
+ 39,53,82,92,0,4,53,82,117,51,
+ 5,0,28,4,5,43,99,0,106,0,
+ 43,84,0,50,4,204,0,4,50,119,
+ 0,50,39,4,32,0
+ };
+ };
+ public final static char nasr[] = Nasr.nasr;
+ public final int nasr(int index) { return nasr[index]; }
+
+ public interface TerminalIndex {
+ public final static char terminalIndex[] = {0,
+ 118,132,131,119,2,31,51,129,130,13,
+ 84,120,10,9,53,57,73,79,80,91,
+ 92,105,107,48,49,65,110,112,133,134,
+ 135,127,59,111,50,94,109,52,69,71,
+ 75,78,81,88,103,117,11,12,125,7,
+ 8,14,60,66,72,89,93,95,99,102,
+ 104,114,115,116,128,58,98,68,96,106,
+ 19,82,100,108,136,1,123,44,63,83,
+ 126,30,20,101,33,124,113,54,55,61,
+ 62,64,70,74,76,77,90,97,17,18,
+ 32,6,122,4,15,16,21,22,23,24,
+ 25,26,27,28,45,46,5,29,34,35,
+ 36,37,38,39,40,41,42,43,85,86,
+ 87,3,56,137,67,121
+ };
+ };
+ public final static char terminalIndex[] = TerminalIndex.terminalIndex;
+ public final int terminalIndex(int index) { return terminalIndex[index]; }
+
+ public interface NonterminalIndex {
+ public final static char nonterminalIndex[] = {0,
+ 143,148,149,0,0,147,0,0,242,248,
+ 146,0,156,0,145,0,0,155,161,0,
+ 0,162,257,0,0,0,171,193,172,173,
+ 174,139,175,176,177,178,179,180,266,181,
+ 0,164,258,154,182,0,144,142,141,165,
+ 190,0,0,151,0,0,0,0,0,200,
+ 0,0,150,185,0,217,0,158,0,214,
+ 218,138,0,168,188,199,0,0,0,0,
+ 0,0,0,0,184,0,0,0,0,0,
+ 0,191,0,0,219,140,159,170,215,221,
+ 222,223,0,225,0,201,202,203,204,205,
+ 206,0,0,220,232,265,233,0,187,192,
+ 194,195,196,197,198,209,211,0,212,0,
+ 0,224,0,0,0,237,0,239,0,253,
+ 254,264,0,160,183,208,0,210,0,227,
+ 230,0,0,0,251,0,252,0,262,267,
+ 0,152,153,157,0,0,167,169,0,0,
+ 0,0,0,207,0,216,0,228,229,0,
+ 0,234,241,0,245,246,247,250,0,259,
+ 0,261,0,0,268,270,271,0,0,163,
+ 166,0,186,0,189,0,0,213,226,231,
+ 0,0,235,236,238,240,0,243,244,249,
+ 255,256,0,0,260,0,0,263,0,269,
+ 0,0,0,0
+ };
+ };
+ public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
+ public final int nonterminalIndex(int index) { return nonterminalIndex[index]; }
+
+ public interface ScopePrefix {
+ public final static char scopePrefix[] = {
+ 284,446,745,764,435,464,696,712,723,734,
+ 531,1,9,390,404,421,484,154,415,551,
+ 589,292,753,639,19,132,163,183,192,197,
+ 202,255,320,477,492,497,107,269,396,410,
+ 667,139,269,541,497,772,139,342,371,15,
+ 31,43,75,75,99,103,115,126,173,188,
+ 216,502,520,524,607,632,661,688,692,782,
+ 786,790,207,119,207,569,585,598,616,680,
+ 226,226,354,442,598,703,719,730,741,332,
+ 650,55,67,96,168,168,281,347,49,168,
+ 368,387,49,49,168,528,629,636,281,168,
+ 805,37,49,90,220,506,573,613,623,24,
+ 168,235,427,506,235,235,454,560,302,454,
+ 60,60,81,214,81,81,81,81,611,794,
+ 801,60,60,85,363,794,801,177,579,262,
+ 214,363,214,376
+ };
+ };
+ public final static char scopePrefix[] = ScopePrefix.scopePrefix;
+ public final int scopePrefix(int index) { return scopePrefix[index]; }
+
+ public interface ScopeSuffix {
+ public final static char scopeSuffix[] = {
+ 130,260,79,79,260,260,79,79,79,79,
+ 538,7,7,260,35,260,490,160,401,557,
+ 595,298,179,645,7,137,137,137,171,171,
+ 35,260,325,482,482,490,112,274,401,211,
+ 672,150,277,546,759,777,144,336,336,7,
+ 35,47,79,79,79,79,79,130,79,171,
+ 35,482,35,35,260,7,79,79,79,79,
+ 79,7,803,123,211,538,538,538,620,672,
+ 230,244,358,430,602,707,707,707,707,336,
+ 654,58,58,79,171,171,79,79,350,352,
+ 7,79,47,47,352,35,79,7,79,665,
+ 79,40,52,93,223,509,576,93,626,27,
+ 684,230,430,675,238,249,471,563,305,457,
+ 65,73,83,35,512,514,516,518,35,796,
+ 796,62,70,87,365,798,798,179,581,264,
+ 327,358,312,378
+ };
+ };
+ public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
+ public final int scopeSuffix(int index) { return scopeSuffix[index]; }
+
+ public interface ScopeLhs {
+ public final static char scopeLhs[] = {
+ 51,109,18,18,81,109,18,18,18,18,
+ 88,95,95,94,52,81,108,79,58,88,
+ 87,51,18,20,95,3,7,8,183,183,
+ 182,107,51,108,108,110,24,152,59,52,
+ 164,156,152,88,18,18,156,103,65,95,
+ 62,75,116,19,19,189,158,91,186,183,
+ 182,110,206,56,64,168,19,18,18,18,
+ 18,18,12,141,182,88,87,87,41,164,
+ 115,115,74,81,87,18,18,18,18,103,
+ 20,136,129,17,187,183,208,101,114,67,
+ 95,66,176,75,110,89,169,168,199,164,
+ 17,62,75,86,182,110,119,86,22,39,
+ 164,115,81,164,115,115,109,88,51,109,
+ 136,129,142,182,125,124,123,122,83,162,
+ 63,136,129,228,74,162,63,186,119,107,
+ 51,74,51,65
+ };
+ };
+ public final static char scopeLhs[] = ScopeLhs.scopeLhs;
+ public final int scopeLhs(int index) { return scopeLhs[index]; }
+
+ public interface ScopeLa {
+ public final static char scopeLa[] = {
+ 133,86,77,77,86,86,77,77,77,77,
+ 77,103,103,86,49,86,1,83,1,77,
+ 135,81,5,77,103,83,83,83,1,1,
+ 49,86,81,1,1,1,77,86,1,1,
+ 6,83,78,49,1,1,83,77,77,103,
+ 49,1,77,77,77,77,77,133,77,1,
+ 49,1,49,49,86,103,77,77,77,77,
+ 77,103,1,77,1,77,77,77,82,6,
+ 1,1,13,81,77,83,83,83,83,77,
+ 5,8,8,77,1,1,77,77,5,1,
+ 103,77,1,1,1,49,77,103,77,10,
+ 77,1,8,82,1,67,85,82,77,3,
+ 1,1,81,67,1,1,81,87,84,1,
+ 1,1,32,49,1,68,66,66,49,6,
+ 6,1,1,101,14,6,6,5,1,81,
+ 1,13,1,5
+ };
+ };
+ public final static char scopeLa[] = ScopeLa.scopeLa;
+ public final int scopeLa(int index) { return scopeLa[index]; }
+
+ public interface ScopeStateSet {
+ public final static char scopeStateSet[] = {
+ 386,151,234,234,398,151,234,234,234,234,
+ 74,87,87,445,386,398,151,398,433,74,
+ 74,386,234,234,87,158,204,204,21,21,
+ 410,151,386,151,151,151,318,314,433,386,
+ 52,45,314,74,234,234,45,91,126,87,
+ 433,132,151,234,234,60,1,74,49,21,
+ 410,151,43,433,63,13,234,234,234,234,
+ 234,234,208,8,410,74,74,74,274,52,
+ 151,151,370,398,74,234,234,234,234,91,
+ 234,26,143,234,49,21,100,91,93,126,
+ 87,126,148,132,151,74,5,13,55,52,
+ 234,433,132,74,410,151,16,74,239,413,
+ 52,151,398,52,151,151,151,74,386,151,
+ 26,143,153,410,153,153,153,153,31,57,
+ 102,26,143,24,370,57,102,49,16,151,
+ 386,370,386,126
+ };
+ };
+ public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet;
+ public final int scopeStateSet(int index) { return scopeStateSet[index]; }
+
+ public interface ScopeRhs {
+ public final static char scopeRhs[] = {0,
+ 181,36,332,140,76,0,138,0,181,332,
+ 140,36,76,0,181,36,76,0,181,332,
+ 140,76,0,330,140,0,131,267,0,0,
+ 284,140,175,0,141,0,140,175,0,210,
+ 141,0,179,235,140,0,214,0,235,140,
+ 0,258,214,0,272,179,0,258,0,179,
+ 0,237,258,0,237,0,211,179,0,188,
+ 258,0,188,0,204,5,32,0,139,0,
+ 242,0,265,0,234,0,32,170,0,364,
+ 89,0,30,184,0,200,5,0,204,5,
+ 65,0,360,5,326,0,359,5,5,8,
+ 0,139,139,0,358,5,73,0,357,5,
+ 133,0,139,185,0,140,200,84,0,229,
+ 0,290,140,71,138,0,20,0,324,140,
+ 71,67,0,20,58,0,33,145,0,20,
+ 58,0,0,324,140,71,67,218,0,20,
+ 191,0,290,140,71,146,0,209,141,0,
+ 154,0,241,5,323,0,323,0,2,0,
+ 139,0,290,140,71,145,0,209,141,253,
+ 0,209,141,37,253,0,209,141,353,37,
+ 0,142,220,199,141,0,220,199,141,0,
+ 147,141,0,189,0,349,140,189,0,140,
+ 189,0,235,141,0,199,348,247,0,149,
+ 0,0,0,0,348,247,0,150,149,0,
+ 0,0,0,148,0,0,0,0,150,148,
+ 0,0,0,0,347,140,184,251,0,140,
+ 0,251,0,142,0,0,140,0,346,140,
+ 184,289,0,140,0,0,44,140,0,0,
+ 178,5,0,140,314,313,140,84,312,189,
+ 0,313,140,84,312,189,0,228,0,229,
+ 0,312,189,0,101,0,0,228,0,229,
+ 0,216,101,0,0,228,0,229,0,313,
+ 140,312,189,0,228,0,216,0,0,228,
+ 0,266,140,5,0,139,0,0,0,0,
+ 0,266,140,5,237,0,250,5,0,221,
+ 0,159,0,205,199,141,0,10,0,0,
+ 0,0,205,0,9,0,0,234,76,0,
+ 266,140,5,202,0,202,0,2,0,0,
+ 139,0,0,0,0,0,211,5,0,254,
+ 140,184,46,40,0,209,141,72,74,0,
+ 209,141,0,142,209,141,311,74,0,209,
+ 141,311,74,0,209,141,85,137,72,0,
+ 254,140,184,283,72,0,283,72,0,142,
+ 0,0,140,0,254,140,184,283,262,72,
+ 0,283,262,72,0,308,309,140,184,137,
+ 343,68,0,343,68,0,143,142,0,0,
+ 0,140,0,308,309,140,184,343,68,0,
+ 142,0,0,0,140,0,209,141,307,68,
+ 0,148,0,220,209,141,307,247,0,149,
+ 0,209,141,307,247,0,220,199,141,22,
+ 0,199,141,22,0,199,141,0,98,149,
+ 0,205,0,204,0,203,0,202,0,306,
+ 140,164,0,306,140,189,0,183,97,0,
+ 338,185,340,341,5,94,0,139,184,0,
+ 340,341,5,94,0,141,0,139,184,0,
+ 183,5,87,221,92,0,139,141,0,221,
+ 92,0,113,2,144,139,141,0,255,5,
+ 87,0,211,186,0,33,182,0,186,0,
+ 188,33,182,0,255,5,98,0,221,168,
+ 255,5,96,0,67,184,0,255,5,96,
+ 0,139,184,67,184,0,339,140,184,0,
+ 183,0,234,89,0,183,118,176,0,30,
+ 182,0,204,5,0,139,162,0,241,5,
+ 0,234,76,304,0,183,76,0,204,5,
+ 335,80,141,0,139,0,0,0,0,335,
+ 80,141,0,2,158,139,0,0,0,0,
+ 204,5,57,0,160,0,139,67,199,141,
+ 0,31,160,0,98,149,31,160,0,233,
+ 209,141,0,159,31,160,0,204,5,61,
+ 0,183,5,61,0,183,5,83,204,71,
+ 53,0,204,71,53,0,20,2,144,139,
+ 0,183,5,83,204,71,56,0,204,71,
+ 56,0,183,5,83,204,71,58,0,204,
+ 71,58,0,183,5,83,204,71,54,0,
+ 204,71,54,0,241,5,139,220,199,141,
+ 22,0,139,220,199,141,22,0,149,2,
+ 0,139,0,241,5,138,279,199,141,22,
+ 0,279,199,141,22,0,148,2,0,139,
+ 0,241,5,149,0,241,5,154,0,183,
+ 76,154,0,299,0,31,0,31,152,0,
+ 190,0,147,0,183,5,0
+ };
+ };
+ public final static char scopeRhs[] = ScopeRhs.scopeRhs;
+ public final int scopeRhs(int index) { return scopeRhs[index]; }
+
+ public interface ScopeState {
+ public final static char scopeState[] = {0,
+ 3609,3009,1237,0,2509,1294,0,1652,1650,1887,
+ 1659,0,3260,3083,0,6861,7029,6917,6894,0,
+ 4122,3974,0,2463,0,4287,4258,713,3373,0,
+ 4712,4647,4582,4517,4452,4387,4317,4189,4124,4059,
+ 3836,3698,5343,0,4597,4653,4327,0,852,750,
+ 0,1085,1064,0,1061,0,3553,3537,0,1387,
+ 1168,0,2677,2065,6733,1518,4154,3267,6702,6672,
+ 6635,6602,4156,4712,4647,4582,4517,4452,4387,4317,
+ 4189,4124,4059,3836,3698,0,2346,2111,1872,1726,
+ 3587,5583,5067,4991,4717,3627,4316,3768,0,837,
+ 0,6937,6930,6925,6851,7005,6960,6847,6843,6827,
+ 6955,6823,6948,6812,6621,6276,6379,5082,3572,3205,
+ 6152,4336,3803,3717,0,3587,4018,4069,5313,5238,
+ 5357,5067,4457,4287,4258,713,4991,3373,4717,3639,
+ 3339,3095,3668,3905,3128,859,0,4018,5357,0,
+ 5328,5182,798,652,3311,3067,0,3622,3004,6937,
+ 6930,1196,1127,6925,2392,6851,2298,2157,2012,967,
+ 2486,7005,1631,6960,1557,6847,6843,6827,741,1337,
+ 6955,6823,5328,6948,1077,6812,6621,886,6276,2882,
+ 3311,6379,5082,2816,3572,3205,6152,4336,3803,731,
+ 5182,3717,3067,3320,3116,1155,995,1224,5067,3668,
+ 4457,4287,4258,3587,713,4991,3373,4717,1245,699,
+ 4018,4069,1085,1064,5313,3905,3639,5238,3339,3095,
+ 3128,859,5357,6493,6091,5505,3487,1468,5783,6063,
+ 6040,3272,3449,3549,3512,4035,3981,3812,5101,5019,
+ 4959,4927,4891,4859,4827,3223,5760,5737,5709,5475,
+ 5445,6017,5994,3944,5971,5948,5925,5902,5879,5856,
+ 5829,5806,1584,2746,3023,798,2981,2929,2887,1848,
+ 2699,2652,1796,1749,2835,2793,2604,2557,1702,2505,
+ 2463,1173,1416,1655,2416,2369,2322,2275,2228,2181,
+ 2134,2087,2040,1989,1942,1608,1895,1534,1104,1013,
+ 652,944,1490,1314,1262,1363,0,3668,5140,6443,
+ 798,4287,5391,4982,4258,713,5386,7001,4790,6952,
+ 6421,5229,6556,5621,3333,6655,4069,5328,6588,873,
+ 6795,652,5375,3660,6458,3089,5370,3062,3905,3311,
+ 3639,2952,2529,4636,3339,1820,3577,5182,5209,5197,
+ 3051,4987,3369,3775,855,3187,859,746,3067,6768,
+ 3587,6516,6762,6734,6232,5583,3373,4781,6335,5541,
+ 5313,5238,4589,3128,0,4712,4647,4582,4517,4452,
+ 4387,4317,4189,4124,4059,3836,3698,6515,5614,5543,
+ 5499,6398,6338,6294,6234,6190,6130,6086,5096,6547,
+ 6123,0,7083,6915,7050,7038,7017,6733,1173,1104,
+ 1013,7012,5535,5267,4382,4549,6702,6672,6635,6602,
+ 944,4156,4712,4647,4582,4517,4452,4387,4317,4189,
+ 4124,4059,3836,3698,6515,5614,5543,5499,6398,6338,
+ 6294,6234,6190,6130,6086,5096,0
+ };
+ };
+ public final static char scopeState[] = ScopeState.scopeState;
+ public final int scopeState(int index) { return scopeState[index]; }
+
+ public interface InSymb {
+ public final static char inSymb[] = {0,
+ 0,334,175,74,7,140,189,218,42,36,
+ 67,40,72,256,140,72,311,362,330,257,
+ 8,9,7,35,258,251,259,247,260,68,
+ 261,138,22,141,278,32,242,312,140,5,
+ 6,146,145,11,10,138,141,202,67,67,
+ 67,71,67,46,283,262,137,179,284,265,
+ 140,207,202,179,211,141,141,5,3,5,
+ 5,5,184,348,307,179,343,307,179,71,
+ 141,209,199,190,32,65,57,52,48,47,
+ 13,14,51,50,5,141,10,61,53,56,
+ 58,54,22,149,154,84,140,306,284,235,
+ 179,141,205,211,71,71,186,140,76,5,
+ 79,80,138,137,209,199,5,71,83,140,
+ 184,184,283,85,78,5,85,235,179,141,
+ 76,211,179,209,209,363,46,295,296,5,
+ 361,1,46,140,199,269,139,138,141,137,
+ 184,141,140,199,67,6,5,5,5,5,
+ 204,200,183,184,175,186,140,79,80,199,
+ 139,5,71,71,71,71,141,5,117,132,
+ 5,76,140,313,82,199,14,13,140,140,
+ 140,242,76,76,220,140,140,140,140,184,
+ 141,178,140,184,289,163,166,165,169,167,
+ 171,170,173,172,174,73,176,179,199,36,
+ 140,234,13,176,179,262,142,82,168,5,
+ 78,242,366,359,326,5,347,141,187,253,
+ 72,67,74,189,350,139,138,270,179,270,
+ 209,184,140,209,290,293,220,299,220,204,
+ 204,204,204,140,140,5,238,237,281,149,
+ 139,138,22,141,32,76,335,5,204,183,
+ 204,204,204,204,199,241,67,141,67,241,
+ 183,313,322,141,323,205,205,290,290,235,
+ 266,267,164,268,324,67,22,66,254,254,
+ 140,209,140,184,102,104,48,47,106,105,
+ 13,116,115,108,107,83,71,99,100,14,
+ 110,109,112,111,113,128,127,126,125,124,
+ 123,122,121,120,119,85,118,114,140,181,
+ 332,333,13,1,78,168,5,46,1,199,
+ 140,270,270,140,140,220,140,309,137,310,
+ 78,6,168,339,91,89,1,183,12,98,
+ 96,94,92,87,95,97,90,88,72,84,
+ 235,250,140,5,78,141,199,155,5,208,
+ 5,336,186,178,83,83,83,83,220,279,
+ 141,209,199,314,78,209,5,13,140,168,
+ 85,250,211,5,140,78,78,83,71,269,
+ 269,254,262,140,165,165,163,163,163,167,
+ 167,167,167,167,167,166,166,170,169,169,
+ 172,171,173,279,183,174,332,36,181,13,
+ 1,360,220,349,82,274,211,138,272,179,
+ 140,140,82,309,308,85,78,12,82,364,
+ 234,82,5,5,5,221,5,137,183,137,
+ 200,266,140,199,67,204,204,140,140,5,
+ 5,5,5,139,138,233,10,67,140,241,
+ 205,196,140,85,85,140,235,140,85,85,
+ 346,82,82,181,181,78,142,78,82,85,
+ 179,272,179,159,352,253,37,141,308,82,
+ 101,82,255,186,140,255,341,164,87,255,
+ 140,168,266,220,168,168,301,304,76,210,
+ 183,183,183,183,5,5,6,137,139,315,
+ 133,140,248,324,232,78,272,179,78,141,
+ 37,353,209,168,211,168,340,140,5,168,
+ 315,140,168,139,140,5,76,183,241,241,
+ 6,5,140,83,232,12,209,141,141,85,
+ 221,185,306,183,248,140,301,241,234,101,
+ 357,186,73,66,209,209,135,338,168,140,
+ 248,168,168,140,5,269,168,140,358,85,
+ 78
+ };
+ };
+ public final static char inSymb[] = InSymb.inSymb;
+ public final int inSymb(int index) { return inSymb[index]; }
+
+ public interface Name {
+ public final static String name[] = {
+ "",
+ "[",
+ "(",
+ ".",
+ ".*",
+ "->",
+ "->*",
+ "++",
+ "--",
+ "&",
+ "*",
+ "+",
+ "-",
+ "~",
+ "!",
+ "/",
+ "%",
+ ">>",
+ "<<",
+ "<",
+ ">",
+ "<=",
+ ">=",
+ "==",
+ "!=",
+ "^",
+ "|",
+ "&&",
+ "||",
+ "?",
+ ":",
+ "::",
+ "...",
+ "=",
+ "*=",
+ "/=",
+ "%=",
+ "+=",
+ "-=",
+ ">>=",
+ "<<=",
+ "&=",
+ "^=",
+ "|=",
+ ",",
+ ">?",
+ "<?",
+ "$empty",
+ "_Complex",
+ "_Imaginary",
+ "restrict",
+ "asm",
+ "auto",
+ "bool",
+ "break",
+ "case",
+ "catch",
+ "char",
+ "class",
+ "const",
+ "const_cast",
+ "continue",
+ "default",
+ "delete",
+ "do",
+ "double",
+ "dynamic_cast",
+ "else",
+ "enum",
+ "explicit",
+ "export",
+ "extern",
+ "false",
+ "float",
+ "for",
+ "friend",
+ "goto",
+ "if",
+ "inline",
+ "int",
+ "long",
+ "mutable",
+ "namespace",
+ "new",
+ "operator",
+ "private",
+ "protected",
+ "public",
+ "register",
+ "reinterpret_cast",
+ "return",
+ "short",
+ "signed",
+ "sizeof",
+ "static",
+ "static_cast",
+ "struct",
+ "switch",
+ "template",
+ "this",
+ "throw",
+ "try",
+ "true",
+ "typedef",
+ "typeid",
+ "typename",
+ "union",
+ "unsigned",
+ "using",
+ "virtual",
+ "void",
+ "volatile",
+ "wchar_t",
+ "while",
+ "integer",
+ "floating",
+ "charconst",
+ "stringlit",
+ "identifier",
+ "Completion",
+ "EndOfCompletion",
+ "Invalid",
+ "RightBracket",
+ "RightParen",
+ "RightBrace",
+ "SemiColon",
+ "LeftBrace",
+ "typeof",
+ "__alignof__",
+ "__attribute__",
+ "__declspec",
+ "vector",
+ "pixel",
+ "_Decimal32",
+ "_Decimal64",
+ "_Decimal128",
+ "ERROR_TOKEN",
+ "EOF_TOKEN",
+ "]",
+ ")",
+ "}",
+ ";",
+ "{",
+ "identifier_token",
+ "expression",
+ "id_expression",
+ "qualified_or_unqualified_name",
+ "unqualified_id_name",
+ "identifier_name",
+ "template_id_name",
+ "nested_name_specifier",
+ "class_or_namespace_name",
+ "nested_name_specifier_with_tem" +
+ "plate",
+ "class_or_namespace_name_with_t" +
+ "emplate",
+ "class_name",
+ "postfix_expression",
+ "simple_type_specifier",
+ "pseudo_destructor_name",
+ "type_id",
+ "type_name",
+ "destructor_type_name",
+ "unary_expression",
+ "cast_expression",
+ "new_type_id",
+ "expression_list",
+ "type_specifier_seq",
+ "new_declarator",
+ "new_pointer_operators",
+ "ptr_operator",
+ "new_array_expressions",
+ "constant_expression",
+ "pm_expression",
+ "multiplicative_expression",
+ "additive_expression",
+ "shift_expression",
+ "relational_expression",
+ "equality_expression",
+ "and_expression",
+ "exclusive_or_expression",
+ "inclusive_or_expression",
+ "logical_and_expression",
+ "logical_or_expression",
+ "assignment_expression",
+ "expression_list_actual",
+ "statement",
+ "compound_statement",
+ "statement_seq",
+ "condition",
+ "declarator",
+ "for_init_statement",
+ "function_definition",
+ "declaration",
+ "declaration_seq",
+ "declaration_specifiers",
+ "simple_declaration_specifiers",
+ "class_declaration_specifiers",
+ "elaborated_declaration_specifi" +
+ "ers",
+ "enum_declaration_specifiers",
+ "type_name_declaration_specifie" +
+ "rs",
+ "no_type_declaration_specifier",
+ "cv_qualifier",
+ "no_type_declaration_specifiers",
+ "class_specifier",
+ "elaborated_type_specifier",
+ "enum_specifier",
+ "type_name_specifier",
+ "class_keyword",
+ "enumerator_list",
+ "enumerator_definition",
+ "namespace_name",
+ "init_declarator_list",
+ "init_declarator_complete",
+ "complete_declarator",
+ "initializer",
+ "direct_declarator",
+ "ptr_operator_seq",
+ "function_declarator",
+ "basic_direct_declarator",
+ "array_direct_declarator",
+ "array_modifier",
+ "abstract_declarator",
+ "direct_abstract_declarator",
+ "basic_direct_abstract_declarat" +
+ "or",
+ "array_direct_abstract_declarat" +
+ "or",
+ "parameter_declaration_list",
+ "parameter_declaration",
+ "parameter_init_declarator",
+ "parameter_initializer",
+ "function_body",
+ "handler_seq",
+ "initializer_clause",
+ "initializer_seq",
+ "class_head",
+ "access_specifier_keyword",
+ "member_declaration",
+ "member_declarator_list",
+ "member_declaration_list",
+ "member_declarator_complete",
+ "constant_initializer",
+ "bit_field_declarator",
+ "base_specifier_list",
+ "base_specifier",
+ "conversion_function_id",
+ "conversion_type_id",
+ "conversion_declarator",
+ "mem_initializer_list",
+ "mem_initializer",
+ "mem_initializer_name",
+ "operator_id_name",
+ "overloadable_operator",
+ "template_parameter_list",
+ "template_parameter",
+ "template_argument_list",
+ "template_argument",
+ "handler",
+ "exception_declaration",
+ "type_id_list",
+ "attribute_or_decl_specifier",
+ "attribute_or_decl_specifier_se" +
+ "q",
+ "word",
+ "extended_decl_modifier_seq",
+ "extended_decl_modifier",
+ "extended_asm_param",
+ "case_range_expression",
+ "typeof_declaration_specifiers",
+ "typeof_type_specifier",
+ "vector_type",
+ "vector_type_specifier",
+ "all_specifier_qualifiers",
+ "all_specifier_qualifier_list",
+ "array_modifier_type_qualifiers",
+ "type_qualifier_list"
+ };
+ };
+ public final static String name[] = Name.name;
+ public final String name(int index) { return name[index]; }
+
+ public final static int
+ ERROR_SYMBOL = 75,
+ SCOPE_UBOUND = 153,
+ SCOPE_SIZE = 154,
+ MAX_NAME_LENGTH = 37;
+
+ public final int getErrorSymbol() { return ERROR_SYMBOL; }
+ public final int getScopeUbound() { return SCOPE_UBOUND; }
+ public final int getScopeSize() { return SCOPE_SIZE; }
+ public final int getMaxNameLength() { return MAX_NAME_LENGTH; }
+
+ public final static int
+ NUM_STATES = 651,
+ NT_OFFSET = 136,
+ LA_STATE_OFFSET = 8806,
+ MAX_LA = 2147483647,
+ NUM_RULES = 651,
+ NUM_NONTERMINALS = 234,
+ NUM_SYMBOLS = 370,
+ SEGMENT_SIZE = 8192,
+ START_STATE = 5096,
+ IDENTIFIER_SYMBOL = 0,
+ EOFT_SYMBOL = 134,
+ EOLT_SYMBOL = 134,
+ ACCEPT_ACTION = 7153,
+ ERROR_ACTION = 8155;
+
+ public final static boolean BACKTRACK = true;
+
+ public final int getNumStates() { return NUM_STATES; }
+ public final int getNtOffset() { return NT_OFFSET; }
+ public final int getLaStateOffset() { return LA_STATE_OFFSET; }
+ public final int getMaxLa() { return MAX_LA; }
+ public final int getNumRules() { return NUM_RULES; }
+ public final int getNumNonterminals() { return NUM_NONTERMINALS; }
+ public final int getNumSymbols() { return NUM_SYMBOLS; }
+ public final int getSegmentSize() { return SEGMENT_SIZE; }
+ public final int getStartState() { return START_STATE; }
+ public final int getStartSymbol() { return lhs[0]; }
+ public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
+ public final int getEoftSymbol() { return EOFT_SYMBOL; }
+ public final int getEoltSymbol() { return EOLT_SYMBOL; }
+ public final int getAcceptAction() { return ACCEPT_ACTION; }
+ public final int getErrorAction() { return ERROR_ACTION; }
+ public final boolean isValidForParser() { return isValidForParser; }
+ public final boolean getBacktrack() { return BACKTRACK; }
+
+ public final int originalState(int state) {
+ return -baseCheck[state];
+ }
+ public final int asi(int state) {
+ return asb[originalState(state)];
+ }
+ public final int nasi(int state) {
+ return nasb[originalState(state)];
+ }
+ public final int inSymbol(int state) {
+ return inSymb[originalState(state)];
+ }
+
+ public final int ntAction(int state, int sym) {
+ return baseAction[state + sym];
+ }
+
+ public final int tAction(int state, int sym) {
+ int i = baseAction[state],
+ k = i + sym;
+ return termAction[termCheck[k] == sym ? k : i];
+ }
+ public final int lookAhead(int la_state, int sym) {
+ int k = la_state + sym;
+ return termAction[termCheck[k] == sym ? k : la_state];
+ }
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParsersym.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParsersym.java
new file mode 100644
index 0000000000..16f4bc701c
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParsersym.java
@@ -0,0 +1,296 @@
+/*******************************************************************************
+* Copyright (c) 2006, 2009 IBM Corporation and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* IBM Corporation - initial API and implementation
+*********************************************************************************/
+
+// This file was generated by LPG
+
+package org.eclipse.cdt.internal.core.lrparser.xlc.cpp;
+
+public interface XlcCPPParsersym {
+ public final static int
+ TK__Complex = 24,
+ TK__Imaginary = 25,
+ TK_restrict = 35,
+ TK_asm = 7,
+ TK_auto = 38,
+ TK_bool = 15,
+ TK_break = 88,
+ TK_case = 89,
+ TK_catch = 133,
+ TK_char = 16,
+ TK_class = 66,
+ TK_const = 33,
+ TK_const_cast = 53,
+ TK_continue = 90,
+ TK_default = 91,
+ TK_delete = 79,
+ TK_do = 92,
+ TK_double = 26,
+ TK_dynamic_cast = 54,
+ TK_else = 135,
+ TK_enum = 68,
+ TK_explicit = 39,
+ TK_export = 93,
+ TK_extern = 40,
+ TK_false = 55,
+ TK_float = 17,
+ TK_for = 94,
+ TK_friend = 41,
+ TK_goto = 95,
+ TK_if = 96,
+ TK_inline = 42,
+ TK_int = 18,
+ TK_long = 19,
+ TK_mutable = 43,
+ TK_namespace = 72,
+ TK_new = 80,
+ TK_operator = 11,
+ TK_private = 129,
+ TK_protected = 130,
+ TK_public = 131,
+ TK_register = 44,
+ TK_reinterpret_cast = 56,
+ TK_return = 97,
+ TK_short = 20,
+ TK_signed = 21,
+ TK_sizeof = 57,
+ TK_static = 36,
+ TK_static_cast = 58,
+ TK_struct = 69,
+ TK_switch = 98,
+ TK_template = 67,
+ TK_this = 59,
+ TK_throw = 73,
+ TK_try = 84,
+ TK_true = 60,
+ TK_typedef = 45,
+ TK_typeid = 61,
+ TK_typename = 22,
+ TK_union = 70,
+ TK_unsigned = 23,
+ TK_using = 74,
+ TK_virtual = 37,
+ TK_void = 27,
+ TK_volatile = 34,
+ TK_wchar_t = 28,
+ TK_while = 87,
+ TK_integer = 62,
+ TK_floating = 63,
+ TK_charconst = 64,
+ TK_stringlit = 46,
+ TK_identifier = 1,
+ TK_Completion = 4,
+ TK_EndOfCompletion = 12,
+ TK_Invalid = 136,
+ TK_LeftBracket = 76,
+ TK_LeftParen = 5,
+ TK_Dot = 132,
+ TK_DotStar = 104,
+ TK_Arrow = 117,
+ TK_ArrowStar = 102,
+ TK_PlusPlus = 50,
+ TK_MinusMinus = 51,
+ TK_And = 14,
+ TK_Star = 13,
+ TK_Plus = 47,
+ TK_Minus = 48,
+ TK_Tilde = 10,
+ TK_Bang = 52,
+ TK_Slash = 105,
+ TK_Percent = 106,
+ TK_RightShift = 99,
+ TK_LeftShift = 100,
+ TK_LT = 71,
+ TK_GT = 83,
+ TK_LE = 107,
+ TK_GE = 108,
+ TK_EQ = 109,
+ TK_NE = 110,
+ TK_Caret = 111,
+ TK_Or = 112,
+ TK_AndAnd = 113,
+ TK_OrOr = 114,
+ TK_Question = 118,
+ TK_Colon = 82,
+ TK_ColonColon = 6,
+ TK_DotDotDot = 101,
+ TK_Assign = 85,
+ TK_StarAssign = 119,
+ TK_SlashAssign = 120,
+ TK_PercentAssign = 121,
+ TK_PlusAssign = 122,
+ TK_MinusAssign = 123,
+ TK_RightShiftAssign = 124,
+ TK_LeftShiftAssign = 125,
+ TK_AndAssign = 126,
+ TK_CaretAssign = 127,
+ TK_OrAssign = 128,
+ TK_Comma = 78,
+ TK_RightBracket = 103,
+ TK_RightParen = 77,
+ TK_RightBrace = 86,
+ TK_SemiColon = 49,
+ TK_LeftBrace = 81,
+ TK_typeof = 32,
+ TK___alignof__ = 65,
+ TK___attribute__ = 8,
+ TK___declspec = 9,
+ TK_MAX = 115,
+ TK_MIN = 116,
+ TK_vector = 3,
+ TK_pixel = 2,
+ TK__Decimal32 = 29,
+ TK__Decimal64 = 30,
+ TK__Decimal128 = 31,
+ TK_ERROR_TOKEN = 75,
+ TK_EOF_TOKEN = 134;
+
+ public final static String orderedTerminalSymbols[] = {
+ "",
+ "identifier",
+ "pixel",
+ "vector",
+ "Completion",
+ "LeftParen",
+ "ColonColon",
+ "asm",
+ "__attribute__",
+ "__declspec",
+ "Tilde",
+ "operator",
+ "EndOfCompletion",
+ "Star",
+ "And",
+ "bool",
+ "char",
+ "float",
+ "int",
+ "long",
+ "short",
+ "signed",
+ "typename",
+ "unsigned",
+ "_Complex",
+ "_Imaginary",
+ "double",
+ "void",
+ "wchar_t",
+ "_Decimal32",
+ "_Decimal64",
+ "_Decimal128",
+ "typeof",
+ "const",
+ "volatile",
+ "restrict",
+ "static",
+ "virtual",
+ "auto",
+ "explicit",
+ "extern",
+ "friend",
+ "inline",
+ "mutable",
+ "register",
+ "typedef",
+ "stringlit",
+ "Plus",
+ "Minus",
+ "SemiColon",
+ "PlusPlus",
+ "MinusMinus",
+ "Bang",
+ "const_cast",
+ "dynamic_cast",
+ "false",
+ "reinterpret_cast",
+ "sizeof",
+ "static_cast",
+ "this",
+ "true",
+ "typeid",
+ "integer",
+ "floating",
+ "charconst",
+ "__alignof__",
+ "class",
+ "template",
+ "enum",
+ "struct",
+ "union",
+ "LT",
+ "namespace",
+ "throw",
+ "using",
+ "ERROR_TOKEN",
+ "LeftBracket",
+ "RightParen",
+ "Comma",
+ "delete",
+ "new",
+ "LeftBrace",
+ "Colon",
+ "GT",
+ "try",
+ "Assign",
+ "RightBrace",
+ "while",
+ "break",
+ "case",
+ "continue",
+ "default",
+ "do",
+ "export",
+ "for",
+ "goto",
+ "if",
+ "return",
+ "switch",
+ "RightShift",
+ "LeftShift",
+ "DotDotDot",
+ "ArrowStar",
+ "RightBracket",
+ "DotStar",
+ "Slash",
+ "Percent",
+ "LE",
+ "GE",
+ "EQ",
+ "NE",
+ "Caret",
+ "Or",
+ "AndAnd",
+ "OrOr",
+ "MAX",
+ "MIN",
+ "Arrow",
+ "Question",
+ "StarAssign",
+ "SlashAssign",
+ "PercentAssign",
+ "PlusAssign",
+ "MinusAssign",
+ "RightShiftAssign",
+ "LeftShiftAssign",
+ "AndAssign",
+ "CaretAssign",
+ "OrAssign",
+ "private",
+ "protected",
+ "public",
+ "Dot",
+ "catch",
+ "EOF_TOKEN",
+ "else",
+ "Invalid"
+ };
+
+ public final static boolean isValidForParser = true;
+}
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.properties b/xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.properties
new file mode 100644
index 0000000000..fdc39be2de
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.properties
@@ -0,0 +1,20 @@
+###############################################################################
+# Copyright (c) 2009 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# IBM Corporation - initial API and implementation
+###############################################################################
+
+Bundle-Name.0 = XLCParser Plug-in
+Bundle-Vendor.0 = Eclipse CDT
+Bundle-Name.1 = XLC Parser Plug-in
+
+# built-in languages
+language.name.c=XL C
+language.name.cpp=XL C++
+
+preferences.page.title=XL C/C++ Language Options \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.xml b/xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.xml
new file mode 100644
index 0000000000..bb1943e9d2
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension point="org.eclipse.cdt.core.language">
+ <language
+ class="org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage"
+ id="c"
+ name="%language.name.c">
+ </language>
+
+ <language
+ class="org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage"
+ id="cpp"
+ name="%language.name.cpp">
+ </language>
+ </extension>
+ <extension
+ point="org.eclipse.core.runtime.preferences">
+ <initializer
+ class="org.eclipse.cdt.core.lrparser.xlc.preferences.PreferenceInitializer">
+ </initializer>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.eclipse.cdt.ui.preferences.CPluginPreferencePage"
+ class="org.eclipse.cdt.internal.core.lrparser.xlc.ui.preferences.XlcLanguageOptionsPreferencePage"
+ id="org.eclipse.cdt.core.lrparser.xlc.ui.XlcLanguagePreferencePage"
+ name="%preferences.page.title">
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.ui.propertyPages">
+ <page
+ category="org.eclipse.cdt.ui.newui.Page_head_general"
+ class="org.eclipse.cdt.internal.core.lrparser.xlc.ui.preferences.XlcLanguageOptionsPreferencePage"
+ id="org.eclipse.cdt.core.lrparser.xlc.ui.XlcLanguagePropertyPage"
+ name="%preferences.page.title">
+ <enabledWhen>
+ <adapt
+ type="org.eclipse.core.resources.IProject">
+ <test
+ property="org.eclipse.core.resources.projectNature"
+ value="org.eclipse.cdt.core.cnature">
+ </test>
+ </adapt>
+ </enabledWhen>
+ </page>
+ </extension>
+</plugin>
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PrefCheckbox.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PrefCheckbox.java
new file mode 100644
index 0000000000..71bd4b3bbb
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PrefCheckbox.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.core.lrparser.xlc.ui.preferences;
+
+import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcLanguagePreferences;
+import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcPref;
+import org.eclipse.cdt.utils.ui.controls.ControlFactory;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+
+/**
+ * A simple wrapper for a checkbox.
+ *
+ */
+class PrefCheckbox {
+
+ private final XlcPref key;
+ private final Button button;
+
+ PrefCheckbox(Composite parent, XlcPref prefKey, String label) {
+ button = ControlFactory.createCheckBox(parent, label);
+ key = prefKey;
+ }
+
+ public XlcPref getKey() {
+ return key;
+ }
+
+ public void setSelection(boolean selection) {
+ button.setSelection(selection);
+ }
+
+ public boolean getSelection() {
+ return button.getSelection();
+ }
+
+ public void setDefault() {
+ setSelection(Boolean.valueOf(XlcLanguagePreferences.getDefaultPreference(key)));
+ }
+} \ No newline at end of file
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.java
new file mode 100644
index 0000000000..144b5aece2
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.core.lrparser.xlc.ui.preferences;
+
+import java.lang.reflect.Field;
+
+import org.eclipse.osgi.util.NLS;
+
+public class PreferenceMessages extends NLS {
+
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.internal.core.lrparser.xlc.ui.preferences.PreferenceMessages"; //$NON-NLS-1$
+
+ private PreferenceMessages() {}
+
+ static {
+ initializeMessages(BUNDLE_NAME, PreferenceMessages.class);
+ }
+
+ public static final String PREFIX = "XlcLanguageOptionsPreferencePage_";
+
+
+ public static String getMessage(String suffix) {
+ try {
+ Field field = PreferenceMessages.class.getDeclaredField(PREFIX + suffix);
+ return (String)field.get(null);
+
+ } catch (NoSuchFieldException e) {
+ return null;
+ } catch (IllegalAccessException e) {
+ return null;
+ }
+ }
+
+
+ public static String
+ XlcLanguageOptionsPreferencePage_link,
+ XlcLanguageOptionsPreferencePage_group,
+
+ XlcLanguageOptionsPreferencePage_SUPPORT_VECTOR_TYPES,
+ XlcLanguageOptionsPreferencePage_SUPPORT_DECIMAL_FLOATING_POINT_TYPES,
+ XlcLanguageOptionsPreferencePage_SUPPORT_COMPLEX_IN_CPP,
+ XlcLanguageOptionsPreferencePage_SUPPORT_RESTRICT_IN_CPP;
+
+}
+
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.properties b/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.properties
new file mode 100644
index 0000000000..27ad05e6cc
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2009 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# IBM Corporation - initial API and implementation
+###############################################################################
+
+XlcLanguageOptionsPreferencePage_link=These settings are project-specific. The settings listed here override <a href="org.eclipse.cdt.core.lrparser.xlc.ui.XlcLanguagePreferencePage">workspace-wide</a> language settings.
+XlcLanguageOptionsPreferencePage_group=Support For XL C/C++ Language Extensions
+
+XlcLanguageOptionsPreferencePage_SUPPORT_VECTOR_TYPES=Allow vector type declarations
+XlcLanguageOptionsPreferencePage_SUPPORT_DECIMAL_FLOATING_POINT_TYPES=Allow decimal floating-point types (_Decimal32, _Decimal64, _Decimal128)
+XlcLanguageOptionsPreferencePage_SUPPORT_COMPLEX_IN_CPP=Allow complex type in C++ (_Complex)
+XlcLanguageOptionsPreferencePage_SUPPORT_RESTRICT_IN_CPP=Allow 'restrict' keyword in C++ (restrict, __restrict, __restrict__)
+
diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/XlcLanguageOptionsPreferencePage.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/XlcLanguageOptionsPreferencePage.java
new file mode 100644
index 0000000000..cdd645c863
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/XlcLanguageOptionsPreferencePage.java
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.core.lrparser.xlc.ui.preferences;
+
+
+
+import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcLanguagePreferences;
+import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcPref;
+import org.eclipse.cdt.utils.ui.controls.ControlFactory;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Link;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.eclipse.ui.IWorkbenchPropertyPage;
+import org.eclipse.ui.dialogs.PreferencesUtil;
+
+
+/**
+ * TODO trigger reindex?
+ *
+ */
+public class XlcLanguageOptionsPreferencePage extends PreferencePage implements IWorkbenchPreferencePage, IWorkbenchPropertyPage {
+
+ private IAdaptable element;
+ private PrefCheckbox[] checkboxes;
+
+
+ private void initializeCheckboxes(Composite group) {
+ XlcPref[] prefs = XlcPref.values();
+ int n = prefs.length;
+ checkboxes = new PrefCheckbox[n];
+ IProject project = getProject(); // null for preference page
+
+ for(int i = 0; i < n; i++) {
+ String message = PreferenceMessages.getMessage(prefs[i].toString());
+ checkboxes[i] = new PrefCheckbox(group, prefs[i], message);
+ String preference = XlcLanguagePreferences.get(prefs[i], project);
+ checkboxes[i].setSelection(Boolean.valueOf(preference));
+ }
+ }
+
+
+ @Override
+ protected Control createContents(Composite parent) {
+ Composite page = ControlFactory.createComposite(parent, 1);
+
+ if(isPropertyPage()) {
+ Link link = new Link(page, SWT.NONE);
+ link.setText(PreferenceMessages.XlcLanguageOptionsPreferencePage_link);
+ link.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event event) {
+ PreferencesUtil.createPreferenceDialogOn(getShell(), event.text, null, null).open();
+ }
+ });
+ }
+
+ Composite group = ControlFactory.createGroup(page, PreferenceMessages.XlcLanguageOptionsPreferencePage_group, 1);
+ initializeCheckboxes(group);
+
+ return page;
+ }
+
+
+ @Override
+ protected void performDefaults() {
+ for(PrefCheckbox button : checkboxes) {
+ button.setDefault();
+ }
+ super.performDefaults();
+ }
+
+ @Override
+ public boolean performOk() {
+ IProject project = getProject();
+ for(PrefCheckbox button : checkboxes) {
+ setPreference(button.getKey(), button.getSelection(), project);
+ }
+ return true;
+ }
+
+
+ private static void setPreference(XlcPref key, boolean val, IProject project) {
+ String s = String.valueOf(val);
+ if(project != null)
+ XlcLanguagePreferences.setProjectPreference(key, s, project);
+ else
+ XlcLanguagePreferences.setWorkspacePreference(key, s);
+ }
+
+
+
+ private IProject getProject() {
+ return isPropertyPage() ? (IProject)element.getAdapter(IProject.class) : null;
+ }
+
+ public IAdaptable getElement() {
+ return element;
+ }
+
+ public void setElement(IAdaptable element) {
+ this.element = element;
+ }
+
+ public boolean isPropertyPage() {
+ return element != null;
+ }
+
+ public void init(IWorkbench workbench) {
+ // TODO Auto-generated method stub
+ }
+
+}

Back to the top