Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/xlc
diff options
context:
space:
mode:
authorMike Kucera2009-04-17 18:52:09 +0000
committerMike Kucera2009-04-17 18:52:09 +0000
commitcb8fe367dd2c4ffeda055c5d5ba1ad16f2640903 (patch)
tree46b97d413bfc5e849988c92d7489fe2790755392 /xlc
parente8477ef98a4319989eea988aa1184d9e47f0b7ac (diff)
downloadorg.eclipse.cdt-cb8fe367dd2c4ffeda055c5d5ba1ad16f2640903.tar.gz
org.eclipse.cdt-cb8fe367dd2c4ffeda055c5d5ba1ad16f2640903.tar.xz
org.eclipse.cdt-cb8fe367dd2c4ffeda055c5d5ba1ad16f2640903.zip
[272745] initial commit of XLC parser extensions
Diffstat (limited to 'xlc')
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/.classpath8
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/.project28
-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.MF22
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/about.html24
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/build.properties16
-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.g60
-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.g82
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCLanguage.java63
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPLanguage.java85
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPTokenMap.java202
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCTokenMap.java170
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java82
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcScannerExtensionConfiguration.java33
-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.java60
-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.java18
-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.java19
-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.java108
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcPreferenceKeys.java24
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCASTVectorTypeSpecifier.java50
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCNodeFactory.java28
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTVectorTypeSpecifier.java40
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPNodeFactory.java28
-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.java2163
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParsersym.java230
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParser.java2149
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParserprs.java3679
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParsersym.java290
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.properties18
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.xml41
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.java32
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.properties4
-rw-r--r--xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/XlcLanguageOptionsPreferencePage.java130
41 files changed, 11695 insertions, 0 deletions
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 00000000000..bc645e1d3be
--- /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/.project b/xlc/org.eclipse.cdt.core.lrparser.xlc/.project
new file mode 100644
index 00000000000..3bfc968624b
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.core.lrparser.xlc</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/.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 00000000000..570ff24edd2
--- /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 00000000000..5b222b5e394
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Xlc
+Bundle-SymbolicName: org.eclipse.cdt.core.lrparser.xlc;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.eclipse.cdt.core;bundle-version="5.1.0",
+ org.eclipse.cdt.core.lrparser;bundle-version="5.1.0",
+ org.eclipse.core.runtime;bundle-version="3.5.0",
+ org.eclipse.core.resources;bundle-version="3.5.0",
+ org.eclipse.cdt.ui;bundle-version="5.1.0",
+ org.eclipse.ui;bundle-version="3.5.0"
+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
+Bundle-ActivationPolicy: lazy
+Bundle-Activator: org.eclipse.cdt.core.lrparser.xlc.activator.XlcParserPlugin
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 00000000000..0277ef73095
--- /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 00000000000..0b4c9ed7933
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/build.properties
@@ -0,0 +1,16 @@
+###############################################################################
+# 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/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
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 00000000000..99a4603a956
--- /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 00000000000..9e57880a5f5
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCPPParser.g
@@ -0,0 +1,60 @@
+-----------------------------------------------------------------------------------
+-- 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
+
+$Start
+ translation_unit
+$End
+
+$Rules
+
+block_declaration
+ ::= vector_declaration
+
+
+identifier_token
+ ::= 'vector'
+ | 'pixel'
+
+
+specifier_qualifier
+ ::= 'typedef'
+ /. $Build consumeToken(); $EndBuild ./
+
+$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 00000000000..a6c7ae9669a
--- /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 00000000000..d1bc86b3702
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcGrammarExtensions.g
@@ -0,0 +1,82 @@
+-----------------------------------------------------------------------------------
+-- 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
+
+$End
+
+
+
+
+
+$Rules
+
+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 00000000000..5d65102ad2c
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCLanguage.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;
+
+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.model.ICLanguageKeywords;
+import org.eclipse.cdt.core.parser.IScanner;
+import org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParser;
+
+/**
+ *
+ * @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) {
+ boolean supportVectors = XlcCPPLanguage.supportVectors(properties);
+ return new XlcCParser(scanner, new XlcCTokenMap(supportVectors), getBuiltinBindingsProvider(), index, properties);
+ }
+
+ public String getId() {
+ return ID;
+ }
+
+ @Override
+ protected IScannerExtensionConfiguration getScannerExtensionConfiguration() {
+ return XlcScannerExtensionConfiguration.getInstance();
+ }
+
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Object getAdapter(Class adapter) {
+ if(ICLanguageKeywords.class.equals(adapter))
+ return XlcKeywords.C;
+
+ return super.getAdapter(adapter);
+ }
+
+} \ 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 00000000000..bcc89021a0b
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPLanguage.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * 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.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.XlcPreferenceKeys;
+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;
+ }
+
+ public static boolean supportVectors(Map<String,String> properties) {
+ String path = properties.get(LRParserProperties.TRANSLATION_UNIT_PATH);
+ System.out.println("path: " + path);
+ IFile[] file = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation(new Path(path));
+
+ IProject project = null;
+ if(file != null && file.length > 0) {
+ project = file[0].getProject();
+ }
+
+ return Boolean.valueOf(XlcLanguagePreferences.getPreference(XlcPreferenceKeys.KEY_SUPPORT_VECTOR_TYPES, project));
+ }
+
+
+ @Override
+ protected IParser<IASTTranslationUnit> getParser(IScanner scanner, IIndex index, Map<String,String> properties) {
+ boolean supportVectors = supportVectors(properties);
+ XlcCPPParser parser = new XlcCPPParser(scanner, new XlcCPPTokenMap(supportVectors), getBuiltinBindingsProvider(), index, properties);
+ return parser;
+ }
+
+ public String getId() {
+ return ID;
+ }
+
+ @Override
+ protected IScannerExtensionConfiguration getScannerExtensionConfiguration() {
+ return XlcScannerExtensionConfiguration.getInstance();
+ }
+
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Object getAdapter(Class adapter) {
+ if(ICLanguageKeywords.class.equals(adapter))
+ return XlcKeywords.CPP;
+
+ return super.getAdapter(adapter);
+ }
+
+} \ No newline at end of file
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 00000000000..e718e2168fa
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPTokenMap.java
@@ -0,0 +1,202 @@
+/*******************************************************************************
+ * 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 boolean supportVectors;
+
+ public XlcCPPTokenMap(boolean supportVectors) {
+ this.supportVectors = supportVectors;
+ }
+
+
+ public int getEOFTokenKind() {
+ return TK_EOF_TOKEN;
+ }
+
+ public int getEOCTokenKind() {
+ return TK_EndOfCompletion;
+ }
+
+ public int mapKind(IToken token) {
+
+ switch(token.getType()) {
+ case tIDENTIFIER :
+ if(supportVectors) {
+ Integer keywordKind = XlcKeywords.CPP.getTokenKind(token.getCharImage());
+ return keywordKind == null ? TK_identifier : keywordKind;
+ }
+ else {
+ return TK_identifier;
+ }
+
+ 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__Complex : return TK__Complex;
+ 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/XlcCTokenMap.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCTokenMap.java
new file mode 100644
index 00000000000..859ca68c780
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCTokenMap.java
@@ -0,0 +1,170 @@
+/*******************************************************************************
+ * 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 boolean supportVectors;
+
+ public XlcCTokenMap(boolean supportVectors) {
+ this.supportVectors = supportVectors;
+ }
+
+
+ public int getEOFTokenKind() {
+ return TK_EOF_TOKEN;
+ }
+
+ public int getEOCTokenKind() {
+ return TK_EndOfCompletion;
+ }
+
+ public int mapKind(IToken token) {
+
+ switch(token.getType()) {
+ case tIDENTIFIER :
+ if(supportVectors) {
+ Integer keywordKind = XlcKeywords.C.getTokenKind(token.getCharImage());
+ return keywordKind == null ? TK_identifier : keywordKind;
+ }
+ else {
+ return TK_identifier;
+ }
+
+ 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 00000000000..bc0c8d7aec8
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * 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.parser.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 C = new XlcKeywords(ParserLanguage.C);
+ static {
+ C.map.put("vector".toCharArray(), XlcCParsersym.TK_vector);
+ C.map.put("__vector".toCharArray(), XlcCParsersym.TK_vector);
+ C.map.put("pixel".toCharArray(), XlcCParsersym.TK_pixel);
+ C.map.put("__pixel".toCharArray(), XlcCParsersym.TK_pixel);
+ C.map.put("bool".toCharArray(), XlcCParsersym.TK_bool);
+ }
+
+ public static final XlcKeywords CPP = new XlcKeywords(ParserLanguage.CPP);
+ static {
+ CPP.map.put("vector".toCharArray(), XlcCPPParsersym.TK_vector);
+ CPP.map.put("__vector".toCharArray(), XlcCPPParsersym.TK_vector);
+ CPP.map.put("pixel".toCharArray(), XlcCPPParsersym.TK_pixel);
+ CPP.map.put("__pixel".toCharArray(), XlcCPPParsersym.TK_pixel);
+ // bool is already a C++ keyword
+ }
+
+
+ private final CharArrayMap<Integer> map = new CharArrayMap<Integer>();
+ private final ParserLanguage language;
+ private String[] allKeywords = null;
+
+ private XlcKeywords(ParserLanguage language) {
+ super(language, XlcScannerExtensionConfiguration.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, XlcScannerExtensionConfiguration.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/XlcScannerExtensionConfiguration.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcScannerExtensionConfiguration.java
new file mode 100644
index 00000000000..cc4ab63b2c7
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcScannerExtensionConfiguration.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.lrparser.xlc;
+
+import org.eclipse.cdt.core.dom.parser.c.GCCScannerExtensionConfiguration;
+
+public class XlcScannerExtensionConfiguration extends GCCScannerExtensionConfiguration {
+
+ private static XlcScannerExtensionConfiguration instance;
+
+
+ private XlcScannerExtensionConfiguration() {}
+
+ public static synchronized XlcScannerExtensionConfiguration getInstance() {
+ if(instance == null)
+ instance = new XlcScannerExtensionConfiguration();
+ return instance;
+ }
+
+ @Override
+ public boolean supportUTFLiterals() {
+ return true;
+ }
+
+}
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 00000000000..e0f69801b6d
--- /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 00000000000..160c8ca5126
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCPPBuildASTParserAction.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * 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.ITokenStream;
+import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
+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.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;
+
+
+ public XlcCPPBuildASTParserAction(ITokenStream parser,
+ ScopedStack<Object> astStack, IXlcCPPNodeFactory nodeFactory,
+ ICPPSecondaryParserFactory 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() {
+ IXlcCPPASTVectorTypeSpecifier declSpec = nodeFactory.newVectorTypeSpecifier();
+
+ for(Object specifier : astStack.closeScope()) {
+ if(specifier instanceof IToken) {
+ switch(((IToken)specifier).getKind()) {
+ case XlcCPPParsersym.TK_pixel :
+ declSpec.setPixel(true);
+ continue;
+ case XlcCPPParsersym.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/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 00000000000..0035b2cb6b3
--- /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 00000000000..ca2233b2a86
--- /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 00000000000..fa9019c6766
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCNodeFactory.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * 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.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/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 00000000000..2ff763266d6
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTVectorTypeSpecifier.java
@@ -0,0 +1,21 @@
+/*************************************************import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTDeclSpecifier;
+ration 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 00000000000..63e7608af26
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPNodeFactory.java
@@ -0,0 +1,19 @@
+/*************************************************import org.eclipse.cdt.core.dom.ast.cpp.ICPPNodeFactory;
+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.ICPPNodeFactory;
+
+public interface IXlcCPPNodeFactory extends ICPPNodeFactory {
+
+ public IXlcCPPASTVectorTypeSpecifier newVectorTypeSpecifier();
+
+}
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 00000000000..d5eef63b71e
--- /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 00000000000..92e1862bfb4
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcLanguagePreferences.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * 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";
+
+
+ public static void initializeDefaultPreferences() {
+ Preferences prefs = getDefaultPreferences();
+ prefs.putBoolean(XlcPreferenceKeys.KEY_SUPPORT_VECTOR_TYPES, true);
+ }
+
+ public static void setProjectPreference(String key, String value, IProject project) {
+ getProjectPreferences(project).put(key, value);
+ }
+
+
+ public static void setWorkspacePreference(String key, String value) {
+ getWorkspacePreferences().put(key, value);
+ }
+
+
+ public static String getProjectPreference(String key, IProject project) {
+ return getProjectPreferences(project).get(key, null);
+ }
+
+
+ public static String getWorkspacePreference(String key) {
+ return getWorkspacePreferences().get(key, null);
+ }
+
+ public static String getDefaultPreference(String key) {
+ return getDefaultPreferences().get(key, 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 getPreference(String key, IProject project) {
+ Preferences[] prefs;
+ if(project == null) {
+ prefs = new Preferences[] {
+ getWorkspacePreferences(),
+ getDefaultPreferences()
+ };
+ }
+ else {
+ prefs = new Preferences[] {
+ getProjectPreferences(project),
+ getWorkspacePreferences(),
+ getDefaultPreferences()
+ };
+ }
+
+ return Platform.getPreferencesService().get(key, null, prefs);
+ }
+
+
+
+ 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/XlcPreferenceKeys.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcPreferenceKeys.java
new file mode 100644
index 00000000000..c2654d16728
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcPreferenceKeys.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.lrparser.xlc.preferences;
+
+
+public final class XlcPreferenceKeys {
+
+ private XlcPreferenceKeys() {}
+
+ /**
+ * Type: boolean
+ * Default: false
+ */
+ public static final String KEY_SUPPORT_VECTOR_TYPES = "vectorTypes";
+}
+
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 00000000000..7e431e52067
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCASTVectorTypeSpecifier.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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;
+
+public class XlcCASTVectorTypeSpecifier extends CASTSimpleDeclSpecifier implements IXlcCASTVectorTypeSpecifier {
+
+ private boolean isPixel;
+ private boolean isBool;
+
+ public XlcCASTVectorTypeSpecifier() {
+ super();
+ }
+
+ @Override
+ public XlcCASTVectorTypeSpecifier copy() {
+ XlcCASTVectorTypeSpecifier copy = new XlcCASTVectorTypeSpecifier();
+ copySimpleDeclSpec(copy);
+ copy.isPixel = isPixel;
+ copy.isBool = isBool;
+ return copy;
+ }
+
+ 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 00000000000..50323385030
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCNodeFactory.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.internal.core.lrparser.xlc.ast;
+
+import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCASTVectorTypeSpecifier;
+import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCNodeFactory;
+import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory;
+
+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/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 00000000000..b95d68664f7
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTVectorTypeSpecifier.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.internal.core.lrparser.xlc.ast;
+
+import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPASTVectorTypeSpecifier;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleDeclSpecifier;
+
+public class XlcCPPASTVectorTypeSpecifier extends CPPASTSimpleDeclSpecifier implements IXlcCPPASTVectorTypeSpecifier {
+
+ private boolean isPixel;
+
+ public XlcCPPASTVectorTypeSpecifier() {
+ super();
+ }
+
+ @Override
+ public XlcCPPASTVectorTypeSpecifier copy() {
+ XlcCPPASTVectorTypeSpecifier copy = new XlcCPPASTVectorTypeSpecifier();
+ copySimpleDeclSpec(copy);
+ copy.isPixel = isPixel;
+ return copy;
+ }
+
+ 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 00000000000..ff8600e9fd9
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPNodeFactory.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.internal.core.lrparser.xlc.ast;
+
+import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPASTVectorTypeSpecifier;
+import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPNodeFactory;
+import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory;
+
+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();
+ }
+}
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 00000000000..544b7d7b53c
--- /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.internal.core.dom.parser.c.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(false); 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 388: type_id ::= vector_type
+ //
+ case 388: { action. consumeTypeId(false); break;
+ }
+
+ //
+ // Rule 389: type_id ::= vector_type abstract_declarator
+ //
+ case 389: { action. consumeTypeId(true); break;
+ }
+
+ //
+ // Rule 390: vector_declaration ::= vector_type <openscope-ast> init_declarator_list ;
+ //
+ case 390: { action. consumeDeclarationSimple(true); break;
+ }
+
+ //
+ // Rule 391: vector_type ::= <openscope-ast> no_type_declaration_specifiers_opt vector vector_type_specifier all_specifier_qualifier_list_opt
+ //
+ case 391: { action. consumeVectorTypeSpecifier(); break;
+ }
+
+ //
+ // Rule 392: vector_type_specifier ::= vector_type_specifier_token
+ //
+ case 392: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 414: declarator_id_name ::= pixel
+ //
+ case 414: { action. consumeIdentifierName(); break;
+ }
+
+ //
+ // Rule 415: declarator_id_name ::= vector
+ //
+ case 415: { action. consumeIdentifierName(); break;
+ }
+
+ //
+ // Rule 416: declarator_id_name ::= bool
+ //
+ case 416: { 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 00000000000..36c9361808b
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParserprs.java
@@ -0,0 +1,2163 @@
+/*******************************************************************************
+* 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
+ };
+ };
+ 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,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,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,344,1766,362,
+ 17,21,18,1050,1243,45,370,315,316,317,
+ 1260,1293,1274,1359,1323,381,1443,1435,1500,1474,
+ 1526,75,1854,323,2615,92,1511,2140,135,213,
+ 2462,20,323,17,21,18,1050,366,2251,20,
+ 231,17,21,18,1050,1243,45,137,134,136,
+ 160,1260,1293,1274,1359,1323,659,1443,1435,1500,
+ 1474,1526,75,532,139,166,281,1854,498,2657,
+ 1335,143,146,149,152,1058,2570,20,363,17,
+ 21,18,1050,43,40,231,1517,636,2227,2466,
+ 2885,2900,2914,282,2947,1552,459,498,1933,179,
+ 2792,417,507,465,1517,3203,1762,370,315,316,
+ 317,568,319,315,316,317,519,254,213,334,
+ 578,2489,20,158,17,21,18,1050,355,135,
+ 213,1045,763,224,232,254,213,721,224,229,
+ 218,714,221,223,322,1730,2069,179,137,134,
+ 136,160,1409,323,1730,370,315,316,317,2029,
+ 1072,319,315,316,317,139,166,1607,1519,2091,
+ 392,1335,143,146,149,152,1058,135,213,363,
+ 619,345,1317,1033,187,1055,1727,1149,310,2227,
+ 2466,2885,2900,2914,415,2947,137,134,136,160,
+ 1337,488,1190,507,3423,956,1295,38,947,2173,
+ 111,87,321,139,166,96,823,312,1149,1335,
+ 143,146,149,152,1058,335,284,363,1459,1812,
+ 95,97,98,99,100,2137,179,2227,2466,2885,
+ 2900,2914,88,2947,370,315,316,317,765,1994,
+ 1466,507,1033,31,714,2570,20,716,17,21,
+ 18,1050,43,45,435,313,135,213,1260,1293,
+ 1274,1359,1323,294,1443,1980,2381,20,830,17,
+ 21,18,1050,1243,45,137,134,136,160,1260,
+ 1293,1274,1359,1323,949,1443,1435,1500,1474,1526,
+ 75,438,139,166,281,28,720,1552,1708,143,
+ 146,149,152,1058,2570,20,363,17,21,18,
+ 1050,43,39,1607,1356,1831,2227,2466,2885,2900,
+ 2914,282,2947,1552,651,20,830,17,21,18,
+ 1050,1243,45,739,1993,417,659,1260,1293,1274,
+ 1359,1323,228,1443,1435,1500,1474,1526,75,227,
+ 25,287,281,333,2670,20,1397,17,21,18,
+ 1050,1243,45,617,1406,1316,655,1260,1293,1274,
+ 1359,1323,180,1443,1435,1500,1474,1526,75,282,
+ 1609,1552,1236,288,1854,1295,2889,1098,127,1033,
+ 31,2408,20,983,17,21,18,1050,1243,45,
+ 1408,2045,278,1617,1260,1293,1274,1359,1323,289,
+ 1443,1435,1500,1474,1526,75,209,2570,20,281,
+ 17,21,18,1050,43,45,824,48,810,1838,
+ 1260,1293,1274,1359,1323,824,1443,1435,1500,1997,
+ 1072,290,1415,260,105,1307,282,655,1552,2435,
+ 20,390,17,21,18,1050,1243,45,1517,336,
+ 128,346,1260,1293,1274,1359,1323,342,1443,1435,
+ 1500,1474,1526,75,197,1908,386,281,921,431,
+ 20,506,17,21,18,1050,1243,45,1006,254,
+ 213,1607,1260,1293,1274,1359,1323,24,1443,1435,
+ 1500,1474,1526,75,282,1442,1552,1037,2770,20,
+ 852,17,21,18,1050,1243,45,208,1727,417,
+ 1793,1260,1293,1274,1359,1323,1616,1443,1435,1500,
+ 1474,1526,75,239,291,38,331,3264,225,2030,
+ 551,293,111,87,872,193,1373,96,1033,186,
+ 204,821,383,925,1415,3319,1,1727,417,627,
+ 1459,109,95,97,98,99,100,731,20,966,
+ 17,21,18,1050,43,36,1946,1125,110,369,
+ 410,111,87,1033,188,1373,96,721,224,229,
+ 218,714,221,223,1356,1831,1793,387,627,1459,
+ 109,95,97,98,99,100,107,515,1905,263,
+ 1149,274,1033,1539,341,314,176,110,369,410,
+ 2927,246,267,1158,1131,272,1481,986,530,958,
+ 38,329,2623,38,90,744,387,318,315,316,
+ 317,264,775,2570,20,108,17,21,18,1050,
+ 43,45,1084,1609,2109,572,1260,1293,1274,1359,
+ 1323,241,1443,1435,1500,1474,1526,94,276,1727,
+ 417,2570,20,348,17,21,18,1050,43,45,
+ 38,28,587,1552,1260,1293,1274,1359,1323,261,
+ 1443,1435,1978,111,87,1212,209,1373,96,2516,
+ 20,1102,17,21,18,1050,353,1825,1083,1838,
+ 627,1459,109,95,97,98,99,100,515,2570,
+ 20,1283,17,21,18,1050,1243,45,814,110,
+ 369,410,1260,1293,1274,1359,1323,1695,1443,1435,
+ 1500,1474,1526,75,1793,1415,1596,92,387,2543,
+ 20,1666,17,21,18,1050,41,107,446,275,
+ 540,20,360,17,21,18,1050,1243,45,617,
+ 124,1149,22,1260,1293,1274,1359,1323,1220,1443,
+ 1435,1500,1474,1526,75,1656,276,759,1394,3203,
+ 139,1727,417,1824,125,88,319,315,316,317,
+ 614,28,1486,1552,2570,20,515,17,21,18,
+ 1050,43,45,1039,240,111,87,1260,1873,1373,
+ 96,721,224,229,218,714,221,223,1762,1787,
+ 404,566,627,1459,109,95,97,98,99,100,
+ 28,1607,1552,3409,47,1165,1718,832,617,106,
+ 2214,110,369,410,318,315,316,317,1278,311,
+ 243,2770,20,520,17,21,18,1050,1243,45,
+ 387,627,1712,127,1260,1293,1274,1359,1323,108,
+ 1443,1435,1500,1474,1526,75,759,1757,3207,331,
+ 308,369,410,738,1793,318,315,316,317,1512,
+ 181,28,28,1552,1552,2001,179,1852,319,315,
+ 316,317,670,1217,370,315,316,317,255,213,
+ 721,224,918,218,714,221,905,2570,20,567,
+ 17,21,18,1050,43,45,135,213,255,213,
+ 1260,1874,3404,617,1013,2078,2570,20,1793,17,
+ 21,18,1050,43,45,138,134,136,160,1260,
+ 1293,1274,1359,1323,515,1961,19,1517,127,155,
+ 857,1415,140,166,515,38,865,1024,1006,144,
+ 147,150,153,1058,330,1955,364,2570,20,517,
+ 17,21,18,1050,1243,45,123,50,254,213,
+ 1260,1293,1274,1359,1323,960,1443,1435,1500,1474,
+ 1526,75,617,1214,2272,86,255,213,242,2570,
+ 20,965,17,21,18,1050,1243,45,244,1415,
+ 1033,1831,1260,1293,1274,1359,1323,195,1443,1435,
+ 1500,1474,1526,75,1012,2570,20,85,17,21,
+ 18,1050,1243,45,112,1547,1415,524,1260,1293,
+ 1274,1359,1323,1317,1443,1435,1500,1474,1526,75,
+ 980,2570,20,84,17,21,18,1050,1243,45,
+ 38,126,696,1787,1260,1293,1274,1359,1323,1147,
+ 1443,1435,1500,1474,1526,75,765,2570,20,83,
+ 17,21,18,1050,1243,45,38,1848,3343,1415,
+ 1260,1293,1274,1359,1323,963,1443,1435,1500,1474,
+ 1526,75,1274,2570,20,82,17,21,18,1050,
+ 1243,45,210,338,122,283,1260,1293,1274,1359,
+ 1323,1793,1443,1435,1500,1474,1526,75,2895,2570,
+ 20,81,17,21,18,1050,1243,45,1791,230,
+ 888,1415,1260,1293,1274,1359,1323,1793,1443,1435,
+ 1500,1474,1526,75,1365,2570,20,80,17,21,
+ 18,1050,1243,45,515,1056,3437,1698,1260,1293,
+ 1274,1359,1323,1793,1443,1435,1500,1474,1526,75,
+ 1099,2570,20,79,17,21,18,1050,1243,45,
+ 1162,1176,1033,296,1260,1293,1274,1359,1323,1793,
+ 1443,1435,1500,1474,1526,75,1253,2570,20,78,
+ 17,21,18,1050,1243,45,1607,1215,245,1415,
+ 1260,1293,1274,1359,1323,1793,1443,1435,1500,1474,
+ 1526,75,1275,2570,20,77,17,21,18,1050,
+ 1243,45,1793,2261,3438,1793,1260,1293,1274,1359,
+ 1323,2048,1443,1435,1500,1474,1526,75,2137,179,
+ 1276,76,1217,23,1607,1714,375,370,315,316,
+ 317,319,315,316,317,205,194,391,2570,20,
+ 1278,17,21,18,1050,1243,45,1793,1415,135,
+ 213,1260,1293,1274,1359,1323,1465,1443,1435,1500,
+ 1474,1526,75,1033,298,351,93,1001,138,134,
+ 136,160,1308,3449,2570,20,2278,17,21,18,
+ 1050,43,45,1427,1415,140,166,1260,1293,1274,
+ 1359,1977,144,147,150,153,1058,2570,20,364,
+ 17,21,18,1050,1243,45,1040,1164,70,118,
+ 1260,1293,1274,1359,1323,1338,1443,1435,1500,1474,
+ 1526,75,1192,2570,20,1404,17,21,18,1050,
+ 1243,45,515,234,1355,730,1260,1293,1274,1359,
+ 1323,1104,1443,1435,1500,1474,1526,75,1637,2570,
+ 20,1614,17,21,18,1050,43,45,1793,38,
+ 295,1149,1260,1293,1274,1359,1323,2343,1443,1435,
+ 1500,1474,1526,94,2570,20,320,17,21,18,
+ 1050,43,45,970,1218,88,297,1260,1293,1274,
+ 1359,1323,1148,1443,1435,1500,1474,1526,94,650,
+ 1722,2570,20,798,17,21,18,1050,1243,45,
+ 515,857,185,362,1260,1293,1274,1359,1323,1793,
+ 1443,1435,1500,1474,1526,75,1353,2570,20,359,
+ 17,21,18,1050,1243,45,1482,340,212,1956,
+ 1260,1293,1274,1359,1323,2018,1443,1435,1500,1474,
+ 1526,75,2021,2570,20,74,17,21,18,1050,
+ 43,45,1793,38,385,1149,1260,1293,1274,1359,
+ 1323,1405,1443,1435,1500,1474,1526,94,2570,20,
+ 339,17,21,18,1050,43,45,981,1635,88,
+ 1403,1260,1293,1274,1359,1323,2038,1443,1435,1500,
+ 1474,1526,94,1731,1790,2570,20,1697,17,21,
+ 18,1050,43,45,1793,1213,1523,202,1260,1293,
+ 1274,1359,1323,1793,1443,1435,1500,1474,1526,94,
+ 2570,20,273,17,21,18,1050,43,45,1792,
+ 1535,352,1796,1260,1293,1274,1359,1323,1793,1443,
+ 1435,1500,1474,1526,94,1850,1323,2570,20,3774,
+ 17,21,18,1050,43,45,2670,3774,3774,203,
+ 1260,1293,1274,1359,1323,1549,1443,1435,1500,1474,
+ 1526,94,3774,3774,319,315,316,317,759,3774,
+ 3342,3774,3774,3774,1822,3774,1793,318,315,316,
+ 317,2624,2597,20,3774,17,21,18,1050,34,
+ 370,315,316,317,2703,1217,1083,1793,417,1548,
+ 3774,1900,721,224,918,218,714,221,223,393,
+ 1793,3774,135,213,3774,2730,3774,325,318,315,
+ 316,317,88,3774,3404,197,1174,3774,279,1378,
+ 1664,137,134,136,160,38,2065,1149,2834,318,
+ 315,316,317,721,224,229,219,714,221,223,
+ 1151,155,857,3774,2960,3774,3220,3265,865,1793,
+ 3774,88,1324,759,3774,3203,1793,274,2086,3774,
+ 3774,517,318,315,316,317,3774,1277,269,1158,
+ 1131,272,1716,3774,280,3774,3774,402,392,3774,
+ 1217,318,315,316,317,3774,3774,721,224,229,
+ 218,714,221,223,759,3774,3203,404,3774,2065,
+ 3774,3774,1793,318,315,316,317,2186,1793,3404,
+ 3774,3774,3774,1485,3774,3774,370,315,316,317,
+ 1774,1217,1793,3774,391,2406,2769,3774,721,224,
+ 229,218,714,221,223,3774,155,857,135,213,
+ 2796,2316,20,856,17,21,18,1050,43,44,
+ 3404,1746,465,3774,3203,3774,3774,142,134,136,
+ 160,318,315,316,317,2570,20,3774,17,21,
+ 18,1050,43,38,141,166,3774,155,857,523,
+ 38,3774,1149,3774,865,3774,721,224,229,218,
+ 714,221,223,759,3774,3203,28,2014,1552,2575,
+ 3774,3774,318,315,316,317,88,630,2029,3203,
+ 987,3774,518,2107,3774,277,318,315,316,317,
+ 1217,3774,1285,3774,2680,3774,3774,721,224,229,
+ 218,714,221,223,523,305,3774,3774,3774,793,
+ 277,721,224,229,218,714,221,223,1985,3404,
+ 1149,3774,627,3417,3774,274,721,224,229,218,
+ 714,221,223,2029,3774,198,267,1158,1131,272,
+ 3774,304,369,410,88,3774,156,857,950,3774,
+ 274,116,3774,3774,1701,2004,2697,3774,3774,3774,
+ 309,267,1158,1131,272,370,315,316,317,2570,
+ 20,3774,17,21,18,1050,43,45,3417,3774,
+ 2004,3774,1889,769,3774,3774,3774,135,213,3774,
+ 199,3774,318,315,316,317,3774,3774,302,303,
+ 1669,3774,3774,769,3774,3774,137,134,136,160,
+ 2065,3774,318,315,316,317,2797,721,224,229,
+ 219,714,221,223,1151,370,315,316,317,2960,
+ 2065,3774,3774,3774,3774,3774,3774,721,224,1604,
+ 219,714,221,1578,1151,1603,3774,135,213,769,
+ 912,3774,518,3774,319,315,316,317,318,315,
+ 316,317,402,392,3774,3774,145,134,136,160,
+ 3774,1185,1727,1149,3774,305,2065,3774,3774,793,
+ 3774,3774,405,721,224,1604,219,714,221,223,
+ 1151,3774,627,3774,3774,3774,111,87,1246,1727,
+ 1149,96,731,20,3774,17,21,18,1050,43,
+ 36,304,369,410,1459,104,95,97,98,99,
+ 100,3774,3774,111,87,1464,3774,655,96,3774,
+ 309,38,3774,1149,318,315,316,317,3774,3774,
+ 3774,1459,102,95,97,98,99,100,3774,3774,
+ 3774,769,2065,3774,983,3774,247,88,3774,3774,
+ 318,315,316,317,2222,1141,1046,655,301,303,
+ 1376,1727,1149,1116,3774,655,3774,419,2065,3774,
+ 1437,1727,1149,3774,3774,763,224,233,3774,3774,
+ 2872,3774,1151,2330,983,111,87,3774,3774,3774,
+ 96,3774,197,3774,259,111,87,390,3774,655,
+ 96,2120,1757,1459,361,95,97,98,99,100,
+ 1567,1727,1149,1459,103,95,97,98,99,100,
+ 1469,3774,655,1442,3774,3774,983,3774,3774,318,
+ 315,316,317,3774,259,111,87,3774,3774,3774,
+ 96,1571,1757,1628,1727,1149,3774,2065,3774,983,
+ 3774,3774,3774,1459,119,95,97,98,99,100,
+ 3774,1046,3774,192,3774,3774,3774,3774,111,87,
+ 1689,1727,1149,96,743,875,259,3774,1750,1727,
+ 1149,3774,3774,1571,1757,2119,1459,115,95,97,
+ 98,99,100,3774,3774,111,87,3774,3774,259,
+ 96,3774,3774,111,87,3774,2120,1757,96,1811,
+ 1727,1149,3774,1459,2046,95,97,98,99,100,
+ 3774,1459,114,95,97,98,99,100,3774,3774,
+ 3774,1805,1273,3774,111,87,1872,1727,1149,96,
+ 3774,318,315,316,317,3774,3774,3774,3774,3774,
+ 3774,3774,1459,121,95,97,98,99,100,2065,
+ 3774,111,87,3774,2570,20,96,17,21,18,
+ 1050,43,45,1046,1906,3774,3270,1890,3774,1459,
+ 120,95,97,98,99,100,2570,20,3774,17,
+ 21,18,1050,43,45,3774,3774,2601,3774,1260,
+ 1293,1274,1893,2570,20,3774,17,21,18,1050,
+ 43,45,1320,3774,3774,3774,1260,1293,1274,1901,
+ 3774,318,315,316,317,2807,3774,3774,3774,1141,
+ 3774,655,274,3774,370,315,316,317,3774,2065,
+ 2838,3774,3774,267,1158,1131,272,3774,3774,370,
+ 315,316,317,1151,2848,3774,135,213,983,3774,
+ 3774,3774,389,370,315,316,317,3774,3774,3774,
+ 274,135,213,3774,3774,148,134,136,160,3774,
+ 3774,269,1158,1131,272,135,213,2879,3774,3774,
+ 151,134,136,160,3774,3774,370,315,316,317,
+ 2889,3774,3774,3774,154,134,136,160,259,370,
+ 315,316,317,3774,3774,2176,1757,3774,135,213,
+ 2570,20,3774,17,21,18,1050,43,45,3774,
+ 3774,135,213,1260,1293,1902,3774,365,134,136,
+ 160,2570,20,3774,17,21,18,1050,43,45,
+ 138,134,136,160,1260,1293,1916,2570,20,3774,
+ 17,21,18,1050,43,45,3774,3774,3774,3774,
+ 1260,1293,1926,2570,20,3774,17,21,18,1050,
+ 43,45,3774,3774,3774,3774,1260,1293,1929,2570,
+ 20,3774,17,21,18,1050,43,45,843,3774,
+ 3203,3774,1260,1293,1935,2570,20,3774,17,21,
+ 18,1050,43,45,517,3774,417,1000,1260,1293,
+ 1942,3774,1083,3774,417,3774,318,315,316,317,
+ 3774,3774,721,224,229,218,714,221,223,1083,
+ 88,417,3774,1278,1329,3774,3774,116,88,3774,
+ 3774,197,1174,3774,950,1378,627,3774,3774,3774,
+ 1083,3774,417,3774,2834,88,3774,3774,197,1174,
+ 3774,1083,1378,417,3774,2368,369,410,3774,3774,
+ 3774,2834,3220,3774,3774,1083,88,417,1597,197,
+ 1174,3774,3774,1378,3774,3774,1591,88,3774,3220,
+ 197,1174,2834,3774,1378,1623,1083,3774,417,3774,
+ 3774,88,1721,2834,197,1174,603,3774,1378,3774,
+ 3220,319,315,316,317,3774,1649,2834,3774,3774,
+ 3774,3220,88,3774,3774,197,1174,1675,3774,1378,
+ 3774,3774,3774,1273,3774,3220,3774,1273,2834,3774,
+ 3774,1692,318,315,316,317,318,315,316,317,
+ 1980,3774,3270,3774,3774,3774,3220,3774,3774,3774,
+ 2065,3774,2169,3774,2065,2570,20,3774,17,21,
+ 18,1050,43,37,1046,3774,2570,20,1046,17,
+ 21,18,1050,43,36,2570,20,3774,17,21,
+ 18,1050,43,35,961,1726,566,3774,2433,3774,
+ 1273,3774,2453,3774,319,315,316,317,274,318,
+ 315,316,317,3774,3774,3774,3774,3774,3774,267,
+ 1158,1131,272,1278,3774,2570,20,2065,17,21,
+ 18,1050,43,48,3774,3774,627,3774,266,2570,
+ 20,1046,17,21,18,1050,43,47,3774,1273,
+ 3774,3774,3774,3774,3774,307,369,410,318,315,
+ 316,317,3774,2570,20,2872,17,21,18,1050,
+ 43,46,1273,1498,3774,655,2065,1087,3774,3774,
+ 3774,318,315,316,317,3774,318,315,316,317,
+ 1046,2597,20,3774,17,21,18,1050,33,2065,
+ 1716,3774,197,3774,1329,3774,3774,3774,3774,318,
+ 315,316,317,1046,2119,2743,20,3774,17,21,
+ 18,1050,1857,3774,3774,3774,3774,2065,3774,3774,
+ 3774,3774,3774,1442,1317,3774,3774,2499,1259,1660,
+ 3774,1588,3774,318,315,316,317,1838,318,315,
+ 316,317,3774,1848,3774,3774,318,315,316,317,
+ 3774,2495,318,315,316,317,3172,1985,1985,1149,
+ 1149,3774,3774,192,3447,3774,978,2050,3774,1985,
+ 3467,1149,3774,3774,1271,875,319,315,316,317,
+ 3774,3774,3774,88,88,3774,3774,2075,3774,3774,
+ 116,116,3774,3774,3774,88,319,315,316,317,
+ 3774,3774,116,3774,3774,3774,3774,3774,3774,3774,
+ 3774,3774,3774,3774,3774,3774,3774,3774,3774,3774,
+ 3774,3774,3774,3774,3774,3774,3774,3774,3774,3774,
+ 3774,3774,3774,3774,3774,3774,3774,3774,3774,1738,
+ 2228,3774,3774,3774,3774,3774,3774,3774,3774,3774,
+ 3774,2242,3774,0,1,536,0,1,516,0,
+ 1,531,0,1,540,0,674,409,0,516,
+ 129,0,531,129,0,540,129,0,516,130,
+ 0,531,130,0,540,130,0,516,131,0,
+ 531,131,0,540,131,0,540,185,0,531,
+ 185,0,516,185,0,185,189,0,540,184,
+ 0,531,184,0,516,184,0,184,189,0,
+ 516,132,0,531,132,0,540,132,0,516,
+ 133,0,531,133,0,540,133,0,413,416,
+ 0,412,415,0,411,414,0,11,226,0,
+ 516,368,0,531,368,0,540,368,0,4186,
+ 408,0,223,235,0,3782,1,0,540,380,
+ 0,531,380,0,516,380,0,1038,32,0,
+ 1849,32,0,516,407,0,531,407,0,540,
+ 407,0,4169,407,0,4167,407,0,540,253,
+ 0,531,253,0,516,253,0,4186,409,0,
+ 1,4011,0,223,236,0,516,403,0,531,
+ 403,0,540,403,0,3991,403,0,3990,403,
+ 0,3989,403,0,3988,403,0,3939,403,0,
+ 3938,403,0,3937,403,0,3936,403,0,3935,
+ 403,0,516,406,0,531,406,0,540,406,
+ 0,4169,406,0,4167,406,0,179,20,0,
+ 8,10,0,1,4190,0,1,4189,0,1,
+ 4188,0,1,4000,0,366,355,0,367,356,
+ 0,113,2738,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,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,69,70,48,71,50,
+ 51,52,53,54,55,56,57,58,59,60,
+ 61,62,63,64,65,66,67,68,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,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,69,70,48,0,50,51,52,
+ 53,54,55,56,57,58,59,60,61,62,
+ 63,64,65,66,67,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,2,50,51,52,53,54,
+ 55,56,57,58,59,60,61,62,63,64,
+ 65,66,67,0,1,2,3,4,5,27,
+ 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,2,0,1,2,3,4,5,55,7,
+ 8,9,10,0,61,62,63,64,65,66,
+ 67,0,1,10,0,1,0,6,2,0,
+ 6,10,6,49,13,14,15,16,17,37,
+ 0,1,2,3,4,5,6,0,1,49,
+ 10,11,12,13,14,15,16,17,37,19,
+ 20,21,22,23,24,25,26,46,0,1,
+ 30,47,101,47,0,1,2,3,4,5,
+ 0,7,8,9,37,86,73,74,0,68,
+ 69,70,71,72,73,74,75,76,77,78,
+ 79,80,81,82,83,84,85,0,87,88,
+ 89,90,91,92,93,94,95,96,97,98,
+ 99,0,1,49,0,18,0,6,0,0,
+ 6,10,6,7,13,14,15,16,17,0,
+ 100,0,13,14,3,4,7,8,9,0,
+ 1,2,3,4,5,6,28,31,37,10,
+ 11,12,13,14,15,16,17,46,19,20,
+ 21,22,23,24,25,26,0,0,1,30,
+ 39,40,41,42,43,44,45,0,1,68,
+ 69,70,71,72,73,74,75,76,77,78,
+ 79,80,81,82,83,84,85,0,87,88,
+ 89,90,91,92,93,94,95,96,97,98,
+ 99,0,1,0,100,2,0,6,0,1,
+ 0,10,6,10,13,14,15,16,17,0,
+ 1,2,3,4,5,0,7,8,9,100,
+ 5,75,76,77,78,79,80,31,37,0,
+ 0,1,2,3,4,5,6,46,0,10,
+ 10,11,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,19,49,68,
+ 69,70,71,72,73,74,75,76,77,78,
+ 79,80,81,82,83,84,85,0,87,88,
+ 89,90,91,92,93,94,95,96,97,98,
+ 99,0,1,0,1,0,1,6,68,0,
+ 1,10,73,74,13,14,15,16,17,0,
+ 0,1,2,3,4,5,6,0,0,1,
+ 10,11,12,13,14,15,16,17,37,19,
+ 20,21,22,23,24,25,26,46,0,1,
+ 2,3,4,5,0,7,8,9,0,1,
+ 2,3,4,5,0,7,8,9,49,68,
+ 69,70,71,72,73,74,75,76,77,78,
+ 79,80,81,82,83,84,85,0,87,88,
+ 89,90,91,92,93,94,95,96,97,98,
+ 99,0,1,0,1,86,0,6,81,82,
+ 46,10,0,0,13,14,15,16,17,6,
+ 100,0,1,2,3,4,5,6,7,8,
+ 9,10,0,1,2,3,4,5,37,18,
+ 37,0,88,89,31,0,0,46,27,28,
+ 29,30,31,32,33,34,35,36,37,46,
+ 19,49,75,76,77,78,79,80,47,68,
+ 69,70,71,72,73,74,75,76,77,78,
+ 79,80,81,82,83,84,85,0,87,88,
+ 89,90,91,92,93,94,95,96,97,98,
+ 99,0,1,2,3,4,5,6,7,8,
+ 9,10,11,12,0,1,2,3,4,5,
+ 6,75,76,77,78,79,80,0,27,28,
+ 29,30,31,32,33,34,35,36,0,38,
+ 39,40,41,42,43,44,45,0,1,0,
+ 0,37,0,0,2,0,55,7,6,0,
+ 46,47,61,62,63,64,65,66,67,0,
+ 0,19,13,14,19,37,0,1,2,3,
+ 4,5,6,7,8,9,10,11,12,0,
+ 0,2,3,4,5,0,7,8,9,47,
+ 11,0,101,27,28,29,30,31,32,33,
+ 34,35,36,18,38,39,40,41,42,43,
+ 44,45,0,0,2,3,4,5,0,0,
+ 0,55,83,11,0,6,46,61,62,63,
+ 64,65,66,67,0,1,2,3,4,5,
+ 6,81,82,84,10,11,12,13,14,15,
+ 16,17,18,19,20,21,22,23,24,25,
+ 26,37,0,0,1,31,0,101,2,3,
+ 4,5,38,7,8,9,85,11,0,1,
+ 18,0,48,0,50,51,52,53,54,71,
+ 56,57,58,59,60,0,72,2,3,4,
+ 5,6,7,8,9,86,11,12,90,91,
+ 92,93,94,95,96,97,98,99,37,100,
+ 0,0,27,28,29,30,0,32,33,34,
+ 35,36,6,38,39,40,41,42,43,44,
+ 45,0,1,0,0,2,2,3,4,5,
+ 55,7,8,9,71,11,61,62,63,64,
+ 65,66,67,68,0,1,2,3,4,5,
+ 6,0,46,47,10,11,12,13,14,15,
+ 16,17,18,19,20,21,22,23,24,25,
+ 26,0,0,0,2,31,0,0,2,3,
+ 4,5,38,7,8,9,86,11,15,18,
+ 13,14,48,0,50,51,52,53,54,48,
+ 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,0,0,0,1,31,0,1,7,
+ 8,9,0,38,0,1,2,3,4,5,
+ 6,18,10,48,0,50,51,52,53,54,
+ 6,56,57,58,59,60,0,0,2,3,
+ 4,5,6,7,8,9,0,11,12,0,
+ 1,37,0,7,8,9,7,8,9,10,
+ 0,47,0,27,28,29,30,0,32,33,
+ 34,35,36,6,38,39,40,41,42,43,
+ 44,45,0,46,0,0,37,2,3,4,
+ 5,55,68,0,0,0,11,61,62,63,
+ 64,65,66,67,68,0,1,2,3,4,
+ 5,6,18,46,47,10,11,12,13,14,
+ 15,16,17,18,19,20,21,22,23,24,
+ 25,26,0,49,0,0,31,0,0,2,
+ 3,4,5,38,0,7,8,9,11,15,
+ 6,69,70,48,102,50,51,52,53,54,
+ 0,56,57,58,59,60,0,1,2,3,
+ 4,5,6,0,37,31,10,11,12,13,
+ 14,15,16,17,18,19,20,21,22,23,
+ 24,25,26,0,0,0,0,31,0,0,
+ 7,8,9,10,38,7,8,9,10,72,
+ 0,0,18,18,48,83,50,51,52,53,
+ 54,86,56,57,58,59,60,0,18,2,
+ 3,4,5,6,7,8,9,0,11,12,
+ 0,0,2,3,4,5,0,0,7,8,
+ 9,11,0,1,27,28,29,30,18,32,
+ 33,34,35,36,0,38,39,40,41,42,
+ 43,44,45,27,28,29,0,0,0,86,
+ 69,70,55,6,86,7,8,9,61,62,
+ 63,64,65,66,67,68,0,1,2,3,
+ 4,5,6,27,28,29,10,11,12,13,
+ 14,15,16,17,18,19,20,21,22,23,
+ 24,25,26,46,47,0,0,31,2,3,
+ 4,5,0,0,38,71,0,11,0,7,
+ 8,9,6,18,48,0,50,51,52,53,
+ 54,6,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,46,0,0,0,31,0,
+ 0,0,47,0,49,38,7,8,9,0,
+ 7,8,9,18,68,48,0,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,0,0,84,31,
+ 0,0,7,8,9,0,38,7,8,9,
+ 0,10,7,8,9,18,48,0,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,18,0,0,49,
+ 31,85,0,27,28,29,0,38,6,0,
+ 0,0,0,7,73,74,18,48,6,50,
+ 51,52,53,54,18,56,57,58,59,60,
+ 0,1,2,3,4,5,6,27,28,29,
+ 10,11,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,0,49,47,
+ 49,31,0,0,7,8,9,0,38,0,
+ 68,0,0,0,7,8,9,0,48,6,
+ 50,51,52,53,54,0,56,57,58,59,
+ 60,0,1,2,3,4,5,6,27,28,
+ 29,10,11,12,13,14,15,16,17,18,
+ 19,20,21,22,23,24,25,26,49,0,
+ 47,49,31,0,0,0,1,0,0,38,
+ 6,6,0,6,7,8,9,0,0,48,
+ 0,50,51,52,53,54,0,56,57,58,
+ 59,60,0,1,2,3,4,5,31,7,
+ 8,9,37,11,12,0,0,2,3,4,
+ 5,47,47,46,0,0,11,49,0,27,
+ 28,29,30,18,32,33,34,35,36,49,
+ 0,39,40,41,42,43,44,45,71,0,
+ 1,27,28,29,0,6,0,55,0,0,
+ 6,0,0,61,62,63,64,65,66,67,
+ 0,0,2,3,4,5,0,7,8,9,
+ 0,11,12,0,1,31,37,0,0,6,
+ 0,0,0,0,69,70,47,27,28,29,
+ 30,47,32,33,34,35,36,49,49,39,
+ 40,41,42,43,44,45,0,0,0,0,
+ 37,0,0,6,0,55,7,8,9,0,
+ 47,61,62,63,64,65,66,67,0,0,
+ 2,3,4,5,0,7,8,9,31,11,
+ 12,7,8,9,0,0,69,70,0,69,
+ 70,0,0,46,0,27,28,29,30,0,
+ 32,33,34,35,36,0,0,39,40,41,
+ 42,43,44,45,0,0,0,0,0,0,
+ 0,0,0,55,0,0,0,0,0,61,
+ 62,63,64,65,66,67,0,0,2,3,
+ 4,5,0,7,8,9,0,11,12,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,27,28,29,30,0,32,33,
+ 34,35,36,0,0,39,40,41,42,43,
+ 44,45,0,0,0,0,0,0,0,0,
+ 0,55,7,8,9,0,0,61,62,63,
+ 64,65,66,67,0,0,0,0,0,0,
+ 0,0,27,28,29,30,0,32,33,34,
+ 35,36,0,0,39,40,41,42,43,44,
+ 45,0,0,0,0,0,0,0,0,0,
+ 55,0,0,0,0,0,61,62,63,64,
+ 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,0,0,0,0,0,
+ 0,0,0,0,0,0,0,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,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,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 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,
+ 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,0,
+ 0,0,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,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,7,8,9,0,0,
+ 0,0,0,0,0,7,8,9,0,0,
+ 6,7,8,9,0,27,28,29,30,0,
+ 32,33,34,35,36,27,28,29,30,0,
+ 32,33,34,35,36,31,0,1,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 46,0,16,17,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,37,0,71,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,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,87,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,
+ 3774,1,6180,6111,6043,6099,1798,3534,1,1,
+ 1,6179,1,1,1,1,1,1,815,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,3783,1,1,1,1,1,1,3875,1,
+ 1,1,1,1,1,1,55,157,1640,286,
+ 1175,1073,1401,1716,605,1,1630,1042,1682,1199,
+ 1656,1,1,1,1,1,1,1,3781,8,
+ 3750,3750,3750,3750,3750,3750,3750,3750,3750,3750,
+ 3750,3750,3750,3750,3750,3750,3750,3750,3750,3750,
+ 3750,3750,3750,3750,3750,3750,3750,3750,3750,3750,
+ 3750,3750,3750,3750,3750,3750,3774,3750,3750,3750,
+ 3750,3750,3750,3750,3750,1234,1357,3750,458,3750,
+ 3750,3750,3750,3750,3750,3750,3750,3750,3750,3750,
+ 3750,3750,3750,3750,3750,3750,3750,3750,3774,1,
+ 6180,6111,6043,6099,1798,3534,1,1,1,6179,
+ 1,1,1,1,1,1,815,1,1,1,
+ 1,1,1,1,1,1,1,1,1,3783,
+ 1,1,1,1,1,3774,3875,1,1,1,
+ 1,1,1,1,358,2192,1640,3774,1175,1073,
+ 1401,1716,605,1,1630,1042,1682,1199,1656,1,
+ 1,1,1,1,1,1,3781,3774,1,6180,
+ 6111,6043,6099,3784,3534,1,1,1,6179,1,
+ 1,1,1,1,1,815,1,1,1,1,
+ 1,1,1,1,1,1,1,1,3783,1,
+ 1,1,1,1,3774,3875,1,1,1,1,
+ 1,1,1,1234,1357,1640,3774,1175,1073,1401,
+ 1716,605,1,1630,1042,1682,1199,1656,1,1,
+ 1,1,1,1,1,3774,1,6180,6111,6043,
+ 6099,3784,3534,1,1,1,6179,1,1,1,
+ 1,1,1,815,1,1,1,1,1,1,
+ 1,1,1,1,1,1,3783,1,1,1,
+ 1,1,3774,3875,1,1,1,1,1,1,
+ 1,3774,326,1640,4101,1175,1073,1401,1716,605,
+ 1,1630,1042,1682,1199,1656,1,1,1,1,
+ 1,1,1,3774,3131,3785,4185,4187,3687,4102,
+ 540,516,531,3246,3786,3385,3235,2285,3255,3361,
+ 2092,3774,3790,1179,3787,3788,3789,734,496,1129,
+ 3988,3990,3989,3937,3774,3938,3936,3991,3939,3935,
+ 3774,476,3942,3946,3944,3945,3943,3948,3949,1,
+ 3774,3690,268,2342,4000,4188,4190,4189,3947,540,
+ 516,531,253,49,3941,3950,3951,3952,1275,3347,
+ 3077,1,4187,3333,3774,443,3774,4187,1082,3774,
+ 3780,4187,3780,2521,4187,4187,4187,4187,4187,909,
+ 1,3131,3785,4185,4187,4186,3778,222,487,2548,
+ 997,3786,541,3235,2285,3255,3361,2092,4187,3790,
+ 1179,3787,3788,3789,734,496,1129,4187,3774,614,
+ 784,3779,3533,3779,1,3058,4000,4188,4190,4189,
+ 3774,3543,3537,3540,909,4032,3309,3295,3774,4187,
+ 4187,4187,4187,4187,4187,4187,4187,4187,4187,4187,
+ 4187,4187,4187,4187,4187,4187,4187,3774,4187,4187,
+ 4187,4187,4187,4187,4187,4187,4187,4187,4187,4187,
+ 4187,1,4186,1943,3774,626,1,4186,344,52,
+ 3778,4186,117,3534,4186,4186,4186,4186,4186,182,
+ 3777,3774,2824,2419,4167,4169,540,516,531,3774,
+ 3131,3785,4185,4187,4186,3778,4117,117,4186,2552,
+ 3786,541,3235,2285,3255,3361,2092,4186,3790,1179,
+ 3787,3788,3789,734,496,1129,60,3774,521,1813,
+ 4172,4168,4174,4175,4173,4170,4171,3774,940,4186,
+ 4186,4186,4186,4186,4186,4186,4186,4186,4186,4186,
+ 4186,4186,4186,4186,4186,4186,4186,3774,4186,4186,
+ 4186,4186,4186,4186,4186,4186,4186,4186,4186,4186,
+ 4186,1,4185,3774,3777,1737,1,4185,413,3618,
+ 3774,4185,3784,1797,4185,4185,4185,4185,4185,1,
+ 3058,4000,4188,4190,4189,3774,3543,3537,3540,3777,
+ 483,3065,3049,3033,3017,3001,2980,3783,4185,51,
+ 1,3131,5002,4802,4602,4702,29,4185,349,3333,
+ 3246,4902,541,3235,2285,3255,3361,2092,5973,3790,
+ 1179,3787,3788,3789,734,496,1129,1059,1943,4185,
+ 4185,4185,4185,4185,4185,4185,4185,4185,4185,4185,
+ 4185,4185,4185,4185,4185,4185,4185,3774,4185,4185,
+ 4185,4185,4185,4185,4185,4185,4185,4185,4185,4185,
+ 4185,1,3786,412,3621,411,3624,3786,29,11,
+ 3627,3786,3309,3295,3786,3786,3786,3786,3786,3774,
+ 3774,3131,3785,4185,4187,4186,3778,63,3774,442,
+ 3246,3786,541,3235,2285,3255,3361,2092,3786,3790,
+ 1179,3787,3788,3789,734,496,1129,3786,1,3058,
+ 4000,4188,4190,4189,73,3543,3537,3540,253,3058,
+ 4000,4188,4190,4189,347,540,516,531,2630,3786,
+ 3786,3786,3786,3786,3786,3786,3786,3786,3786,3786,
+ 3786,3786,3786,3786,3786,3786,3786,62,3786,3786,
+ 3786,3786,3786,3786,3786,3786,3786,3786,3786,3786,
+ 3786,1,3785,270,814,1839,3774,3785,2863,2846,
+ 999,3785,1,3774,3785,3785,3785,3785,3785,3784,
+ 3777,356,367,367,367,367,367,3768,367,367,
+ 367,3768,1,3058,4000,4188,4190,4189,3785,5973,
+ 909,3774,847,636,3783,3774,61,3785,367,367,
+ 367,367,3768,367,367,367,367,367,367,2313,
+ 1026,2,3065,3049,3033,3017,3001,2980,3768,3785,
+ 3785,3785,3785,3785,3785,3785,3785,3785,3785,3785,
+ 3785,3785,3785,3785,3785,3785,3785,3774,3785,3785,
+ 3785,3785,3785,3785,3785,3785,3785,3785,3785,3785,
+ 3785,3774,1,1,1,1,1,3784,3534,1,
+ 1,1,1,1,1,2342,4000,4188,4190,4189,
+ 262,3065,3049,3033,3017,3001,2980,3774,1,1,
+ 1,1,3783,1,1,1,1,1,220,4080,
+ 1,1,1,1,1,1,1,350,1230,67,
+ 1,909,3774,3774,1952,3774,1,3534,3780,54,
+ 262,262,1,1,1,1,1,1,1,69,
+ 64,1909,2824,2419,1059,909,3774,1,1,1,
+ 1,1,3784,3534,1,1,1,1,1,185,
+ 256,3585,3585,3585,3585,229,3576,3582,3579,3779,
+ 3585,71,300,1,1,1,1,3783,1,1,
+ 1,1,1,232,4080,1,1,1,1,1,
+ 1,1,3774,3774,3785,4185,4187,4186,43,3774,
+ 3774,1,1376,3786,292,3778,794,1,1,1,
+ 1,1,1,1,3774,1,6180,6111,6043,6099,
+ 3784,2863,2846,675,1,6179,1,1,1,1,
+ 1,1,815,1,1,1,1,1,1,1,
+ 1,2020,1,337,1545,3783,184,299,3597,3597,
+ 3597,3597,3875,3588,3594,3591,1101,3597,3774,3074,
+ 815,271,1640,211,1175,1073,1401,1716,605,1683,
+ 1630,1042,1682,1199,1656,3774,1753,1,1,1,
+ 1,191,1,1,1,2047,1,1,1657,1631,
+ 1605,1579,1553,1501,1527,1475,1449,1417,909,3777,
+ 1,3774,1,1,1,1,3774,1,1,1,
+ 1,1,3780,3970,1,1,1,1,1,1,
+ 1,3774,1953,3774,206,2013,5949,5949,5949,5949,
+ 1,540,516,531,1864,5949,1,1,1,1,
+ 1,1,1,191,3774,1,6180,6111,6043,6099,
+ 3784,3774,452,3779,1,6179,1,1,1,1,
+ 1,1,815,1,1,1,1,1,1,1,
+ 1,3774,3774,65,4012,3783,377,53,5969,5969,
+ 5969,5969,3875,540,516,531,4032,5969,1764,1405,
+ 2824,2419,1640,3774,1175,1073,1401,1716,605,2006,
+ 1630,1042,1682,1199,1656,3774,1,6180,6111,6043,
+ 6099,3784,3774,2145,3774,1,6179,1,1,1,
+ 1,1,1,815,1,1,1,1,1,1,
+ 1,1,253,3774,3774,2300,3783,324,938,540,
+ 516,531,3774,3875,1,2342,3762,3759,3753,3756,
+ 3780,1510,3370,1640,1,1175,1073,1401,1716,605,
+ 3645,1630,1042,1682,1199,1656,3774,89,1,1,
+ 1,1,190,1,1,1,159,1,1,268,
+ 2317,909,113,540,516,531,540,516,531,253,
+ 3774,3779,3774,1,1,1,1,3774,1,1,
+ 1,1,1,3780,3970,1,1,1,1,1,
+ 1,1,357,1728,3774,208,909,3785,4185,4187,
+ 4186,1,3781,3774,229,3774,3786,1,1,1,
+ 1,1,1,1,190,3774,1,6180,6111,6043,
+ 6099,3784,233,2005,3779,1,6179,1,1,1,
+ 1,1,1,815,1,1,1,1,1,1,
+ 1,1,68,2620,66,1,3783,3774,378,3785,
+ 4185,4187,4186,3875,3774,540,516,531,3786,1764,
+ 3784,1234,1357,1640,3771,1175,1073,1401,1716,605,
+ 3774,1630,1042,1682,1199,1656,3774,1,6180,6111,
+ 6043,6099,3784,3774,1968,3783,1,6179,1,1,
+ 1,1,1,1,815,1,1,1,1,1,
+ 1,1,1,1,3774,367,3774,3783,1,3774,
+ 3543,3537,3540,253,3875,3543,3537,3540,253,1642,
+ 356,59,1536,5973,1640,1376,1175,1073,1401,1716,
+ 605,4031,1630,1042,1682,1199,1656,3774,5973,1,
+ 1,1,1,191,1,1,1,3774,1,1,
+ 3774,381,3785,4185,4187,4186,3774,3774,540,516,
+ 531,3786,3774,2581,1,1,1,1,1060,1,
+ 1,1,1,1,3774,3970,1,1,1,1,
+ 1,1,1,3988,3990,3989,249,3774,380,4032,
+ 1234,1357,1,3780,4032,3648,3654,3651,1,1,
+ 1,1,1,1,1,191,3774,1,6180,6111,
+ 6043,6099,3784,1,1,1,1,6179,1,1,
+ 1,1,1,1,815,1,1,1,1,1,
+ 1,1,1,1291,3779,354,207,3783,1460,1460,
+ 1460,1460,372,3774,3875,879,3774,1460,30,540,
+ 516,531,3782,5973,1640,3774,1175,1073,1401,1716,
+ 605,3780,1630,1042,1682,1199,1656,3774,1,6180,
+ 6111,6043,6099,3784,70,3774,207,1,6179,1,
+ 1,1,1,1,1,815,1,1,1,1,
+ 1,1,1,1,3803,42,3774,3774,3783,371,
+ 3774,3774,3779,183,766,3875,540,516,531,3774,
+ 540,516,531,5973,3781,1640,3774,1175,1073,1401,
+ 1716,605,5787,1630,1042,1682,1199,1656,3774,1,
+ 6180,6111,6043,6099,3784,3774,72,30,1,6179,
+ 1,1,1,1,1,1,815,1,1,1,
+ 1,1,1,1,1,253,3774,3774,675,3783,
+ 373,50,3678,3684,3681,379,3875,540,516,531,
+ 3774,3333,540,516,531,5973,1640,3774,1175,1073,
+ 1401,1716,605,754,1630,1042,1682,1199,1656,3774,
+ 1,6180,6111,6043,6099,3784,248,3774,189,1,
+ 6179,1,1,1,1,1,1,815,1,1,
+ 1,1,1,1,1,1,206,3774,381,1891,
+ 3783,1101,285,3988,3990,3989,1,3875,1110,3774,
+ 250,201,3774,3534,3309,3295,377,1640,3780,1175,
+ 1073,1401,1716,605,815,1630,1042,1682,1199,1656,
+ 3774,1,6180,6111,6043,6099,3784,1,1,1,
+ 1,6179,1,1,1,1,1,1,815,1,
+ 1,1,1,1,1,1,1,200,1917,3779,
+ 1995,3783,3774,3774,540,516,531,374,3875,3774,
+ 1110,251,1,1,540,516,531,3774,1640,3780,
+ 1175,1073,1401,1716,605,3774,1630,1042,1682,1199,
+ 1656,3774,1,6180,6111,6043,6099,3784,3988,3990,
+ 3989,1,6179,1,1,1,1,1,1,815,
+ 1,1,1,1,1,1,1,1,4158,3774,
+ 3779,4187,3783,3774,1,1,2317,235,1,3875,
+ 91,388,3774,223,3642,3642,3642,3774,3774,1640,
+ 1,1175,1073,1401,1716,605,3774,1630,1042,1682,
+ 1199,1656,1,3058,726,677,600,3546,223,3543,
+ 3537,3540,909,3786,450,3774,3774,3785,4185,4187,
+ 4186,91,388,223,252,58,3786,4186,3774,3988,
+ 3990,3989,3937,1063,3938,3936,3991,3939,3935,4185,
+ 3774,3942,3946,3944,3945,3943,3948,3949,223,1,
+ 2317,3988,3990,3989,1,265,3774,3947,1,1,
+ 117,3774,3774,3941,3950,3951,3952,1275,3347,3077,
+ 3774,3774,3785,4185,4187,3639,3774,540,516,531,
+ 3774,3786,450,1,2317,117,909,57,3774,3780,
+ 56,3774,3774,3774,1234,1357,265,3988,3990,3989,
+ 3937,117,3938,3936,3991,3939,3935,3786,3785,3942,
+ 3946,3944,3945,3943,3948,3949,3774,3774,3774,375,
+ 909,3774,3774,3784,3774,3947,540,516,531,3774,
+ 3779,3941,3950,3951,3952,1275,3347,3077,3774,3774,
+ 3785,4185,4187,3687,376,540,516,531,3783,3786,
+ 450,540,516,531,3774,3774,1234,1357,3774,1234,
+ 1357,3774,3774,2327,3774,3988,3990,3989,3937,3774,
+ 3938,3936,3991,3939,3935,3774,3774,3942,3946,3944,
+ 3945,3943,3948,3949,3774,3774,3774,3774,3774,3774,
+ 3774,3774,3774,3947,3774,3774,3774,3774,3774,3941,
+ 3950,3951,3952,1275,3347,3077,3774,3774,3785,4185,
+ 4187,4186,3774,540,516,531,3774,3786,450,3774,
+ 3774,3774,3774,3774,3774,3774,3774,3774,3774,3774,
+ 3774,3774,3774,3988,3990,3989,3937,3774,3938,3936,
+ 3991,3939,3935,3774,3774,3942,3946,3944,3945,3943,
+ 3948,3949,3774,3774,3774,129,3774,3774,3774,3774,
+ 3774,3947,3555,3549,3552,3774,3774,3941,3950,3951,
+ 3952,1275,3347,3077,3774,3774,3774,3774,3774,3774,
+ 3774,3774,3988,3990,3989,3937,3774,3938,3936,3991,
+ 3939,3935,3774,3774,3942,3946,3944,3945,3943,3948,
+ 3949,3774,3774,3774,3774,3774,3774,3774,3774,3774,
+ 3947,3774,3774,3774,3774,3774,3941,3950,3951,3952,
+ 3774,3131,3785,4185,4187,4186,3774,3774,3774,3774,
+ 3246,3786,541,3235,2285,3255,3361,2092,5973,3790,
+ 1179,3787,3788,3789,734,496,1129,20,3747,179,
+ 179,179,179,3747,179,179,179,3747,3774,3774,
+ 3774,3774,3774,3774,3774,3774,3774,3774,3774,3774,
+ 3774,3774,3774,3774,179,179,179,179,3747,179,
+ 179,179,179,179,3747,3774,3131,3785,4185,4187,
+ 4186,3774,3774,3774,3747,3246,3786,541,3235,2285,
+ 3255,3361,2092,5973,3790,1179,3787,3788,3789,734,
+ 496,1129,355,366,366,366,366,366,3765,366,
+ 366,366,3765,3774,3774,3774,3774,3774,3774,3774,
+ 3774,3774,3774,3774,3774,3774,3774,3774,3774,366,
+ 366,366,366,3765,366,366,366,366,366,366,
+ 1,3131,5002,4802,4602,4702,3774,3774,3774,3765,
+ 3246,4902,541,3235,2285,3255,3361,2092,5973,3790,
+ 1179,3787,3788,3789,734,496,1129,382,3131,3785,
+ 4185,4187,4186,3774,3774,3774,3774,3246,3786,541,
+ 3235,2285,3255,3361,2092,5973,3790,1179,3787,3788,
+ 3789,734,496,1129,3774,3131,3785,4185,4187,4186,
+ 3774,3774,3774,3774,3246,3786,541,3235,2285,3255,
+ 3361,2092,5973,3790,1179,3787,3788,3789,734,496,
+ 1129,3774,2106,3785,4185,4187,4186,3774,3774,3774,
+ 3774,3246,3786,541,3235,2285,3255,3361,2092,3774,
+ 3790,1179,3787,3788,3789,734,496,1129,3774,3082,
+ 3785,4185,4187,4186,3774,3774,3774,3774,3246,3786,
+ 541,3235,2285,3255,3361,2092,3774,3790,1179,3787,
+ 3788,3789,734,496,1129,3774,3099,3785,4185,4187,
+ 4186,3774,3774,3774,3774,3246,3786,541,3235,2285,
+ 3255,3361,2092,3774,3790,1179,3787,3788,3789,734,
+ 496,1129,3774,3120,3785,4185,4187,4186,3774,3774,
+ 3774,3774,3246,3786,541,3235,2285,3255,3361,2092,
+ 3774,3790,1179,3787,3788,3789,734,496,1129,3774,
+ 3131,3785,4185,4187,4186,3774,3774,3774,3774,3246,
+ 3786,541,3235,2285,3255,3361,2092,3774,3790,1179,
+ 3787,3788,3789,734,496,1129,3774,3145,3785,4185,
+ 4187,4186,3774,3774,3774,3774,3246,3786,541,3235,
+ 2285,3255,3361,2092,3774,3790,1179,3787,3788,3789,
+ 734,496,1129,407,3774,3774,3675,3672,3774,3774,
+ 3669,3663,3666,3774,3774,3774,3774,3774,3774,3774,
+ 3774,3774,3774,3774,3774,3774,3774,3774,3774,3774,
+ 3988,3990,3989,3937,3774,3938,3936,3991,3939,3935,
+ 3774,3774,4172,4168,4174,4175,4173,4170,4171,1,
+ 3131,3785,4185,4187,4186,3774,3774,3774,3774,3246,
+ 3786,541,3235,2285,3255,3361,2092,3774,3790,1179,
+ 3787,3788,3789,734,496,1129,406,3774,3774,3744,
+ 3741,3774,3774,3738,3732,3735,3774,3774,3774,3774,
+ 3774,3774,3774,3774,3774,3774,3774,3774,3774,3774,
+ 3774,3774,3774,3988,3990,3989,3937,3774,3938,3936,
+ 3991,3939,3935,3774,3774,4172,4168,4174,4175,4173,
+ 4170,4171,3774,3166,3785,4185,4187,4186,3774,3774,
+ 3774,3774,3246,3786,541,3235,2285,3255,3361,2092,
+ 3774,3790,1179,3787,3788,3789,734,496,1129,332,
+ 3131,3785,4185,4187,4186,3774,3774,3774,3774,3246,
+ 3786,541,3235,2285,3255,3361,2092,3774,3790,1179,
+ 3787,3788,3789,734,496,1129,130,3774,3774,3774,
+ 3774,3774,3774,3564,3558,3561,131,3774,3774,3774,
+ 3774,3774,3774,3573,3567,3570,3774,3774,3774,3774,
+ 3774,3774,3774,3988,3990,3989,3937,3774,3938,3936,
+ 3991,3939,3935,3988,3990,3989,3937,132,3938,3936,
+ 3991,3939,3935,3774,3606,3600,3603,133,3774,3774,
+ 3774,3774,3774,3774,3615,3609,3612,3774,3774,3774,
+ 3774,3774,3774,3774,3988,3990,3989,3937,3774,3938,
+ 3936,3991,3939,3935,3988,3990,3989,3937,368,3938,
+ 3936,3991,3939,3935,3774,3636,3630,3633,403,3774,
+ 3774,3774,3774,3774,236,3702,3696,3699,3774,3774,
+ 223,3693,3693,3693,3774,3988,3990,3989,3937,3774,
+ 3938,3936,3991,3939,3935,3714,3708,3711,3723,3774,
+ 3720,3726,3705,3717,3729,223,32,3657,3774,3774,
+ 3774,3774,3774,3774,3774,3774,3774,3774,3774,3774,
+ 223,3774,3800,3801,3774,3774,3774,3774,3774,3774,
+ 3774,3774,3774,3774,3774,3774,3774,3774,3774,3774,
+ 3774,3774,3774,3660,3774,223,3774,3774,3774,3774,
+ 3774,3774,3774,3774,3774,3774,3774,3774,3774,3774,
+ 3774,3774,3774,3774,3774,3774,3774,3774,3774,3774,
+ 3774,3774,3774,3774,3774,3774,3774,3774,819,3774,
+ 3774,3774,3774,3774,3774,3774,3774,3774,3774,3774,
+ 3774,3774,3774,672
+ };
+ };
+ 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,
+ 735,1,165,347,345,562,735,166,347,347,
+ 809,141,658,166,166,166,79,648,79,648,
+ 648,79,648,79,352,347,336,336,336,336,
+ 166,79,33,564,9,515,224,347,105,104,
+ 352,227,141,564,515,194,352,260,588,533,
+ 413,691,53,136,648,652,649,652,136,652,
+ 648,347,355,400,414,698,33,33,33,33,
+ 33,33,33,33,33,33,33,608,294,522,
+ 417,521,347,224,224,232,698,347,120,564,
+ 347,666,534,3,691,690,414,264,423,141,
+ 460,355,400,700,608,608,608,608,608,414,
+ 414,414,408,408,549,533,652,652,270,33,
+ 9,516,772,53,224,143,257,731,475,236,
+ 486,491,489,499,493,502,501,504,503,505,
+ 700,457,141,623,564,345,194,260,666,666,
+ 533,31,516,516,652,166,166,18,166,166,
+ 516,102,33,102,345,112,470,289,141,264,
+ 423,460,460,400,400,414,403,564,112,414,
+ 414,414,414,414,78,352,695,111,469,519,
+ 298,33,534,414,33,257,656,414,731,257,
+ 235,232,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,457,118,347,530,516,
+ 516,547,33,598,33,33,18,102,600,18,
+ 347,3,414,269,414,414,423,457,91,423,
+ 460,465,603,465,400,731,695,352,564,700,
+ 357,357,357,120,141,408,414,775,698,33,
+ 302,608,533,414,33,33,257,236,489,489,
+ 486,486,493,493,491,491,491,491,491,491,
+ 501,499,503,502,102,102,504,656,118,31,
+ 516,414,166,414,414,18,33,18,352,112,
+ 423,93,465,457,33,652,731,400,775,403,
+ 414,700,414,257,257,33,33,465,186,516,
+ 31,18,33,18,18,347,269,457,515,33,
+ 511,93,512,457,400,414,361,457,116,230,
+ 168,652,33,102,14,270,516,414,532,93,
+ 33,512,512,294,120,526,652,33,414,270,
+ 516,18,512,33,257,18,414,257,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,
+ 101,0,6,46,47,2,27,0,6,49,
+ 47,19,0,71,37,72,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,71,31,8,9,7,
+ 37,47,6,46,0,6,68,37,72,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,71,1,21,
+ 22,23,19,16,17,15,10,13,14,24,
+ 25,20,26,12,18,2,11,3,5,4,
+ 37,72,0,55,65,33,40,34,41,42,
+ 35,29,43,44,30,66,36,67,45,61,
+ 28,62,63,64,2,11,12,27,39,32,
+ 5,3,4,8,9,7,6,46,31,71,
+ 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,100,6,0,6,
+ 71,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,86,100,68,72,87,16,
+ 17,37,15,13,14,73,74,69,70,75,
+ 76,77,78,81,82,83,84,85,88,89,
+ 71,90,91,92,93,94,95,96,97,98,
+ 99,46,79,80,47,32,27,33,34,35,
+ 29,30,36,28,31,6,2,1,5,3,
+ 4,8,9,7,10,0,49,86,100,68,
+ 35,30,36,34,33,32,15,13,14,73,
+ 74,69,70,75,76,77,78,81,82,83,
+ 84,85,88,89,71,90,91,92,93,94,
+ 95,96,97,98,99,79,80,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,65,33,40,34,
+ 41,42,35,29,43,44,30,66,36,67,
+ 45,61,28,62,63,64,2,11,12,8,
+ 9,7,5,3,4,38,6,68,0,2,
+ 11,5,3,4,6,68,46,0,37,6,
+ 46,47,1,0,71,90,91,92,93,94,
+ 96,95,97,98,99,10,73,74,13,14,
+ 70,69,75,76,77,78,79,80,81,82,
+ 15,83,84,85,86,100,47,68,88,89,
+ 49,8,9,7,46,31,6,0,100,31,
+ 46,47,6,49,0,100,6,86,0,47,
+ 101,102,68,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,65,66,67,61,
+ 55,62,63,64,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,
+ 86,0,6,46,68,71,0,20,21,22,
+ 23,19,1,16,17,15,10,13,14,24,
+ 25,26,32,39,27,55,65,33,40,34,
+ 41,42,35,29,43,44,30,66,36,67,
+ 45,61,28,62,63,64,12,18,8,9,
+ 7,11,3,5,4,2,0,49,46,31,
+ 61,55,62,63,64,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,65,33,40,34,41,42,35,43,
+ 44,30,66,36,67,45,61,62,63,64,
+ 2,11,12,8,9,7,5,3,4,86,
+ 27,29,28,0,101,32,39,27,55,65,
+ 33,40,34,41,42,35,29,43,44,30,
+ 66,36,67,45,61,28,62,63,64,11,
+ 1,12,8,9,5,3,4,31,6,38,
+ 7,2,10,0,10,32,39,27,55,65,
+ 33,40,34,41,42,35,29,43,44,30,
+ 66,36,67,45,61,28,62,63,64,2,
+ 11,12,3,4,86,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,103,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,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,
+ 104,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,
+ 109,0,0,0,0,111,115,116,193,0,
+ 0,0,117,118,119,120,121,106,122,123,
+ 124,125,126,0,108,0,194,127,136,132,
+ 144,0,110,167,0,170,164,166,0,168,
+ 0,203,128,131,0,0,0,0,0,143,
+ 0,0,0,105,114,154,0,169,107,158,
+ 135,0,0,130,165,113,146,0,181,182,
+ 183,0,145,147,148,149,150,155,178,0,
+ 201,0,151,152,153,171,177,180,134,137,
+ 138,139,140,141,142,176,200,0,0,157,
+ 161,163,172,198,0,204,0,112,129,133,
+ 0,156,160,0,162,175,185,190,0,192,
+ 0,195,0,197,0,205,0,0,0,0,
+ 0,159,0,173,174,179,184,0,186,187,
+ 0,188,189,191,0,0,196,0,0,199,
+ 202,0,0,206,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[] = {
+ 68,68,47,68,47,27,100,100,68,68,
+ 47,102,31,100,47,27,100,47,47,18,
+ 31,31,47,47,47,47,68,18,47,100,
+ 31,31,68,47,47,100,47,47,47,49,
+ 47,31,8,8,47,100,100,47,1,100,
+ 2,47,2,2,2,2,31,47,2,49,
+ 2,71,10,2,2,49,47,47,5,86,
+ 10,18,18,48,2,2,2,2,12,31,
+ 2,65,66,66,61,31,31,2,2,86,
+ 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,
+ 208,105,0,100,204,0,0,193,105,145,
+ 0,108,0,105,145,0,137,108,0,167,
+ 86,167,37,0,105,0,167,37,0,30,
+ 130,105,0,204,130,0,194,0,130,0,
+ 161,194,0,161,0,159,130,0,154,194,
+ 0,154,0,169,1,12,0,106,0,176,
+ 0,201,0,167,0,30,130,0,253,51,
+ 0,29,131,0,133,1,0,169,1,26,
+ 0,249,1,225,0,248,1,1,8,0,
+ 106,106,0,213,105,18,0,107,0,206,
+ 105,132,0,192,0,105,132,0,172,192,
+ 0,242,105,0,31,153,0,201,240,105,
+ 18,160,0,107,0,0,189,105,1,173,
+ 0,189,105,1,0,191,1,0,168,105,
+ 0,181,0,105,144,10,144,168,0,176,
+ 0,144,168,0,9,0,0,176,0,105,
+ 144,10,144,0,144,0,9,0,0,131,
+ 30,219,105,37,0,131,219,105,30,37,
+ 0,131,30,37,0,131,219,105,37,0,
+ 131,37,0,137,0,2,0,173,106,0,
+ 170,0,2,106,0,189,105,1,137,0,
+ 2,0,171,106,0,159,1,0,164,0,
+ 201,217,105,18,104,236,65,0,236,65,
+ 0,109,3,0,0,0,107,0,201,217,
+ 105,18,236,65,0,3,0,0,0,107,
+ 0,163,0,235,105,163,0,105,163,0,
+ 159,108,0,202,65,0,109,0,202,67,
+ 0,202,66,0,214,105,18,234,104,233,
+ 181,0,234,104,233,181,0,3,0,0,
+ 107,0,233,181,0,109,0,3,0,0,
+ 107,0,214,105,18,233,181,0,150,0,
+ 149,0,148,0,147,0,146,0,193,105,
+ 132,0,132,0,136,59,0,185,128,185,
+ 164,1,56,0,106,131,0,185,164,1,
+ 56,0,108,0,106,131,0,185,128,185,
+ 128,185,1,56,0,185,128,185,1,56,
+ 0,185,1,56,0,108,0,108,0,106,
+ 131,0,136,1,48,0,136,1,48,147,
+ 54,0,106,108,0,147,54,0,79,2,
+ 110,106,108,0,136,1,60,0,147,121,
+ 136,1,58,0,55,131,0,136,1,58,
+ 0,106,131,55,131,0,146,0,167,51,
+ 0,136,89,126,0,29,127,0,169,1,
+ 0,106,116,0,169,1,20,0,106,114,
+ 0,232,1,109,0,136,37,109,0,136,
+ 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,
+ 551,0,830,0,2327,2272,0,3343,875,2623,
+ 0,1073,0,452,443,0,879,821,754,1277,
+ 696,1276,2261,1215,1176,1056,670,458,0,3166,
+ 1259,3145,3131,3120,3099,3082,2106,2796,2769,2738,
+ 2730,2703,2670,2630,2620,1220,2548,2521,1098,605,
+ 986,947,0,1158,1131,721,714,2119,2872,2342,
+ 2317,983,3220,2834,0,3385,3361,2092,1179,1129,
+ 541,450,2552,2261,847,675,1101,1764,1376,3065,
+ 3049,3033,3017,3001,2980,2863,2846,2824,2419,1357,
+ 1234,3333,3309,3295,997,3255,3246,3235,2285,734,
+ 496,2047,2020,879,1995,1968,821,1943,1291,1917,
+ 1891,1864,1839,1813,1787,1728,938,1683,1657,1631,
+ 1605,1579,1553,1527,1501,1475,1449,1417,1190,1149,
+ 1073,784,417,458,909,754,696,0,517,488,
+ 0,1708,1335,655,566,417,518,0,2601,518,
+ 2499,2119,2453,2433,2327,523,2272,2342,983,1217,
+ 3058,2078,2214,2313,1316,2173,0,3467,3447,3423,
+ 2327,3417,523,2499,2119,2272,2872,1708,2078,2214,
+ 655,3370,3265,2406,2960,566,3172,417,2192,2140,
+ 2091,2453,2433,3409,2495,2313,2065,2601,1712,1329,
+ 572,1217,3404,1335,2947,2914,1275,2900,3347,3077,
+ 2885,1058,2466,2227,1316,2173,518,2680,3342,2575,
+ 3319,3270,3207,3203,2792,0,2078,1316,518,0,
+ 3166,3145,3131,3120,3099,3082,2106,3074,1259,3264,
+ 1220,1098,986,947,2330,2500,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,230,7,145,132,105,246,251,105,105,
+ 208,206,194,8,9,7,195,181,196,67,
+ 66,197,65,198,105,1,4,5,3,2,
+ 137,200,12,176,1,193,159,130,141,137,
+ 105,187,206,238,193,143,105,139,5,18,
+ 1,1,1,233,130,202,130,202,236,202,
+ 130,168,144,130,159,1,12,26,20,25,
+ 24,14,13,10,15,17,16,1,109,252,
+ 19,207,46,130,159,37,1,168,71,105,
+ 168,209,105,1,250,2,19,104,18,104,
+ 18,144,10,105,1,1,1,1,1,133,
+ 169,136,145,163,105,18,87,72,1,37,
+ 49,121,1,46,130,30,131,105,110,10,
+ 116,118,117,120,119,123,122,125,124,126,
+ 105,18,160,247,105,132,143,139,176,257,
+ 213,59,50,52,57,56,48,54,60,58,
+ 146,53,51,104,132,248,225,1,234,130,
+ 105,18,105,10,144,189,132,105,190,169,
+ 169,169,169,169,121,105,1,174,173,212,
+ 104,12,105,232,105,136,10,2,105,131,
+ 219,199,99,98,97,95,96,94,93,92,
+ 91,90,71,74,73,10,69,70,14,13,
+ 82,81,80,79,78,77,76,75,83,15,
+ 85,84,89,88,237,105,18,105,6,136,
+ 104,1,1,147,1,1,49,253,167,49,
+ 105,46,121,1,19,2,18,214,163,215,
+ 105,217,104,218,144,105,1,105,176,46,
+ 121,121,121,121,121,168,191,105,1,46,
+ 110,1,213,2,219,30,131,10,117,117,
+ 116,116,119,119,118,118,118,118,118,118,
+ 122,120,124,123,231,136,125,46,105,164,
+ 185,136,48,136,136,49,86,49,105,249,
+ 105,105,217,201,71,46,105,199,105,168,
+ 189,105,169,131,131,49,49,240,105,185,
+ 128,121,1,121,121,168,46,214,235,49,
+ 159,130,204,201,199,189,121,201,46,242,
+ 254,72,37,104,243,128,185,136,147,46,
+ 49,204,130,162,71,167,72,37,185,128,
+ 121,102,130,86,167,121,185,167,121
+ };
+ };
+ 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",
+ "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 = 103,
+ LA_STATE_OFFSET = 4190,
+ MAX_LA = 2147483647,
+ NUM_RULES = 416,
+ NUM_NONTERMINALS = 155,
+ NUM_SYMBOLS = 258,
+ SEGMENT_SIZE = 8192,
+ START_STATE = 2500,
+ IDENTIFIER_SYMBOL = 0,
+ EOFT_SYMBOL = 101,
+ EOLT_SYMBOL = 101,
+ ACCEPT_ACTION = 3533,
+ ERROR_ACTION = 3774;
+
+ 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 00000000000..3e6465e8aeb
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParsersym.java
@@ -0,0 +1,230 @@
+/*******************************************************************************
+* 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 = 102,
+ TK_enum = 65,
+ 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 = 66,
+ TK_switch = 60,
+ TK_typedef = 36,
+ TK_union = 67,
+ 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 = 103,
+ TK_LeftBracket = 37,
+ TK_LeftParen = 1,
+ TK_LeftBrace = 18,
+ TK_Dot = 72,
+ TK_Arrow = 87,
+ 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 = 73,
+ TK_Percent = 74,
+ TK_RightShift = 69,
+ TK_LeftShift = 70,
+ TK_LT = 75,
+ TK_GT = 76,
+ TK_LE = 77,
+ TK_GE = 78,
+ TK_EQ = 81,
+ TK_NE = 82,
+ TK_Caret = 83,
+ TK_Or = 84,
+ TK_AndAnd = 85,
+ TK_OrOr = 88,
+ TK_Question = 89,
+ TK_Colon = 49,
+ TK_DotDotDot = 86,
+ TK_Assign = 71,
+ TK_StarAssign = 90,
+ TK_SlashAssign = 91,
+ TK_PercentAssign = 92,
+ TK_PlusAssign = 93,
+ TK_MinusAssign = 94,
+ TK_RightShiftAssign = 95,
+ TK_LeftShiftAssign = 96,
+ TK_AndAssign = 97,
+ TK_CaretAssign = 98,
+ TK_OrAssign = 99,
+ TK_Comma = 46,
+ TK_RightBracket = 100,
+ TK_RightParen = 47,
+ TK_RightBrace = 68,
+ TK_SemiColon = 31,
+ TK_typeof = 12,
+ TK___alignof__ = 26,
+ TK___attribute__ = 8,
+ TK___declspec = 9,
+ TK_MAX = 79,
+ TK_MIN = 80,
+ TK_asm = 7,
+ TK_vector = 5,
+ TK_pixel = 3,
+ TK_bool = 4,
+ TK_ERROR_TOKEN = 38,
+ TK_EOF_TOKEN = 101;
+
+ 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",
+ "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 00000000000..53e72993fb8
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParser.java
@@ -0,0 +1,2149 @@
+/*******************************************************************************
+* 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.internal.core.dom.parser.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 ::= char
+ //
+ case 262: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 263: simple_type_specifier ::= wchar_t
+ //
+ case 263: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 264: simple_type_specifier ::= bool
+ //
+ case 264: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 265: simple_type_specifier ::= short
+ //
+ case 265: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 266: simple_type_specifier ::= int
+ //
+ case 266: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 267: simple_type_specifier ::= long
+ //
+ case 267: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 268: simple_type_specifier ::= signed
+ //
+ case 268: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 269: simple_type_specifier ::= unsigned
+ //
+ case 269: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 270: simple_type_specifier ::= float
+ //
+ case 270: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 271: simple_type_specifier ::= double
+ //
+ case 271: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 272: simple_type_specifier ::= void
+ //
+ case 272: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 275: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name
+ //
+ case 275: { action. consumeQualifiedId(false); break;
+ }
+
+ //
+ // Rule 276: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name
+ //
+ case 276: { action. consumeQualifiedId(false); break;
+ }
+
+ //
+ // Rule 277: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name
+ //
+ case 277: { action. consumeQualifiedId(false); break;
+ }
+
+ //
+ // Rule 278: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
+ //
+ case 278: { action. consumeQualifiedId(true); break;
+ }
+
+ //
+ // Rule 280: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
+ //
+ case 280: { action. consumeTypeSpecifierElaborated(false); break;
+ }
+
+ //
+ // Rule 281: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
+ //
+ case 281: { action. consumeTypeSpecifierElaborated(true); break;
+ }
+
+ //
+ // Rule 282: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
+ //
+ case 282: { action. consumeTypeSpecifierElaborated(false); break;
+ }
+
+ //
+ // Rule 284: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt }
+ //
+ case 284: { action. consumeTypeSpecifierEnumeration(false); break;
+ }
+
+ //
+ // Rule 285: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt }
+ //
+ case 285: { action. consumeTypeSpecifierEnumeration(true); break;
+ }
+
+ //
+ // Rule 291: enumerator_definition ::= identifier_token
+ //
+ case 291: { action. consumeEnumerator(false); break;
+ }
+
+ //
+ // Rule 292: enumerator_definition ::= identifier_token = constant_expression
+ //
+ case 292: { action. consumeEnumerator(true); break;
+ }
+
+ //
+ // Rule 294: namespace_definition ::= namespace namespace_name namespace_definition_hook { <openscope-ast> declaration_seq_opt }
+ //
+ case 294: { action. consumeNamespaceDefinition(true); break;
+ }
+
+ //
+ // Rule 295: namespace_definition ::= namespace namespace_definition_hook { <openscope-ast> declaration_seq_opt }
+ //
+ case 295: { action. consumeNamespaceDefinition(false); break;
+ }
+
+ //
+ // Rule 297: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ;
+ //
+ case 297: { action. consumeNamespaceAliasDefinition(); break;
+ }
+
+ //
+ // Rule 298: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
+ //
+ case 298: { action. consumeUsingDeclaration(); break;
+ }
+
+ //
+ // Rule 299: typename_opt ::= typename
+ //
+ case 299: { action. consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 300: typename_opt ::= $Empty
+ //
+ case 300: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 301: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
+ //
+ case 301: { action. consumeUsingDirective(); break;
+ }
+
+ //
+ // Rule 302: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
+ //
+ case 302: { action. consumeLinkageSpecification(); break;
+ }
+
+ //
+ // Rule 303: linkage_specification ::= extern stringlit <openscope-ast> declaration
+ //
+ case 303: { action. consumeLinkageSpecification(); break;
+ }
+
+ //
+ // Rule 308: init_declarator_complete ::= init_declarator
+ //
+ case 308: { action. consumeInitDeclaratorComplete(); break;
+ }
+
+ //
+ // Rule 310: init_declarator ::= complete_declarator initializer
+ //
+ case 310: { action. consumeDeclaratorWithInitializer(true); break;
+ }
+
+ //
+ // Rule 313: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
+ //
+ case 313: { action. consumeDeclaratorWithPointer(true); break;
+ }
+
+ //
+ // Rule 315: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
+ //
+ case 315: { action. consumeDeclaratorWithPointer(true); break;
+ }
+
+ //
+ // Rule 319: basic_direct_declarator ::= declarator_id_name
+ //
+ case 319: { action. consumeDirectDeclaratorIdentifier(); break;
+ }
+
+ //
+ // Rule 320: basic_direct_declarator ::= ( declarator )
+ //
+ case 320: { action. consumeDirectDeclaratorBracketed(); break;
+ }
+
+ //
+ // Rule 321: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
+ //
+ case 321: { action. consumeDirectDeclaratorFunctionDeclarator(true); break;
+ }
+
+ //
+ // Rule 322: array_direct_declarator ::= array_direct_declarator array_modifier
+ //
+ case 322: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
+ //
+ // Rule 323: array_direct_declarator ::= basic_direct_declarator array_modifier
+ //
+ case 323: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
+ //
+ // Rule 324: array_modifier ::= [ constant_expression ]
+ //
+ case 324: { action. consumeDirectDeclaratorArrayModifier(true); break;
+ }
+
+ //
+ // Rule 325: array_modifier ::= [ ]
+ //
+ case 325: { action. consumeDirectDeclaratorArrayModifier(false); break;
+ }
+
+ //
+ // Rule 326: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
+ //
+ case 326: { action. consumePointer(); break;
+ }
+
+ //
+ // Rule 327: ptr_operator ::= pointer_hook & pointer_hook
+ //
+ case 327: { action. consumeReferenceOperator(); break;
+ }
+
+ //
+ // Rule 328: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
+ //
+ case 328: { action. consumePointerToMember(); break;
+ }
+
+ //
+ // Rule 335: cv_qualifier ::= const
+ //
+ case 335: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 336: cv_qualifier ::= volatile
+ //
+ case 336: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 338: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
+ //
+ case 338: { action. consumeQualifiedId(false); break;
+ }
+
+ //
+ // Rule 339: type_id ::= type_specifier_seq
+ //
+ case 339: { action. consumeTypeId(false); break;
+ }
+
+ //
+ // Rule 340: type_id ::= type_specifier_seq abstract_declarator
+ //
+ case 340: { action. consumeTypeId(true); break;
+ }
+
+ //
+ // Rule 343: abstract_declarator ::= <openscope-ast> ptr_operator_seq
+ //
+ case 343: { action. consumeDeclaratorWithPointer(false); break;
+ }
+
+ //
+ // Rule 344: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
+ //
+ case 344: { action. consumeDeclaratorWithPointer(true); break;
+ }
+
+ //
+ // Rule 348: basic_direct_abstract_declarator ::= ( abstract_declarator )
+ //
+ case 348: { action. consumeDirectDeclaratorBracketed(); break;
+ }
+
+ //
+ // Rule 349: basic_direct_abstract_declarator ::= ( )
+ //
+ case 349: { action. consumeAbstractDeclaratorEmpty(); break;
+ }
+
+ //
+ // Rule 350: array_direct_abstract_declarator ::= array_modifier
+ //
+ case 350: { action. consumeDirectDeclaratorArrayDeclarator(false); break;
+ }
+
+ //
+ // Rule 351: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
+ //
+ case 351: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
+ //
+ // Rule 352: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
+ //
+ case 352: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
+ //
+ // Rule 353: 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 353: { action. consumeDirectDeclaratorFunctionDeclarator(true); break;
+ }
+
+ //
+ // Rule 354: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
+ //
+ case 354: { action. consumeDirectDeclaratorFunctionDeclarator(false); break;
+ }
+
+ //
+ // Rule 355: parameter_declaration_clause ::= parameter_declaration_list_opt ...
+ //
+ case 355: { action. consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 356: parameter_declaration_clause ::= parameter_declaration_list_opt
+ //
+ case 356: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 357: parameter_declaration_clause ::= parameter_declaration_list , ...
+ //
+ case 357: { action. consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 363: abstract_declarator_opt ::= $Empty
+ //
+ case 363: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 364: parameter_declaration ::= declaration_specifiers parameter_init_declarator
+ //
+ case 364: { action. consumeParameterDeclaration(); break;
+ }
+
+ //
+ // Rule 365: parameter_declaration ::= declaration_specifiers
+ //
+ case 365: { action. consumeParameterDeclarationWithoutDeclarator(); break;
+ }
+
+ //
+ // Rule 367: parameter_init_declarator ::= declarator = parameter_initializer
+ //
+ case 367: { action. consumeDeclaratorWithInitializer(true); break;
+ }
+
+ //
+ // Rule 369: parameter_init_declarator ::= abstract_declarator = parameter_initializer
+ //
+ case 369: { action. consumeDeclaratorWithInitializer(true); break;
+ }
+
+ //
+ // Rule 370: parameter_init_declarator ::= = parameter_initializer
+ //
+ case 370: { action. consumeDeclaratorWithInitializer(false); break;
+ }
+
+ //
+ // Rule 371: parameter_initializer ::= assignment_expression
+ //
+ case 371: { action. consumeInitializer(); break;
+ }
+
+ //
+ // Rule 372: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body
+ //
+ case 372: { action. consumeFunctionDefinition(false); break;
+ }
+
+ //
+ // Rule 373: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
+ //
+ case 373: { action. consumeFunctionDefinition(true); break;
+ }
+
+ //
+ // Rule 376: initializer ::= ( expression_list )
+ //
+ case 376: { action. consumeInitializerConstructor(); break;
+ }
+
+ //
+ // Rule 377: initializer_clause ::= assignment_expression
+ //
+ case 377: { action. consumeInitializer(); break;
+ }
+
+ //
+ // Rule 379: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq , } end_initializer_list
+ //
+ case 379: { action. consumeInitializerList(); break;
+ }
+
+ //
+ // Rule 380: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq } end_initializer_list
+ //
+ case 380: { action. consumeInitializerList(); break;
+ }
+
+ //
+ // Rule 381: initializer_list ::= { <openscope-ast> }
+ //
+ case 381: { action. consumeInitializerList(); break;
+ }
+
+ //
+ // Rule 382: start_initializer_list ::= $Empty
+ //
+ case 382: { action. initializerListStart(); break;
+ }
+
+ //
+ // Rule 383: end_initializer_list ::= $Empty
+ //
+ case 383: { action. initializerListEnd(); break;
+ }
+
+ //
+ // Rule 388: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt }
+ //
+ case 388: { action. consumeClassSpecifier(); break;
+ }
+
+ //
+ // Rule 389: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt
+ //
+ case 389: { action. consumeClassHead(false); break;
+ }
+
+ //
+ // Rule 390: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
+ //
+ case 390: { action. consumeClassHead(false); break;
+ }
+
+ //
+ // Rule 391: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt
+ //
+ case 391: { action. consumeClassHead(true); break;
+ }
+
+ //
+ // Rule 392: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
+ //
+ case 392: { action. consumeClassHead(true); break;
+ }
+
+ //
+ // Rule 396: identifier_name_opt ::= $Empty
+ //
+ case 396: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 400: visibility_label ::= access_specifier_keyword :
+ //
+ case 400: { action. consumeVisibilityLabel(); break;
+ }
+
+ //
+ // Rule 401: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ;
+ //
+ case 401: { action. consumeDeclarationSimple(true); break;
+ }
+
+ //
+ // Rule 402: member_declaration ::= declaration_specifiers_opt ;
+ //
+ case 402: { action. consumeDeclarationSimple(false); break;
+ }
+
+ //
+ // Rule 405: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;
+ //
+ case 405: { action. consumeMemberDeclarationQualifiedId(); break;
+ }
+
+ //
+ // Rule 411: member_declaration ::= ERROR_TOKEN
+ //
+ case 411: { action. consumeDeclarationProblem(); break;
+ }
+
+ //
+ // Rule 420: member_declarator ::= declarator constant_initializer
+ //
+ case 420: { action. consumeMemberDeclaratorWithInitializer(); break;
+ }
+
+ //
+ // Rule 421: member_declarator ::= bit_field_declarator : constant_expression
+ //
+ case 421: { action. consumeBitField(true); break;
+ }
+
+ //
+ // Rule 422: member_declarator ::= : constant_expression
+ //
+ case 422: { action. consumeBitField(false); break;
+ }
+
+ //
+ // Rule 423: bit_field_declarator ::= identifier_name
+ //
+ case 423: { action. consumeDirectDeclaratorIdentifier(); break;
+ }
+
+ //
+ // Rule 424: constant_initializer ::= = constant_expression
+ //
+ case 424: { action. consumeInitializer(); break;
+ }
+
+ //
+ // Rule 430: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name
+ //
+ case 430: { action. consumeBaseSpecifier(false, false); break;
+ }
+
+ //
+ // Rule 431: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name
+ //
+ case 431: { action. consumeBaseSpecifier(true, true); break;
+ }
+
+ //
+ // Rule 432: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name
+ //
+ case 432: { action. consumeBaseSpecifier(true, true); break;
+ }
+
+ //
+ // Rule 433: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name
+ //
+ case 433: { action. consumeBaseSpecifier(true, false); break;
+ }
+
+ //
+ // Rule 434: access_specifier_keyword ::= private
+ //
+ case 434: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 435: access_specifier_keyword ::= protected
+ //
+ case 435: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 436: access_specifier_keyword ::= public
+ //
+ case 436: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 438: access_specifier_keyword_opt ::= $Empty
+ //
+ case 438: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 440: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt >
+ //
+ case 440: { action. consumeTemplateId(); break;
+ }
+
+ //
+ // Rule 441: conversion_function_id ::= operator conversion_type_id
+ //
+ case 441: { action. consumeConversionName(); break;
+ }
+
+ //
+ // Rule 442: conversion_type_id ::= type_specifier_seq conversion_declarator
+ //
+ case 442: { action. consumeTypeId(true); break;
+ }
+
+ //
+ // Rule 443: conversion_type_id ::= type_specifier_seq
+ //
+ case 443: { action. consumeTypeId(false); break;
+ }
+
+ //
+ // Rule 444: conversion_declarator ::= <openscope-ast> ptr_operator_seq
+ //
+ case 444: { action. consumeDeclaratorWithPointer(false); break;
+ }
+
+ //
+ // Rule 450: mem_initializer ::= mem_initializer_name ( expression_list_opt )
+ //
+ case 450: { action. consumeConstructorChainInitializer(); break;
+ }
+
+ //
+ // Rule 451: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
+ //
+ case 451: { action. consumeQualifiedId(false); break;
+ }
+
+ //
+ // Rule 454: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
+ //
+ case 454: { action. consumeTemplateId(); break;
+ }
+
+ //
+ // Rule 455: operator_id_name ::= operator overloadable_operator
+ //
+ case 455: { action. consumeOperatorName(); break;
+ }
+
+ //
+ // Rule 498: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
+ //
+ case 498: { action. consumeTemplateDeclaration(); break;
+ }
+
+ //
+ // Rule 499: export_opt ::= export
+ //
+ case 499: { action. consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 500: export_opt ::= $Empty
+ //
+ case 500: { action. consumeEmpty(); break;
+ }
+
+ //
+ // Rule 504: template_parameter ::= parameter_declaration
+ //
+ case 504: { action. consumeTemplateParamterDeclaration(); break;
+ }
+
+ //
+ // Rule 505: type_parameter ::= class identifier_name_opt
+ //
+ case 505: { action. consumeSimpleTypeTemplateParameter(false); break;
+ }
+
+ //
+ // Rule 506: type_parameter ::= class identifier_name_opt = type_id
+ //
+ case 506: { action. consumeSimpleTypeTemplateParameter(true); break;
+ }
+
+ //
+ // Rule 507: type_parameter ::= typename identifier_name_opt
+ //
+ case 507: { action. consumeSimpleTypeTemplateParameter(false); break;
+ }
+
+ //
+ // Rule 508: type_parameter ::= typename identifier_name_opt = type_id
+ //
+ case 508: { action. consumeSimpleTypeTemplateParameter(true); break;
+ }
+
+ //
+ // Rule 509: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
+ //
+ case 509: { action. consumeTemplatedTypeTemplateParameter(false); break;
+ }
+
+ //
+ // Rule 510: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
+ //
+ case 510: { action. consumeTemplatedTypeTemplateParameter(true); break;
+ }
+
+ //
+ // Rule 511: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt >
+ //
+ case 511: { action. consumeTemplateId(); break;
+ }
+
+ //
+ // Rule 516: template_argument ::= assignment_expression
+ //
+ case 516: { action. consumeTemplateArgumentExpression(); break;
+ }
+
+ //
+ // Rule 517: template_argument ::= type_id
+ //
+ case 517: { action. consumeTemplateArgumentTypeId(); break;
+ }
+
+ //
+ // Rule 518: explicit_instantiation ::= template declaration
+ //
+ case 518: { action. consumeTemplateExplicitInstantiation(); break;
+ }
+
+ //
+ // Rule 519: explicit_specialization ::= template < > declaration
+ //
+ case 519: { action. consumeTemplateExplicitSpecialization(); break;
+ }
+
+ //
+ // Rule 520: try_block ::= try compound_statement <openscope-ast> handler_seq
+ //
+ case 520: { action. consumeStatementTryBlock(); break;
+ }
+
+ //
+ // Rule 523: handler ::= catch ( exception_declaration ) compound_statement
+ //
+ case 523: { action. consumeStatementCatchHandler(false); break;
+ }
+
+ //
+ // Rule 524: handler ::= catch ( ... ) compound_statement
+ //
+ case 524: { action. consumeStatementCatchHandler(true); break;
+ }
+
+ //
+ // Rule 525: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
+ //
+ case 525: { action. consumeDeclarationSimple(true); break;
+ }
+
+ //
+ // Rule 526: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
+ //
+ case 526: { action. consumeDeclarationSimple(true); break;
+ }
+
+ //
+ // Rule 527: exception_declaration ::= type_specifier_seq
+ //
+ case 527: { action. consumeDeclarationSimple(false); break;
+ }
+
+ //
+ // Rule 529: exception_specification ::= throw ( )
+ //
+ case 529: { action. consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 550: attribute_parameter ::= assignment_expression
+ //
+ case 550: { action. consumeIgnore(); break;
+ }
+
+ //
+ // Rule 561: extended_asm_declaration ::= asm volatile_opt ( extended_asm_param_seq ) ;
+ //
+ case 561: { gnuAction.consumeDeclarationASM(); break;
+ }
+
+ //
+ // Rule 572: unary_expression ::= __alignof__ unary_expression
+ //
+ case 572: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_alignOf); break;
+ }
+
+ //
+ // Rule 573: unary_expression ::= __alignof__ ( type_id )
+ //
+ case 573: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_alignof); break;
+ }
+
+ //
+ // Rule 574: unary_expression ::= typeof unary_expression
+ //
+ case 574: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break;
+ }
+
+ //
+ // Rule 575: unary_expression ::= typeof ( type_id )
+ //
+ case 575: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break;
+ }
+
+ //
+ // Rule 576: relational_expression ::= relational_expression >? shift_expression
+ //
+ case 576: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_max); break;
+ }
+
+ //
+ // Rule 577: relational_expression ::= relational_expression <? shift_expression
+ //
+ case 577: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_min); break;
+ }
+
+ //
+ // Rule 578: conditional_expression ::= logical_or_expression ? <empty> : assignment_expression
+ //
+ case 578: { action. consumeExpressionConditional(); break;
+ }
+
+ //
+ // Rule 579: primary_expression ::= ( compound_statement )
+ //
+ case 579: { gnuAction.consumeCompoundStatementExpression(); break;
+ }
+
+ //
+ // Rule 580: labeled_statement ::= case case_range_expression : statement
+ //
+ case 580: { action. consumeStatementCase(); break;
+ }
+
+ //
+ // Rule 581: case_range_expression ::= constant_expression ... constant_expression
+ //
+ case 581: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break;
+ }
+
+ //
+ // Rule 585: typeof_type_specifier ::= typeof unary_expression
+ //
+ case 585: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break;
+ }
+
+ //
+ // Rule 586: typeof_type_specifier ::= typeof ( type_id )
+ //
+ case 586: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break;
+ }
+
+ //
+ // Rule 587: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
+ //
+ case 587: { action. consumeDeclarationSpecifiersTypeof(); break;
+ }
+
+ //
+ // Rule 600: declarator ::= <openscope-ast> ptr_operator_seq attribute_or_decl_specifier_seq direct_declarator
+ //
+ case 600: { action. consumeDeclaratorWithPointer(true); break;
+ }
+
+ //
+ // Rule 603: simple_type_specifier ::= _Complex
+ //
+ case 603: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 604: simple_type_specifier ::= _Imaginary
+ //
+ case 604: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 605: cv_qualifier ::= restrict
+ //
+ case 605: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 606: explicit_instantiation ::= extern template declaration
+ //
+ case 606: { action. consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_extern); break;
+ }
+
+ //
+ // Rule 607: explicit_instantiation ::= static template declaration
+ //
+ case 607: { action. consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_static); break;
+ }
+
+ //
+ // Rule 608: explicit_instantiation ::= inline template declaration
+ //
+ case 608: { action. consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_inline); break;
+ }
+
+ //
+ // Rule 609: postfix_expression ::= ( type_id ) initializer_list
+ //
+ case 609: { action. consumeExpressionTypeIdInitializer(); break;
+ }
+
+ //
+ // Rule 610: type_id ::= vector_type
+ //
+ case 610: { action. consumeTypeId(false); break;
+ }
+
+ //
+ // Rule 611: type_id ::= vector_type abstract_declarator
+ //
+ case 611: { action. consumeTypeId(true); break;
+ }
+
+ //
+ // Rule 612: vector_declaration ::= vector_type <openscope-ast> init_declarator_list ;
+ //
+ case 612: { action. consumeDeclarationSimple(true); break;
+ }
+
+ //
+ // Rule 613: vector_type ::= <openscope-ast> no_type_declaration_specifiers_opt vector vector_type_specifier all_specifier_qualifier_list_opt
+ //
+ case 613: { action. consumeVectorTypeSpecifier(); break;
+ }
+
+ //
+ // Rule 614: vector_type_specifier ::= vector_type_specifier_token
+ //
+ case 614: { action. consumeToken(); break;
+ }
+
+ //
+ // Rule 635: specifier_qualifier ::= typedef
+ //
+ case 635: { action. consumeToken(); 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 00000000000..cc2edc52e7c
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParserprs.java
@@ -0,0 +1,3679 @@
+/*******************************************************************************
+* 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
+ };
+ };
+ 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,3,4,4,5,2,5,
+ 6,5,0,6,7,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,4,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,-180,0,0,0,-69,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-397,0,0,0,0,0,0,0,0,
+ 0,-171,0,0,0,-76,0,0,0,0,
+ -106,-568,0,0,-188,0,0,0,-4,0,
+ 0,0,0,0,0,0,0,0,0,-194,
+ 0,0,-259,0,0,-2,0,0,-8,0,
+ 0,0,-189,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-370,0,-638,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -58,0,0,0,0,0,0,0,-32,0,
+ 0,0,0,0,-143,0,0,0,0,0,
+ 0,0,-294,0,0,0,-59,0,0,0,
+ 0,0,0,0,0,-283,0,0,0,-9,
+ 0,0,-548,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-10,0,
+ 0,0,-53,0,0,0,0,0,-96,0,
+ 0,0,0,0,0,0,0,0,-5,0,
+ 0,-296,0,0,0,-12,0,0,0,0,
+ 0,0,0,0,0,0,-155,0,-18,0,
+ -396,0,0,0,0,0,0,0,0,0,
+ -116,0,0,0,0,-70,0,0,0,0,
+ 0,0,0,0,0,0,-192,-19,0,-21,
+ 0,0,0,0,0,0,0,-61,-243,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -44,0,0,0,0,0,0,0,0,-7,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-22,-135,-149,0,-234,0,0,-162,
+ 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,0,0,
+ 0,0,0,0,0,-3,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-237,
+ 0,0,0,-39,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,0,0,0,0,0,0,0,0,-422,
+ 0,0,0,0,0,0,0,-113,0,0,
+ 0,0,0,-177,0,0,0,0,-573,0,
+ 0,-498,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-249,0,0,0,0,-40,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-144,0,0,0,0,-23,0,0,0,
+ 0,0,0,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,-125,
+ -67,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-172,0,
+ 0,-260,0,0,0,0,0,0,0,-204,
+ 0,0,0,0,-367,0,0,0,0,0,
+ 0,-400,0,0,0,-374,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-33,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-55,-273,0,0,-31,
+ -358,-196,0,0,0,-465,0,0,0,-57,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-25,
+ 0,0,0,0,0,0,-119,0,0,-593,
+ 0,0,-41,0,-440,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-42,0,0,
+ 0,0,0,0,-37,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-163,0,
+ 0,0,0,0,0,-45,0,-574,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-164,
+ 0,0,0,-72,0,0,0,0,0,0,
+ 0,-193,0,0,0,0,0,-165,0,0,
+ 0,0,0,0,0,0,-16,-140,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-68,
+ 0,-47,0,-79,0,0,0,0,0,0,
+ 0,0,0,-118,0,0,0,0,0,0,
+ 0,0,-54,0,0,0,0,-136,0,0,
+ 0,-510,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -263,0,0,0,0,0,0,-600,0,0,
+ 0,0,0,0,0,0,0,-105,0,0,
+ 0,0,0,-191,0,0,0,0,-272,0,
+ 0,-48,0,0,-360,0,0,0,-51,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-56,0,0,
+ -565,0,0,0,0,0,0,0,0,0,
+ -71,0,0,0,0,0,0,0,0,0,
+ -62,0,0,-212,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-257,0,0,0,0,
+ 0,0,0,-383,0,0,0,0,0,-17,
+ 0,0,0,0,0,0,0,-82,-603,0,
+ 0,0,-427,0,0,0,-107,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-314,0,0,-74,0,0,
+ 0,0,0,0,0,0,-480,0,-114,0,
+ 0,0,0,0,0,0,-421,0,0,0,
+ 0,0,0,-515,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-145,-315,0,0,
+ 0,0,0,-115,0,0,0,0,0,-83,
+ 0,0,0,0,0,0,0,-376,-97,0,
+ 0,0,-516,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-319,0,0,-126,0,
+ 0,0,0,0,0,0,-401,0,0,0,
+ 0,0,-187,-613,0,0,0,0,-127,0,
+ 0,-363,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,0,0,0,
+ 0,0,0,0,-536,0,0,0,0,0,
+ -98,0,0,0,0,0,0,0,0,-99,
+ 0,0,0,0,0,-478,0,-225,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,0,0,0,0,
+ 0,-100,0,-130,0,0,0,0,0,0,
+ 0,-408,0,0,0,0,-343,0,0,0,
+ -132,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-369,0,
+ 0,0,-131,0,0,0,0,0,0,0,
+ -101,0,-102,0,0,0,-190,0,0,0,
+ 0,0,0,0,0,-368,-133,-344,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-416,
+ 0,0,0,0,0,0,0,-425,0,0,
+ 0,0,0,0,0,0,0,-160,-419,0,
+ 0,0,0,-277,0,0,-345,0,0,0,
+ -152,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-415,0,
+ 0,0,-103,0,0,0,-513,0,0,0,
+ 0,0,-423,0,0,0,0,0,0,0,
+ 0,-554,0,0,0,-346,0,0,0,-104,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-209,0,-108,
+ 0,0,0,0,0,-316,0,0,0,-159,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-347,0,0,0,-174,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-499,0,0,0,
+ 0,0,0,0,-514,0,0,0,0,0,
+ -213,0,0,0,0,-112,0,0,0,0,
+ 0,0,0,-348,0,0,0,-539,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-508,0,0,0,0,
+ 0,0,0,-570,0,0,0,-120,0,-121,
+ 0,0,0,0,-473,0,0,0,-122,-278,
+ 0,0,-349,0,0,0,-608,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-509,0,0,0,0,0,
+ 0,0,-594,0,0,0,-214,0,-254,0,
+ 0,0,0,-474,0,0,0,0,0,0,
+ 0,-350,0,0,0,-175,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-557,0,0,0,0,0,0,
+ 0,-617,0,0,0,0,0,-563,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -351,0,0,0,-469,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-123,0,-202,0,0,0,
+ 0,0,0,0,0,0,-564,0,0,0,
+ 0,-146,0,0,0,0,0,0,0,-352,
+ 0,0,0,-147,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-582,0,-601,0,0,0,0,
+ 0,0,0,0,0,-256,0,0,0,0,
+ -176,0,0,0,0,0,0,0,-353,0,
+ 0,0,-151,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-157,-173,-258,0,0,0,0,0,
+ 0,0,-203,0,-292,0,0,0,-215,-535,
+ 0,0,0,-211,0,0,0,-387,0,0,
+ 0,-240,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-418,
+ 0,0,0,0,0,0,0,-229,0,0,
+ 0,0,0,-579,0,0,0,-150,0,0,
+ 0,-406,0,0,0,-232,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-216,0,0,0,0,0,
+ 0,-270,0,0,0,0,0,0,0,0,
+ 0,-354,0,0,0,0,-233,0,0,0,
+ 0,0,-523,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-304,0,-217,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-242,0,0,-622,0,0,0,
+ 0,-524,0,0,0,-218,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-219,0,-235,0,0,
+ 0,-245,0,0,0,-630,0,-220,0,0,
+ 0,-298,-321,0,0,-266,0,-317,0,0,
+ -475,-611,0,0,0,0,0,0,0,0,
+ 0,0,0,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,-320,-221,0,0,-222,-268,0,0,0,
+ -467,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-81,0,0,0,0,0,0,0,
+ 0,0,0,0,-389,0,0,0,0,0,
+ -269,0,0,0,-477,0,0,0,-286,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-599,0,-371,
+ 0,0,0,0,-628,0,0,0,0,0,
+ 0,0,0,0,-501,0,0,0,0,-287,
+ -398,-124,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,-365,0,0,
+ 0,0,0,0,0,-585,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-529,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-75,0,0,-610,-366,0,0,0,0,
+ 0,0,0,-223,0,-636,0,0,0,-224,
+ -399,0,0,0,0,0,0,0,-226,-230,
+ -544,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-581,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -293,0,0,0,-584,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-78,0,-297,0,
+ 0,0,0,0,-382,0,0,0,0,0,
+ -377,0,0,0,-308,-357,0,0,0,0,
+ 0,0,-181,-489,-236,-241,0,0,0,0,
+ -38,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-246,0,0,-276,-299,0,0,
+ 0,0,0,0,0,0,0,-359,0,0,
+ -439,-6,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-153,0,-405,-248,0,
+ 0,0,-631,0,0,0,0,0,0,0,
+ -80,0,0,0,0,0,0,-378,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -250,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-420,-426,
+ 0,-261,0,0,0,0,0,0,0,0,
+ -13,0,0,0,0,-262,-264,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-138,-361,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-279,-280,0,0,0,0,0,0,0,
+ 0,0,-362,0,0,0,-384,0,-281,0,
+ -355,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -435,0,0,0,0,0,-558,0,0,0,
+ -364,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-375,-403,-94,0,
+ 0,0,0,0,0,0,-282,0,-20,-438,
+ -463,-464,-466,-117,0,0,0,0,0,-495,
+ 0,0,0,0,0,0,0,0,0,-580,
+ 0,0,0,0,0,0,0,0,0,-583,
+ 0,0,0,0,0,0,0,-476,0,0,
+ 0,0,0,0,-522,-479,-496,0,0,0,
+ -605,0,0,0,-43,-166,-167,-288,0,0,
+ 0,0,-307,0,0,0,0,0,0,-289,
+ 0,-290,0,0,0,0,0,0,0,0,
+ 0,0,0,-291,0,0,0,0,-300,0,
+ 0,0,0,0,0,-302,0,0,-492,0,
+ 0,0,0,0,0,0,-500,0,0,0,
+ 0,0,0,0,0,0,-303,0,0,0,
+ 0,-305,0,0,-306,0,0,0,0,0,
+ 0,0,-309,-512,0,0,0,0,0,-265,
+ 0,0,0,-511,0,-311,0,0,0,-342,
+ 0,0,0,-312,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-538,-313,0,-356,0,0,0,0,0,
+ 0,0,0,0,0,-372,0,0,-340,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -493,-73,0,0,0,0,0,0,-64,0,
+ 0,0,-27,0,-546,0,-518,0,0,0,
+ -526,0,0,0,0,0,0,0,0,-549,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-373,-551,0,0,0,0,0,-386,
+ -388,-555,0,-553,0,0,0,-589,0,0,
+ 0,-168,0,-556,-390,0,0,-590,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-502,0,-571,0,0,-559,
+ 0,-595,0,0,-616,0,0,0,0,0,
+ 0,-620,-271,-391,-392,0,0,0,0,0,
+ 0,-393,-395,0,-623,0,0,0,0,0,
+ 0,0,0,0,-141,0,0,0,0,0,
+ 0,-15,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-29,-409,0,0,0,0,
+ -560,0,-195,0,0,0,0,-274,0,-561,
+ -562,0,-411,-412,0,-413,0,0,0,0,
+ -414,0,0,-428,0,0,0,0,-629,-614,
+ 0,-429,0,0,0,0,0,0,-597,0,
+ 0,0,0,0,-436,0,0,0,0,-24,
+ 0,0,0,0,0,-598,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-247,0,0,
+ -437,-197,-433,-609,0,0,0,-441,0,-442,
+ 0,0,0,0,0,0,0,-443,-444,0,
+ 0,0,0,0,0,0,0,-445,0,0,
+ 0,0,0,0,-577,-446,-447,0,-448,0,
+ -615,0,-618,0,0,0,-341,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-449,0,0,0,0,-633,0,0,0,
+ 0,0,-385,-450,0,-451,0,-452,-453,-134,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-627,-454,-432,0,0,0,0,
+ 0,0,0,0,0,-503,0,0,0,0,
+ -619,-455,-456,0,0,0,0,0,0,0,
+ -457,0,0,0,0,-458,0,0,0,0,
+ 0,0,0,0,0,0,-459,-460,-461,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-462,0,0,-468,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,-394,-470,-482,-484,0,0,
+ 0,0,-156,0,0,0,-485,-626,-637,-142,
+ 0,-624,0,0,0,0,-490,0,0,0,
+ 0,-494,-505,-506,0,0,0,0,0,-507,
+ 0,0,0,0,0,0,-60,0,0,0,
+ 0,0,0,-533,0,0,0,-534,0,0,
+ 0,0,0,0,0,0,0,-540,0,0,
+ 0,0,-472,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-483,-552,
+ -566,-567,0,-569,0,-572,-587,-596,-602,-604,
+ -612,-621,0,-634,0,0,0,0,0,-46,
+ 0,0,0,0,0,-182,0,0,0,0,
+ 0,-504,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-541,-486,0,0,0,0,0,0,0,
+ 0,0,0,-205,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-228,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -527,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-532,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-139,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-543,0,
+ 0,0,0,0,0,0,0,-547,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -231,0,-178,0,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,0,-591,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -586,0,0,0,0,0,0,-404,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-497,
+ 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,-252,0,0,0,0,-206,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-592,0,
+ 0,0,0,0,0,0,-200,0,0,0,
+ 0,0,0,-255,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-625,0,0,0,0,0,0,0,
+ -275,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,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,0,0,-253,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,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,-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,-179,0,0,0,0,0,0,0,
+ -519,0,0,0,0,0,0,0,0,-430,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,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,0,0,0,
+ 0,0,-186,0,0,0,-576,0,0,0,
+ 0,0,0,0,0,0,-471,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,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,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,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,0,0,0,
+ 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,-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,-632,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-244,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -1,0,0,0,0,-35,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-26,-251,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 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,-28,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,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,-531,0,0,0,0,0,
+ 0,0,0,0,0,-424,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,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,-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,-379,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-36,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,
+ -63,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-575,0,0,0,-407,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -110,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-201,0,0,0,-30,0,0,
+ 0,0,0,0,0,0,0,-431,0,-183,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-207,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -66,0,0,0,0,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,0,0,0,-417,0,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,-402,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-169,
+ -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,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-324,0,0,0,0,
+ 0,0,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,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,-327,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,-11,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-34,-185,0,0,0,0,
+ 0,0,-238,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-481,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,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-49,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-487,
+ 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,
+ 0,0,0,0,0,0,0,-52,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-381,0,0,0,0,-520,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,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,-88,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,-90,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,
+ -92,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,-95,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-128,0,0,0,
+ 0,-84,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-521,0,0,0,0,0,0,0,0,
+ 0,0,0,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,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-227,0,0,0,
+ 0,0,0,0,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,0,
+ 0,0,0,0,0,0,0,-322,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-323,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-380,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-434,0,0,0,0,-85,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-488,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,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,-285,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-517,0,
+ 0,0,0,0,-148,0,0,0,-239,-639,
+ -410,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-111,0,0,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,-158,0,0,0,0,-161,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-210,0,
+ 0,0,0,0,0,-284,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-295,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-301,0,0,0,0,-550,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-537,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-578,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-491,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-606,0,0,
+ 0,0,0,0,0,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,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,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[] = {
+ 194,4,144,95,95,30,30,94,94,46,
+ 46,41,41,194,1,1,15,15,15,15,
+ 15,15,15,16,16,16,14,11,11,6,
+ 6,6,6,6,6,2,82,82,5,5,
+ 12,12,61,61,161,161,162,71,71,53,
+ 17,17,17,17,17,17,17,17,17,17,
+ 17,17,17,17,17,17,17,17,17,17,
+ 163,163,163,145,145,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,19,19,
+ 195,195,196,196,197,166,166,167,167,164,
+ 164,168,165,165,20,20,21,21,27,27,
+ 27,28,28,28,28,29,29,29,31,31,
+ 31,32,32,32,32,32,33,33,33,35,
+ 35,37,37,38,38,39,39,42,42,43,
+ 43,48,48,47,47,47,47,47,47,47,
+ 47,47,47,47,47,47,45,36,146,146,
+ 106,106,198,198,99,228,228,83,83,83,
+ 83,83,83,83,83,83,84,84,84,81,
+ 81,62,62,199,199,85,85,85,120,120,
+ 200,200,86,86,86,201,201,87,87,87,
+ 87,87,88,88,90,90,90,90,90,90,
+ 90,90,54,54,54,54,54,121,121,119,
+ 119,55,202,26,26,26,26,26,52,52,
+ 74,74,74,74,74,107,107,122,122,122,
+ 122,122,123,123,123,124,124,124,125,125,
+ 125,126,126,126,75,75,75,75,75,76,
+ 76,76,13,13,13,13,13,13,13,13,
+ 13,13,13,96,111,111,111,111,111,111,
+ 109,109,109,170,110,110,203,172,172,171,
+ 171,147,147,127,79,79,148,57,51,173,
+ 173,58,92,92,149,149,169,169,128,129,
+ 129,130,73,73,174,174,69,69,69,65,
+ 65,64,70,70,93,93,72,72,72,68,
+ 100,100,114,113,113,63,63,66,66,67,
+ 67,49,115,115,115,101,101,101,102,102,
+ 103,103,103,104,104,131,131,131,133,133,
+ 132,132,229,229,105,105,205,205,205,205,
+ 205,151,50,50,176,204,204,152,152,97,
+ 97,97,98,178,206,206,44,44,108,116,
+ 116,116,116,208,135,134,134,112,112,112,
+ 179,180,180,180,180,180,180,180,180,180,
+ 180,180,210,210,207,207,209,209,137,138,
+ 138,138,138,139,211,140,136,136,212,212,
+ 181,181,181,181,118,118,118,213,213,8,
+ 8,9,214,214,215,182,175,175,183,183,
+ 184,185,185,7,7,10,216,216,216,216,
+ 216,216,216,216,216,216,216,216,216,216,
+ 216,216,216,216,216,216,216,216,216,216,
+ 216,216,216,216,216,216,216,216,216,216,
+ 216,216,216,216,216,216,216,216,77,80,
+ 80,186,186,154,154,155,155,155,155,155,
+ 155,3,156,156,153,153,141,141,91,78,
+ 89,177,177,142,142,217,217,217,157,157,
+ 150,150,218,218,22,22,22,40,40,23,
+ 23,219,219,187,187,187,188,188,220,220,
+ 189,189,24,24,221,221,190,190,190,190,
+ 25,59,222,222,223,223,191,191,191,158,
+ 158,158,18,18,18,18,32,32,43,16,
+ 84,224,143,143,143,117,117,26,56,74,
+ 130,130,130,137,137,137,203,208,135,68,
+ 73,170,148,13,13,63,91,91,91,17,
+ 67,67,60,34,159,160,160,160,160,160,
+ 160,160,160,160,193,193,226,226,225,225,
+ 192,192,54,1,1,230,1607,35,3117,3049,
+ 3730,6746,27,30,31,1268,1243,26,28,3033,
+ 25,23,50,1960,106,76,77,108,589,534,
+ 535,536,4588,2339,2467,2415,1504,2516,2496,2583,
+ 540,2528,1222,2764,2586,2770,2238,1990,2779,143,
+ 273,1867,3723,158,144,3443,35,1296,32,3386,
+ 6777,27,30,31,1268,1243,57,28,156,232,
+ 1407,35,452,2219,3306,6793,1370,3331,200,1505,
+ 235,230,231,3757,35,1296,32,1898,6777,27,
+ 30,31,1268,1243,56,28,2219,3306,2508,35,
+ 1296,32,274,5488,27,30,31,1268,1243,26,
+ 28,3690,510,5233,242,245,248,251,3343,1407,
+ 35,279,1230,582,2941,1496,35,293,3119,3540,
+ 4992,5038,5368,2485,35,1296,32,1412,5488,27,
+ 30,31,1268,1243,59,28,1407,35,279,5785,
+ 2194,5279,3032,1681,35,3117,3049,612,6746,27,
+ 30,31,1268,1243,26,28,3033,25,23,50,
+ 1960,106,76,77,108,589,534,535,536,2196,
+ 2339,2467,2415,3938,2516,2496,2583,6286,2528,4001,
+ 2764,2586,2770,636,522,2779,143,273,878,50,
+ 158,144,2485,35,1296,32,4549,5488,27,30,
+ 31,1268,1243,58,28,341,232,4069,61,460,
+ 287,1496,3219,4103,1794,156,1332,235,230,231,
+ 1034,1833,1540,446,2291,4327,2768,3443,4573,537,
+ 534,535,536,287,2660,3373,60,1867,75,274,
+ 652,2156,2396,445,3209,3216,2009,4334,1618,2420,
+ 5364,242,245,248,251,3343,553,3158,3373,1230,
+ 582,1496,2225,2099,34,3119,3540,4992,5038,5368,
+ 2939,35,1296,32,2881,3880,27,30,31,1268,
+ 1243,337,28,750,76,1429,5785,1929,1504,3032,
+ 3149,35,1296,32,2912,3109,27,30,31,1268,
+ 1243,26,28,1933,25,23,50,1960,106,76,
+ 77,108,1496,35,4454,4262,341,2339,2467,2415,
+ 2344,2516,2496,2583,4103,2528,76,2764,2586,2770,
+ 3472,310,2779,143,314,1372,319,516,144,4573,
+ 2477,322,2139,388,3030,35,1296,32,3807,3880,
+ 27,30,31,1268,1243,337,28,517,3149,35,
+ 1296,32,2912,3109,27,30,31,1268,1243,26,
+ 28,1933,25,23,50,1960,106,76,77,108,
+ 1496,35,1200,387,341,2339,2467,2415,3301,2516,
+ 2496,2583,4103,2528,2034,2764,2586,2770,3498,91,
+ 2779,143,5071,35,277,516,144,4573,317,1501,
+ 319,849,2898,312,888,2224,554,1028,320,446,
+ 1915,35,1296,32,451,517,41,30,31,1268,
+ 1243,512,3121,35,1296,32,442,838,2437,30,
+ 31,1268,1243,2982,1275,2254,2996,2388,3149,35,
+ 1296,32,2912,3109,27,30,31,1268,1243,26,
+ 28,1933,25,23,50,1960,106,76,77,108,
+ 1675,1929,541,2876,341,2339,2467,2415,565,2516,
+ 2496,2583,4103,2528,2174,2764,2586,2770,182,2430,
+ 2779,143,1496,35,282,516,144,4573,567,512,
+ 3121,35,1296,32,2352,2948,40,30,31,1268,
+ 1243,3242,1496,3792,2996,517,3538,35,1296,32,
+ 2912,3109,27,30,31,1268,1243,26,28,1933,
+ 25,23,50,1960,106,76,77,108,1365,35,
+ 1200,387,341,2339,2467,2415,1880,2516,2496,2583,
+ 4103,2528,1140,2764,2586,2770,2298,4009,2779,143,
+ 1389,1429,4131,516,144,4573,3121,35,1296,32,
+ 2844,1140,3351,30,31,1268,1243,380,537,534,
+ 535,536,49,517,537,534,535,536,1540,512,
+ 3129,1640,538,534,535,536,1210,3301,2041,1548,
+ 3762,3245,3017,1520,2996,3618,35,1296,32,2613,
+ 3109,27,30,31,1268,1243,26,28,1933,25,
+ 23,50,1960,106,76,77,108,496,2047,2254,
+ 327,1324,2339,2467,2415,763,2516,2496,2583,681,
+ 2528,389,2764,2586,2770,426,2041,2779,143,3369,
+ 35,277,377,144,609,2137,2519,513,3230,35,
+ 1296,32,564,3109,27,30,31,1268,1243,26,
+ 28,1933,25,23,50,1960,106,76,77,108,
+ 1496,35,2099,276,76,2339,2467,2415,2926,2516,
+ 2496,2583,3129,2528,1627,2764,2586,2770,3577,2041,
+ 2779,143,378,2137,1811,377,144,462,3692,35,
+ 1296,32,5250,3109,27,30,31,1268,1243,26,
+ 28,1933,25,23,50,1960,106,76,77,108,
+ 1416,1421,934,1034,76,2339,2467,2415,930,2516,
+ 2496,2583,522,2528,1817,2764,2586,2770,542,2876,
+ 2780,164,1549,3129,374,378,2137,384,3304,35,
+ 1296,32,2484,3109,27,30,31,1268,1243,26,
+ 28,1933,25,23,50,1960,106,76,77,108,
+ 3260,1496,35,2099,278,2339,2467,2415,1861,2516,
+ 2496,2583,3124,2528,1833,2764,2586,2770,76,2041,
+ 2779,143,877,325,76,377,144,2378,1504,76,
+ 385,3165,2605,1504,341,3458,35,1296,32,955,
+ 3109,27,30,31,1268,1243,26,28,1933,25,
+ 23,50,1960,106,76,77,108,3442,948,497,
+ 156,177,2339,2467,2415,3047,2516,2496,2583,2532,
+ 2528,2296,2764,2586,2770,378,2137,2779,143,42,
+ 2997,2033,550,144,3906,35,1296,32,372,3109,
+ 27,30,31,1268,1243,26,28,1933,25,23,
+ 50,1960,106,76,77,108,3369,35,280,6625,
+ 614,2339,2467,2415,4895,2516,2496,2583,5814,2528,
+ 462,2764,2586,2770,521,5451,2779,143,2248,91,
+ 375,158,144,3906,35,1296,32,1318,3109,27,
+ 30,31,1268,1243,26,28,1933,25,23,50,
+ 1960,106,76,77,108,1931,35,395,462,682,
+ 2339,2467,2415,6715,2516,2496,2583,3237,2528,76,
+ 2764,2586,2770,998,323,2779,143,2760,35,452,
+ 371,144,6793,221,3906,35,1296,32,1829,3109,
+ 27,30,31,1268,1243,26,28,1933,25,23,
+ 50,1960,106,76,77,108,70,1363,1931,35,
+ 395,2339,2467,2415,76,2516,2496,2583,1088,2528,
+ 1038,2764,2586,2770,548,3691,2779,143,4327,940,
+ 3032,371,144,3906,35,1296,32,2518,3109,27,
+ 30,31,1268,1243,26,28,1933,25,23,50,
+ 1960,106,76,77,108,3122,1496,35,293,76,
+ 2339,2467,2415,3934,2516,2496,2583,3129,2528,2041,
+ 2764,2586,2770,3416,3839,2779,143,1504,1504,76,
+ 371,144,2430,4267,370,3458,35,1296,32,3535,
+ 3109,27,30,31,1268,1243,26,28,1933,25,
+ 23,50,1960,106,76,77,108,379,1034,160,
+ 156,93,2339,2467,2415,3043,2516,2496,2583,162,
+ 2528,2684,2764,2586,2770,609,2137,2779,143,3130,
+ 2685,2058,550,144,3828,369,1496,3306,3378,35,
+ 1296,32,3571,3109,27,30,31,1268,1243,26,
+ 28,1933,25,23,50,1960,106,76,77,108,
+ 449,3209,3216,462,1206,2339,2467,2415,6720,2516,
+ 2496,2583,3048,2528,76,2764,2586,2770,5407,2821,
+ 2779,143,4456,2911,367,142,144,3906,35,1296,
+ 32,3129,3109,27,30,31,1268,1243,26,28,
+ 1933,25,23,50,1960,106,76,77,108,1496,
+ 35,2099,281,76,2339,2467,2415,5479,2516,2496,
+ 2583,3063,2528,462,2764,2586,2770,3416,4643,2779,
+ 143,1504,1978,437,155,144,2948,462,3906,35,
+ 1296,32,6739,3109,27,30,31,1268,1243,26,
+ 28,1933,25,23,50,1960,106,76,77,108,
+ 1496,35,3794,160,1140,2339,2467,2415,1825,2516,
+ 2496,2583,3778,2528,549,2764,2586,2770,76,2065,
+ 2779,143,703,288,2338,154,144,3906,35,1296,
+ 32,3301,3109,27,30,31,1268,1243,26,28,
+ 1933,25,23,50,1960,106,76,77,108,1496,
+ 35,2099,3793,1036,2339,2467,2415,1825,2516,2496,
+ 2583,560,2528,3416,2764,2586,2770,1504,3140,2779,
+ 143,1937,2484,2849,153,144,3906,35,1296,32,
+ 5010,3109,27,30,31,1268,1243,26,28,1933,
+ 25,23,50,1960,106,76,77,108,76,160,
+ 550,1140,5551,2339,2467,2415,2420,2516,2496,2583,
+ 3129,2528,390,2764,2586,2770,426,351,2779,143,
+ 1937,326,333,152,144,3906,35,1296,32,3301,
+ 3109,27,30,31,1268,1243,26,28,1933,25,
+ 23,50,1960,106,76,77,108,2386,35,2099,
+ 276,2325,2339,2467,2415,2031,2516,2496,2583,1197,
+ 2528,76,2764,2586,2770,2582,358,2779,143,3264,
+ 332,333,151,144,3906,35,1296,32,4461,3109,
+ 27,30,31,1268,1243,26,28,1933,25,23,
+ 50,1960,106,76,77,108,1496,3861,2099,74,
+ 302,2339,2467,2415,1825,2516,2496,2583,1656,2528,
+ 1977,2764,2586,2770,521,2948,2779,143,1937,3659,
+ 2406,150,144,3906,35,1296,32,4538,3109,27,
+ 30,31,1268,1243,26,28,1933,25,23,50,
+ 1960,106,76,77,108,2386,35,2099,3862,1240,
+ 2339,2467,2415,2031,2516,2496,2583,3129,2528,76,
+ 2764,2586,2770,1145,2948,2779,143,1937,3427,333,
+ 149,144,3906,35,1296,32,3301,3109,27,30,
+ 31,1268,1243,26,28,1933,25,23,50,1960,
+ 106,76,77,108,1496,35,2099,3868,2533,2339,
+ 2467,2415,2031,2516,2496,2583,579,2528,3416,2764,
+ 2586,2770,1504,352,2779,143,1937,328,333,148,
+ 144,3906,35,1296,32,3465,3109,27,30,31,
+ 1268,1243,26,28,1933,25,23,50,1960,106,
+ 76,77,108,88,160,1345,102,1817,2339,2467,
+ 2415,392,2516,2496,2583,426,2528,3416,2764,2586,
+ 2770,1504,1126,2779,143,1937,3435,333,147,144,
+ 3906,35,1296,32,646,3109,27,30,31,1268,
+ 1243,26,28,1933,25,23,50,1960,106,76,
+ 77,108,89,160,3587,102,4266,2339,2467,2415,
+ 391,2516,2496,2583,426,2528,76,2764,2586,2770,
+ 1856,3301,2779,143,3529,3519,333,146,144,3906,
+ 35,1296,32,1132,3109,27,30,31,1268,1243,
+ 26,28,1933,25,23,50,1960,106,76,77,
+ 108,24,459,461,1476,76,2339,2467,2415,726,
+ 2516,2496,2583,1817,2528,3606,2764,2586,2770,1324,
+ 3884,2779,143,3546,3301,6825,145,144,4296,35,
+ 1296,32,2586,3109,27,30,31,1268,1243,26,
+ 28,1933,25,23,50,1960,106,76,77,108,
+ 2311,35,1200,387,376,2339,2467,2415,1817,2516,
+ 2496,2583,2908,2528,462,2764,2586,2770,2768,6858,
+ 2780,164,3906,35,1296,32,1318,3109,27,30,
+ 31,1268,1243,26,28,1933,25,23,50,1960,
+ 106,76,77,108,273,1493,420,1929,552,2339,
+ 2467,2415,1817,2516,2496,2583,321,2528,458,2764,
+ 2586,2770,2855,530,2779,143,1504,1318,2107,159,
+ 144,3828,301,3906,35,1296,32,3777,3109,27,
+ 30,31,1268,1243,26,28,1933,25,23,50,
+ 1960,106,76,77,108,76,3800,70,156,1888,
+ 2339,2467,2415,324,2516,2496,2583,3719,2528,1880,
+ 2764,2586,2770,298,3656,2779,143,1931,35,395,
+ 578,144,3906,35,1296,32,3768,3109,27,30,
+ 31,1268,1243,26,28,1933,25,23,50,1960,
+ 106,76,77,108,557,72,77,6462,1318,2339,
+ 2467,2415,2660,2516,2496,2583,3129,2528,742,2764,
+ 2586,2770,1817,76,2779,143,3301,1245,2420,140,
+ 144,5064,3971,35,1296,32,6812,3109,27,30,
+ 31,1268,1243,26,28,1933,25,23,50,1960,
+ 106,76,77,108,561,3301,1648,1034,403,2339,
+ 2467,2415,3768,2516,2496,2583,3718,2528,555,2764,
+ 2586,2770,2420,2506,2779,143,2752,3301,524,189,
+ 144,4296,35,1296,32,2861,3109,27,30,31,
+ 1268,1243,26,28,1933,25,23,50,1960,106,
+ 76,77,108,1496,35,1200,387,2948,2339,2467,
+ 2415,3874,2516,2496,2583,1318,2528,51,2764,2586,
+ 2770,3301,295,2780,164,4296,35,1296,32,3301,
+ 3109,27,30,31,1268,1243,26,28,1933,25,
+ 23,50,1960,106,76,77,108,273,177,2340,
+ 2420,5208,2339,2467,2415,4266,2516,2496,2583,69,
+ 2528,179,2764,2586,2770,76,381,2780,164,1504,
+ 3301,1318,1496,35,1200,387,4296,35,1296,32,
+ 422,3109,27,30,31,1268,1243,26,28,1933,
+ 25,23,50,1960,106,76,77,108,76,275,
+ 68,156,2095,2339,2467,2415,1817,2516,2496,2583,
+ 3430,2528,428,2764,2586,2770,273,198,2780,164,
+ 4296,35,1296,32,292,3109,27,30,31,1268,
+ 1243,26,28,1933,25,23,50,1960,106,76,
+ 77,108,3526,3818,284,1817,76,2339,2467,2415,
+ 2144,2516,2496,2583,1819,2528,4266,2764,2586,2770,
+ 270,1318,2780,164,538,534,535,536,338,4554,
+ 454,4296,35,1296,32,421,3109,27,30,31,
+ 1268,1243,26,28,1933,25,23,50,1960,106,
+ 76,77,108,71,1496,35,1200,387,2339,2467,
+ 2415,97,2516,2496,2583,354,2528,197,2764,2586,
+ 2770,3301,530,2780,164,4426,35,1296,32,424,
+ 3109,27,30,31,1268,1243,26,28,1933,25,
+ 23,50,1960,106,76,77,108,1949,430,3301,
+ 98,53,2339,2467,2415,76,2516,2496,2583,1587,
+ 2528,4393,2764,2586,2770,3301,3301,2780,164,538,
+ 534,535,536,76,4588,1830,1228,636,783,52,
+ 581,4612,35,1296,32,3807,6682,27,30,31,
+ 1268,1243,337,28,1983,2980,570,3936,3129,341,
+ 3374,4198,2041,537,534,535,536,4103,3301,156,
+ 156,1318,4491,35,1200,387,353,1178,2680,2625,
+ 180,5351,4573,530,2755,237,1755,349,76,3873,
+ 3124,4917,4230,3129,589,534,535,536,539,1034,
+ 2639,1496,35,1200,387,317,1501,319,4464,2046,
+ 312,888,228,330,3339,195,273,297,609,2137,
+ 374,3409,35,1296,32,3091,3880,27,30,31,
+ 1268,1243,337,28,1034,232,2522,406,2961,76,
+ 76,5024,1243,1402,2035,49,235,230,231,2041,
+ 350,1540,1478,293,1640,523,2492,1134,342,2100,
+ 1904,347,1289,407,408,409,709,402,274,304,
+ 308,767,3108,537,534,535,536,3490,3301,5233,
+ 242,245,248,251,3343,314,1372,319,1230,582,
+ 1980,1210,2493,1565,3119,3540,4992,5038,5368,538,
+ 534,535,536,3301,2894,609,2137,3301,559,4927,
+ 1557,4296,35,1296,32,5785,3109,27,30,31,
+ 1268,1243,26,28,1933,25,23,50,1960,106,
+ 76,77,108,558,2979,6798,196,90,2339,2467,
+ 2415,76,2516,2496,2583,4581,2528,4851,2764,2586,
+ 3732,1962,35,3766,32,3807,6682,27,30,31,
+ 1268,1243,337,28,878,410,412,3683,3301,1862,
+ 35,1200,387,537,534,535,536,4836,1196,2064,
+ 2420,3301,2859,4261,4715,35,1200,387,2041,1178,
+ 76,3833,239,889,1952,1275,4993,237,348,1393,
+ 462,589,534,535,536,6879,589,534,535,536,
+ 3416,571,544,49,1504,317,1501,319,2420,2046,
+ 312,888,1640,330,2205,3417,3301,3301,273,401,
+ 1129,1496,35,1200,387,4587,4001,4001,2244,3124,
+ 636,636,232,4813,609,2137,160,232,4045,3260,
+ 2765,5024,2856,240,230,231,3292,3382,235,230,
+ 231,341,341,341,2946,537,534,535,536,2494,
+ 4103,4103,156,156,294,433,1824,1034,1034,1318,
+ 274,2291,2291,3017,861,4573,4573,3301,4657,418,
+ 3735,5364,242,245,248,251,3343,1947,2156,2156,
+ 1230,582,2947,2536,2565,3118,3119,3540,4992,5038,
+ 5368,2046,285,753,76,331,3574,3087,2084,1039,
+ 1496,35,1200,387,3301,201,2517,5785,44,2997,
+ 4296,35,1296,32,2032,3109,27,30,31,1268,
+ 1243,26,28,1933,25,23,50,1960,106,76,
+ 77,108,76,3913,450,2207,2274,2339,2467,2415,
+ 3123,2516,2496,2583,49,2528,2217,2764,3717,4296,
+ 35,1296,32,46,3109,27,30,31,1268,1243,
+ 26,28,1933,25,23,50,1960,106,76,77,
+ 108,1318,1931,35,2323,3773,2339,2467,2415,3139,
+ 2516,2496,2583,3338,2528,3301,3701,3052,35,1296,
+ 32,1318,6682,27,30,31,1268,1243,337,28,
+ 3301,537,534,535,536,537,534,535,536,537,
+ 534,535,536,2857,76,4191,49,199,3398,3780,
+ 3037,3039,76,2752,3301,1640,2133,6347,1318,441,
+ 4255,455,4001,952,3301,97,636,405,3180,35,
+ 1296,32,3807,3880,27,30,31,1268,1243,337,
+ 28,317,1501,319,4319,2046,313,888,341,331,
+ 537,534,535,536,3432,76,4103,76,156,1504,
+ 3301,2276,76,1034,1694,76,2182,2291,5261,2665,
+ 350,4573,4465,1326,2183,3297,4903,3124,344,2100,
+ 1904,347,3489,3724,2156,1496,35,1200,387,2587,
+ 67,156,317,1501,319,3605,847,312,888,341,
+ 3491,3339,1806,35,1296,32,3807,3880,27,30,
+ 31,1268,1243,337,28,1560,4942,537,534,535,
+ 536,3301,1534,3800,537,534,535,536,289,432,
+ 3301,3301,636,4002,4067,4101,4132,537,534,535,
+ 536,4197,5261,1578,2606,537,534,535,536,76,
+ 1318,66,3143,2766,228,2847,304,308,767,3301,
+ 65,64,966,3017,156,3271,317,1501,319,1034,
+ 1364,312,888,2625,180,3339,3301,1980,203,215,
+ 910,3332,202,212,213,214,216,588,632,55,
+ 169,3237,589,534,535,536,222,3520,1540,35,
+ 293,3385,4131,3524,3301,1140,54,3124,166,168,
+ 262,183,167,170,171,172,173,174,1491,2767,
+ 537,534,535,536,537,534,535,536,2858,4510,
+ 304,308,767,232,101,5064,269,459,1210,557,
+ 6812,3301,3017,3301,244,230,231,4296,35,1296,
+ 32,741,3109,27,30,31,1268,1243,26,28,
+ 1933,25,23,50,1960,106,76,77,108,2855,
+ 2465,3674,563,2526,2339,2467,2415,4595,2516,2496,
+ 2583,2912,3706,1,651,1783,749,636,3523,3765,
+ 1806,35,1296,32,3807,3880,27,30,31,1268,
+ 1243,337,28,341,1318,2670,1362,529,504,228,
+ 3124,4103,537,534,535,536,76,966,676,156,
+ 1504,3301,4999,5012,1034,1196,4573,3653,2625,180,
+ 5261,2074,4510,203,215,910,1325,202,212,213,
+ 214,216,588,632,532,169,1393,2842,3067,3068,
+ 193,2933,156,2340,317,1501,319,502,503,312,
+ 888,3500,558,3339,168,3221,184,167,170,171,
+ 172,173,174,4296,35,1296,32,181,3109,27,
+ 30,31,1268,1243,26,28,1933,25,23,50,
+ 1960,106,76,77,108,385,2972,193,3389,636,
+ 2339,2467,2415,2669,2516,2496,3675,2404,3301,4198,
+ 4066,359,1496,35,1200,387,429,2770,305,308,
+ 767,228,3545,4263,4331,537,534,535,536,966,
+ 1230,156,538,534,535,536,1034,2192,4447,528,
+ 2625,180,4045,4334,5031,203,215,910,3299,202,
+ 212,213,214,216,588,632,431,169,3280,537,
+ 534,535,536,2961,35,3766,32,3807,3880,27,
+ 30,31,1268,1243,337,28,168,3017,3787,167,
+ 170,171,172,173,174,3814,534,535,536,481,
+ 4462,4043,3128,636,4496,3779,2113,3939,4537,1555,
+ 4003,1360,4591,4018,4068,2046,8018,8018,8018,330,
+ 1365,35,1200,387,8018,228,76,8018,8018,8018,
+ 2912,8018,76,966,8018,156,1504,317,1501,319,
+ 1034,8018,312,888,2625,180,2205,5075,2286,203,
+ 215,910,341,202,212,213,214,216,588,632,
+ 4103,169,76,577,49,8018,1504,636,156,8018,
+ 8018,8018,8018,1640,2496,4573,8018,3501,3124,8018,
+ 168,1110,178,167,170,171,172,173,174,228,
+ 8018,2682,8018,3178,8018,8018,8018,966,156,156,
+ 4510,8018,8018,8018,1034,4134,8018,2716,2625,180,
+ 5095,418,3735,203,215,910,8018,202,212,213,
+ 214,216,588,632,8018,169,8018,537,534,535,
+ 536,2170,35,3766,32,3807,3880,27,30,31,
+ 1268,1243,337,28,168,3017,176,167,170,171,
+ 172,173,174,537,534,535,536,8018,3260,35,
+ 3766,32,3807,3880,27,30,31,1268,1243,337,
+ 28,4018,8018,3237,8018,8018,8018,8018,8018,358,
+ 3814,534,535,536,8018,1496,35,1200,387,8018,
+ 8018,8018,8018,8018,8018,317,1501,319,4018,673,
+ 312,888,8018,636,2205,2865,3253,3266,3214,35,
+ 1296,32,3807,3880,27,30,31,1268,1243,337,
+ 28,8018,317,1501,319,228,8018,312,888,49,
+ 8018,2205,8018,966,8018,156,8018,8018,1640,8018,
+ 1034,4196,8018,3496,2625,180,3965,4391,8018,203,
+ 215,910,8018,202,212,213,214,216,588,632,
+ 8018,169,8018,538,534,535,536,769,5275,418,
+ 3735,636,317,1501,319,76,8018,312,888,1504,
+ 168,3867,580,167,170,171,172,173,174,8018,
+ 8018,8018,8018,228,8018,5095,418,3735,8018,8018,
+ 8018,966,8018,156,8018,8018,8018,8018,1034,8018,
+ 8018,156,2625,180,8018,8018,8018,203,215,910,
+ 3611,202,212,213,214,216,588,632,8018,169,
+ 8018,865,8018,8018,8018,636,350,8018,2415,8018,
+ 8018,8018,3124,4045,342,2100,1904,347,168,8018,
+ 177,167,170,171,172,173,174,228,611,8018,
+ 537,534,535,536,4510,966,8018,156,8018,8018,
+ 2496,8018,1034,8018,3124,8018,2625,180,3017,8018,
+ 8018,203,215,910,8018,202,212,213,214,216,
+ 588,632,8018,169,8018,961,4510,8018,8018,636,
+ 8018,8018,4069,8018,8018,8018,2046,3524,8018,8018,
+ 330,3124,168,8018,187,167,170,171,172,173,
+ 174,228,8018,8018,537,534,535,536,8018,966,
+ 8018,156,8018,4510,8018,8018,1034,8018,5520,8018,
+ 2625,180,4334,358,8018,203,215,910,8018,202,
+ 212,213,214,216,588,632,8018,169,8018,1057,
+ 8018,8018,8018,636,8018,8018,8018,2192,8018,3167,
+ 3253,3266,4045,8018,4199,358,168,8018,3871,167,
+ 170,171,172,173,174,228,8018,8018,8018,537,
+ 534,535,536,966,8018,156,538,534,535,536,
+ 1034,3394,3253,3266,2625,180,8018,3017,8018,203,
+ 215,910,504,202,212,213,214,216,588,632,
+ 8018,169,8018,1153,8018,8018,8018,636,8018,8018,
+ 8018,2192,8018,8018,8018,2046,4045,2708,8018,330,
+ 168,8018,192,167,170,171,172,173,174,228,
+ 8018,8018,8018,537,534,535,536,966,8018,156,
+ 8018,501,503,8018,1034,8018,8018,3183,2625,180,
+ 8018,3017,8018,203,215,910,8018,202,212,213,
+ 214,216,588,632,8018,169,8018,1249,8018,8018,
+ 8018,636,8018,3274,3874,8018,8018,8018,8018,2046,
+ 8018,8018,4326,330,168,8018,186,167,170,171,
+ 172,173,174,228,8018,8018,537,534,535,536,
+ 8018,966,8018,156,538,534,535,536,1034,8018,
+ 8018,5520,2625,180,4334,8018,8018,203,215,910,
+ 8018,202,212,213,214,216,588,632,8018,169,
+ 1848,35,1296,32,5378,3880,27,30,31,1268,
+ 1243,337,28,8018,8018,8018,8018,8018,168,8018,
+ 194,167,170,171,172,173,174,4296,35,1296,
+ 32,8018,3109,27,30,31,1268,1243,26,28,
+ 1933,25,23,50,1960,106,76,77,108,8018,
+ 8018,8018,8018,8018,2339,2467,2415,8018,2516,3692,
+ 8018,8018,8018,4987,317,1501,319,4391,8018,312,
+ 888,3956,8018,3522,8018,3124,8018,8018,8018,2756,
+ 2598,35,1296,32,6619,3880,27,30,31,1268,
+ 1243,337,28,350,8018,8018,8018,4510,8018,8018,
+ 8018,342,2100,1904,347,8018,8018,8018,8018,8018,
+ 349,4296,35,1296,32,3514,3109,27,30,31,
+ 1268,1243,26,28,1933,25,23,50,1960,106,
+ 76,77,108,1496,35,1200,387,3937,2339,2467,
+ 2415,8018,2516,3693,317,1501,319,4262,8018,312,
+ 888,8018,8018,1028,8018,8018,350,8018,8018,538,
+ 534,535,536,8018,342,2100,1904,347,8018,537,
+ 534,535,536,350,8018,8018,504,49,340,8018,
+ 8018,342,2100,1904,347,8018,1640,4462,8018,8018,
+ 8018,8018,8018,8018,2335,3108,8018,8018,8018,8018,
+ 8018,4296,35,1296,32,364,3109,27,30,31,
+ 1268,1243,26,28,1933,25,23,50,1960,106,
+ 76,77,108,8018,8018,501,503,8018,2339,2467,
+ 2415,8018,3606,4296,35,1296,32,8018,3109,27,
+ 30,31,1268,1243,26,28,1933,25,23,50,
+ 1960,106,76,77,108,8018,8018,3866,8018,8018,
+ 2339,2467,2415,8018,3607,4296,35,1296,32,8018,
+ 3109,27,30,31,1268,1243,26,28,1933,25,
+ 23,50,1960,106,76,77,108,8018,8018,8018,
+ 8018,8018,2339,2467,2415,8018,3609,4296,35,1296,
+ 32,8018,3109,27,30,31,1268,1243,26,28,
+ 1933,25,23,50,1960,106,76,77,108,8018,
+ 8018,8018,8018,8018,2339,2467,2415,8018,3642,4296,
+ 35,1296,32,8018,3109,27,30,31,1268,1243,
+ 26,28,1933,25,23,50,1960,106,76,77,
+ 108,8018,8018,8018,8018,8018,2339,2467,2415,8018,
+ 3654,4296,35,1296,32,8018,3109,27,30,31,
+ 1268,1243,26,28,1933,25,23,50,1960,106,
+ 76,77,108,8018,8018,8018,8018,8018,2339,2467,
+ 2415,8018,3656,3648,35,1296,32,5378,3880,27,
+ 30,31,1268,1243,337,28,8018,1496,35,1200,
+ 387,8018,8018,8018,8018,8018,8018,8018,8018,8018,
+ 8018,2119,8018,8018,8018,2912,4036,35,1296,32,
+ 8018,3109,27,30,31,1268,1243,26,28,1933,
+ 25,23,50,1960,585,76,77,228,8018,8018,
+ 8018,49,8018,8018,8018,966,8018,317,1501,319,
+ 1640,8018,312,888,8018,8018,525,8018,1702,8018,
+ 8018,205,215,910,8018,204,212,213,214,216,
+ 588,632,1495,1871,8018,8018,350,3124,4917,8018,
+ 8018,8018,8018,8018,342,2100,1904,347,206,208,
+ 210,709,8018,8018,589,534,535,536,526,228,
+ 8018,217,207,209,2393,35,1296,32,8018,6682,
+ 27,30,31,1268,1243,337,28,8018,2295,8018,
+ 8018,8018,8018,2522,406,2961,537,534,535,536,
+ 13,8018,5821,8018,8018,232,8018,8018,8018,8018,
+ 589,534,535,536,3017,8018,247,230,231,8018,
+ 407,408,409,709,8018,2393,35,1296,32,8018,
+ 6682,27,30,31,1268,1243,337,28,317,1501,
+ 319,8018,2046,315,888,4391,331,537,534,535,
+ 536,232,8018,8018,8018,8018,4131,8018,8018,8018,
+ 8018,2894,250,230,231,6347,8018,537,534,535,
+ 536,8018,8018,8018,8018,706,8018,8018,537,534,
+ 535,536,8018,8018,8018,4647,8018,8018,8018,317,
+ 1501,319,8018,2046,313,888,3017,331,4296,35,
+ 1296,32,8018,3109,27,30,31,1268,1243,26,
+ 28,1933,25,23,50,1960,106,76,77,108,
+ 8018,8018,410,413,3254,2339,2467,3658,4296,35,
+ 1296,32,8018,3109,27,30,31,1268,1243,26,
+ 28,1933,25,23,50,1960,106,76,77,108,
+ 8018,8018,8018,8018,8018,2339,2467,3659,3770,35,
+ 1296,32,8018,3109,27,30,31,1268,1243,26,
+ 28,1933,25,23,50,1960,106,76,77,107,
+ 8018,8018,8018,4544,35,1200,387,8018,1178,8018,
+ 8018,8018,8018,8018,8018,8018,238,8018,8018,2041,
+ 1749,35,1200,387,8018,589,534,535,536,8018,
+ 8018,1806,35,1296,32,3807,3880,27,30,31,
+ 1268,1243,337,28,8018,4394,8018,273,8018,1496,
+ 35,1200,387,538,534,535,536,8018,8018,8018,
+ 8018,8018,8018,8018,49,8018,232,537,534,535,
+ 536,8018,8018,1640,8018,609,2137,236,230,231,
+ 8018,47,8018,8018,8018,4462,8018,8018,8018,8018,
+ 8018,755,8018,49,8018,317,1501,319,8018,274,
+ 312,888,1640,8018,3465,8018,8018,8018,8018,8018,
+ 1042,243,246,249,252,3343,8018,8018,8018,1230,
+ 583,4639,35,1296,32,3807,3880,27,30,31,
+ 1268,1243,337,28,4768,35,1200,387,2659,1178,
+ 8018,8018,8018,538,534,535,536,238,2192,8018,
+ 76,8018,8018,4045,2912,8018,589,534,535,536,
+ 589,534,535,536,8018,8018,8018,8018,8018,8018,
+ 537,534,535,536,8018,8018,341,2342,273,8018,
+ 8018,2912,8018,8018,4103,317,1501,319,3017,8018,
+ 312,888,8018,8018,3465,8018,8018,232,8018,4573,
+ 8018,232,8018,228,8018,8018,8018,8018,236,230,
+ 231,966,253,230,231,8018,2046,3190,8018,8018,
+ 330,1799,35,1200,387,8018,8018,205,215,910,
+ 274,204,212,213,214,216,588,632,8018,8018,
+ 8018,8018,243,246,249,252,3343,8018,3347,2433,
+ 1230,583,8018,2912,206,208,210,709,1496,35,
+ 1200,387,8018,8018,8018,49,8018,217,207,209,
+ 8018,8018,8018,8018,1640,228,8018,8018,8018,8018,
+ 8018,8018,47,966,76,8018,8018,8018,2912,8018,
+ 2035,8018,1072,8018,8018,4045,1986,8018,5821,205,
+ 215,910,49,204,212,213,214,216,588,632,
+ 341,1640,537,534,535,536,8018,8018,4103,1129,
+ 4001,2524,8018,8018,636,2912,206,208,210,709,
+ 3017,8018,8018,4573,8018,8018,8018,8018,8018,217,
+ 207,209,8018,8018,8018,8018,341,228,8018,8018,
+ 8018,3192,8018,8018,4103,966,156,8018,2046,8018,
+ 8018,1034,331,8018,8018,2291,8018,8018,2538,4573,
+ 5821,205,215,910,8018,204,212,213,214,216,
+ 588,632,2156,350,8018,8018,8018,2631,8018,8018,
+ 8018,344,2100,1904,347,8018,8018,8018,206,208,
+ 210,709,8018,8018,8018,8018,8018,8018,8018,8018,
+ 8018,217,207,209,8018,8018,4296,35,1296,32,
+ 8018,3109,27,30,31,1268,1243,26,28,1933,
+ 25,23,50,1960,106,76,77,108,8018,8018,
+ 3120,8018,5821,2339,3578,4296,35,1296,32,8018,
+ 3109,27,30,31,1268,1243,26,28,1933,25,
+ 23,50,1960,106,76,77,108,8018,8018,8018,
+ 8018,8018,2339,3580,4296,35,1296,32,8018,3109,
+ 27,30,31,1268,1243,26,28,1933,25,23,
+ 50,1960,106,76,77,108,8018,4296,35,1296,
+ 32,3588,3109,27,30,31,1268,1243,26,28,
+ 1933,25,23,50,1960,106,76,77,108,8018,
+ 4296,35,1296,32,3589,3109,27,30,31,1268,
+ 1243,26,28,1933,25,23,50,1960,106,76,
+ 77,108,2251,8018,8018,8018,2912,3598,8018,8018,
+ 8018,8018,8018,8018,8018,2750,76,8018,8018,8018,
+ 2912,8018,8018,2841,8018,8018,8018,8018,228,8018,
+ 8018,8018,8018,8018,8018,8018,966,589,534,535,
+ 536,8018,341,8018,2192,589,534,535,536,4045,
+ 4103,1987,205,215,910,2912,204,212,213,214,
+ 216,588,632,8018,8018,4573,537,534,535,536,
+ 8018,8018,8018,8018,8018,8018,8018,228,232,206,
+ 208,210,709,3204,3017,966,232,8018,8018,584,
+ 230,231,518,207,209,8018,8018,236,230,231,
+ 2615,205,215,910,2912,204,212,213,214,216,
+ 588,632,2046,8018,8018,8018,6689,8018,8018,8018,
+ 8018,8018,8018,8018,8018,8018,228,8018,206,208,
+ 210,709,8018,8018,966,8018,8018,8018,8018,8018,
+ 76,218,207,209,783,8018,8018,8018,8018,2706,
+ 205,215,910,2912,204,212,213,214,216,588,
+ 632,8018,8018,8018,8018,8018,341,8018,8018,8018,
+ 8018,8018,8018,8018,8018,228,156,206,208,210,
+ 709,8018,8018,966,8018,188,8018,8018,8018,4068,
+ 608,207,209,8018,8018,8018,8018,8018,2797,205,
+ 215,910,2912,204,212,213,214,216,588,632,
+ 94,8018,76,8018,8018,8018,2912,76,8018,8018,
+ 8018,2912,8018,8018,228,8018,206,208,210,709,
+ 8018,8018,966,8018,8018,8018,8018,8018,341,607,
+ 207,209,8018,341,8018,8018,4103,8018,205,215,
+ 910,4103,204,212,213,214,216,588,632,8018,
+ 3345,4573,8018,8018,8018,8018,4573,8018,8018,8018,
+ 8018,8018,8018,8018,8018,206,208,210,709,3166,
+ 8018,8018,8018,8018,508,8018,8018,8018,606,207,
+ 209,4296,35,1296,32,8018,3109,27,30,31,
+ 1268,1243,26,28,1933,25,23,50,1960,106,
+ 76,77,85,4296,35,1296,32,8018,3109,27,
+ 30,31,1268,1243,26,28,1933,25,23,50,
+ 1960,106,76,77,83,4296,35,1296,32,8018,
+ 3109,27,30,31,1268,1243,26,28,1933,25,
+ 23,50,1960,106,76,77,82,4296,35,1296,
+ 32,8018,3109,27,30,31,1268,1243,26,28,
+ 1933,25,23,50,1960,106,76,77,81,4296,
+ 35,1296,32,8018,3109,27,30,31,1268,1243,
+ 26,28,1933,25,23,50,1960,106,76,77,
+ 80,4296,35,1296,32,8018,3109,27,30,31,
+ 1268,1243,26,28,1933,25,23,50,1960,106,
+ 76,77,79,4296,35,1296,32,8018,3109,27,
+ 30,31,1268,1243,26,28,1933,25,23,50,
+ 1960,106,76,77,78,4296,2225,1296,2324,8018,
+ 3109,27,30,31,1268,1243,26,28,1933,25,
+ 23,50,1960,106,76,77,84,2888,8018,8018,
+ 8018,2912,4101,35,1296,32,8018,3109,27,30,
+ 31,1268,1243,26,28,1933,25,23,50,1960,
+ 574,76,77,228,8018,8018,8018,8018,8018,8018,
+ 8018,966,76,8018,8018,8018,2912,8018,8018,8018,
+ 8018,8018,8018,8018,8018,8018,2979,205,215,910,
+ 2912,204,212,213,214,216,588,632,341,8018,
+ 8018,8018,8018,8018,8018,8018,4103,8018,8018,8018,
+ 8018,8018,228,8018,206,208,210,709,8018,8018,
+ 966,4573,8018,8018,8018,8018,8018,519,207,209,
+ 8018,8018,8018,8018,8018,8018,205,215,910,506,
+ 204,212,213,214,216,588,632,2575,35,1296,
+ 32,8018,3880,27,30,31,1268,1243,337,28,
+ 8018,8018,8018,206,208,210,709,8018,8018,538,
+ 534,535,536,8018,8018,8018,303,207,209,3841,
+ 35,1296,32,8018,3109,27,30,31,1268,1243,
+ 26,28,1933,25,23,50,1960,106,76,77,
+ 104,8018,8018,8018,8018,8018,8018,8018,8018,8018,
+ 8018,317,1501,319,8018,8018,600,888,4296,35,
+ 1296,32,8018,3109,27,30,31,1268,1243,26,
+ 28,1933,25,23,50,1960,106,76,77,110,
+ 4296,35,1296,32,8018,3109,27,30,31,1268,
+ 1243,26,28,1933,25,23,50,1960,106,76,
+ 77,109,4296,35,1296,32,8018,3109,27,30,
+ 31,1268,1243,26,28,1933,25,23,50,1960,
+ 106,76,77,105,3070,8018,8018,8018,2912,4166,
+ 35,1296,32,8018,3109,27,30,31,1268,1243,
+ 26,28,1933,25,23,50,1960,572,76,77,
+ 228,8018,8018,8018,8018,8018,8018,8018,966,8018,
+ 76,8018,8018,8018,783,8018,8018,8018,8018,8018,
+ 8018,8018,8018,8018,205,215,910,8018,204,212,
+ 213,214,216,588,632,8018,341,8018,8018,8018,
+ 8018,8018,8018,8018,8018,8018,156,8018,8018,8018,
+ 8018,206,208,210,709,188,8018,8018,8018,4068,
+ 8018,8018,8018,8018,498,207,209,4231,35,1296,
+ 32,8018,3109,27,30,31,1268,1243,26,28,
+ 1933,25,23,50,1960,86,76,77,4361,35,
+ 1296,32,8018,3109,27,30,31,1268,1243,26,
+ 28,1933,25,23,50,1960,3486,76,77,2415,
+ 8018,8018,8018,3124,4045,2195,8018,8018,8018,4988,
+ 76,4001,8018,8018,2912,636,8018,8018,8018,8018,
+ 3360,537,534,535,536,4510,8018,589,534,535,
+ 536,589,534,535,536,8018,341,341,8018,3017,
+ 8018,8018,8018,8018,4103,4103,8018,156,8018,8018,
+ 8018,8018,1034,8018,8018,8018,2291,8018,8018,4573,
+ 4573,8018,1365,35,1200,387,8018,2046,232,5046,
+ 8018,330,232,2156,4045,8018,8018,533,3227,235,
+ 230,231,8018,235,230,231,8018,8018,8018,8018,
+ 8018,537,534,535,536,1799,35,1200,387,3347,
+ 1365,35,1200,387,358,8018,49,8018,8018,3017,
+ 8018,8018,5793,8018,8018,1640,5793,8018,8018,2163,
+ 35,1200,387,3493,8018,8018,1978,35,1200,387,
+ 3167,3253,3266,2682,8018,8018,8018,2046,8018,49,
+ 8018,6689,8018,8018,49,8018,8018,8018,1640,8018,
+ 8018,8018,8018,1640,8018,8018,47,1799,35,1200,
+ 387,47,8018,49,624,614,1526,8018,624,614,
+ 49,1132,1640,1365,35,1200,387,8018,4657,1640,
+ 47,8018,783,8018,8018,8018,8018,1802,8018,8018,
+ 1676,8018,1365,35,1200,387,8018,2613,626,8018,
+ 8018,49,627,8018,341,1365,35,1200,387,8018,
+ 1640,8018,8018,8018,156,8018,8018,49,1899,8018,
+ 76,8018,8018,188,783,8018,1640,4068,2370,8018,
+ 613,6629,8018,8018,47,96,49,8018,1365,35,
+ 1200,387,8018,8018,1020,1640,341,8018,8018,49,
+ 8018,8018,8018,47,8018,8018,156,8018,1640,1365,
+ 35,1200,387,2804,8018,188,47,8018,8018,4068,
+ 8018,8018,8018,8018,8018,8018,3171,8018,8018,8018,
+ 8018,8018,49,8018,8018,8018,8018,8018,8018,8018,
+ 8018,1640,8018,8018,8018,8018,8018,8018,190,47,
+ 8018,8018,8018,49,8018,8018,8018,8018,8018,3455,
+ 8018,8018,1640,8018,8018,8018,8018,8018,8018,8018,
+ 47,8018,8018,8018,8018,8018,8018,8018,8018,8018,
+ 3782,8018,8018,8018,8018,8018,8018,8018,8018,8018,
+ 3384,8018,8018,8018,8018,8018,8018,8018,8018,8018,
+ 8018,8018,8018,8018,8018,8018,8018,8018,8018,8018,
+ 8018,8018,8018,8018,8018,8018,8018,8018,8018,8018,
+ 8018,8018,8018,8018,8018,8018,8018,8018,3388,8018,
+ 0,1,229,829,0,500,5772,0,1,229,
+ 0,39,8652,0,39,8651,631,0,39,8033,
+ 0,39,8032,0,1,984,0,1060,1,0,
+ 39,1,8652,0,39,1,8651,0,39,1,
+ 8033,0,39,1,8032,0,1,3175,0,1,
+ 901,0,229,219,0,1,880,0,1,923,
+ 0,1,1077,0,8252,223,0,8251,223,0,
+ 880,223,0,923,223,0,1077,223,0,8623,
+ 223,0,8354,223,0,8353,223,0,8279,223,
+ 0,8278,223,0,8277,223,0,8276,223,0,
+ 8275,223,0,8274,223,0,8273,223,0,8272,
+ 223,0,8252,224,0,8251,224,0,880,224,
+ 0,923,224,0,1077,224,0,8623,224,0,
+ 8354,224,0,8353,224,0,8279,224,0,8278,
+ 224,0,8277,224,0,8276,224,0,8275,224,
+ 0,8274,224,0,8273,224,0,8272,224,0,
+ 8252,225,0,8251,225,0,880,225,0,923,
+ 225,0,1077,225,0,8623,225,0,8354,225,
+ 0,8353,225,0,8279,225,0,8278,225,0,
+ 8277,225,0,8276,225,0,8275,225,0,8274,
+ 225,0,8273,225,0,8272,225,0,1077,393,
+ 0,923,393,0,880,393,0,283,393,0,
+ 8252,226,0,8251,226,0,880,226,0,923,
+ 226,0,1077,226,0,8623,226,0,8354,226,
+ 0,8353,226,0,8279,226,0,8278,226,0,
+ 8277,226,0,8276,226,0,8275,226,0,8274,
+ 226,0,8273,226,0,8272,226,0,283,286,
+ 0,8252,227,0,8251,227,0,880,227,0,
+ 923,227,0,1077,227,0,8623,227,0,8354,
+ 227,0,8353,227,0,8279,227,0,8278,227,
+ 0,8277,227,0,8276,227,0,8275,227,0,
+ 8274,227,0,8273,227,0,8272,227,0,1374,
+ 386,0,39,8651,0,8652,48,0,8651,48,
+ 0,8033,48,0,8032,48,0,8252,587,0,
+ 8251,587,0,880,587,0,923,587,0,1077,
+ 587,0,8623,587,0,8354,587,0,8353,587,
+ 0,8279,587,0,8278,587,0,8277,587,0,
+ 8276,587,0,8275,587,0,8274,587,0,8273,
+ 587,0,8272,587,0,8252,241,0,8251,241,
+ 0,880,241,0,923,241,0,1077,241,0,
+ 8623,241,0,8354,241,0,8353,241,0,8279,
+ 241,0,8278,241,0,8277,241,0,8276,241,
+ 0,8275,241,0,8274,241,0,8273,241,0,
+ 8272,241,0,8622,241,0,8621,241,0,8290,
+ 241,0,8289,241,0,8288,241,0,8287,241,
+ 0,8286,241,0,8285,241,0,8284,241,0,
+ 8283,241,0,8282,241,0,8281,241,0,8280,
+ 241,0,39,241,8652,0,39,241,8651,630,
+ 0,39,241,8033,0,39,241,8032,0,8056,
+ 241,0,1,329,0,38,901,0,38,8652,
+ 0,38,8651,0,38,8033,0,38,8032,0,
+ 453,1589,0,439,1634,0,1374,29,0,8030,
+ 1,0,1679,316,0,1077,597,0,923,597,
+ 0,880,597,0,601,597,0,601,596,0,
+ 8081,75,0,8080,75,0,685,75,0,713,
+ 75,0,1847,75,0,1444,75,0,1,599,
+ 0,1,443,0,457,2227,0,456,2333,0,
+ 35,33,0,47,37,0,8030,382,0,8029,
+ 382,0,1077,599,0,923,599,0,880,599,
+ 0,880,629,0,923,629,0,1077,629,0,
+ 8633,629,0,500,2929,0,8056,1,229,0,
+ 39,1,229,0,229,415,0,1,1843,0,
+ 1,8622,0,1,8621,0,1,8290,0,1,
+ 8289,0,1,8288,0,1,8287,0,1,8286,
+ 0,1,8285,0,1,8284,0,1,8283,0,
+ 1,8282,0,1,8281,0,1,8280,0,1,
+ 6242,0,8652,37,0,8651,37,0,8033,37,
+ 0,8032,37,0,43,8054,0,43,37,0,
+ 1449,91,0,32,34,0,8026,1,0,39,
+ 901,0,1077,329,0,923,329,0,880,329,
+ 0,39,241,8651,0,1,1575,0,1,1628,
+ 0,229,220,0,4839,126,0,8252,625,0,
+ 8251,625,0,880,625,0,923,625,0,1077,
+ 625,0,8623,625,0,8354,625,0,8353,625,
+ 0,8279,625,0,8278,625,0,8277,625,0,
+ 8276,625,0,8275,625,0,8274,625,0,8273,
+ 625,0,8272,625,0,880,628,0,923,628,
+ 0,1077,628,0,8633,628,0,8028,404,0,
+ 8027,404,0,229,414,0,8030,586,382,0,
+ 8029,586,382,0,1,229,3381,0,8027,229,
+ 0,3395,229,0,8024,1,0,8023,1,0,
+ 237,1693,0,387,32,0,386,29,0,1077,
+ 444,0,923,444,0,880,444,0,8056,444,
+ 0,39,444,0,329,444,0,8054,45,0,
+ 37,45,0,8030,575,382,0,8029,575,382,
+ 0,8030,573,382,0,8029,573,382,0,8030,
+ 87,382,0,8029,87,382,0,1,92,0,
+ 3767,229,0,10,12,0,8056,1,0,39,
+ 1,0,585,574,0,8623,334,0,8354,334,
+ 0,8353,334,0,4839,128,0,4839,127,0,
+ 3922,100,0,8,10,12,0,8652,2,37,
+ 0,8651,2,37,0,8033,2,37,0,8032,
+ 2,37,0,8652,36,0,8651,36,0,8033,
+ 36,0,8032,36,0,1077,594,0,923,594,
+ 0,880,594,0,1077,593,0,923,593,0,
+ 880,593,0,537,538,0,3150,103,0,2825,
+ 99,0,1077,95,0,923,95,0,880,95,
+ 0,8056,95,0,39,95,0,329,95,0,
+ 8030,586,575,382,0,586,575,0,35,73,
+ 0,3870,382,0,1077,594,595,0,923,594,
+ 595,0,880,594,595,0,594,595,0,278,
+ 2188,0,8,12,0,185,4383,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,0,
+ 50,51,52,53,54,55,56,57,58,59,
+ 60,61,62,63,64,65,66,67,68,0,
+ 70,71,72,73,0,0,0,3,78,79,
+ 31,81,13,83,84,85,86,87,88,89,
+ 0,91,92,93,94,95,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,0,50,51,52,53,
+ 54,55,56,57,58,59,60,61,62,63,
+ 64,65,66,67,68,0,70,71,72,73,
+ 101,102,96,97,78,79,0,81,13,83,
+ 84,85,86,87,88,89,10,91,92,93,
+ 94,95,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,0,50,51,52,53,54,55,56,57,
+ 58,59,60,61,62,63,64,65,66,67,
+ 68,0,70,71,72,73,101,102,0,0,
+ 78,79,0,81,13,83,84,85,86,87,
+ 88,89,0,91,92,93,94,95,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,0,50,51,
+ 52,53,54,55,56,57,58,59,60,61,
+ 62,63,64,65,66,67,68,0,70,71,
+ 72,73,101,102,96,97,78,79,0,81,
+ 13,14,84,85,86,87,88,89,109,91,
+ 92,93,94,95,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,0,50,51,52,53,54,55,
+ 56,57,58,59,60,61,62,63,64,65,
+ 66,67,68,0,70,71,72,73,0,0,
+ 0,0,78,79,5,81,6,6,84,85,
+ 86,87,88,89,0,91,92,93,94,95,
+ 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,69,
+ 50,51,52,53,54,55,56,57,58,59,
+ 60,61,62,63,64,65,66,67,68,0,
+ 70,71,72,73,96,97,0,0,78,79,
+ 0,81,0,110,84,85,86,87,88,89,
+ 117,91,92,93,94,95,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,76,50,51,52,53,
+ 54,55,56,57,58,59,60,61,62,63,
+ 64,65,66,67,68,0,70,71,72,73,
+ 0,0,96,97,78,79,5,81,96,97,
+ 84,85,86,87,88,89,109,91,92,93,
+ 94,95,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,76,50,51,52,53,54,55,56,57,
+ 58,59,60,61,62,63,64,65,66,67,
+ 68,0,70,71,72,73,96,97,0,0,
+ 78,79,0,81,5,14,84,85,86,87,
+ 88,89,0,91,92,93,94,95,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,0,50,51,
+ 52,53,54,55,56,57,58,59,60,61,
+ 62,63,64,65,66,67,68,0,70,71,
+ 72,73,5,81,96,97,78,79,0,81,
+ 98,0,84,85,86,87,88,89,0,91,
+ 92,93,94,95,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,0,50,51,52,53,54,55,
+ 56,57,58,59,60,61,62,63,64,65,
+ 66,67,68,0,70,71,72,73,5,0,
+ 0,0,78,79,5,81,6,0,84,85,
+ 86,87,88,89,0,91,92,93,94,95,
+ 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,69,
+ 50,51,52,53,54,55,56,57,58,59,
+ 60,61,62,63,64,65,66,67,68,82,
+ 70,71,72,73,80,0,0,0,78,79,
+ 5,81,6,6,84,85,86,87,88,89,
+ 0,91,92,93,94,95,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,69,50,51,52,53,
+ 54,55,56,57,58,59,60,61,62,63,
+ 64,65,66,67,68,0,70,71,72,73,
+ 5,0,0,0,78,79,5,81,6,6,
+ 84,85,86,87,88,89,0,91,92,93,
+ 94,95,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,69,50,51,52,53,54,55,56,57,
+ 58,59,60,61,62,63,64,65,66,67,
+ 68,0,70,71,72,73,5,0,0,0,
+ 78,79,5,81,6,6,84,85,86,87,
+ 88,89,0,91,92,93,94,95,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,69,50,51,
+ 52,53,54,55,56,57,58,59,60,61,
+ 62,63,64,65,66,67,68,0,70,71,
+ 72,73,80,0,0,0,78,79,11,81,
+ 5,0,84,85,86,87,88,89,14,91,
+ 92,93,94,95,0,1,2,3,4,5,
+ 6,7,8,9,10,11,12,13,14,0,
+ 43,0,0,0,0,1,2,3,4,0,
+ 7,8,9,11,30,31,32,33,34,35,
+ 36,37,38,39,40,41,42,43,0,45,
+ 46,47,48,30,31,32,33,34,35,36,
+ 37,38,39,40,41,42,0,1,2,3,
+ 4,0,6,69,70,0,5,2,74,75,
+ 76,77,99,100,80,81,82,83,0,1,
+ 15,16,17,18,19,20,21,75,23,77,
+ 96,97,98,99,100,101,102,103,104,105,
+ 106,107,108,109,110,111,112,69,30,98,
+ 116,117,118,119,120,121,122,123,124,125,
+ 126,127,128,0,130,0,1,2,3,4,
+ 5,6,7,8,9,10,11,12,13,14,
+ 0,132,0,82,0,0,1,2,3,4,
+ 131,7,8,9,0,30,31,32,33,34,
+ 35,36,37,38,39,40,41,42,43,0,
+ 45,46,47,48,30,31,32,33,34,35,
+ 36,37,38,39,40,41,42,45,46,0,
+ 1,2,3,4,69,70,7,8,9,74,
+ 75,76,77,49,0,80,81,82,83,0,
+ 1,2,3,4,0,6,7,8,9,5,
+ 0,96,97,98,99,100,101,102,103,104,
+ 105,106,107,108,109,110,111,112,69,99,
+ 100,116,117,118,119,120,121,122,123,124,
+ 125,126,127,128,50,130,0,1,2,3,
+ 4,5,6,7,8,9,10,0,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,0,
+ 44,45,46,47,48,0,50,51,52,53,
+ 54,55,56,57,58,59,60,61,62,63,
+ 64,65,66,67,0,1,2,3,4,73,
+ 0,1,2,3,4,5,6,7,8,9,
+ 10,74,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,49,44,45,46,47,48,74,
+ 50,51,52,53,54,55,56,57,58,59,
+ 60,61,62,63,64,65,66,67,0,1,
+ 2,3,4,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,0,1,
+ 2,3,4,49,50,0,1,2,3,4,
+ 5,6,7,8,9,10,0,12,0,65,
+ 66,67,68,0,0,71,72,11,5,0,
+ 1,77,0,1,2,3,4,83,6,7,
+ 8,9,13,0,90,13,14,0,1,2,
+ 3,4,5,6,30,31,32,10,11,12,
+ 0,0,1,2,3,4,0,113,114,115,
+ 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,0,1,2,3,4,49,
+ 50,74,75,76,10,107,12,80,0,82,
+ 0,1,2,3,4,65,66,67,68,78,
+ 79,71,72,77,128,98,0,77,0,1,
+ 2,3,4,83,6,7,8,9,98,13,
+ 90,0,1,2,3,4,5,6,7,8,
+ 9,10,44,12,13,14,0,0,1,2,
+ 3,4,0,113,114,115,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,
+ 0,0,0,0,0,49,50,5,77,5,
+ 6,7,8,9,11,11,0,13,14,0,
+ 74,65,66,67,68,78,79,71,72,77,
+ 30,31,32,0,0,1,2,3,4,83,
+ 7,8,9,0,10,0,90,0,15,16,
+ 17,18,19,20,21,0,23,24,25,26,
+ 27,28,0,30,31,32,33,34,35,36,
+ 37,38,39,40,41,42,74,76,74,75,
+ 76,80,0,49,80,69,83,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,0,1,2,3,4,49,50,0,
+ 1,2,3,4,5,6,7,8,9,10,
+ 107,12,0,65,66,67,68,5,76,71,
+ 72,0,80,0,0,0,2,6,7,8,
+ 9,7,8,9,13,14,0,1,90,15,
+ 16,17,18,19,20,21,0,23,0,1,
+ 2,3,4,0,30,31,32,33,34,35,
+ 36,37,38,39,40,41,42,0,1,2,
+ 3,4,49,0,49,22,77,0,11,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,0,0,49,0,82,49,
+ 50,7,8,9,7,8,9,70,0,0,
+ 0,1,2,3,4,65,66,67,68,69,
+ 10,71,72,80,30,31,32,33,34,35,
+ 36,37,38,39,40,41,42,0,0,44,
+ 90,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,0,1,2,3,4,
+ 49,50,0,1,2,3,4,5,6,7,
+ 8,9,10,0,12,0,65,66,67,68,
+ 5,74,71,72,0,1,2,3,4,0,
+ 6,7,8,9,83,11,0,13,14,0,
+ 11,90,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,0,0,49,74,
+ 77,49,50,0,0,1,2,3,4,75,
+ 6,0,0,0,10,0,12,65,66,67,
+ 68,98,83,71,72,0,11,0,1,2,
+ 3,4,98,6,0,83,0,10,0,12,
+ 44,0,90,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,76,76,76,
+ 75,0,49,50,0,1,2,3,4,5,
+ 6,7,8,9,10,0,12,69,65,66,
+ 67,68,76,98,71,72,11,0,1,2,
+ 3,4,5,6,0,0,83,10,11,12,
+ 105,106,129,90,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,0,0,
+ 75,76,0,49,50,7,8,9,0,0,
+ 11,74,75,69,6,7,8,9,0,65,
+ 66,67,68,0,0,71,72,82,30,31,
+ 32,33,34,35,36,37,38,39,40,41,
+ 42,0,43,0,90,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,0,
+ 49,0,69,69,49,50,7,8,9,0,
+ 1,2,3,4,0,6,0,0,1,0,
+ 65,66,67,68,105,106,71,72,11,30,
+ 31,32,33,34,35,36,37,38,39,40,
+ 41,42,0,0,0,90,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,
+ 0,0,75,0,80,49,50,7,8,9,
+ 7,8,9,84,0,0,0,0,0,108,
+ 0,65,66,67,68,99,100,71,72,11,
+ 30,31,32,33,34,35,36,37,38,39,
+ 40,41,42,0,0,0,90,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,77,76,75,76,80,49,50,0,1,
+ 2,3,4,5,6,0,0,0,10,108,
+ 12,0,65,66,67,68,99,100,71,72,
+ 0,1,2,3,4,5,6,7,8,9,
+ 10,0,12,13,14,0,0,90,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,0,0,77,80,80,49,50,0,
+ 1,2,3,4,5,6,0,77,0,10,
+ 69,12,0,65,66,67,68,0,77,71,
+ 72,0,1,2,3,4,5,6,7,8,
+ 9,10,0,12,13,14,0,0,90,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,77,0,77,69,0,49,50,
+ 0,1,2,3,4,74,0,0,0,0,
+ 10,69,12,6,65,66,67,68,0,11,
+ 71,72,0,77,77,7,8,9,0,1,
+ 2,3,4,5,6,113,114,115,10,90,
+ 12,13,14,15,16,17,18,19,20,21,
+ 22,23,24,25,26,27,28,29,49,0,
+ 1,2,3,4,5,6,7,8,9,10,
+ 11,12,44,45,46,47,48,80,70,51,
+ 52,53,54,55,56,57,58,59,60,61,
+ 62,63,64,0,1,2,3,4,5,6,
+ 0,73,43,10,82,12,78,79,80,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,27,28,29,0,
+ 1,2,3,4,5,6,7,8,9,10,
+ 0,12,0,44,45,46,47,48,0,0,
+ 51,52,53,54,55,56,57,58,59,60,
+ 61,62,63,64,0,0,0,77,0,70,
+ 0,5,73,0,1,2,3,4,5,6,
+ 74,11,83,10,11,12,13,14,15,16,
+ 17,18,19,20,21,22,23,24,25,26,
+ 27,28,29,0,0,0,77,0,1,2,
+ 3,4,0,6,7,8,9,44,45,46,
+ 47,48,82,74,51,52,53,54,55,56,
+ 57,58,59,60,61,62,63,64,0,1,
+ 2,3,4,70,76,75,73,0,1,2,
+ 3,4,5,6,0,0,49,10,0,12,
+ 13,14,15,16,17,18,19,20,21,22,
+ 23,24,25,26,27,28,29,22,0,1,
+ 2,3,4,5,6,0,0,49,10,11,
+ 12,44,45,46,47,48,11,11,51,52,
+ 53,54,55,56,57,58,59,60,61,62,
+ 63,64,0,1,2,3,4,0,6,0,
+ 73,43,10,68,12,78,79,0,1,2,
+ 3,4,5,6,0,77,82,10,0,12,
+ 13,14,15,16,17,18,19,20,21,22,
+ 23,24,25,26,27,28,29,0,0,0,
+ 75,49,76,5,0,0,7,8,9,83,
+ 5,44,45,46,47,48,11,0,51,52,
+ 53,54,55,56,57,58,59,60,61,62,
+ 63,64,0,0,0,0,1,2,3,4,
+ 73,6,7,8,9,78,79,0,1,2,
+ 3,4,5,6,0,22,82,10,0,12,
+ 13,14,15,16,17,18,19,20,21,22,
+ 23,24,25,26,27,28,29,45,46,74,
+ 75,76,49,50,49,80,0,1,2,3,
+ 4,44,45,46,47,48,0,0,51,52,
+ 53,54,55,56,57,58,59,60,61,62,
+ 63,64,0,0,0,0,1,2,3,4,
+ 73,7,8,9,0,78,79,0,1,2,
+ 3,4,5,6,0,49,82,10,11,12,
+ 13,14,15,16,17,18,19,20,21,22,
+ 23,24,25,26,27,28,29,0,1,2,
+ 3,4,5,6,49,0,1,10,0,12,
+ 74,44,45,46,47,48,11,0,51,52,
+ 53,54,55,56,57,58,59,60,61,62,
+ 63,64,0,1,2,3,4,70,0,0,
+ 73,0,1,2,3,4,5,6,0,44,
+ 11,10,11,12,13,14,15,16,17,18,
+ 19,20,21,22,23,24,25,26,27,28,
+ 29,74,0,0,0,0,0,69,5,0,
+ 75,49,43,0,5,44,45,46,47,48,
+ 11,0,51,52,53,54,55,56,57,58,
+ 59,60,61,62,63,64,0,1,2,3,
+ 4,0,6,0,0,76,10,0,12,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,27,28,29,0,
+ 1,2,3,4,75,49,7,8,9,45,
+ 46,0,13,44,45,46,47,48,0,128,
+ 51,52,53,54,55,56,57,58,59,60,
+ 61,62,63,64,0,0,69,0,0,70,
+ 0,1,2,3,4,5,6,80,49,11,
+ 10,129,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,27,28,29,
+ 103,104,0,0,0,0,0,0,111,112,
+ 7,8,9,0,44,45,46,47,48,6,
+ 129,51,52,53,54,55,56,57,58,59,
+ 60,61,62,63,64,0,1,2,3,4,
+ 5,6,0,75,74,10,33,12,13,14,
+ 15,16,17,18,19,20,21,22,23,24,
+ 25,26,27,28,29,0,0,0,0,0,
+ 5,69,69,7,8,9,11,11,11,44,
+ 45,46,47,48,0,0,51,52,53,54,
+ 55,56,57,58,59,60,61,62,63,64,
+ 0,1,2,3,4,5,6,22,73,43,
+ 10,69,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,27,28,29,
+ 0,0,0,0,49,50,5,70,0,74,
+ 75,11,76,11,44,45,46,47,48,11,
+ 82,51,52,53,54,55,56,57,58,59,
+ 60,61,62,63,64,0,1,2,3,4,
+ 5,6,0,73,0,10,0,12,13,14,
+ 15,16,17,18,19,20,21,22,23,24,
+ 25,26,27,28,29,0,0,0,0,0,
+ 70,5,7,8,9,7,8,9,70,44,
+ 45,46,47,48,0,83,51,52,53,54,
+ 55,56,57,58,59,60,61,62,63,64,
+ 0,1,2,3,4,5,6,0,0,0,
+ 10,69,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,27,28,29,
+ 0,0,0,0,0,0,5,7,8,9,
+ 7,8,9,0,44,45,46,47,48,82,
+ 0,51,52,53,54,55,56,57,58,59,
+ 60,61,62,63,64,0,1,2,3,4,
+ 5,6,0,0,0,10,69,12,13,14,
+ 15,16,17,18,19,20,21,22,23,24,
+ 25,26,27,28,29,0,0,0,0,0,
+ 0,5,7,8,9,7,8,9,11,44,
+ 45,46,47,48,0,0,51,52,53,54,
+ 55,56,57,58,59,60,61,62,63,64,
+ 0,1,2,3,4,5,6,0,0,0,
+ 10,0,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,27,28,29,
+ 0,0,0,0,0,0,0,5,7,8,
+ 9,11,75,76,44,45,46,47,48,0,
+ 0,51,52,53,54,55,56,57,58,59,
+ 60,61,62,63,64,0,1,2,3,4,
+ 5,6,0,43,0,10,0,12,13,14,
+ 15,16,17,18,19,20,21,22,23,24,
+ 25,26,27,28,29,0,0,0,0,0,
+ 0,0,7,8,9,5,76,11,73,44,
+ 45,46,47,48,0,0,51,52,53,54,
+ 55,56,57,58,59,60,61,62,63,64,
+ 0,1,2,3,4,5,6,0,0,0,
+ 10,0,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,27,28,29,
+ 0,0,0,0,0,0,70,7,8,9,
+ 7,8,9,11,44,45,46,47,48,0,
+ 0,51,52,53,54,55,56,57,58,59,
+ 60,61,62,63,64,0,1,2,3,4,
+ 5,6,0,0,0,10,0,12,13,14,
+ 15,16,17,18,19,20,21,22,23,24,
+ 25,26,27,28,29,0,1,2,3,4,
+ 0,0,70,0,0,5,5,0,0,44,
+ 45,46,47,48,11,11,51,52,53,54,
+ 55,56,57,58,59,60,61,62,63,64,
+ 0,1,2,3,4,0,6,7,8,9,
+ 5,0,0,0,49,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,70,0,0,0,0,0,75,
+ 50,5,5,0,1,2,3,4,0,6,
+ 7,8,9,0,0,65,66,67,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,0,0,0,0,
+ 0,5,44,50,0,5,10,49,11,13,
+ 14,0,0,0,0,11,0,0,65,66,
+ 67,0,1,2,3,4,5,6,7,8,
+ 9,10,0,12,13,14,0,0,0,0,
+ 43,45,46,47,48,82,0,51,0,1,
+ 2,3,4,5,6,7,8,9,10,0,
+ 12,13,14,0,0,69,0,0,0,0,
+ 74,0,76,110,78,79,80,11,82,75,
+ 117,118,119,120,121,122,123,124,125,126,
+ 127,0,96,97,0,99,0,101,102,103,
+ 104,105,106,107,108,109,110,0,44,43,
+ 0,0,116,49,118,119,120,121,122,123,
+ 124,125,126,127,0,1,2,3,4,0,
+ 6,7,8,9,0,0,0,0,0,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,0,0,0,
+ 0,0,0,0,50,0,0,0,1,2,
+ 3,4,0,6,7,8,9,0,0,65,
+ 66,67,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,
+ 0,0,0,1,2,3,4,50,6,7,
+ 8,9,0,0,0,13,14,0,0,0,
+ 0,0,65,66,67,0,1,2,3,4,
+ 5,6,7,8,9,10,11,12,13,14,
+ 0,1,2,3,4,5,6,7,8,9,
+ 10,11,12,13,14,30,31,32,33,34,
+ 35,36,37,38,39,40,41,42,43,0,
+ 30,31,32,33,34,35,36,37,38,39,
+ 40,41,42,43,0,1,2,3,4,0,
+ 6,7,8,9,69,0,0,13,14,74,
+ 75,0,0,0,0,0,0,0,0,0,
+ 70,0,0,0,74,75,0,1,2,3,
+ 4,5,6,7,8,9,10,11,12,13,
+ 14,0,1,2,3,4,5,6,7,8,
+ 9,10,11,12,13,14,30,31,32,33,
+ 34,35,36,37,38,39,40,41,42,43,
+ 0,30,31,32,33,34,35,36,37,38,
+ 39,40,41,42,43,0,0,0,0,2,
+ 0,5,0,0,7,8,9,11,0,0,
+ 74,75,15,16,17,18,19,20,21,0,
+ 23,0,0,0,5,74,75,30,31,32,
+ 33,34,35,36,37,38,39,40,41,42,
+ 0,1,2,3,4,5,6,7,8,9,
+ 10,0,12,13,14,0,1,2,3,4,
+ 0,6,7,8,9,0,47,48,13,14,
+ 74,75,76,0,0,0,80,69,0,6,
+ 0,1,2,3,4,0,0,0,80,0,
+ 69,0,0,74,0,0,0,0,0,0,
+ 0,80,0,0,0,0,33,0,0,0,
+ 0,103,104,0,0,0,0,77,0,111,
+ 112,0,0,0,103,104,0,0,0,49,
+ 0,0,111,112,0,116,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,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,113,114,115,0,
+ 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,
+ 8018,7794,7008,7008,7008,7008,7008,7001,7008,7008,
+ 7008,7870,7008,7008,7008,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,7798,1,1,1,1,1,563,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1152,115,
+ 8029,689,8193,1,8018,1,121,1370,1,1,
+ 8580,1687,5750,8025,3453,2771,2348,2681,3380,3765,
+ 383,3452,851,3445,662,3444,10,7873,7873,7873,
+ 7873,7873,7873,7873,7873,7873,7873,7873,7873,7873,
+ 7873,7873,7873,7873,7873,7873,7873,7873,7873,7873,
+ 7873,7873,7873,7873,7873,7873,7873,7873,7873,7873,
+ 7873,7873,7873,7873,7873,7873,7873,7873,7873,7873,
+ 7873,7873,7873,7873,7873,8018,7873,7873,7873,7873,
+ 7873,7873,7873,7873,7873,7873,7873,7873,7873,7873,
+ 7873,7873,7873,7873,7873,117,7873,7873,7873,7873,
+ 5727,5704,5148,5178,7873,7873,8018,7873,5750,7873,
+ 7873,7873,7873,7873,7873,7873,2076,7873,7873,7873,
+ 7873,7873,8,7903,7903,7903,7903,7903,7903,7903,
+ 7903,7903,7903,7903,7903,7903,7903,7903,7903,7903,
+ 7903,7903,7903,7903,7903,7903,7903,7903,7903,7903,
+ 7903,7903,7903,7903,7903,7903,7903,7903,7903,7903,
+ 7903,7903,7903,7903,7903,7903,7903,7903,7903,7903,
+ 7903,8018,7903,7903,7903,7903,7903,7903,7903,7903,
+ 7903,7903,7903,7903,7903,7903,7903,7903,7903,7903,
+ 7903,116,7903,7903,7903,7903,5727,5704,577,137,
+ 7903,7903,8018,7903,5750,7903,7903,7903,7903,7903,
+ 7903,7903,8018,7903,7903,7903,7903,7903,8018,7794,
+ 7008,7008,7008,7008,7008,7001,7008,7008,7008,7801,
+ 7008,7008,7008,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,7798,1,1,1,1,1,8018,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1152,8018,8029,689,
+ 8193,1,5727,5704,5148,5178,1,1,8018,1687,
+ 3572,1202,3453,2771,2348,2681,3380,3765,3270,3452,
+ 851,3445,662,3444,8018,7794,7008,7008,7008,7008,
+ 7008,7001,7008,7008,7008,7801,7008,7008,7008,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,7798,1,1,
+ 1,1,1,8018,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1152,139,8029,689,8193,1,576,8018,
+ 395,39,1,1,1111,1687,386,8056,3453,2771,
+ 2348,2681,3380,3765,8018,3452,851,3445,662,3444,
+ 8018,7794,7008,7008,7008,7008,7008,7001,7008,7008,
+ 7008,7801,7008,7008,7008,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,7798,1,1,1,1,1,1374,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1152,306,
+ 8029,689,8193,1,5148,5178,125,138,1,1,
+ 8018,1687,124,3051,3453,2771,2348,2681,3380,3765,
+ 2432,3452,851,3445,662,3444,8018,7794,7008,7008,
+ 7008,7008,7008,7001,7008,7008,7008,7801,7008,7008,
+ 7008,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,7798,
+ 1,1,1,1,1,3660,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1152,566,8029,689,8193,1,
+ 123,8018,5148,5178,1,1,640,1687,5148,5178,
+ 3453,2771,2348,2681,3380,3765,3270,3452,851,3445,
+ 662,3444,8018,7794,7008,7008,7008,7008,7008,7001,
+ 7008,7008,7008,7801,7008,7008,7008,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,7798,1,1,1,1,
+ 1,980,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1152,131,8029,689,8193,1,5148,5178,122,8018,
+ 1,1,356,1687,866,3743,3453,2771,2348,2681,
+ 3380,3765,1,3452,851,3445,662,3444,8018,7794,
+ 7008,7008,7008,7008,7008,7001,7008,7008,7008,7801,
+ 7008,7008,7008,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,7798,1,1,1,1,1,8018,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1152,8018,8029,689,
+ 8193,1,1491,1438,5148,5178,1,1,8018,1687,
+ 8373,8018,3453,2771,2348,2681,3380,3765,8018,3452,
+ 851,3445,662,3444,8018,7794,7008,7008,7008,7008,
+ 7008,7001,7008,7008,7008,7801,7008,7008,7008,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,7798,1,1,
+ 1,1,1,8018,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1152,8018,8029,689,8193,1,1679,8018,
+ 48,8018,1,1,2873,1687,8652,35,3453,2771,
+ 2348,2681,3380,3765,8018,3452,851,3445,662,3444,
+ 8018,7794,7008,7008,7008,7008,7008,7001,7008,7008,
+ 7008,7801,7008,7008,7008,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,7798,1,1,1,1,1,8652,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1152,1857,
+ 8029,689,8193,1,6237,8018,48,8018,1,1,
+ 1693,1687,8651,1338,3453,2771,2348,2681,3380,3765,
+ 8018,3452,851,3445,662,3444,8018,7794,7008,7008,
+ 7008,7008,7008,7001,7008,7008,7008,7801,7008,7008,
+ 7008,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,7798,
+ 1,1,1,1,1,8651,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1152,569,8029,689,8193,1,
+ 2875,556,48,8018,1,1,2484,1687,8033,3107,
+ 3453,2771,2348,2681,3380,3765,8018,3452,851,3445,
+ 662,3444,8018,7794,7008,7008,7008,7008,7008,7001,
+ 7008,7008,7008,7801,7008,7008,7008,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,7798,1,1,1,1,
+ 1,8033,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1152,91,8029,689,8193,1,7680,543,48,8018,
+ 1,1,1455,1687,8032,1481,3453,2771,2348,2681,
+ 3380,3765,8018,3452,851,3445,662,3444,8018,7794,
+ 7008,7008,7008,7008,7008,7001,7008,7008,7008,7801,
+ 7008,7008,7008,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,7798,1,1,1,1,1,8032,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1152,8018,8029,689,
+ 8193,1,8529,111,132,1,1,1,8028,1687,
+ 5982,8018,3453,2771,2348,2681,3380,3765,3743,3452,
+ 851,3445,662,3444,8018,7570,7570,7570,7570,7570,
+ 7570,7570,7570,7570,7570,7570,7570,7570,7570,185,
+ 8027,1,8018,224,8018,7334,7325,7328,7331,8018,
+ 7124,7118,7121,8024,7570,7570,7570,7570,7570,7570,
+ 7570,7570,7570,7570,7570,7570,7570,7570,386,7570,
+ 7570,7570,7570,7133,7130,7127,7139,7157,7136,7148,
+ 7115,7142,7145,7154,7151,7112,8018,7021,7011,7322,
+ 7018,309,8056,7570,7570,8018,924,8633,7570,7570,
+ 7570,7570,6418,6440,7570,7570,7570,7570,545,8564,
+ 8635,8638,8634,8640,8641,8639,8636,8023,8637,927,
+ 7570,7570,7570,7570,7570,7570,7570,7570,7570,7570,
+ 7570,7570,7570,7570,7570,7570,7570,7319,8565,8375,
+ 7570,7570,7570,7570,7570,7570,7570,7570,7570,7570,
+ 7570,7570,7570,8018,7570,8018,7683,7683,7683,7683,
+ 7683,7683,7683,7683,7683,7683,7683,7683,7683,7683,
+ 114,8015,118,1398,225,8018,8032,8652,8651,8033,
+ 7000,7172,7166,7169,8018,7683,7683,7683,7683,7683,
+ 7683,7683,7683,7683,7683,7683,7683,7683,7683,453,
+ 7683,7683,7683,7683,7181,7178,7175,7187,7205,7184,
+ 7196,7163,7190,7193,7202,7199,7160,5675,5646,296,
+ 8032,8652,8651,8033,7683,7683,1077,880,923,7683,
+ 7683,7683,7683,1452,8018,7683,7683,7683,7683,286,
+ 7268,7268,7268,7268,237,283,1077,880,923,7810,
+ 8018,7683,7683,7683,7683,7683,7683,7683,7683,7683,
+ 7683,7683,7683,7683,7683,7683,7683,7683,7510,6418,
+ 6440,7683,7683,7683,7683,7683,7683,7683,7683,7683,
+ 7683,7683,7683,7683,2487,7683,39,7021,7011,7014,
+ 7018,5550,1060,1077,880,923,6215,318,3175,6127,
+ 6149,8282,8280,8288,8284,8285,8283,8286,776,8287,
+ 8621,8622,8289,8290,8281,6598,8353,8354,8623,8278,
+ 8272,8279,8275,8251,8277,8276,8273,8274,8252,8018,
+ 8037,6105,6083,6193,6171,457,8415,6061,1741,1841,
+ 8039,1750,6577,1792,8040,8038,1649,8034,8035,8036,
+ 6489,3485,8416,8417,37,7573,7573,7573,7573,1758,
+ 39,7021,7011,7322,7018,5550,1060,1077,880,923,
+ 6215,1348,3175,6127,6149,8282,8280,8288,8284,8285,
+ 8283,8286,776,8287,8621,8622,8289,8290,8281,6598,
+ 8353,8354,8623,8278,8272,8279,8275,8251,8277,8276,
+ 8273,8274,8252,8054,8037,6105,6083,6193,6171,7564,
+ 8415,6061,1741,1841,8039,1750,6577,1792,8040,8038,
+ 1649,8034,8035,8036,6489,3485,8416,8417,8018,9882,
+ 9594,9690,9786,1758,8018,7610,7610,7610,7610,229,
+ 7606,7008,7008,7008,229,7614,229,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,229,48,7334,
+ 7325,7328,7331,7603,1,1,7042,7030,7034,7038,
+ 984,7027,7061,7055,7058,901,8018,3175,133,1,
+ 1,1,3568,8018,334,1055,8429,8022,1943,8018,
+ 2866,229,443,7561,7561,7561,7561,415,7561,7561,
+ 7561,7561,3295,8018,8517,7561,7561,1,7042,7030,
+ 7034,7038,4590,7027,7891,7888,7885,901,365,3175,
+ 1,8018,8032,8652,8651,8033,447,8452,8453,8454,
+ 8018,7610,7610,7610,7610,229,7606,7008,7008,7008,
+ 229,7783,229,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,229,38,7507,7498,7501,7504,7603,
+ 1,1348,365,365,7495,3617,3175,365,568,1553,
+ 396,8032,8652,8651,8033,1,1,1,3568,6379,
+ 672,1055,8429,700,8021,365,8018,229,596,7537,
+ 7537,7537,7537,414,601,1077,880,923,3613,5106,
+ 8517,8018,7042,7030,7034,7038,984,7027,7061,7055,
+ 7058,901,2242,3175,7492,7492,456,8018,7334,7325,
+ 7328,7331,8018,8452,8453,8454,8018,7008,7008,7008,
+ 7008,229,7008,7001,7008,7008,229,7052,229,229,
+ 229,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,13308,1,11355,1,1,11783,1,229,
+ 334,8018,316,1,39,7005,1,7522,2591,2897,
+ 8056,1077,880,923,7686,343,439,329,329,8018,
+ 7567,1,1,1,2991,6379,672,689,8229,8418,
+ 8353,8354,8623,223,37,7573,7573,7573,7573,219,
+ 7076,7070,7073,134,7573,8018,8517,8018,8282,8280,
+ 8288,8284,8285,8283,8286,8018,8287,8621,8622,8289,
+ 8290,8281,8018,7085,7082,7079,7091,7109,7088,7100,
+ 7067,7094,7097,7106,7103,7064,1348,3573,1348,343,
+ 343,6484,8018,2125,343,7513,8025,219,8018,7008,
+ 7008,7008,7008,229,7008,7001,7008,7008,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,13308,1,11355,1,1,11783,
+ 1,229,8018,9882,9594,9690,9786,7005,1,1,
+ 7042,7030,7034,7038,984,7027,7061,7055,7058,901,
+ 3617,3175,8018,1,1,1,2991,5910,3573,689,
+ 8229,39,3869,8018,629,8018,7600,8056,1077,880,
+ 923,7597,7591,7594,329,329,8018,3121,8517,8635,
+ 8638,8634,8640,8641,8639,8636,291,8637,290,8032,
+ 8652,8651,8033,300,8353,8354,8623,8278,8272,8279,
+ 8275,8251,8277,8276,8273,8274,8252,8018,8032,8652,
+ 8651,8033,5870,8018,5919,8317,2591,47,8030,220,
+ 8018,7008,7008,7008,7008,229,7008,7001,7008,7008,
+ 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,13308,1,11355,1,
+ 1,11783,1,229,226,8018,1320,296,2635,7005,
+ 1,7232,7226,7229,1077,880,923,8029,8018,8018,
+ 8018,8032,8652,8651,8033,1,1,1,2991,1459,
+ 2076,689,8229,3503,7241,7238,7235,7247,7265,7244,
+ 7256,7223,7250,7253,7262,7259,7220,346,8018,1911,
+ 8517,8018,7008,7008,7008,7008,229,7008,7001,7008,
+ 7008,229,7711,229,229,229,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,13308,1,11355,
+ 1,1,11783,1,229,36,7932,7923,7926,7929,
+ 7005,1,329,7021,7011,7322,7018,984,1060,1077,
+ 880,923,901,8018,3175,345,1,1,1,2991,
+ 2928,1348,689,8229,1,7879,7879,7879,7879,8018,
+ 7876,7061,7055,7058,220,361,8018,329,329,37,
+ 8026,8517,8018,7008,7008,7008,7008,229,7008,7001,
+ 7008,7008,229,7711,229,229,229,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,13308,1,
+ 11355,1,1,11783,1,229,8018,8018,8054,1348,
+ 4127,7005,1,8018,8018,7021,7011,7322,7018,361,
+ 1060,514,157,448,901,1,3175,1,1,1,
+ 2991,2781,8025,689,8229,129,361,8018,7021,7011,
+ 7322,7018,361,1060,8018,220,360,901,29,3175,
+ 2242,8018,8517,8018,7008,7008,7008,7008,229,7008,
+ 7001,7008,7008,229,7711,229,229,229,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,13308,
+ 1,11355,1,1,11783,1,229,1156,2392,1597,
+ 361,8018,7005,1,599,7021,7011,7322,7018,984,
+ 1060,1077,880,923,901,8018,3175,7516,1,1,
+ 1,2991,3676,361,689,8229,8024,1,7042,7030,
+ 7034,7038,4590,7027,8018,368,220,901,7804,3175,
+ 4621,4537,3864,8517,8018,7008,7008,7008,7008,229,
+ 7008,7001,7008,7008,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,
+ 13308,1,11355,1,1,11783,1,229,227,404,
+ 8023,1201,8018,7005,1,7283,7277,7280,394,130,
+ 7777,1348,7807,1699,387,1077,880,923,8018,1,
+ 1,1,2991,8018,8018,689,8229,1604,7292,7289,
+ 7286,7298,7316,7295,7307,7274,7301,7304,7313,7310,
+ 7271,1,7780,8018,8517,8018,7008,7008,7008,7008,
+ 229,7008,7001,7008,7008,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,13308,1,11355,1,1,11783,1,229,587,
+ 780,135,3886,5380,7005,1,7349,7343,7346,8018,
+ 7021,7011,7322,7018,8018,8056,113,8018,2303,8018,
+ 1,1,1,2991,4621,4537,689,8229,8024,7358,
+ 7355,7352,7364,7382,7361,7373,7340,7367,7370,7379,
+ 7376,7337,8018,8018,8018,8517,8018,7008,7008,7008,
+ 7008,229,7008,7001,7008,7008,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,13308,1,11355,1,1,11783,1,229,
+ 625,136,8023,602,3504,7005,1,7729,7723,7726,
+ 1077,880,923,3860,1,8018,289,112,8018,3309,
+ 8018,1,1,1,2991,6418,6440,689,8229,8024,
+ 7738,7735,7732,7744,7762,7741,7753,7720,7747,7750,
+ 7759,7756,7717,8018,8018,8018,8517,8018,7008,7008,
+ 7008,7008,229,7008,7001,7008,7008,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,13308,1,11355,1,1,11783,1,
+ 229,2,1756,8023,1705,3506,7005,1,1,7042,
+ 7030,7034,7038,7024,7027,8018,8018,427,7049,3309,
+ 7046,8018,1,1,1,2991,6418,6440,689,8229,
+ 8018,7042,7030,7034,7038,984,7027,7061,7055,7058,
+ 901,29,3175,7558,7558,8018,8018,8517,8018,7008,
+ 7008,7008,7008,229,7008,7001,7008,7008,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,13308,1,11355,1,1,11783,
+ 1,229,8018,8018,2541,3511,8472,7005,1,1,
+ 7042,7030,7034,7038,984,7027,8018,2591,8018,901,
+ 1374,3175,438,1,1,1,2991,8018,423,689,
+ 8229,343,7021,7011,7322,7018,4590,1060,1077,880,
+ 923,901,8018,3175,329,329,8018,8018,8517,8018,
+ 7008,7008,7008,7008,229,7008,7001,7008,7008,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,13308,1,11355,1,1,
+ 11783,1,229,3859,8018,3923,5514,8018,7005,1,
+ 8018,8032,8652,8651,8033,1348,8018,8018,8018,1,
+ 901,5786,3175,2658,1,1,1,2991,311,8030,
+ 689,8229,366,2443,2492,1077,880,923,1,7042,
+ 7030,7034,7038,5550,7027,8452,8453,8454,6215,8517,
+ 3175,6127,6149,7650,7656,7632,7644,7641,7647,7638,
+ 7617,7635,7623,7620,7629,7626,7653,7659,809,1,
+ 7042,7030,7034,7038,984,7027,7061,7055,7058,901,
+ 307,3175,8037,6105,6083,6193,6171,8458,8029,6061,
+ 1741,1841,8039,1750,6577,1792,8040,8038,1649,8034,
+ 8035,8036,6489,1,7042,7030,7034,7038,984,7027,
+ 8018,1758,307,901,1653,3175,39,39,515,39,
+ 7021,7011,7322,7018,5550,1060,100,8018,8018,6215,
+ 7991,3175,6127,6149,8282,8280,8288,8284,8285,8283,
+ 8286,1843,8287,8621,8622,8289,8290,8281,6242,1,
+ 7042,7030,7034,7038,984,7027,7061,7055,7058,901,
+ 507,3175,8018,8037,6105,6083,6193,6171,8018,99,
+ 6061,1741,1841,8039,1750,6577,1792,8040,8038,1649,
+ 8034,8035,8036,6489,8018,8018,8018,2686,425,7579,
+ 8018,6520,1758,39,7021,7011,7322,7018,5550,1060,
+ 7900,8024,8025,6215,7576,3175,6127,6149,8282,8280,
+ 8288,8284,8285,8283,8286,1843,8287,8621,8622,8289,
+ 8290,8281,6242,8018,8018,8018,2591,393,7217,7217,
+ 7217,7217,8018,283,7208,7214,7211,8037,6105,6083,
+ 6193,6171,5987,7959,6061,1741,1841,8039,1750,6577,
+ 1792,8040,8038,1649,8034,8035,8036,6489,8018,7671,
+ 7662,7665,7668,7579,3605,8023,1758,141,7021,7011,
+ 7322,7018,5550,1060,505,300,283,6215,8018,3175,
+ 6127,6149,8282,8280,8288,8284,8285,8283,8286,1843,
+ 8287,8621,8622,8289,8290,8281,6242,8317,1,7042,
+ 7030,7034,7038,7024,7027,1,8018,8054,7049,8028,
+ 7046,8037,6105,6083,6193,6171,161,8026,6061,1741,
+ 1841,8039,1750,6577,1792,8040,8038,1649,8034,8035,
+ 8036,6489,8018,7021,7011,7322,7018,8018,1060,8018,
+ 1758,8027,7689,1347,3175,39,39,551,7021,7011,
+ 7322,7018,5550,1060,419,4059,6272,6215,8018,3175,
+ 6127,6149,8282,8280,8288,8284,8285,8283,8286,1843,
+ 8287,8621,8622,8289,8290,8281,6242,8018,8018,599,
+ 161,763,1298,2874,8018,1,7582,7588,7585,8025,
+ 2897,8037,6105,6083,6193,6171,610,8018,6061,1741,
+ 1841,8039,1750,6577,1792,8040,8038,1649,8034,8035,
+ 8036,6489,120,1,8018,597,7534,7534,7534,7534,
+ 1758,601,7525,7531,7528,39,39,1,7042,7030,
+ 7034,7038,5550,7027,8018,7705,2730,6215,8018,3175,
+ 6127,6149,7650,7656,7632,7644,7641,7647,7638,7617,
+ 7635,7623,7620,7629,7626,7653,7659,5675,5646,1348,
+ 610,610,3293,7708,601,610,43,7677,7677,7677,
+ 7677,8037,6105,6083,6193,6171,100,8018,6061,1741,
+ 1841,8039,1750,6577,1792,8040,8038,1649,8034,8035,
+ 8036,6489,8018,8018,590,8018,12761,12761,12761,12761,
+ 1758,1077,880,923,8018,39,39,39,7021,7011,
+ 7322,7018,5550,1060,8018,7674,1857,6215,7576,3175,
+ 6127,6149,8282,8280,8288,8284,8285,8283,8286,1843,
+ 8287,8621,8622,8289,8290,8281,6242,1,7042,7030,
+ 7034,7038,4590,7027,8054,8018,3043,901,8018,3175,
+ 7900,8037,6105,6083,6193,6171,8024,8018,6061,1741,
+ 1841,8039,1750,6577,1792,8040,8038,1649,8034,8035,
+ 8036,6489,45,7840,7840,7840,7840,7579,8018,8018,
+ 1758,39,7021,7011,7322,7018,5550,1060,8018,3018,
+ 8028,6215,8022,3175,6127,6149,8282,8280,8288,8284,
+ 8285,8283,8286,1843,8287,8621,8622,8289,8290,8281,
+ 6242,1348,373,8018,8018,8018,8018,1374,6840,8018,
+ 8023,7837,8027,8018,925,8037,6105,6083,6193,6171,
+ 8024,8018,6061,1741,1841,8039,1750,6577,1792,8040,
+ 8038,1649,8034,8035,8036,6489,8018,7021,7011,7322,
+ 7018,520,1060,8018,119,3660,7689,126,3175,39,
+ 7021,7011,7322,7018,5550,1060,8018,8018,8018,6215,
+ 7576,3175,6127,6149,8282,8280,8288,8284,8285,8283,
+ 8286,1843,8287,8621,8622,8289,8290,8281,6242,37,
+ 7573,7573,7573,7573,8023,832,1077,880,923,5675,
+ 5646,8018,329,8037,6105,6083,6193,6171,8018,8021,
+ 6061,1741,1841,8039,1750,6577,1792,8040,8038,1649,
+ 8034,8035,8036,6489,8018,8018,4871,8018,1,7579,
+ 39,7021,7011,7322,7018,5550,1060,7714,8054,163,
+ 6215,3864,3175,6127,6149,8282,8280,8288,8284,8285,
+ 8283,8286,1843,8287,8621,8622,8289,8290,8281,6242,
+ 4807,4775,8018,394,8018,8018,8018,8018,4743,4711,
+ 1077,880,923,39,8037,6105,6083,6193,6171,8056,
+ 3864,6061,1741,1841,8039,1750,6577,1792,8040,8038,
+ 1649,8034,8035,8036,6489,39,7021,7011,7322,7018,
+ 5550,1060,8018,163,2422,6215,2384,3175,6127,6149,
+ 8282,8280,8288,8284,8285,8283,8286,1843,8287,8621,
+ 8622,8289,8290,8281,6242,1,8018,1,8018,8018,
+ 2897,1459,1374,7994,8002,7998,7804,8006,7519,8037,
+ 6105,6083,6193,6171,8018,1,6061,1741,1841,8039,
+ 1750,6577,1792,8040,8038,1649,8034,8035,8036,6489,
+ 39,7021,7011,7322,7018,5550,1060,7705,1758,8006,
+ 6215,3081,3175,6127,6149,8282,8280,8288,8284,8285,
+ 8283,8286,1843,8287,8621,8622,8289,8290,8281,6242,
+ 1,8018,8,8018,3293,7708,2675,8029,586,1348,
+ 7807,8030,8006,8012,8037,6105,6083,6193,6171,7786,
+ 2542,6061,1741,1841,8039,1750,6577,1792,8040,8038,
+ 1649,8034,8035,8036,6489,39,7021,7011,7322,7018,
+ 819,1060,73,1758,8018,6215,8018,3175,6127,6149,
+ 8282,8280,8288,8284,8285,8283,8286,1843,8287,8621,
+ 8622,8289,8290,8281,6242,591,8018,509,394,8018,
+ 8029,3425,1077,880,923,1077,880,923,7790,8037,
+ 6105,6083,6193,6171,8018,8012,6061,1741,1841,8039,
+ 1750,6577,1792,8040,8038,1649,8034,8035,8036,6489,
+ 39,7021,7011,7322,7018,3176,1060,2,8018,8018,
+ 6215,7988,3175,6127,6149,8282,8280,8288,8284,8285,
+ 8283,8286,1843,8287,8621,8622,8289,8290,8281,6242,
+ 329,8018,8018,329,8018,8018,3686,7692,7698,7695,
+ 1077,880,923,8018,8037,6105,6083,6193,6171,728,
+ 8018,6061,1741,1841,8039,1750,6577,1792,8040,8038,
+ 1649,8034,8035,8036,6489,39,7021,7011,7322,7018,
+ 3177,1060,8018,8018,8018,6215,37,3175,6127,6149,
+ 8282,8280,8288,8284,8285,8283,8286,1843,8287,8621,
+ 8622,8289,8290,8281,6242,592,8018,8018,598,8018,
+ 8018,3892,1077,880,923,1077,880,923,8024,8037,
+ 6105,6083,6193,6171,8018,8018,6061,1741,1841,8039,
+ 1750,6577,1792,8040,8038,1649,8034,8035,8036,6489,
+ 39,7021,7011,7322,7018,3392,1060,8018,8018,8018,
+ 6215,8018,3175,6127,6149,8282,8280,8288,8284,8285,
+ 8283,8286,1843,8287,8621,8622,8289,8290,8281,6242,
+ 8018,416,8018,8018,8018,531,8018,2188,1077,880,
+ 923,8028,8023,6630,8037,6105,6083,6193,6171,8018,
+ 8018,6061,1741,1841,8039,1750,6577,1792,8040,8038,
+ 1649,8034,8035,8036,6489,39,7021,7011,7322,7018,
+ 5550,1060,8018,8027,8018,6215,8018,3175,6127,6149,
+ 8282,8280,8288,8284,8285,8283,8286,1843,8287,8621,
+ 8622,8289,8290,8281,6242,594,575,8018,8018,8018,
+ 8018,8018,7935,7941,7938,2237,3991,7843,3872,8037,
+ 6105,6083,6193,6171,8018,8018,6061,1741,1841,8039,
+ 1750,6577,1792,8040,8038,1649,8034,8035,8036,6489,
+ 39,7021,7011,7322,7018,6631,1060,8018,8018,8018,
+ 6215,8018,3175,6127,6149,8282,8280,8288,8284,8285,
+ 8283,8286,1843,8287,8621,8622,8289,8290,8281,6242,
+ 593,8018,573,417,8018,8018,7847,7944,7950,7947,
+ 1077,880,923,7851,8037,6105,6083,6193,6171,8018,
+ 8018,6061,1741,1841,8039,1750,6577,1792,8040,8038,
+ 1649,8034,8035,8036,6489,39,7021,7011,7322,7018,
+ 5550,1060,8018,8018,8018,6215,8018,3175,6127,6149,
+ 8282,8280,8288,8284,8285,8283,8286,1843,8287,8621,
+ 8622,8289,8290,8281,6242,37,7573,7573,7573,7573,
+ 103,8018,7855,87,1,7956,4135,8018,8018,8037,
+ 6105,6083,6193,6171,7859,527,6061,1741,1841,8039,
+ 1750,6577,1792,8040,8038,1649,8034,8035,8036,6489,
+ 8018,7021,7011,7014,7018,8018,8056,1077,880,923,
+ 1428,8018,8018,8018,2027,8282,8280,8288,8284,8285,
+ 8283,8286,749,8287,8621,8622,8289,8290,8281,4936,
+ 8353,8354,8623,8278,8272,8279,8275,8251,8277,8276,
+ 8273,8274,8252,7863,8018,8018,278,103,8018,527,
+ 8415,8009,7956,241,7485,7472,7476,7481,8018,7489,
+ 7397,7391,7394,139,8018,3485,8416,8417,7463,7469,
+ 7445,7457,7454,7460,7451,749,7448,7436,7433,7442,
+ 7439,7466,4936,7406,7403,7400,7412,7430,7409,7421,
+ 7388,7415,7418,7427,7424,7385,1,1,8018,8018,
+ 8018,1237,813,8415,1,3647,8486,5968,8028,8480,
+ 8484,8018,8018,8018,8018,8024,8018,8018,3485,8416,
+ 8417,307,7042,7030,7034,7038,984,7027,7061,7055,
+ 7058,901,8018,3175,7492,7492,8018,8018,8018,8018,
+ 8027,8478,8479,8509,8510,2299,8018,8487,8018,7042,
+ 7030,7034,7038,984,7027,7061,7055,7058,901,8018,
+ 3175,7558,7558,8018,1,8489,1,8018,8018,8018,
+ 1384,8018,8511,3051,2088,2090,8490,191,8488,8023,
+ 2432,2250,2201,2152,2103,2054,2005,1956,1907,1858,
+ 1807,8018,8500,8499,8018,8512,8018,8481,8482,8505,
+ 8506,8503,8504,8483,8485,8507,8508,8018,836,191,
+ 8018,8018,8513,836,8493,8494,8495,8491,8492,8501,
+ 8502,8497,8496,8498,8018,7021,7011,7322,7018,8018,
+ 8056,1077,880,923,8018,8018,8018,8018,8018,8282,
+ 8280,8288,8284,8285,8283,8286,749,8287,8621,8622,
+ 8289,8290,8281,4936,8353,8354,8623,8278,8272,8279,
+ 8275,8251,8277,8276,8273,8274,8252,8018,8018,8018,
+ 8018,8018,8018,8018,8415,8018,8018,241,7485,7472,
+ 7701,7481,8018,7489,7397,7391,7394,8018,8018,3485,
+ 8416,8417,7463,7469,7445,7457,7454,7460,7451,749,
+ 7448,7436,7433,7442,7439,7466,4936,7406,7403,7400,
+ 7412,7430,7409,7421,7388,7415,7418,7427,7424,7385,
+ 8018,8018,444,7831,7831,7831,7831,8415,7828,7819,
+ 7825,7822,8018,8018,8018,7834,7834,8018,8018,8018,
+ 8018,8018,3485,8416,8417,29,386,386,386,386,
+ 7816,386,386,386,386,386,7816,386,7816,7816,
+ 575,586,586,586,586,586,586,586,586,586,
+ 586,7980,586,7985,7985,386,386,386,386,386,
+ 386,386,386,386,386,386,386,386,7816,8018,
+ 586,586,586,586,586,586,586,586,586,586,
+ 586,586,586,7985,92,7867,7867,7867,7867,8018,
+ 7867,7867,7867,7867,7516,8018,8018,7867,7867,7816,
+ 7816,8018,8018,8018,8018,8018,8018,8018,8018,8018,
+ 7579,8018,8018,8018,586,7985,32,387,387,387,
+ 387,7813,387,387,387,387,387,7813,387,7813,
+ 7813,574,585,585,585,585,585,585,585,585,
+ 585,585,7882,585,7882,7882,387,387,387,387,
+ 387,387,387,387,387,387,387,387,387,7813,
+ 8018,585,585,585,585,585,585,585,585,585,
+ 585,585,585,585,7882,8018,1,628,8018,7774,
+ 8018,2897,8018,8018,7771,7765,7768,339,128,8018,
+ 7813,7813,8635,8638,8634,8640,8641,8639,8636,75,
+ 8637,127,8018,8018,7552,585,7882,8353,8354,8623,
+ 8278,8272,8279,8275,8251,8277,8276,8273,8274,8252,
+ 8018,7953,7953,7953,7953,7953,7953,7953,7953,7953,
+ 7953,8018,7953,7953,7953,95,7974,7974,7974,7974,
+ 8018,7971,7962,7968,7965,8018,7543,7540,7977,7977,
+ 1348,339,339,39,8018,8018,339,4871,8018,8056,
+ 8018,7919,7907,7911,7915,8018,8018,8018,7894,8018,
+ 4871,8018,8018,7555,8018,8018,8018,8018,8018,8018,
+ 8018,7897,8018,8018,8018,8018,1735,8018,8018,8018,
+ 8018,4807,4775,8018,8018,8018,8018,7953,8018,4743,
+ 4711,8018,8018,8018,4807,4775,8018,8018,8018,8054,
+ 8018,8018,4743,4711,8018,7546,8018,8018,8018,8018,
+ 8018,8018,8018,8018,8018,8018,8018,8018,8018,7549,
+ 8018,8018,8018,8018,8018,8018,8018,8018,8018,8018,
+ 8018,8018,8018,8018,8018,8018,8018,8018,8018,8018,
+ 8018,8018,8018,8018,8018,8018,8018,8018,8018,8018,
+ 8018,8018,8018,8018,8018,8018,8452,8453,8454
+ };
+ };
+ 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,
+ 1322,60,1253,1311,186,802,1360,325,325,325,
+ 1267,189,855,1321,1253,1261,178,1172,443,1180,
+ 1172,1172,1172,1193,205,1193,852,1193,876,1193,
+ 1193,1261,1262,1193,991,1122,213,1360,1253,436,
+ 1193,1193,762,1262,1193,1262,1172,445,274,274,
+ 874,274,62,205,202,447,202,654,935,1256,
+ 192,192,1253,746,1262,179,208,1028,1170,518,
+ 1422,269,854,320,852,858,1261,876,376,1262,
+ 1262,321,841,991,991,991,991,991,991,991,
+ 991,991,991,438,991,116,1172,445,445,445,
+ 445,1261,1172,1193,608,608,655,654,1253,1253,
+ 1262,704,594,376,376,1193,802,373,594,1193,
+ 1193,445,1193,1262,108,1078,285,274,274,273,
+ 273,205,1261,1253,990,136,1253,1193,1262,327,
+ 746,746,1262,179,758,597,757,1424,1458,518,
+ 1169,594,269,1262,201,1038,603,321,205,262,
+ 1262,376,321,1262,104,116,116,116,116,1376,
+ 801,108,1193,594,594,594,951,580,580,970,
+ 970,802,802,802,802,1262,472,51,51,472,
+ 990,608,205,1261,104,1193,1193,376,376,1256,
+ 1174,373,373,179,1078,285,273,273,273,1262,
+ 594,990,266,205,612,617,614,621,619,628,
+ 626,630,629,631,462,632,1253,1371,373,645,
+ 746,655,655,208,655,48,1422,1424,1424,593,
+ 592,517,266,1262,269,732,855,445,177,717,
+ 269,201,604,608,201,608,321,262,262,1262,
+ 874,873,1262,841,1262,594,594,594,594,373,
+ 801,990,1193,952,1256,1074,1064,1063,755,1130,
+ 1199,1199,1261,438,991,594,594,874,874,874,
+ 874,321,594,178,180,178,594,373,205,843,
+ 1262,1172,1374,1193,874,874,1193,594,1068,1051,
+ 1067,873,445,454,454,266,266,273,1262,266,
+ 136,991,991,991,991,991,991,991,991,991,
+ 991,991,991,991,991,991,991,991,991,991,
+ 991,991,990,990,990,990,990,990,990,990,
+ 990,990,990,658,991,1265,594,1458,594,471,
+ 594,594,108,719,608,608,608,608,1262,262,
+ 266,847,848,970,104,1193,1193,1193,137,991,
+ 802,1193,1193,594,951,732,991,732,655,950,
+ 1172,1172,1172,952,1172,1262,1,655,655,1262,
+ 205,580,594,1076,1078,990,1262,108,1203,116,
+ 1172,1172,1172,1172,1262,1262,1262,180,108,734,
+ 1261,1262,472,1193,1193,736,990,1065,1065,1072,
+ 1256,887,285,274,285,872,872,266,655,136,
+ 614,614,612,612,612,619,619,619,619,619,
+ 619,617,617,626,621,621,629,628,630,732,
+ 732,631,594,593,179,654,991,732,747,929,
+ 651,719,608,608,707,266,991,1262,594,1193,
+ 1256,941,952,732,1046,952,970,970,968,1049,
+ 970,655,655,753,734,594,1078,321,179,594,
+ 990,990,990,990,1172,1172,841,1262,179,734,
+ 594,1193,522,736,990,990,1076,1051,285,802,
+ 802,848,990,990,471,655,719,991,991,651,
+ 651,719,719,843,836,708,1262,1193,1193,1193,
+ 990,1193,952,991,952,594,1253,970,594,968,
+ 1360,1172,594,734,865,594,1262,532,594,594,
+ 594,594,472,472,184,1193,841,942,1172,1193,
+ 739,873,1193,218,651,651,707,1262,1261,1261,
+ 1262,1193,472,991,373,952,753,952,655,1360,
+ 990,952,949,865,865,1236,594,594,184,887,
+ 739,1120,1193,1193,1262,1262,1262,1193,594,373,
+ 990,950,472,655,594,868,865,594,594,1250,
+ 1172,454,1262,1262,952,594,655,868,868,205,
+ 205,1252,1079,872,952,868,593,178,802
+ };
+ };
+ 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,
+ 24,25,15,16,52,78,26,53,54,17,
+ 18,19,79,12,55,20,21,56,57,58,
+ 73,59,60,22,23,27,28,61,62,63,
+ 44,4,5,47,48,14,45,46,10,51,
+ 6,29,64,3,2,43,11,1,13,0,
+ 12,6,49,10,1,4,3,2,0,131,
+ 0,24,25,32,34,15,16,50,30,26,
+ 65,35,90,36,17,37,38,18,19,39,
+ 68,40,20,21,41,66,42,22,67,23,
+ 71,33,27,31,28,5,14,6,43,29,
+ 72,70,11,13,8,9,7,12,10,49,
+ 1,4,3,2,0,32,7,34,50,30,
+ 65,35,36,37,38,39,40,41,66,42,
+ 67,33,31,8,9,73,78,79,47,48,
+ 14,13,45,46,51,56,64,29,5,61,
+ 62,63,44,59,54,58,16,28,15,20,
+ 18,19,21,23,17,26,27,24,25,53,
+ 57,55,52,60,70,11,22,6,12,1,
+ 4,3,2,10,0,5,31,0,44,49,
+ 0,81,5,80,98,82,76,75,43,74,
+ 77,8,9,7,70,11,0,11,77,75,
+ 44,0,11,77,70,81,0,78,79,73,
+ 47,48,14,13,45,46,10,51,56,64,
+ 29,5,6,12,61,62,63,44,59,54,
+ 58,16,28,15,20,18,19,21,23,17,
+ 26,27,24,25,22,53,57,55,52,60,
+ 70,1,4,3,2,11,83,0,113,114,
+ 115,77,83,12,11,5,14,13,10,43,
+ 72,68,90,71,24,25,32,7,34,15,
+ 16,50,30,26,65,35,36,17,37,38,
+ 18,19,39,40,20,21,41,66,42,22,
+ 67,23,33,27,31,28,29,8,9,6,
+ 1,4,3,2,49,0,78,79,5,22,
+ 53,57,55,52,60,16,28,15,20,18,
+ 19,21,23,17,26,27,24,25,61,62,
+ 63,44,59,54,58,10,12,6,47,48,
+ 14,13,45,46,51,56,64,29,1,4,
+ 3,2,128,11,0,24,25,32,7,34,
+ 15,16,50,30,52,26,53,65,35,36,
+ 54,17,37,38,18,19,39,40,55,20,
+ 21,56,41,57,66,58,73,59,42,60,
+ 22,67,23,33,27,31,28,61,62,63,
+ 44,5,47,48,14,13,45,46,51,80,
+ 6,29,64,8,9,12,10,1,4,2,
+ 79,78,3,0,69,0,7,11,70,8,
+ 9,82,0,80,82,76,1,4,3,2,
+ 0,7,80,77,98,128,83,43,8,9,
+ 76,24,25,15,16,52,78,26,53,54,
+ 17,18,19,79,12,55,20,21,56,57,
+ 58,73,59,60,22,23,27,28,61,62,
+ 63,4,5,47,48,14,13,45,46,10,
+ 51,6,29,64,3,2,44,75,11,1,
+ 0,73,81,130,116,47,48,77,98,128,
+ 83,35,36,37,38,39,12,40,41,42,
+ 33,31,30,34,10,32,100,99,45,46,
+ 101,102,96,97,69,103,104,105,106,107,
+ 108,109,110,117,82,118,119,120,121,122,
+ 123,124,125,126,127,111,112,43,70,80,
+ 7,1,4,14,13,6,8,9,3,2,
+ 74,5,76,75,11,0,11,77,76,75,
+ 5,0,6,8,9,7,69,11,77,70,
+ 0,100,99,13,101,102,45,46,97,96,
+ 69,103,104,111,112,105,106,14,107,108,
+ 109,80,75,82,118,119,120,121,122,123,
+ 124,125,126,127,77,98,128,83,110,117,
+ 8,9,7,76,43,11,0,24,25,15,
+ 16,52,78,26,53,54,17,18,19,79,
+ 12,55,20,21,56,57,58,73,59,60,
+ 22,23,27,28,61,62,63,44,1,4,
+ 5,47,48,45,46,10,51,6,29,64,
+ 3,2,77,13,14,0,33,1,4,6,
+ 3,2,113,114,115,0,43,11,5,12,
+ 10,14,13,6,1,4,3,2,8,9,
+ 7,77,0,129,0,32,30,31,73,81,
+ 80,77,98,75,70,5,7,11,76,43,
+ 8,9,82,0,128,43,76,75,11,77,
+ 0,79,78,45,46,13,101,102,107,14,
+ 108,10,51,82,69,80,121,122,118,119,
+ 120,126,125,127,97,96,123,124,105,106,
+ 103,104,109,110,47,48,76,99,116,74,
+ 5,29,22,65,50,66,67,16,28,15,
+ 20,18,19,21,23,17,26,27,24,25,
+ 34,40,41,36,39,38,35,30,31,32,
+ 7,9,8,37,42,1,4,3,2,33,
+ 6,0,11,70,76,0,82,11,83,76,
+ 0,6,49,77,8,9,7,1,4,3,
+ 2,70,11,0,32,30,31,73,11,98,
+ 75,82,76,80,0,6,11,70,8,9,
+ 7,1,4,3,2,0,24,25,32,7,
+ 34,15,16,50,30,26,65,35,36,17,
+ 37,38,18,19,39,40,20,21,41,66,
+ 42,22,67,23,33,27,31,28,1,4,
+ 6,29,8,9,3,2,98,0,77,7,
+ 74,8,9,69,11,76,43,82,5,0,
+ 75,90,113,114,115,49,77,131,129,132,
+ 83,72,81,71,68,85,87,94,92,84,
+ 89,91,93,95,70,86,88,43,11,65,
+ 50,66,67,34,40,41,36,39,38,33,
+ 35,30,31,32,7,9,8,37,42,73,
+ 78,79,22,53,57,55,52,60,5,28,
+ 26,27,24,25,61,62,63,44,59,54,
+ 58,10,12,6,47,48,14,13,45,46,
+ 51,56,64,29,1,4,3,2,17,15,
+ 21,23,16,20,18,19,0,6,11,77,
+ 70,8,9,7,0,77,98,0,84,0,
+ 7,14,13,8,9,12,10,6,1,4,
+ 3,2,5,74,80,82,76,11,75,98,
+ 0,10,12,5,74,13,14,98,24,25,
+ 32,7,34,15,16,30,26,65,35,36,
+ 17,37,38,18,19,39,40,20,21,41,
+ 66,42,22,67,23,33,27,31,28,1,
+ 4,6,29,8,9,3,2,75,11,50,
+ 0,80,76,29,22,65,50,66,67,24,
+ 25,32,7,34,15,16,30,26,35,36,
+ 17,37,38,18,19,39,12,40,20,21,
+ 41,42,23,33,27,31,28,4,74,14,
+ 13,10,6,43,8,9,3,2,1,75,
+ 11,5,0,29,22,65,50,66,67,16,
+ 28,15,20,18,19,21,23,17,26,27,
+ 24,25,81,77,98,128,83,70,130,116,
+ 47,48,100,99,45,46,101,102,96,97,
+ 69,80,103,104,105,106,107,108,109,110,
+ 117,82,118,119,120,121,122,123,124,125,
+ 126,127,76,111,112,32,34,30,35,36,
+ 37,38,39,40,41,42,33,31,43,11,
+ 75,74,12,5,10,14,13,8,9,7,
+ 6,4,3,2,1,0,30,26,65,35,
+ 17,37,18,19,39,40,20,21,66,42,
+ 67,23,33,27,31,28,50,16,15,29,
+ 34,32,25,24,11,5,14,13,43,71,
+ 90,36,41,38,72,69,8,9,7,49,
+ 12,1,4,10,6,3,2,22,68,0,
+ 83,24,25,32,34,15,16,50,30,26,
+ 65,35,17,37,18,19,39,40,20,21,
+ 66,42,22,67,23,33,27,31,28,29,
+ 131,72,68,36,41,38,90,71,49,11,
+ 14,43,10,12,1,4,3,2,6,5,
+ 8,9,7,13,0,78,79,47,48,14,
+ 13,45,46,10,51,56,64,29,5,6,
+ 12,61,62,63,59,54,58,16,28,15,
+ 20,18,19,21,23,17,26,27,24,25,
+ 22,53,57,55,52,60,74,1,4,3,
+ 2,44,0,12,4,74,5,14,13,10,
+ 80,6,3,17,15,21,23,16,20,18,
+ 19,34,40,41,36,39,38,33,35,31,
+ 32,37,42,2,7,9,8,11,76,75,
+ 1,30,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,
+ 266,13,70,33,48,5,192,13,13,13,
+ 308,13,199,308,171,264,264,13,13,288,
+ 13,13,13,289,279,289,177,289,177,289,
+ 13,11,85,289,94,281,70,170,259,216,
+ 13,13,202,322,13,85,13,13,308,308,
+ 13,308,227,279,177,13,300,16,39,252,
+ 56,56,294,177,291,291,81,114,240,53,
+ 13,70,206,264,300,20,264,300,70,85,
+ 12,13,13,94,94,94,94,94,94,94,
+ 94,94,94,85,318,41,13,13,13,13,
+ 13,264,13,13,70,23,16,13,212,294,
+ 85,13,240,70,70,50,5,112,240,13,
+ 13,13,13,12,79,70,70,308,308,70,
+ 70,279,264,171,58,92,212,300,85,107,
+ 177,300,231,216,240,13,13,325,61,154,
+ 13,240,184,207,177,177,13,291,279,70,
+ 291,63,88,207,103,41,41,41,41,94,
+ 18,79,13,240,240,240,72,180,180,1,
+ 43,68,68,68,68,85,128,27,27,128,
+ 247,23,100,35,220,177,177,63,63,252,
+ 281,112,112,216,167,167,266,266,70,291,
+ 240,94,70,279,13,13,13,13,13,13,
+ 13,13,13,13,94,13,295,177,112,13,
+ 300,16,16,81,16,13,81,289,325,240,
+ 13,240,73,85,16,13,230,13,33,191,
+ 184,177,177,70,300,70,88,70,323,12,
+ 13,13,207,13,12,240,240,240,240,112,
+ 69,58,277,223,252,179,56,56,13,13,
+ 13,13,11,85,94,240,240,13,13,13,
+ 13,78,240,215,85,215,240,112,100,13,
+ 291,13,13,70,13,13,304,240,13,257,
+ 13,13,13,121,121,73,73,266,231,73,
+ 70,94,94,94,94,94,94,94,94,94,
+ 94,94,94,94,94,94,94,94,94,94,
+ 94,94,94,94,94,94,94,94,94,94,
+ 94,94,94,157,94,13,240,61,240,94,
+ 240,240,79,170,70,70,83,83,207,323,
+ 73,13,13,63,103,277,277,277,272,94,
+ 68,70,118,240,242,13,144,13,16,13,
+ 13,13,13,243,13,323,14,16,16,323,
+ 125,302,240,250,70,94,85,79,13,41,
+ 13,13,13,13,207,12,85,151,79,70,
+ 35,12,128,177,136,70,94,13,13,256,
+ 252,167,167,308,70,13,13,73,16,92,
+ 13,13,13,13,13,13,13,13,13,13,
+ 13,13,13,13,13,13,13,13,13,13,
+ 13,13,240,240,216,16,94,13,140,13,
+ 177,294,83,83,161,73,94,323,240,123,
+ 304,13,243,13,13,243,314,314,165,13,
+ 314,16,16,13,70,240,167,77,207,240,
+ 247,247,247,247,13,13,13,322,207,116,
+ 240,70,136,136,94,94,250,210,167,68,
+ 68,73,94,94,94,16,171,94,94,300,
+ 177,294,13,13,264,134,291,70,138,13,
+ 247,304,243,94,243,240,259,1,240,327,
+ 70,13,240,116,70,240,207,277,240,240,
+ 240,240,128,128,152,13,13,25,13,136,
+ 70,13,75,91,177,300,233,291,264,264,
+ 12,123,128,94,112,243,13,243,16,171,
+ 247,243,25,136,70,13,240,240,152,69,
+ 142,13,75,13,12,291,291,138,240,112,
+ 94,13,131,16,240,70,136,240,240,70,
+ 13,121,12,12,243,240,16,142,70,125,
+ 125,257,237,13,243,142,240,215,68
+ };
+ };
+ 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,107,143,125,112,124,123,
+ 5,2,0,4,45,46,0,195,0,41,
+ 1,0,175,0,142,0,5,2,9,10,
+ 163,0,173,0,185,5,184,0,204,0,
+ 41,62,4,49,34,45,0,222,0,4,
+ 215,0,221,30,0,93,0,4,36,0,
+ 188,0,5,10,9,2,13,34,49,4,
+ 0,4,94,0,178,0,2,144,82,0,
+ 158,0,136,0,2,61,0,2,82,0,
+ 94,98,41,13,2,9,10,5,0,41,
+ 176,0,82,162,161,0,13,2,9,10,
+ 5,95,0,159,0,177,0,4,197,0,
+ 134,0,167,0,41,62,0,4,106,0,
+ 4,198,0,213,0,63,0,165,0,211,
+ 0,150,0,13,2,9,10,5,224,0,
+ 2,145,0,30,190,0,4,45,144,0,
+ 5,118,212,0,45,201,26,4,0,100,
+ 70,5,2,9,10,4,40,0,30,102,
+ 103,4,0,4,52,80,118,50,5,0,
+ 46,5,2,9,10,4,174,0,40,1,
+ 0,4,49,216,0,61,2,3,0,103,
+ 102,40,70,72,5,10,9,2,0,40,
+ 82,0,34,52,45,199,41,4,0,40,
+ 127,0,5,118,181,0,49,34,4,30,
+ 0,94,41,52,34,83,4,45,0,26,
+ 4,5,40,100,0,30,103,102,70,2,
+ 9,10,4,5,0,121,80,52,4,34,
+ 0,5,10,9,2,13,98,97,41,0,
+ 2,5,112,108,109,110,117,13,74,0,
+ 2,71,0,4,5,10,9,2,70,22,
+ 0,103,102,40,5,72,0,4,34,52,
+ 80,90,0,4,49,120,0,5,10,9,
+ 13,3,1,0,107,0,49,4,200,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,
+ 120,84,10,9,53,57,73,79,80,91,
+ 92,105,107,48,49,65,110,112,127,59,
+ 111,50,109,52,69,71,75,78,81,88,
+ 94,103,125,117,11,12,7,8,98,58,
+ 14,60,66,72,89,93,95,99,102,104,
+ 114,115,116,128,68,96,106,82,19,126,
+ 108,133,100,1,123,44,30,63,83,20,
+ 101,33,124,113,54,55,61,62,64,70,
+ 74,76,77,90,97,17,18,32,6,4,
+ 15,16,21,22,23,24,25,26,27,28,
+ 45,46,85,86,87,5,29,34,35,36,
+ 37,38,39,40,41,42,43,122,56,3,
+ 134,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,
+ 140,145,146,0,0,144,0,0,240,246,
+ 143,0,153,142,0,0,152,158,0,0,
+ 159,255,0,0,0,190,168,169,170,136,
+ 171,172,173,264,174,161,175,176,177,256,
+ 139,178,0,151,141,138,179,0,162,187,
+ 0,0,148,0,0,0,0,0,0,0,
+ 147,182,197,0,214,0,155,0,211,215,
+ 0,165,185,196,0,0,0,0,0,0,
+ 0,0,181,0,0,0,0,0,0,188,
+ 0,0,216,137,135,156,228,0,167,212,
+ 218,219,220,0,222,0,198,199,200,201,
+ 202,203,0,0,217,230,263,231,0,184,
+ 189,191,192,193,194,195,206,208,0,209,
+ 0,0,221,0,0,0,235,0,237,0,
+ 251,252,262,0,157,180,205,0,207,0,
+ 224,227,0,249,0,250,0,260,265,0,
+ 149,150,154,0,0,164,166,0,0,0,
+ 0,204,0,213,0,225,226,0,0,232,
+ 239,0,243,244,245,248,0,257,0,259,
+ 0,0,266,0,0,160,163,0,183,0,
+ 186,0,0,210,223,229,0,0,233,234,
+ 236,238,0,241,242,247,253,254,0,0,
+ 258,0,0,261,0,267,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[] = {
+ 267,723,742,420,431,674,690,701,712,512,
+ 375,389,406,447,465,137,400,532,570,275,
+ 731,617,115,146,166,175,180,185,238,303,
+ 458,473,478,90,252,381,395,645,122,252,
+ 522,478,750,122,325,356,8,26,58,58,
+ 82,86,98,109,156,171,199,483,501,505,
+ 588,610,639,666,670,760,764,768,190,102,
+ 190,550,566,579,597,658,209,209,337,427,
+ 579,681,697,708,719,315,628,38,50,79,
+ 151,151,264,330,32,151,351,372,32,32,
+ 151,509,607,614,264,151,783,14,20,32,
+ 73,203,487,554,594,20,1,151,218,412,
+ 438,487,218,218,438,541,285,43,43,64,
+ 197,64,64,64,64,592,772,779,43,43,
+ 68,346,772,779,160,560,245,197,346,197,
+ 361
+ };
+ };
+ public final static char scopePrefix[] = ScopePrefix.scopePrefix;
+ public final int scopePrefix(int index) { return scopePrefix[index]; }
+
+ public interface ScopeSuffix {
+ public final static char scopeSuffix[] = {
+ 113,62,62,243,243,62,62,62,62,519,
+ 243,12,243,243,471,143,386,538,576,281,
+ 162,623,120,120,120,154,154,12,243,308,
+ 463,463,471,95,257,386,194,650,133,260,
+ 527,737,755,127,319,319,12,30,62,62,
+ 62,62,62,113,62,154,12,463,12,12,
+ 243,354,62,62,62,62,62,354,781,106,
+ 194,519,519,519,601,650,213,227,341,415,
+ 583,685,685,685,685,319,632,41,41,62,
+ 154,154,62,62,333,335,354,62,30,30,
+ 335,12,62,354,62,643,62,17,23,35,
+ 76,206,490,557,76,604,4,662,213,415,
+ 453,653,221,232,441,544,288,48,56,66,
+ 12,493,495,497,499,12,774,774,45,53,
+ 70,348,776,776,162,562,247,310,341,295,
+ 363
+ };
+ };
+ public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
+ public final int scopeSuffix(int index) { return scopeSuffix[index]; }
+
+ public interface ScopeLhs {
+ public final static char scopeLhs[] = {
+ 50,17,17,79,110,17,17,17,17,86,
+ 92,51,79,110,109,77,57,86,85,50,
+ 17,19,3,7,8,181,181,180,108,50,
+ 109,109,111,23,97,58,51,163,155,97,
+ 86,17,17,155,104,64,60,73,117,18,
+ 18,187,157,89,184,181,180,111,202,55,
+ 62,167,18,17,17,17,17,17,12,142,
+ 180,86,85,85,43,163,116,116,72,79,
+ 85,17,17,17,17,104,19,137,130,16,
+ 185,181,204,102,115,66,93,65,174,73,
+ 111,87,168,167,195,163,16,60,17,73,
+ 84,180,111,120,84,21,34,163,116,79,
+ 110,163,116,116,110,86,50,137,130,143,
+ 180,126,125,124,123,81,161,61,137,130,
+ 224,72,161,61,184,120,108,50,72,50,
+ 64
+ };
+ };
+ public final static char scopeLhs[] = ScopeLhs.scopeLhs;
+ public final int scopeLhs(int index) { return scopeLhs[index]; }
+
+ public interface ScopeLa {
+ public final static char scopeLa[] = {
+ 129,75,75,83,83,75,75,75,75,75,
+ 83,43,83,83,1,80,1,75,132,70,
+ 5,75,80,80,80,1,1,43,83,70,
+ 1,1,1,75,83,1,1,6,80,76,
+ 43,1,1,80,75,75,43,1,75,75,
+ 75,75,75,129,75,1,43,1,43,43,
+ 83,128,75,75,75,75,75,128,1,75,
+ 1,75,75,75,77,6,1,1,13,70,
+ 75,80,80,80,80,75,5,8,8,75,
+ 1,1,75,75,5,1,128,75,1,1,
+ 1,43,75,128,75,10,75,1,75,8,
+ 77,1,49,82,77,75,3,1,1,70,
+ 70,49,1,1,1,84,81,1,1,29,
+ 43,1,65,50,50,43,6,6,1,1,
+ 98,14,6,6,5,1,70,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[] = {
+ 388,242,242,400,159,242,242,242,242,82,
+ 447,388,400,159,159,400,435,82,82,388,
+ 242,242,166,212,212,21,21,412,159,388,
+ 159,159,159,320,61,435,388,50,43,61,
+ 82,242,242,43,99,134,435,140,159,242,
+ 242,58,1,82,47,21,412,159,41,435,
+ 71,18,242,242,242,242,242,242,216,8,
+ 412,82,82,82,280,50,159,159,372,400,
+ 82,242,242,242,242,99,242,24,151,242,
+ 47,21,108,99,101,134,95,134,156,140,
+ 159,82,5,18,53,50,242,435,242,140,
+ 82,412,159,13,82,247,415,50,159,400,
+ 159,50,159,159,159,82,388,24,151,161,
+ 412,161,161,161,161,29,55,110,24,151,
+ 318,372,55,110,47,13,159,388,372,388,
+ 134
+ };
+ };
+ 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,
+ 325,137,0,131,265,0,0,282,137,167,
+ 0,138,0,137,167,0,207,138,0,200,
+ 5,0,136,228,0,173,233,137,0,211,
+ 0,233,137,0,256,211,0,270,173,0,
+ 256,0,173,0,235,256,0,235,0,206,
+ 173,0,185,256,0,185,0,200,5,29,
+ 0,136,0,240,0,263,0,232,0,32,
+ 167,0,357,86,0,30,181,0,195,5,
+ 0,200,5,64,0,353,5,321,0,352,
+ 5,5,8,0,136,136,0,351,5,73,
+ 0,350,5,129,0,136,182,0,137,195,
+ 81,0,226,0,286,137,69,135,0,20,
+ 0,319,137,69,49,0,20,58,0,33,
+ 142,0,20,58,0,0,319,137,69,49,
+ 213,0,20,188,0,286,137,69,143,0,
+ 204,138,0,151,0,239,5,318,0,318,
+ 0,2,0,136,0,286,137,69,142,0,
+ 204,138,251,0,204,138,33,251,0,204,
+ 138,346,33,0,139,215,194,138,0,215,
+ 194,138,0,144,138,0,185,0,342,137,
+ 185,0,137,185,0,233,138,0,194,341,
+ 245,0,146,0,0,0,0,341,245,0,
+ 147,146,0,0,0,0,145,0,0,0,
+ 0,147,145,0,0,0,0,340,137,174,
+ 249,0,137,0,249,0,139,0,0,137,
+ 0,339,137,174,231,0,137,0,0,44,
+ 137,0,0,169,5,0,137,309,308,137,
+ 81,307,185,0,308,137,81,307,185,0,
+ 225,0,226,0,307,185,0,101,0,0,
+ 225,0,226,0,213,101,0,0,225,0,
+ 226,0,308,137,307,185,0,225,0,213,
+ 0,0,225,0,264,137,5,0,136,0,
+ 0,0,0,0,264,137,5,235,0,248,
+ 5,0,218,0,156,0,201,194,138,0,
+ 10,0,0,0,0,201,0,9,0,0,
+ 232,74,0,135,0,264,137,5,198,0,
+ 198,0,2,0,0,136,0,0,0,0,
+ 0,206,5,0,252,137,174,44,36,0,
+ 204,138,68,71,0,206,138,0,139,204,
+ 138,306,71,0,204,138,306,71,0,204,
+ 138,82,134,68,0,252,137,174,281,68,
+ 0,281,68,0,139,0,0,137,0,252,
+ 137,174,281,260,68,0,281,260,68,0,
+ 304,137,174,134,336,65,0,336,65,0,
+ 140,139,0,0,137,0,304,137,174,336,
+ 65,0,139,0,0,137,0,204,138,303,
+ 65,0,145,0,215,204,138,303,245,0,
+ 146,0,204,138,303,245,0,215,194,138,
+ 22,0,194,138,22,0,194,138,0,98,
+ 146,0,202,0,201,0,200,0,199,0,
+ 302,137,159,0,302,137,185,0,178,94,
+ 0,331,179,333,334,5,91,0,136,181,
+ 0,333,334,5,91,0,138,0,136,181,
+ 0,178,5,84,216,89,0,136,138,0,
+ 216,89,0,113,2,141,136,138,0,253,
+ 5,84,0,206,182,0,33,179,0,182,
+ 0,185,33,179,0,253,5,95,0,216,
+ 163,253,5,93,0,67,181,0,253,5,
+ 93,0,136,181,67,181,0,332,137,174,
+ 0,178,0,232,86,0,178,117,175,0,
+ 30,179,0,136,159,0,239,5,0,232,
+ 74,300,0,178,74,0,200,5,328,79,
+ 138,0,136,0,0,0,0,328,79,138,
+ 0,2,155,136,0,0,0,0,200,5,
+ 56,0,157,0,136,49,194,138,0,31,
+ 157,0,98,146,31,157,0,229,204,138,
+ 0,156,31,157,0,200,5,60,0,178,
+ 5,60,0,178,5,80,200,69,52,0,
+ 200,69,52,0,20,2,141,136,0,178,
+ 5,80,200,69,55,0,200,69,55,0,
+ 178,5,80,200,69,57,0,200,69,57,
+ 0,178,5,80,200,69,53,0,200,69,
+ 53,0,239,5,136,215,194,138,22,0,
+ 136,215,194,138,22,0,146,2,0,136,
+ 0,239,5,135,277,194,138,22,0,277,
+ 194,138,22,0,145,2,0,136,0,239,
+ 5,146,0,239,5,150,0,178,74,150,
+ 0,295,0,31,0,31,149,0,186,0,
+ 144,0,178,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,
+ 2766,2665,2276,0,2107,2058,0,1240,682,1952,
+ 1402,0,6798,6840,6520,5910,0,2274,1587,0,
+ 3605,2541,0,4018,3991,3833,3091,0,4447,4383,
+ 4319,4255,4191,4127,4059,3923,3859,3765,3653,3498,
+ 2874,0,4581,3573,4267,0,1597,700,0,713,
+ 685,0,672,0,3107,1338,0,1201,925,0,
+ 1298,3087,1245,5208,2948,2861,1648,1197,1398,0,
+ 2933,2526,6631,1687,2898,1332,5550,3392,3177,3176,
+ 819,4447,4383,4319,4255,4191,4127,4059,3923,3859,
+ 3765,3653,3498,0,2100,1904,1501,888,3347,5520,
+ 4903,4590,4510,2897,4573,4103,0,767,0,6879,
+ 6858,6825,6812,5488,5279,6793,6777,6746,4917,6739,
+ 4643,6720,6715,4045,6682,3109,2941,3332,5451,5250,
+ 3880,1178,0,3347,2961,6347,5075,5024,910,4903,
+ 4068,4018,3991,3833,4590,3091,4510,5351,5261,984,
+ 3398,3660,2881,3472,0,2961,910,0,5364,5233,
+ 783,636,3124,2912,0,3782,3455,6879,6858,3171,
+ 2804,6825,2174,6812,2125,2076,2027,1020,2370,5488,
+ 1929,5279,1829,6793,6777,6746,3260,1421,4917,6739,
+ 5364,4643,1320,6720,6715,952,4045,2682,3124,6682,
+ 3109,2613,2941,3332,5451,5250,3880,901,5233,1178,
+ 2912,1206,1140,1072,1060,728,4903,3398,4068,4018,
+ 3991,3347,3833,4590,3091,4510,832,763,2961,6347,
+ 713,685,5075,3660,5351,5024,5261,984,2881,3472,
+ 910,6598,6577,6489,6242,4936,6462,5208,3051,3270,
+ 3617,3309,4621,4537,3743,5178,5148,4871,4839,4807,
+ 4775,4743,4711,5750,5727,5704,5675,5646,6440,6418,
+ 6379,6215,6193,6171,6149,6127,6105,6083,6061,2542,
+ 2825,1298,783,2781,2730,2686,1705,2492,2443,1653,
+ 1604,2635,2591,1245,1553,2392,1156,1455,2299,2250,
+ 2201,2152,2103,2054,2005,1956,1907,1858,1807,1758,
+ 1504,1088,998,636,930,1348,1398,2348,0,3398,
+ 4647,5275,783,4018,5095,4462,3991,3833,4657,5106,
+ 4334,4454,4262,3568,6629,5793,4101,3965,6347,5364,
+ 3572,1202,3493,636,3773,847,6625,3780,3465,3017,
+ 3660,3124,5351,2847,2752,3339,5261,1210,1196,5233,
+ 5785,5368,3485,5038,3343,4992,3540,3119,3472,2991,
+ 2912,6689,3347,6619,5814,5378,4198,5520,3091,3183,
+ 4391,4327,5075,5024,3807,2881,0,4447,4383,4319,
+ 4255,4191,4127,4059,3923,3859,3765,3653,3498,6484,
+ 5551,5479,5407,6286,6237,5968,5919,5870,5821,5772,
+ 4931,4993,2926,0,6630,3647,6272,5987,6631,5982,
+ 1156,1088,998,5786,5514,5380,3886,2873,5550,3392,
+ 3177,3176,930,819,4447,4383,4319,4255,4191,4127,
+ 4059,3923,3859,3765,3653,3498,6484,5551,5479,5407,
+ 6286,6237,5968,5919,5870,5821,5772,4931,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,327,167,71,7,137,185,213,38,41,
+ 49,36,68,254,137,68,306,355,325,255,
+ 8,9,7,256,249,257,245,258,65,259,
+ 135,22,138,276,29,240,307,137,5,6,
+ 143,142,12,10,135,138,198,49,49,49,
+ 69,49,44,281,260,134,173,282,263,137,
+ 203,198,173,206,138,138,5,3,5,5,
+ 5,174,341,303,173,336,303,173,69,138,
+ 204,194,186,29,64,56,51,46,45,13,
+ 14,48,47,138,10,5,60,52,55,57,
+ 53,22,146,150,81,137,302,282,233,173,
+ 138,201,206,69,69,182,137,74,5,78,
+ 79,135,134,204,194,5,69,80,137,174,
+ 174,281,82,76,5,82,233,173,138,74,
+ 206,173,204,204,356,44,291,292,5,354,
+ 1,44,137,194,267,136,135,138,134,174,
+ 138,137,194,49,6,5,5,5,5,78,
+ 79,194,136,200,195,178,174,167,182,137,
+ 5,69,69,69,69,138,5,116,130,5,
+ 74,137,308,77,194,14,13,137,137,137,
+ 240,74,74,215,137,137,137,137,174,138,
+ 169,137,174,231,160,162,161,165,164,168,
+ 166,171,170,172,73,175,173,194,232,175,
+ 173,260,139,77,163,5,76,240,359,352,
+ 321,5,340,138,183,251,68,49,71,185,
+ 343,136,135,268,173,268,204,174,137,204,
+ 286,289,215,295,215,200,200,200,200,74,
+ 328,5,163,137,137,5,236,235,279,146,
+ 136,135,22,138,29,200,178,200,200,200,
+ 200,194,239,49,138,49,239,178,308,317,
+ 138,318,201,201,286,286,233,264,265,159,
+ 266,319,49,22,50,252,252,137,204,137,
+ 174,99,100,46,45,102,101,13,112,111,
+ 104,103,80,69,96,97,14,106,105,108,
+ 107,109,127,126,125,124,123,122,121,120,
+ 119,118,82,117,110,13,1,76,163,5,
+ 44,1,194,137,268,268,137,137,215,137,
+ 304,134,305,76,6,163,163,163,163,228,
+ 5,329,182,169,332,88,86,1,178,11,
+ 95,93,91,89,84,92,94,87,85,68,
+ 81,233,248,137,5,76,138,194,151,5,
+ 80,80,80,80,215,277,138,204,194,309,
+ 76,204,5,13,137,163,82,248,206,5,
+ 137,76,76,80,69,267,267,252,260,137,
+ 161,161,160,160,160,164,164,164,164,164,
+ 164,162,162,166,165,165,170,168,171,277,
+ 178,172,1,353,215,342,77,272,206,135,
+ 270,173,137,137,77,304,82,76,200,137,
+ 137,11,77,357,232,77,5,5,5,216,
+ 5,134,178,134,195,264,137,194,49,200,
+ 5,5,5,5,136,135,229,10,49,137,
+ 239,201,196,137,82,82,137,233,137,82,
+ 82,339,77,77,76,139,76,77,82,173,
+ 270,173,155,345,251,33,138,163,297,300,
+ 74,205,77,98,77,253,182,137,253,334,
+ 159,84,253,137,163,264,215,163,178,178,
+ 178,178,5,5,6,134,136,310,129,137,
+ 246,319,227,76,270,173,76,138,33,346,
+ 204,137,5,74,178,163,206,163,333,137,
+ 5,163,310,137,163,136,239,239,6,5,
+ 137,80,227,11,204,138,138,297,239,232,
+ 82,216,179,302,178,246,137,98,350,182,
+ 73,50,204,204,132,331,163,137,246,163,
+ 163,137,5,267,163,137,351,82,76
+ };
+ };
+ 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",
+ "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_list",
+ "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"
+ };
+ };
+ public final static String name[] = Name.name;
+ public final String name(int index) { return name[index]; }
+
+ public final static int
+ ERROR_SYMBOL = 72,
+ SCOPE_UBOUND = 150,
+ SCOPE_SIZE = 151,
+ 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 = 639,
+ NT_OFFSET = 133,
+ LA_STATE_OFFSET = 8653,
+ MAX_LA = 2147483647,
+ NUM_RULES = 635,
+ NUM_NONTERMINALS = 230,
+ NUM_SYMBOLS = 363,
+ SEGMENT_SIZE = 8192,
+ START_STATE = 4931,
+ IDENTIFIER_SYMBOL = 0,
+ EOFT_SYMBOL = 131,
+ EOLT_SYMBOL = 131,
+ ACCEPT_ACTION = 7000,
+ ERROR_ACTION = 8018;
+
+ 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 00000000000..4194c56b920
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParsersym.java
@@ -0,0 +1,290 @@
+/*******************************************************************************
+* 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 = 32,
+ TK_asm = 7,
+ TK_auto = 34,
+ TK_bool = 15,
+ TK_break = 85,
+ TK_case = 86,
+ TK_catch = 129,
+ TK_char = 16,
+ TK_class = 50,
+ TK_const = 30,
+ TK_const_cast = 52,
+ TK_continue = 87,
+ TK_default = 88,
+ TK_delete = 78,
+ TK_do = 89,
+ TK_double = 26,
+ TK_dynamic_cast = 53,
+ TK_else = 132,
+ TK_enum = 65,
+ TK_explicit = 35,
+ TK_export = 90,
+ TK_extern = 36,
+ TK_false = 54,
+ TK_float = 17,
+ TK_for = 91,
+ TK_friend = 37,
+ TK_goto = 92,
+ TK_if = 93,
+ TK_inline = 38,
+ TK_int = 18,
+ TK_long = 19,
+ TK_mutable = 39,
+ TK_namespace = 68,
+ TK_new = 79,
+ TK_operator = 12,
+ TK_private = 113,
+ TK_protected = 114,
+ TK_public = 115,
+ TK_register = 40,
+ TK_reinterpret_cast = 55,
+ TK_return = 94,
+ TK_short = 20,
+ TK_signed = 21,
+ TK_sizeof = 56,
+ TK_static = 41,
+ TK_static_cast = 57,
+ TK_struct = 66,
+ TK_switch = 95,
+ TK_template = 49,
+ TK_this = 58,
+ TK_throw = 73,
+ TK_try = 81,
+ TK_true = 59,
+ TK_typedef = 42,
+ TK_typeid = 60,
+ TK_typename = 22,
+ TK_union = 67,
+ TK_unsigned = 23,
+ TK_using = 71,
+ TK_virtual = 33,
+ TK_void = 27,
+ TK_volatile = 31,
+ TK_wchar_t = 28,
+ TK_while = 84,
+ TK_integer = 61,
+ TK_floating = 62,
+ TK_charconst = 63,
+ TK_stringlit = 44,
+ TK_identifier = 1,
+ TK_Completion = 4,
+ TK_EndOfCompletion = 11,
+ TK_Invalid = 133,
+ TK_LeftBracket = 74,
+ TK_LeftParen = 5,
+ TK_Dot = 130,
+ TK_DotStar = 100,
+ TK_Arrow = 116,
+ TK_ArrowStar = 99,
+ TK_PlusPlus = 47,
+ TK_MinusMinus = 48,
+ TK_And = 14,
+ TK_Star = 13,
+ TK_Plus = 45,
+ TK_Minus = 46,
+ TK_Tilde = 10,
+ TK_Bang = 51,
+ TK_Slash = 101,
+ TK_Percent = 102,
+ TK_RightShift = 96,
+ TK_LeftShift = 97,
+ TK_LT = 69,
+ TK_GT = 80,
+ TK_LE = 103,
+ TK_GE = 104,
+ TK_EQ = 105,
+ TK_NE = 106,
+ TK_Caret = 107,
+ TK_Or = 108,
+ TK_AndAnd = 109,
+ TK_OrOr = 110,
+ TK_Question = 117,
+ TK_Colon = 77,
+ TK_ColonColon = 6,
+ TK_DotDotDot = 98,
+ TK_Assign = 82,
+ TK_StarAssign = 118,
+ TK_SlashAssign = 119,
+ TK_PercentAssign = 120,
+ TK_PlusAssign = 121,
+ TK_MinusAssign = 122,
+ TK_RightShiftAssign = 123,
+ TK_LeftShiftAssign = 124,
+ TK_AndAssign = 125,
+ TK_CaretAssign = 126,
+ TK_OrAssign = 127,
+ TK_Comma = 76,
+ TK_RightBracket = 128,
+ TK_RightParen = 75,
+ TK_RightBrace = 83,
+ TK_SemiColon = 43,
+ TK_LeftBrace = 70,
+ TK_typeof = 29,
+ TK___alignof__ = 64,
+ TK___attribute__ = 8,
+ TK___declspec = 9,
+ TK_MAX = 111,
+ TK_MIN = 112,
+ TK_vector = 3,
+ TK_pixel = 2,
+ TK_ERROR_TOKEN = 72,
+ TK_EOF_TOKEN = 131;
+
+ public final static String orderedTerminalSymbols[] = {
+ "",
+ "identifier",
+ "pixel",
+ "vector",
+ "Completion",
+ "LeftParen",
+ "ColonColon",
+ "asm",
+ "__attribute__",
+ "__declspec",
+ "Tilde",
+ "EndOfCompletion",
+ "operator",
+ "Star",
+ "And",
+ "bool",
+ "char",
+ "float",
+ "int",
+ "long",
+ "short",
+ "signed",
+ "typename",
+ "unsigned",
+ "_Complex",
+ "_Imaginary",
+ "double",
+ "void",
+ "wchar_t",
+ "typeof",
+ "const",
+ "volatile",
+ "restrict",
+ "virtual",
+ "auto",
+ "explicit",
+ "extern",
+ "friend",
+ "inline",
+ "mutable",
+ "register",
+ "static",
+ "typedef",
+ "SemiColon",
+ "stringlit",
+ "Plus",
+ "Minus",
+ "PlusPlus",
+ "MinusMinus",
+ "template",
+ "class",
+ "Bang",
+ "const_cast",
+ "dynamic_cast",
+ "false",
+ "reinterpret_cast",
+ "sizeof",
+ "static_cast",
+ "this",
+ "true",
+ "typeid",
+ "integer",
+ "floating",
+ "charconst",
+ "__alignof__",
+ "enum",
+ "struct",
+ "union",
+ "namespace",
+ "LT",
+ "LeftBrace",
+ "using",
+ "ERROR_TOKEN",
+ "throw",
+ "LeftBracket",
+ "RightParen",
+ "Comma",
+ "Colon",
+ "delete",
+ "new",
+ "GT",
+ "try",
+ "Assign",
+ "RightBrace",
+ "while",
+ "break",
+ "case",
+ "continue",
+ "default",
+ "do",
+ "export",
+ "for",
+ "goto",
+ "if",
+ "return",
+ "switch",
+ "RightShift",
+ "LeftShift",
+ "DotDotDot",
+ "ArrowStar",
+ "DotStar",
+ "Slash",
+ "Percent",
+ "LE",
+ "GE",
+ "EQ",
+ "NE",
+ "Caret",
+ "Or",
+ "AndAnd",
+ "OrOr",
+ "MAX",
+ "MIN",
+ "private",
+ "protected",
+ "public",
+ "Arrow",
+ "Question",
+ "StarAssign",
+ "SlashAssign",
+ "PercentAssign",
+ "PlusAssign",
+ "MinusAssign",
+ "RightShiftAssign",
+ "LeftShiftAssign",
+ "AndAssign",
+ "CaretAssign",
+ "OrAssign",
+ "RightBracket",
+ "catch",
+ "Dot",
+ "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 00000000000..a68e6b4f065
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.properties
@@ -0,0 +1,18 @@
+###############################################################################
+# 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 = LR Parser Plug-in
+Bundle-Vendor.0 = Eclipse.org
+Bundle-Name.1 = LR Parser Plug-in
+
+# built-in languages
+language.name.c99= C99
+language.name.isocpp= ISO C++ \ 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 00000000000..b439382746c
--- /dev/null
+++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/plugin.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension point="org.eclipse.cdt.core.language">
+ <language
+ class="org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage"
+ id="c"
+ name="XLC C">
+ </language>
+
+ <language
+ class="org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage"
+ id="cpp"
+ name="XLC C++">
+ </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="XLC Language Options">
+ </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="XLC Language Options">
+ </page>
+ </extension>
+</plugin>
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 00000000000..79d1b7741cb
--- /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,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.internal.core.lrparser.xlc.ui.preferences;
+
+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 {
+ NLS.initializeMessages(BUNDLE_NAME, PreferenceMessages.class);
+ }
+
+
+ public static String
+ XlcLanguageOptionsPreferencePage_link,
+ XlcLanguageOptionsPreferencePage_group,
+ XlcLanguageOptionsPreferencePage_preference_vectors;
+
+}
+
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 00000000000..efad63b2024
--- /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,4 @@
+
+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_preference_vectors=Support vector types \ 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/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 00000000000..7bed893e08e
--- /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,130 @@
+/*******************************************************************************
+ * 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.XlcPreferenceKeys;
+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.Button;
+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 Button button_vectors;
+
+
+ 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
+ }
+
+ @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);
+
+ button_vectors = ControlFactory.createCheckBox(group, PreferenceMessages.XlcLanguageOptionsPreferencePage_preference_vectors);
+ initCheckbox(button_vectors, XlcPreferenceKeys.KEY_SUPPORT_VECTOR_TYPES);
+
+ return page;
+ }
+
+
+ private void initCheckbox(Button checkbox, String prefKey) {
+ String preference = null;
+
+ if(isPropertyPage()) {
+ IProject project = getProject();
+ preference = XlcLanguagePreferences.getProjectPreference(prefKey, project);
+ }
+ else {
+ preference = XlcLanguagePreferences.getWorkspacePreference(prefKey);
+ }
+
+ if(preference == null) {
+ preference = XlcLanguagePreferences.getDefaultPreference(prefKey);
+ }
+
+ checkbox.setSelection(Boolean.valueOf(preference));
+ }
+
+
+
+ @Override
+ protected void performDefaults() {
+ button_vectors.setSelection(Boolean.valueOf(XlcLanguagePreferences.getDefaultPreference(XlcPreferenceKeys.KEY_SUPPORT_VECTOR_TYPES)));
+
+ super.performDefaults();
+ }
+
+ @Override
+ public boolean performOk() {
+ setPreference(XlcPreferenceKeys.KEY_SUPPORT_VECTOR_TYPES, button_vectors.getSelection(), getProject());
+ return true;
+ }
+
+
+ private IProject getProject() {
+ return isPropertyPage() ? (IProject)element.getAdapter(IProject.class) : null;
+ }
+
+ private static void setPreference(String key, boolean val, IProject project) {
+ if(project != null)
+ XlcLanguagePreferences.setProjectPreference(key, String.valueOf(val), project);
+ else
+ XlcLanguagePreferences.setWorkspacePreference(key, String.valueOf(val));
+ }
+
+
+}

Back to the top