Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Recoskie2007-04-27 02:03:40 +0000
committerChris Recoskie2007-04-27 02:03:40 +0000
commit53b7411eebfb8d97987991447dd10aff0796039a (patch)
tree932a3ef2c3c0223bc02ff1dd5380a37e7e0056c1
parent5a24d7c682d57adf80e1fde43bf0d02d90fc53a8 (diff)
downloadorg.eclipse.cdt-53b7411eebfb8d97987991447dd10aff0796039a.tar.gz
org.eclipse.cdt-53b7411eebfb8d97987991447dd10aff0796039a.tar.xz
org.eclipse.cdt-53b7411eebfb8d97987991447dd10aff0796039a.zip
RESOLVED - bug 183848: add parser for Unified Parallel C
https://bugs.eclipse.org/bugs/show_bug.cgi?id=183848 Patch from Mike Kucera
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/.classpath7
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/.project34
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/META-INF/MANIFEST.MF16
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/about.html24
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/build.properties7
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/plugin.properties4
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/plugin.xml26
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCASTNodeFactory.java83
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCKeywordMap.java103
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCParserAction.java304
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/UPCLanguage.java55
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTCompositeTypeSpecifier.java18
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTDeclSpecifier.java58
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTElaboratedTypeSpecifier.java18
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTEnumerationSpecifier.java18
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTForallStatement.java59
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTKeywordExpression.java28
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTLayoutQualifier.java33
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSimpleDeclSpecifier.java18
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSizeofExpression.java29
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSynchronizationStatement.java40
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTTypedefNameSpecifier.java18
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.g252
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java1698
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParserprs.java2025
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParsersym.java254
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTCompositeTypeSpecifier.java78
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTElaboratedTypeSpecifier.java73
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTEnumerationSpecifier.java75
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTForallStatement.java78
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTKeywordExpression.java55
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTLayoutQualifier.java56
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSimpleDeclSpecifier.java71
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSizeofExpression.java38
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSynchronizationStatement.java64
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTTypedefNameSpecifier.java73
36 files changed, 5890 insertions, 0 deletions
diff --git a/upc/org.eclipse.cdt.core.parser.upc/.classpath b/upc/org.eclipse.cdt.core.parser.upc/.classpath
new file mode 100644
index 00000000000..751c8f2e504
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/upc/org.eclipse.cdt.core.parser.upc/.project b/upc/org.eclipse.cdt.core.parser.upc/.project
new file mode 100644
index 00000000000..0697e2bcbf5
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.cdt.core.parser.upc</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>
+ <buildCommand>
+ <name>net.sourceforge.metrics.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>net.sourceforge.metrics.nature</nature>
+ </natures>
+</projectDescription>
diff --git a/upc/org.eclipse.cdt.core.parser.upc/META-INF/MANIFEST.MF b/upc/org.eclipse.cdt.core.parser.upc/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..5a5e2635ef9
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name.1
+Bundle-SymbolicName: org.eclipse.cdt.core.parser.upc;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-ClassPath: .
+Require-Bundle: org.eclipse.cdt.core,
+ net.sourceforge.lpg.lpgjavaruntime;bundle-version="1.1.0";visibility:=reexport,
+ org.eclipse.core.runtime,
+ org.eclipse.cdt.core.parser.c99
+Export-Package: org.eclipse.cdt.core.dom.upc,
+ org.eclipse.cdt.core.dom.upc.ast,
+ org.eclipse.cdt.internal.core.dom.parser.upc;x-internal:=true,
+ org.eclipse.cdt.internal.core.dom.parser.upc.ast;x-internal:=true
+Bundle-Localization: plugin
+Bundle-Vendor: %Bundle-Vendor.0
diff --git a/upc/org.eclipse.cdt.core.parser.upc/about.html b/upc/org.eclipse.cdt.core.parser.upc/about.html
new file mode 100644
index 00000000000..9b669c2fd0c
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/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>February 8, 2007</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/upc/org.eclipse.cdt.core.parser.upc/build.properties b/upc/org.eclipse.cdt.core.parser.upc/build.properties
new file mode 100644
index 00000000000..ae22b3b40a0
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ plugin.properties,\
+ plugin.xml
diff --git a/upc/org.eclipse.cdt.core.parser.upc/plugin.properties b/upc/org.eclipse.cdt.core.parser.upc/plugin.properties
new file mode 100644
index 00000000000..54d815de691
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/plugin.properties
@@ -0,0 +1,4 @@
+# properties file for org.eclipse.cdt.core.parser.c99
+Bundle-Name.0 = C99 Parser Plug-in
+Bundle-Vendor.0 = Eclipse.org
+Bundle-Name.1 = C99 Parser Plug-in \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.core.parser.upc/plugin.xml b/upc/org.eclipse.cdt.core.parser.upc/plugin.xml
new file mode 100644
index 00000000000..d7145fcf911
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/plugin.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+
+
+ <extension point="org.eclipse.core.runtime.contentTypes">
+ <content-type id="upcSource" name="%upcSourceName"
+ base-type="org.eclipse.cdt.core.cSource"
+ file-extensions="upc"
+ priority="high"/>
+ </extension>
+
+ <extension point="org.eclipse.cdt.core.language">
+ <language
+ class="org.eclipse.cdt.core.dom.upc.UPCLanguage"
+ id="upc"
+ name="UPC">
+ <contentType id="org.eclipse.cdt.core.parser.upc.upcSource"/>
+ </language>
+ <pdomLinkageFactory
+ class="org.eclipse.cdt.internal.core.pdom.dom.c.PDOMCLinkageFactory"
+ id="upc"/>
+ </extension>
+
+
+</plugin>
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCASTNodeFactory.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCASTNodeFactory.java
new file mode 100644
index 00000000000..a68aa347e25
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCASTNodeFactory.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.parser.upc;
+
+import org.eclipse.cdt.core.dom.ast.c.ICASTCompositeTypeSpecifier;
+import org.eclipse.cdt.core.dom.ast.c.ICASTElaboratedTypeSpecifier;
+import org.eclipse.cdt.core.dom.ast.c.ICASTEnumerationSpecifier;
+import org.eclipse.cdt.core.dom.ast.c.ICASTSimpleDeclSpecifier;
+import org.eclipse.cdt.core.dom.ast.c.ICASTTypedefNameSpecifier;
+import org.eclipse.cdt.core.dom.parser.c99.C99ASTNodeFactory;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTForallStatement;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSizeofExpression;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
+import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTCompositeTypeSpecifier;
+import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTElaboratedTypeSpecifier;
+import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTEnumerationSpecifier;
+import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTForallStatement;
+import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTKeywordExpression;
+import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTSimpleDeclSpecifier;
+import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTSizeofExpression;
+import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTSynchronizationStatement;
+import org.eclipse.cdt.internal.core.dom.parser.upc.ast.UPCASTTypedefNameSpecifier;
+
+
+/**
+ * Creates AST nodes that are specific to the UPC parser.
+ *
+ * The methods in ASTNodeFactory that build nodes for declaration
+ * specifiers are overridden here to replace thos nodes with the UPC nodes for
+ * declaration specifiers. These UPC specific nodes add support
+ * for 'strict', 'relaxed' and 'shared'.
+ */
+public class UPCASTNodeFactory extends C99ASTNodeFactory {
+
+ public IUPCASTKeywordExpression newKeywordExpression() {
+ return new UPCASTKeywordExpression();
+ }
+
+ public IUPCASTSizeofExpression newSizeofExpression() {
+ return new UPCASTSizeofExpression();
+ }
+
+ public IUPCASTSynchronizationStatement newSyncronizationStatment() {
+ return new UPCASTSynchronizationStatement();
+ }
+
+ public IUPCASTForallStatement newForallStatement() {
+ return new UPCASTForallStatement();
+ }
+
+ /**
+ * Override to return UPC version of decl specifier.
+ */
+ public ICASTSimpleDeclSpecifier newCSimpleDeclSpecifier() {
+ return new UPCASTSimpleDeclSpecifier();
+ }
+
+ public ICASTCompositeTypeSpecifier newCCompositeTypeSpecifier() {
+ return new UPCASTCompositeTypeSpecifier();
+ }
+
+ public ICASTElaboratedTypeSpecifier newCElaboratedTypeSpecifier() {
+ return new UPCASTElaboratedTypeSpecifier();
+ }
+
+ public ICASTEnumerationSpecifier newCEnumerationSpecifier() {
+ return new UPCASTEnumerationSpecifier();
+ }
+
+ public ICASTTypedefNameSpecifier newCTypedefNameSpecifier() {
+ return new UPCASTTypedefNameSpecifier();
+ }
+
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCKeywordMap.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCKeywordMap.java
new file mode 100644
index 00000000000..56502b8d788
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCKeywordMap.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.parser.upc;
+
+import org.eclipse.cdt.core.dom.parser.c99.C99KeywordMap;
+import org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym;
+
+
+/**
+ * Provides UPC specific keywords in addition to the C99 keywords.
+ *
+ * Keyword token mappings from the superclass must be overridden.
+ *
+ * @author Mike Kucera
+ */
+public class UPCKeywordMap extends C99KeywordMap {
+
+
+ public static final String
+ MYTHREAD = "MYTHREAD",//$NON-NLS-1$
+ THREADS = "THREADS",//$NON-NLS-1$
+ UPC_MAX_BLOCKSIZE = "UPC",//$NON-NLS-1$
+ relaxed = "relaxed",//$NON-NLS-1$
+ shared = "shared",//$NON-NLS-1$
+ strict = "strict",//$NON-NLS-1$
+ upc_barrier = "upc_barrier",//$NON-NLS-1$
+ upc_localsizeof = "upc_localsizeof",//$NON-NLS-1$
+ upc_blocksizeof = "upc_blocksizeof",//$NON-NLS-1$
+ upc_elemsizeof = "upc_elemsizeof",//$NON-NLS-1$
+ upc_notify = "upc_notify",//$NON-NLS-1$
+ upc_fence = "upc_fence",//$NON-NLS-1$
+ upc_wait = "upc_wait",//$NON-NLS-1$
+ upc_forall = "upc_forall";//$NON-NLS-1$
+
+
+ public UPCKeywordMap() {
+ putKeyword(MYTHREAD, UPCParsersym.TK_MYTHREAD);
+ putKeyword(THREADS, UPCParsersym.TK_THREADS);
+ putKeyword(UPC_MAX_BLOCKSIZE, UPCParsersym.TK_UPC_MAX_BLOCKSIZE);
+ putKeyword(relaxed, UPCParsersym.TK_relaxed);
+ putKeyword(shared, UPCParsersym.TK_shared);
+ putKeyword(strict, UPCParsersym.TK_strict);
+ putKeyword(upc_barrier, UPCParsersym.TK_upc_barrier);
+ putKeyword(upc_localsizeof, UPCParsersym.TK_upc_localsizeof);
+ putKeyword(upc_blocksizeof, UPCParsersym.TK_upc_blocksizeof);
+ putKeyword(upc_elemsizeof, UPCParsersym.TK_upc_elemsizeof);
+ putKeyword(upc_notify, UPCParsersym.TK_upc_notify);
+ putKeyword(upc_fence, UPCParsersym.TK_upc_fence);
+ putKeyword(upc_wait, UPCParsersym.TK_upc_wait);
+ putKeyword(upc_forall, UPCParsersym.TK_upc_forall);
+
+ // The keyword token mappings from the superclass must be overridden.
+ // This is because LPG generates totally different values for token
+ // kinds every time you genereate a parser.
+ putKeyword(AUTO, UPCParsersym.TK_auto);
+ putKeyword(BREAK, UPCParsersym.TK_break);
+ putKeyword(CASE, UPCParsersym.TK_case);
+ putKeyword(CHAR, UPCParsersym.TK_char);
+ putKeyword(CONST, UPCParsersym.TK_const);
+ putKeyword(CONTINUE, UPCParsersym.TK_continue);
+ putKeyword(DEFAULT, UPCParsersym.TK_default);
+ putKeyword(DO, UPCParsersym.TK_do);
+ putKeyword(DOUBLE, UPCParsersym.TK_double);
+ putKeyword(ELSE, UPCParsersym.TK_else);
+ putKeyword(ENUM, UPCParsersym.TK_enum);
+ putKeyword(EXTERN, UPCParsersym.TK_extern);
+ putKeyword(FLOAT, UPCParsersym.TK_float);
+ putKeyword(FOR, UPCParsersym.TK_for);
+ putKeyword(GOTO, UPCParsersym.TK_goto);
+ putKeyword(IF, UPCParsersym.TK_if);
+ putKeyword(INLINE, UPCParsersym.TK_inline);
+ putKeyword(INT, UPCParsersym.TK_int);
+ putKeyword(LONG, UPCParsersym.TK_long);
+ putKeyword(REGISTER, UPCParsersym.TK_register);
+ putKeyword(RESTRICT, UPCParsersym.TK_restrict);
+ putKeyword(RETURN, UPCParsersym.TK_return);
+ putKeyword(SHORT, UPCParsersym.TK_short);
+ putKeyword(SIGNED, UPCParsersym.TK_signed);
+ putKeyword(SIZEOF, UPCParsersym.TK_sizeof);
+ putKeyword(STATIC, UPCParsersym.TK_static);
+ putKeyword(STRUCT, UPCParsersym.TK_struct);
+ putKeyword(SWITCH, UPCParsersym.TK_switch);
+ putKeyword(TYPEDEF, UPCParsersym.TK_typedef);
+ putKeyword(UNION, UPCParsersym.TK_union);
+ putKeyword(UNSIGNED, UPCParsersym.TK_unsigned);
+ putKeyword(VOID, UPCParsersym.TK_void);
+ putKeyword(VOLATILE, UPCParsersym.TK_volatile);
+ putKeyword(WHILE, UPCParsersym.TK_while);
+ putKeyword(_BOOL, UPCParsersym.TK__Bool);
+ putKeyword(_COMPLEX, UPCParsersym.TK__Complex);
+ putKeyword(_IMAGINARY, UPCParsersym.TK__Imaginary);
+ }
+
+
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCParserAction.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCParserAction.java
new file mode 100644
index 00000000000..772a4135730
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/parser/upc/UPCParserAction.java
@@ -0,0 +1,304 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.parser.upc;
+
+import lpg.lpgjavaruntime.IToken;
+
+import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
+import org.eclipse.cdt.core.dom.ast.IASTDeclarationStatement;
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.ast.IASTExpressionStatement;
+import org.eclipse.cdt.core.dom.ast.IASTNode;
+import org.eclipse.cdt.core.dom.ast.IASTStatement;
+import org.eclipse.cdt.core.dom.ast.IASTTypeId;
+import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
+import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
+import org.eclipse.cdt.core.dom.ast.c.ICASTDeclSpecifier;
+import org.eclipse.cdt.core.dom.c99.IASTNodeFactory;
+import org.eclipse.cdt.core.dom.c99.IParserActionTokenProvider;
+import org.eclipse.cdt.core.dom.parser.c99.ASTStack;
+import org.eclipse.cdt.core.dom.parser.c99.C99ParserAction;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTDeclSpecifier;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTForallStatement;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSizeofExpression;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
+import org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym;
+
+
+/**
+ * Extension to the C99ParserAction that adds support fot building
+ * an AST with UPC specific nodes.
+ */
+public class UPCParserAction extends C99ParserAction {
+
+ private final UPCASTNodeFactory nodeFactory;
+ private final ASTStack astStack;
+
+
+ public UPCParserAction(IParserActionTokenProvider parser, String[] orderedTerminalSymbols) {
+ super(parser, orderedTerminalSymbols);
+ this.astStack = super.getASTStack();
+ this.nodeFactory = (UPCASTNodeFactory) super.getNodeFactory();
+ }
+
+
+ /**
+ * Adds support for UPC specific nodes.
+ * Some of the methods in UPCASTNodeFactory are overrides
+ * and are called up in C99ParserAction.
+ */
+ protected IASTNodeFactory createNodeFactory() {
+ return new UPCASTNodeFactory();
+ }
+
+
+ /**************************************************************************************
+ * Semantic actions
+ **************************************************************************************/
+
+
+ /**
+ * constant ::= 'MYTHREAD' | 'THREADS' | 'UPC_MAX_BLOCKSIZE'
+ */
+ public void consumeKeywordExpression(int keywordKind) {
+ IUPCASTKeywordExpression expr = nodeFactory.newKeywordExpression();
+ expr.setKeywordKind(keywordKind);
+ setOffsetAndLength(expr);
+ astStack.push(expr);
+ }
+
+
+ /**
+ * unary_expression ::= 'upc_localsizeof' unary_expression
+ * | 'upc_blocksizeof' unary_expression
+ * | 'upc_elemsizeof' unary_expression
+ */
+ public void consumeExpressionUpcSizeofOperator(int sizeofOp) {
+ IUPCASTSizeofExpression expr = nodeFactory.newSizeofExpression();
+ expr.setUPCSizeofOperator(sizeofOp);
+
+ IASTExpression operand = (IASTExpression) astStack.pop();
+ expr.setOperand(operand);
+ operand.setParent(expr);
+ operand.setPropertyInParent(IASTUnaryExpression.OPERAND);
+
+ setOffsetAndLength(expr);
+ astStack.push(expr);
+ }
+
+
+ /**
+ * unary_expression ::= 'upc_localsizeof' '(' type_name ')'
+ * | 'upc_blocksizeof' '(' type_name ')'
+ * | 'upc_elemsizeof' '(' type_name ')'
+ */
+ public void consumeExpressionUpcSizeofTypeName(int sizeofOp) {
+ IASTTypeId typeId = (IASTTypeId) astStack.pop();
+ IASTTypeIdExpression expr = nodeFactory.newTypeIdExpression();
+
+ expr.setTypeId(typeId);
+ typeId.setParent(expr);
+ typeId.setPropertyInParent(IASTTypeIdExpression.TYPE_ID);
+ setOffsetAndLength(expr);
+
+ astStack.push(expr);
+ consumeExpressionUpcSizeofOperator(sizeofOp);
+ }
+
+
+ /**
+ * synchronization_statement ::= 'upc_notify' expression ';'
+ * | 'upc_notify' ';'
+ * | 'upc_wait' expression ';'
+ * | 'upc_wait' ';'
+ * | 'upc_barrier' expression ';'
+ * | 'upc_barrier' ';'
+ * | 'upc_fence' ';'
+ */
+ public void consumeStatementSynchronizationStatement(int statementKind, boolean hasBarrierExpr) {
+ IUPCASTSynchronizationStatement statement = nodeFactory.newSyncronizationStatment();
+ statement.setStatementKind(statementKind);
+
+ if(hasBarrierExpr) {
+ IASTExpression barrierExpression = (IASTExpression) astStack.pop();
+ statement.setBarrierExpression(barrierExpression);
+ barrierExpression.setParent(statement);
+ barrierExpression.setPropertyInParent(IUPCASTSynchronizationStatement.BARRIER_EXPRESSION);
+ }
+
+ setOffsetAndLength(statement);
+ astStack.push(statement);
+ }
+
+
+ /**
+ * iteration_statement
+ * ::= 'upc_forall' '(' expression ';' expression ';' expression ';' affinity ')' statement
+ * | 'upc_forall' '(' declaration expression ';' expression ';' affinity ')' statement
+ */
+ public void consumeStatementUPCForallLoop(boolean hasExpr1, boolean hasExpr2, boolean hasExpr3, boolean hasAffinity) {
+ IUPCASTForallStatement forStat = nodeFactory.newForallStatement();
+
+ IASTStatement body = (IASTStatement) astStack.pop();
+ forStat.setBody(body);
+ body.setParent(forStat);
+ body.setPropertyInParent(IUPCASTForallStatement.BODY);
+
+ if(hasAffinity) {
+ Object o = astStack.pop();
+ if(o instanceof IASTExpression) {
+ IASTExpression expr = (IASTExpression)o;
+ forStat.setAffinityExpression(expr);
+ expr.setParent(forStat);
+ expr.setPropertyInParent(IUPCASTForallStatement.AFFINITY);
+ }
+ if(o instanceof IToken) {
+ IToken token = (IToken) o;
+ assert token.getKind() == UPCParsersym.TK_continue;
+ forStat.setAffinityContinue(true);
+ }
+ }
+
+ if(hasExpr3) {
+ IASTExpression expr = (IASTExpression) astStack.pop();
+ forStat.setIterationExpression(expr);
+ expr.setParent(forStat);
+ expr.setPropertyInParent(IUPCASTForallStatement.ITERATION);
+ }
+
+ if(hasExpr2) {
+ IASTExpression expr = (IASTExpression) astStack.pop();
+ forStat.setConditionExpression(expr);
+ expr.setParent(forStat);
+ expr.setPropertyInParent(IUPCASTForallStatement.CONDITION);
+ }
+
+ if(hasExpr1) { // may be an expression or a declaration
+ IASTNode node = (IASTNode) astStack.pop();
+
+ if(node instanceof IASTExpression) {
+ IASTExpressionStatement stat = nodeFactory.newExpressionStatement();
+ IASTExpression expr = (IASTExpression)node;
+ stat.setExpression(expr);
+ expr.setParent(stat);
+ expr.setPropertyInParent(IASTExpressionStatement.EXPFRESSION);
+
+ forStat.setInitializerStatement(stat);
+ stat.setParent(forStat);
+ stat.setPropertyInParent(IUPCASTForallStatement.INITIALIZER);
+ }
+ else if(node instanceof IASTDeclaration) {
+ IASTDeclarationStatement stat = nodeFactory.newDeclarationStatement();
+ IASTDeclaration declaration = (IASTDeclaration)node;
+ stat.setDeclaration(declaration);
+ declaration.setParent(stat);
+ declaration.setPropertyInParent(IASTDeclarationStatement.DECLARATION);
+
+ forStat.setInitializerStatement(stat);
+ stat.setParent(forStat);
+ stat.setPropertyInParent(IUPCASTForallStatement.INITIALIZER);
+ }
+ }
+ else {
+ forStat.setInitializerStatement(nodeFactory.newNullStatement());
+ }
+
+ setOffsetAndLength(forStat);
+ astStack.push(forStat);
+ }
+
+
+ /**
+ * Temporary object used during the parsing of UPC declaration specifiers.
+ * Stored temporarily on the astStack, but does not become part of the AST.
+ * Makes parsing of layout qualifiers easier.
+ *
+ * @author Mike
+ */
+ private static class UPCParserActionLayoutQualifier {
+ public boolean hasStar = false;
+ public IASTExpression expression = null;
+ }
+
+
+ /**
+ * layout_qualifier ::= '[' constant_expression ']'
+ * | '[' '*' ']'
+ * | '[' ']'
+ */
+ public void consumeLayoutQualifier(boolean hasExpression, boolean hasStar) {
+ UPCParserActionLayoutQualifier layoutQualifier = new UPCParserActionLayoutQualifier();
+ layoutQualifier.hasStar = hasStar;
+ if(hasExpression) {
+ layoutQualifier.expression = (IASTExpression) astStack.pop();
+ }
+ astStack.push(layoutQualifier);
+ }
+
+
+
+ /**
+ * Overrides setSpecifier to add support for temporary layout qualifier nodes.
+ */
+ protected void setSpecifier(ICASTDeclSpecifier declSpec, Object o) {
+ if(o instanceof IToken)
+ setTokenSpecifier((IUPCASTDeclSpecifier)declSpec, (IToken)o);
+ else
+ setLayoutQualifier((IUPCASTDeclSpecifier)declSpec, (UPCParserActionLayoutQualifier) o);
+ }
+
+
+ /**
+ * Support for new declaration specifier keywords.
+ *
+ * 'shared' without [] is handled here
+ * 'shared' with [] is handled in setLayoutQualifier().
+ */
+ protected void setTokenSpecifier(IUPCASTDeclSpecifier node, IToken token) {
+ switch(token.getKind()) {
+ case UPCParsersym.TK_relaxed:
+ node.setReferenceType(IUPCASTDeclSpecifier.rt_relaxed);
+ break;
+ case UPCParsersym.TK_strict:
+ node.setReferenceType(IUPCASTDeclSpecifier.rt_strict);
+ break;
+ case UPCParsersym.TK_shared:
+ node.setSharedQualifier(IUPCASTDeclSpecifier.sh_shared_default_block_size);
+ break;
+ default:
+ super.setSpecifier(node, token);
+ }
+ }
+
+
+ /**
+ * Handles layout qualifiers with block size specified.
+ */
+ protected void setLayoutQualifier(IUPCASTDeclSpecifier node, UPCParserActionLayoutQualifier layoutQualifier) {
+ if(layoutQualifier.hasStar) {
+ node.setSharedQualifier(IUPCASTDeclSpecifier.sh_shared_pure_allocation);
+ }
+ else if(layoutQualifier.expression != null) {
+ node.setSharedQualifier(IUPCASTDeclSpecifier.sh_shared_constant_expression);
+ IASTExpression expr = layoutQualifier.expression;
+ node.setBlockSizeExpression(expr);
+ expr.setParent(node);
+ expr.setPropertyInParent(IUPCASTDeclSpecifier.BLOCK_SIZE_EXPRESSION);
+ }
+ else {
+ node.setSharedQualifier(IUPCASTDeclSpecifier.sh_shared_indefinite_allocation);
+ }
+ }
+
+}
+
+
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/UPCLanguage.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/UPCLanguage.java
new file mode 100644
index 00000000000..8dc6e144695
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/UPCLanguage.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.upc;
+
+import org.eclipse.cdt.core.dom.c99.C99Language;
+import org.eclipse.cdt.core.dom.c99.IParser;
+import org.eclipse.cdt.core.dom.parser.c99.C99KeywordMap;
+import org.eclipse.cdt.core.dom.parser.upc.UPCKeywordMap;
+import org.eclipse.cdt.internal.core.dom.parser.upc.UPCParser;
+
+
+/**
+ * Implementation of the ILanguage extension point, adds UPC as a language to CDT.
+ *
+ * Just hooks into C99Language and provides UPC specifier parser and keyword map.
+ *
+ * @author Mike Kucera
+ */
+public class UPCLanguage extends C99Language {
+
+ // TODO: this should probably go somewhere else
+ public static final String PLUGIN_ID = "org.eclipse.cdt.core.parser.c99"; //$NON-NLS-1$
+ public static final String ID = PLUGIN_ID + ".upc"; //$NON-NLS-1$
+
+ private static UPCKeywordMap keywordMap = new UPCKeywordMap();
+
+
+
+ public String getId() {
+ return ID;
+ }
+
+ public String getName() {
+ // TODO: this has to be read from a message bundle
+ return "UPC";//$NON-NLS-1$
+ }
+
+
+ protected IParser getParser() {
+ return new UPCParser();
+ }
+
+ public C99KeywordMap getKeywordMap() {
+ return keywordMap;
+ }
+
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTCompositeTypeSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTCompositeTypeSpecifier.java
new file mode 100644
index 00000000000..c6c1976a0a3
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTCompositeTypeSpecifier.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.c.ICASTCompositeTypeSpecifier;
+
+public interface IUPCASTCompositeTypeSpecifier extends
+ IUPCASTDeclSpecifier, ICASTCompositeTypeSpecifier {
+
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTDeclSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTDeclSpecifier.java
new file mode 100644
index 00000000000..f93a2af328b
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTDeclSpecifier.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.ast.c.ICASTDeclSpecifier;
+
+public interface IUPCASTDeclSpecifier extends ICASTDeclSpecifier {
+
+ public static final ASTNodeProperty BLOCK_SIZE_EXPRESSION = new ASTNodeProperty(
+ "IUPCASTDeclSpecifier.BLOCK_SIZE_EXPRESSION - IUPCASTDeclSpecifier block size expression"); //$NON-NLS-1
+
+
+ public static final int rt_unspecified = 0;
+
+ public static final int rt_strict = 1;
+
+ public static final int rt_relaxed = 2;
+
+
+
+ public static final int sh_not_shared = 0;
+
+ public static final int sh_shared_default_block_size = 1;
+
+ public static final int sh_shared_pure_allocation = 2;
+
+ public static final int sh_shared_indefinite_allocation = 3;
+
+ public static final int sh_shared_constant_expression = 4;
+
+
+
+ public int getReferenceType();
+
+ public void setReferenceType(int referenceType);
+
+
+
+ public int getSharedQualifier();
+
+ public void setSharedQualifier(int shared);
+
+
+
+ public IASTExpression getBlockSizeExpression();
+
+ public void setBlockSizeExpression(IASTExpression expr);
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTElaboratedTypeSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTElaboratedTypeSpecifier.java
new file mode 100644
index 00000000000..a4fa878a3ad
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTElaboratedTypeSpecifier.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.c.ICASTElaboratedTypeSpecifier;
+
+public interface IUPCASTElaboratedTypeSpecifier extends IUPCASTDeclSpecifier,
+ ICASTElaboratedTypeSpecifier {
+
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTEnumerationSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTEnumerationSpecifier.java
new file mode 100644
index 00000000000..86335227ac0
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTEnumerationSpecifier.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.c.ICASTEnumerationSpecifier;
+
+public interface IUPCASTEnumerationSpecifier extends IUPCASTDeclSpecifier,
+ ICASTEnumerationSpecifier {
+
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTForallStatement.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTForallStatement.java
new file mode 100644
index 00000000000..8254a93456f
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTForallStatement.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.ast.IASTForStatement;
+import org.eclipse.cdt.core.dom.ast.IASTStatement;
+
+public interface IUPCASTForallStatement extends IASTForStatement {
+
+ public static final ASTNodeProperty CONDITION = new ASTNodeProperty(
+ "IUPCASTForallStatement.CONDITION - IASTExpression condition of IUPCASTForallStatement"); //$NON-NLS-1$
+
+ public static final ASTNodeProperty ITERATION = new ASTNodeProperty(
+ "IUPCASTForallStatement.ITERATION - IASTExpression iteration of IUPCASTForallStatement"); //$NON-NLS-1$
+
+ public static final ASTNodeProperty BODY = new ASTNodeProperty(
+ "IUPCASTForallStatement.BODY - IASTStatement body of IUPCASTForallStatement"); //$NON-NLS-1$
+
+ public static final ASTNodeProperty INITIALIZER = new ASTNodeProperty(
+ "IUPCASTForallStatement.INITIALIZER - initializer for IUPCASTForallStatement"); //$NON-NLS-1$
+
+ public static final ASTNodeProperty AFFINITY = new ASTNodeProperty(
+ "IUPCASTForallStatement.AFFINITY - IASTExpression affinity for IUPCASTForallStatement"); //$NON-NLS-1$
+
+
+ public IASTStatement getInitializerStatement();
+
+ public void setInitializerStatement( IASTStatement statement );
+
+ public IASTExpression getConditionExpression();
+
+ public void setConditionExpression(IASTExpression condition);
+
+ public IASTExpression getIterationExpression();
+
+ public void setIterationExpression(IASTExpression iterator);
+
+ public IASTExpression getAffinityExpresiion();
+
+ public void setAffinityExpression(IASTExpression affinity);
+
+ public boolean isAffinityContinue();
+
+ public void setAffinityContinue(boolean affinityContinue);
+
+ public IASTStatement getBody();
+
+ public void setBody(IASTStatement statement);
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTKeywordExpression.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTKeywordExpression.java
new file mode 100644
index 00000000000..5ef9c3da333
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTKeywordExpression.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+
+public interface IUPCASTKeywordExpression extends IASTExpression {
+
+ public static final int kw_threads = 1;
+
+ public static final int kw_mythread = 2;
+
+ public static final int kw_upc_max_block_size = 3;
+
+
+ public int getKeywordKind();
+
+ public void setKeywordKind(int kind);
+
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTLayoutQualifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTLayoutQualifier.java
new file mode 100644
index 00000000000..49a61e49f57
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTLayoutQualifier.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+
+
+public interface IUPCASTLayoutQualifier {
+
+
+ public boolean isIndefiniteBlockAllocation();
+
+ public void setIndefiniteBlockAllocation(boolean allocation);
+
+
+ public boolean isPureBlockAllocation();
+
+ public void setPureBlockAllocation(boolean allocation);
+
+
+ public IASTExpression getBlockSizeExpression();
+
+ public void setBlockSizeExpression(IASTExpression expr);
+
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSimpleDeclSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSimpleDeclSpecifier.java
new file mode 100644
index 00000000000..c2a347341d0
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSimpleDeclSpecifier.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.c.ICASTSimpleDeclSpecifier;
+
+public interface IUPCASTSimpleDeclSpecifier extends IUPCASTDeclSpecifier,
+ ICASTSimpleDeclSpecifier {
+
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSizeofExpression.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSizeofExpression.java
new file mode 100644
index 00000000000..3fb0902a29d
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSizeofExpression.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
+
+public interface IUPCASTSizeofExpression extends IASTUnaryExpression {
+
+ public final int op_sizeof = 0;
+
+ public final int op_upc_localsizeof = 1;
+
+ public final int op_upc_blocksizeof = 2;
+
+ public final int op_upc_elemsizeof = 3;
+
+ public void setUPCSizeofOperator(int upcSizeofOperator);
+
+ public int getUPCSizeofOperator();
+
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSynchronizationStatement.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSynchronizationStatement.java
new file mode 100644
index 00000000000..2c388c991da
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTSynchronizationStatement.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.ast.IASTStatement;
+
+public interface IUPCASTSynchronizationStatement extends IASTStatement {
+
+
+ public static final ASTNodeProperty BARRIER_EXPRESSION = new ASTNodeProperty(
+ "IUPCASTSynchronizationStatement.BARRIER_EXPRESSION - IASTExpression barrier for IUPCASTSynchronizationStatement"); //$NON-NLS-1$
+
+
+ public final int st_upc_notify = 1;
+
+ public final int st_upc_wait = 2;
+
+ public final int st_upc_barrier = 3;
+
+ public final int st_upc_fence = 4;
+
+
+ public IASTExpression getBarrierExpression();
+
+ public void setBarrierExpression(IASTExpression expr);
+
+ public int getStatementKind();
+
+ public void setStatementKind(int kind);
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTTypedefNameSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTTypedefNameSpecifier.java
new file mode 100644
index 00000000000..5c571380b00
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/core/dom/upc/ast/IUPCASTTypedefNameSpecifier.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.c.ICASTTypedefNameSpecifier;
+
+public interface IUPCASTTypedefNameSpecifier extends IUPCASTDeclSpecifier,
+ ICASTTypedefNameSpecifier {
+
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.g b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.g
new file mode 100644
index 00000000000..86b8375bc00
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.g
@@ -0,0 +1,252 @@
+-----------------------------------------------------------------------------------
+-- Copyright (c) 2006, 2007 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.dom.parser.upc
+%options template=btParserTemplateD.g
+%options import_terminals=D:\workspaces\cdt-head2\org.eclipse.cdt.core.parser.c99\src\org\eclipse\cdt\internal\core\dom\parser\c99\C99Lexer.g
+
+
+-- Unified Parallel C (UPC) is an extension of C99
+$Import
+D:\workspaces\cdt-head2\org.eclipse.cdt.core.parser.c99\src\org\eclipse\cdt\internal\core\dom\parser\c99\C99Parser.g
+$End
+
+$Globals
+/.
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSizeofExpression;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
+import org.eclipse.cdt.internal.core.dom.parser.c99.C99Lexer;
+import org.eclipse.cdt.internal.core.dom.parser.c99.C99Parsersym;
+import org.eclipse.cdt.core.dom.parser.upc.UPCKeywordMap;
+import org.eclipse.cdt.core.dom.parser.upc.UPCParserAction;
+./
+$End
+
+$Define
+ $action_class /. UPCParserAction ./
+ $keyword_map_class /. UPCKeywordMap ./
+$End
+
+
+$Terminals -- Additional keywords defined by UPC
+ MYTHREAD
+ THREADS
+ UPC_MAX_BLOCKSIZE
+ relaxed
+ shared
+ strict
+ upc_barrier
+ upc_localsizeof
+ upc_blocksizeof
+ upc_elemsizeof
+ upc_notify
+ upc_fence
+ upc_wait
+ upc_forall
+$End
+
+
+
+$Rules -- UPC grammar extensions to C99
+
+-----------------------------------------------------------------------------------
+-- Expressions
+-----------------------------------------------------------------------------------
+
+-- also need to be a pre-defined macro
+-- THREADS and UPC_MAX_BLOCKSIZE are macros, but I want to be able to recognize
+-- them in the AST, how do I do this? (getRawSignature() to get the source code and then string compare to THREADS?)
+-- just use the paths and symbols dialog to add them, good for testing they can be added later by a upc toolchain
+
+-- map them to integers in the UPCKeywordMap
+-- override consumeExpressionConstant(IASTLiteralExpression.lk_integer_constant), call toString() onthe token
+-- and check if its THREADS or UPC_MAX_BLOCKSIZE and create appropriate AST node
+
+-- but then the value would be lost, its no good, they need to be builtin macros
+
+constant
+ ::= 'MYTHREAD'
+ /.$ba consumeKeywordExpression(IUPCASTKeywordExpression.kw_mythread); $ea./
+ | 'THREADS'
+ /.$ba consumeKeywordExpression(IUPCASTKeywordExpression.kw_threads); $ea./
+ | 'UPC_MAX_BLOCKSIZE'
+ /.$ba consumeKeywordExpression(IUPCASTKeywordExpression.kw_upc_max_block_size); $ea./
+
+
+-- causes ambiguities because of no type information, solution is SGLR
+unary_expression
+ ::= 'upc_localsizeof' unary_expression
+ /.$ba consumeExpressionUpcSizeofOperator(IUPCASTSizeofExpression.op_upc_localsizeof); $ea./
+ | 'upc_localsizeof' '(' type_name ')'
+ /.$ba consumeExpressionUpcSizeofTypeName(IUPCASTSizeofExpression.op_upc_localsizeof); $ea./
+ | 'upc_blocksizeof' unary_expression
+ /.$ba consumeExpressionUpcSizeofOperator(IUPCASTSizeofExpression.op_upc_blocksizeof); $ea./
+ | 'upc_blocksizeof' '(' type_name ')'
+ /.$ba consumeExpressionUpcSizeofTypeName(IUPCASTSizeofExpression.op_upc_blocksizeof); $ea./
+ | 'upc_elemsizeof' unary_expression
+ /.$ba consumeExpressionUpcSizeofOperator(IUPCASTSizeofExpression.op_upc_elemsizeof); $ea./
+ | 'upc_elemsizeof' '(' type_name ')'
+ /.$ba consumeExpressionUpcSizeofTypeName(IUPCASTSizeofExpression.op_upc_elemsizeof); $ea./
+
+
+-----------------------------------------------------------------------------------
+-- Declarations
+-----------------------------------------------------------------------------------
+
+
+type_qualifier
+ ::= shared_type_qualifier
+ | reference_type_qualifier
+
+-- causes ambiguities in parameter declarations, inherant in grammar
+-- for example: int foo(int shared []);
+-- does the [] bind to shared or is it shared with infinite block size array?
+-- TODO: probably just resolved in the same way as dangling else
+
+shared_type_qualifier
+ ::= 'shared' layout_qualifier -- don't consume anything, the presense of the
+ -- layout_qualifier will determine that 'shared' token was encountered
+ | 'shared' /.$ba consumeToken(); $ea./
+
+reference_type_qualifier
+ ::= 'relaxed' /.$ba consumeToken(); $ea./
+ | 'strict' /.$ba consumeToken(); $ea./
+
+layout_qualifier
+ ::= '[' constant_expression ']'
+ /.$ba consumeLayoutQualifier(true, false); $ea./
+ | '[' '*' ']'
+ /.$ba consumeLayoutQualifier(false, true); $ea./
+ | '[' ']'
+ /.$ba consumeLayoutQualifier(false, false); $ea./
+
+
+
+-----------------------------------------------------------------------------------
+-- Statements
+-----------------------------------------------------------------------------------
+
+statement
+ ::= synchronization_statement
+
+synchronization_statement
+ ::= 'upc_notify' expression ';'
+ /.$ba consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, true); $ea./
+ | 'upc_notify' ';'
+ /.$ba consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, false); $ea./
+ | 'upc_wait' expression ';'
+ /.$ba consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, true); $ea./
+ | 'upc_wait' ';'
+ /.$ba consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, false); $ea./
+ | 'upc_barrier' expression ';'
+ /.$ba consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, true); $ea./
+ | 'upc_barrier' ';'
+ /.$ba consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, false); $ea./
+ | 'upc_fence' ';'
+ /.$ba consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_fence, false); $ea./
+
+
+iteration_statement
+ ::= 'upc_forall' '(' expression ';' expression ';' expression ';' affinity ')' statement
+ /.$ba consumeStatementUPCForallLoop(true, true, true, true); $ea./
+
+ | 'upc_forall' '(' expression ';' expression ';' expression ';' ')' statement
+ /.$ba consumeStatementUPCForallLoop(true, true, true, false); $ea./
+
+ | 'upc_forall' '(' expression ';' expression ';' ';' affinity ')' statement
+ /.$ba consumeStatementUPCForallLoop(true, true, false, true); $ea./
+
+ | 'upc_forall' '(' expression ';' expression ';' ';' ')' statement
+ /.$ba consumeStatementUPCForallLoop(true, true, false, false); $ea./
+
+ | 'upc_forall' '(' expression ';' ';' expression ';' affinity ')' statement
+ /.$ba consumeStatementUPCForallLoop(true, false, true, true); $ea./
+
+ | 'upc_forall' '(' expression ';' ';' expression ';' ')' statement
+ /.$ba consumeStatementUPCForallLoop(true, false, true, false); $ea./
+
+ | 'upc_forall' '(' expression ';' ';' ';' affinity ')' statement
+ /.$ba consumeStatementUPCForallLoop(true, false, false, true); $ea./
+
+ | 'upc_forall' '(' expression ';' ';' ';' ')' statement
+ /.$ba consumeStatementUPCForallLoop(true, false, false, false); $ea./
+
+ | 'upc_forall' '(' ';' expression ';' expression ';' affinity ')' statement
+ /.$ba consumeStatementUPCForallLoop(false, true, true, true); $ea./
+
+ | 'upc_forall' '(' ';' expression ';' expression ';' ')' statement
+ /.$ba consumeStatementUPCForallLoop(false, true, true, false); $ea./
+
+ | 'upc_forall' '(' ';' expression ';' ';' affinity ')' statement
+ /.$ba consumeStatementUPCForallLoop(false, true, false, true); $ea./
+
+ | 'upc_forall' '(' ';' expression ';' ';' ')' statement
+ /.$ba consumeStatementUPCForallLoop(false, true, false, false); $ea./
+
+ | 'upc_forall' '(' ';' ';' expression ';' affinity ')' statement
+ /.$ba consumeStatementUPCForallLoop(false, false, true, true); $ea./
+
+ | 'upc_forall' '(' ';' ';' expression ';' ')' statement
+ /.$ba consumeStatementUPCForallLoop(false, false, true, false); $ea./
+
+ | 'upc_forall' '(' ';' ';' ';' affinity ')' statement
+ /.$ba consumeStatementUPCForallLoop(false, false, false, true); $ea./
+
+ | 'upc_forall' '(' ';' ';' ';' ')' statement
+ /.$ba consumeStatementUPCForallLoop(false, false, false, false); $ea./
+
+ | 'upc_forall' '(' declaration expression ';' expression ';' affinity ')' statement
+ /.$ba consumeStatementUPCForallLoop(true, true, true, true); $ea./
+
+ | 'upc_forall' '(' declaration expression ';' expression ';' ')' statement
+ /.$ba consumeStatementUPCForallLoop(true, true, true, false); $ea./
+
+ | 'upc_forall' '(' declaration expression ';' ';' affinity ')' statement
+ /.$ba consumeStatementUPCForallLoop(true, true, false, true); $ea./
+
+ | 'upc_forall' '(' declaration expression ';' ';' ')' statement
+ /.$ba consumeStatementUPCForallLoop(true, true, false, false); $ea./
+
+ | 'upc_forall' '(' declaration ';' expression ';' affinity ')' statement
+ /.$ba consumeStatementUPCForallLoop(true, false, true, true); $ea./
+
+ | 'upc_forall' '(' declaration ';' expression ';' ')' statement
+ /.$ba consumeStatementUPCForallLoop(true, false, true, false); $ea./
+
+ | 'upc_forall' '(' declaration ';' ';' affinity ')' statement
+ /.$ba consumeStatementUPCForallLoop(true, false, false, true); $ea./
+
+ | 'upc_forall' '(' declaration ';' ';' ')' statement
+ /.$ba consumeStatementUPCForallLoop(true, false, false, false); $ea./
+
+affinity
+ ::= expression
+ | 'continue'
+ /.$ba consumeToken(); $ea./
+
+$End
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java
new file mode 100644
index 00000000000..4a78b456a8b
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java
@@ -0,0 +1,1698 @@
+/*******************************************************************************
+* Copyright (c) 2006, 2007 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.dom.parser.upc;
+
+import lpg.lpgjavaruntime.*;
+
+import java.util.*;
+
+import org.eclipse.cdt.core.dom.ast.*;
+import org.eclipse.cdt.core.dom.c99.IParserActionTokenProvider;
+import org.eclipse.cdt.core.dom.c99.IParser;
+import org.eclipse.cdt.core.dom.c99.IParseResult;
+import org.eclipse.cdt.core.dom.parser.c99.C99ParseResult;
+import org.eclipse.cdt.core.dom.parser.c99.C99ParserAction;
+import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
+import org.eclipse.cdt.core.dom.c99.IKeywordMap;
+import org.eclipse.cdt.core.dom.parser.c99.C99KeywordMap;
+
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSizeofExpression;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
+import org.eclipse.cdt.internal.core.dom.parser.c99.C99Lexer;
+import org.eclipse.cdt.internal.core.dom.parser.c99.C99Parsersym;
+import org.eclipse.cdt.core.dom.parser.upc.UPCKeywordMap;
+import org.eclipse.cdt.core.dom.parser.upc.UPCParserAction;
+
+public class UPCParser extends PrsStream implements RuleAction , IParserActionTokenProvider, IParser
+{
+ private static ParseTable prs = new UPCParserprs();
+ private BacktrackingParser btParser;
+
+ public BacktrackingParser 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 UPCParser(LexStream lexStream)
+ {
+ super(lexStream);
+
+ try
+ {
+ super.remapTerminalSymbols(orderedTerminalSymbols(), UPCParserprs.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):");//$NON-NLS-1$
+ for (int i = 0; i < unimplemented_symbols.size(); i++)
+ {
+ Integer id = (Integer) unimplemented_symbols.get(i);
+ System.out.println(" " + UPCParsersym.orderedTerminalSymbols[id.intValue()]); //$NON-NLS-1$
+ }
+ System.out.println();
+ }
+ catch(UndefinedEofSymbolException e)
+ {
+ throw new Error(new UndefinedEofSymbolException
+ ("The Lexer does not implement the Eof symbol " +//$NON-NLS-1$
+ UPCParsersym.orderedTerminalSymbols[UPCParserprs.EOFT_SYMBOL]));
+ }
+ }
+
+ public String[] orderedTerminalSymbols() { return UPCParsersym.orderedTerminalSymbols; }
+ public String getTokenKindName(int kind) { return UPCParsersym.orderedTerminalSymbols[kind]; }
+ public int getEOFTokenKind() { return UPCParserprs.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() + ':' +//$NON-NLS-1$
+ (firsttok > lasttok
+ ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))//$NON-NLS-1$
+ : (super.getLine(error_token) + ":" +//$NON-NLS-1$
+ super.getColumn(error_token) + ":" +//$NON-NLS-1$
+ super.getEndLine(error_token) + ":" +//$NON-NLS-1$
+ super.getEndColumn(error_token)))
+ + ": ";//$NON-NLS-1$
+ super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE), location, msg);
+ }
+
+ public Object parser()
+ {
+ return parser(null, 0);
+ }
+
+ public Object parser(Monitor monitor)
+ {
+ return parser(monitor, 0);
+ }
+
+ public Object parser(int error_repair_count)
+ {
+ return parser(null, error_repair_count);
+ }
+
+ public Object parser(Monitor monitor, int error_repair_count)
+ {
+ try
+ {
+ btParser = new BacktrackingParser(monitor, (TokenStream) this, prs, (RuleAction) this);
+ }
+ catch (NotBacktrackParseTableException e)
+ {
+ throw new Error(new NotBacktrackParseTableException
+ ("Regenerate UPCParserprs.java with -BACKTRACK option"));//$NON-NLS-1$
+ }
+ catch (BadParseSymFileException e)
+ {
+ throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- UPCParsersym.java"));//$NON-NLS-1$
+ }
+
+ try
+ {
+ return (Object) 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);
+ }
+
+ return null;
+ }
+
+
+private UPCParserAction action = new UPCParserAction (this, UPCParserprs.orderedTerminalSymbols);
+private IKeywordMap keywordMap = new UPCKeywordMap ();
+private List commentTokens = new ArrayList();
+
+public UPCParser() { // constructor
+ this(new C99Lexer() {
+ // used by mapKind() to map C99 token kinds to the token kinds of a parser that extends this one
+ public String[] orderedExportedSymbols() {
+ return C99Parsersym.orderedTerminalSymbols;
+ }
+ });
+}
+
+public void addToken(IToken token) {
+ int newKind = mapKind(token.getKind());
+ if(newKind == UPCParserprs.TK_identifier) {
+ Integer keywordKind = keywordMap.getKeywordKind(token.toString());
+ if(keywordKind != null) {
+ newKind = keywordKind.intValue();
+ }
+ }
+ token.setKind(newKind);
+ super.addToken(token);
+}
+
+public void addCommentToken(IToken token) {
+ commentTokens.add(token);
+}
+
+public List getCommentTokens() {
+ return commentTokens;
+}
+
+public IParseResult parse() {
+ // this has to be done, or... kaboom!
+ setStreamLength(getSize());
+ // do the actual parsing, -1 means full error handling
+ parser(null, -1);
+
+ IASTTranslationUnit tu = action.getAST();
+ boolean encounteredError = action.encounteredError();
+ IASTCompletionNode compNode = action.getASTCompletionNode();
+
+ return new C99ParseResult(tu, compNode, encounteredError);
+}
+
+
+// implements IParserActionTokenProvider.getEOFToken()
+public IToken getEOFToken() {
+ List tokens = getTokens();
+ IToken eof = (IToken) tokens.get(tokens.size() - 1);
+ return eof;
+}
+
+
+// implements IParserActionTokenProvider.getRuleTokenCount()
+public int getRuleTokenCount() {
+ return (getRightSpan() - getLeftSpan()) + 1;
+}
+
+public List getRuleTokens() {
+ return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1));
+}
+
+
+ public void ruleAction(int ruleNumber)
+ {
+ switch (ruleNumber)
+ {
+
+ //
+ // Rule 1: <openscope> ::= $Empty
+ //
+ case 1: { action.beforeConsume(); action. openASTScope(); break;
+ }
+
+ //
+ // Rule 12: constant ::= integer
+ //
+ case 12: { action.beforeConsume(); action. consumeExpressionConstant(IASTLiteralExpression.lk_integer_constant); break;
+ }
+
+ //
+ // Rule 13: constant ::= floating
+ //
+ case 13: { action.beforeConsume(); action. consumeExpressionConstant(IASTLiteralExpression.lk_float_constant); break;
+ }
+
+ //
+ // Rule 14: constant ::= charconst
+ //
+ case 14: { action.beforeConsume(); action. consumeExpressionConstant(IASTLiteralExpression.lk_char_constant); break;
+ }
+
+ //
+ // Rule 15: constant ::= stringlit
+ //
+ case 15: { action.beforeConsume(); action. consumeExpressionConstant(IASTLiteralExpression.lk_string_literal); break;
+ }
+
+ //
+ // Rule 17: primary_expression ::= ident
+ //
+ case 17: { action.beforeConsume(); action. consumeExpressionID(); break;
+ }
+
+ //
+ // Rule 18: primary_expression ::= ( expression )
+ //
+ case 18: { action.beforeConsume(); action. consumeExpressionBracketed(); break;
+ }
+
+ //
+ // Rule 20: postfix_expression ::= postfix_expression [ expression ]
+ //
+ case 20: { action.beforeConsume(); action. consumeExpressionArraySubscript(); break;
+ }
+
+ //
+ // Rule 21: postfix_expression ::= postfix_expression ( )
+ //
+ case 21: { action.beforeConsume(); action. consumeExpressionFunctionCall(false); break;
+ }
+
+ //
+ // Rule 22: postfix_expression ::= postfix_expression ( argument_expression_list )
+ //
+ case 22: { action.beforeConsume(); action. consumeExpressionFunctionCall(true); break;
+ }
+
+ //
+ // Rule 23: postfix_expression ::= postfix_expression . ident
+ //
+ case 23: { action.beforeConsume(); action. consumeExpressionFieldReference(false); break;
+ }
+
+ //
+ // Rule 24: postfix_expression ::= postfix_expression -> ident
+ //
+ case 24: { action.beforeConsume(); action. consumeExpressionFieldReference(true); break;
+ }
+
+ //
+ // Rule 25: postfix_expression ::= postfix_expression ++
+ //
+ case 25: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); break;
+ }
+
+ //
+ // Rule 26: postfix_expression ::= postfix_expression --
+ //
+ case 26: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); break;
+ }
+
+ //
+ // Rule 27: postfix_expression ::= ( type_name ) { <openscope> initializer_list }
+ //
+ case 27: { action.beforeConsume(); action. consumeExpressionTypeIdInitializer(); break;
+ }
+
+ //
+ // Rule 28: postfix_expression ::= ( type_name ) { <openscope> initializer_list , }
+ //
+ case 28: { action.beforeConsume(); action. consumeExpressionTypeIdInitializer(); break;
+ }
+
+ //
+ // Rule 29: argument_expression_list ::= assignment_expression
+ //
+ case 29: { action.beforeConsume(); action. consumeExpressionList(true); break;
+ }
+
+ //
+ // Rule 30: argument_expression_list ::= argument_expression_list , assignment_expression
+ //
+ case 30: { action.beforeConsume(); action. consumeExpressionList(false); break;
+ }
+
+ //
+ // Rule 32: unary_expression ::= ++ unary_expression
+ //
+ case 32: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); break;
+ }
+
+ //
+ // Rule 33: unary_expression ::= -- unary_expression
+ //
+ case 33: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); break;
+ }
+
+ //
+ // Rule 34: unary_expression ::= & cast_expression
+ //
+ case 34: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); break;
+ }
+
+ //
+ // Rule 35: unary_expression ::= * cast_expression
+ //
+ case 35: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); break;
+ }
+
+ //
+ // Rule 36: unary_expression ::= + cast_expression
+ //
+ case 36: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); break;
+ }
+
+ //
+ // Rule 37: unary_expression ::= - cast_expression
+ //
+ case 37: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); break;
+ }
+
+ //
+ // Rule 38: unary_expression ::= ~ cast_expression
+ //
+ case 38: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); break;
+ }
+
+ //
+ // Rule 39: unary_expression ::= ! cast_expression
+ //
+ case 39: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); break;
+ }
+
+ //
+ // Rule 40: unary_expression ::= sizeof unary_expression
+ //
+ case 40: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); break;
+ }
+
+ //
+ // Rule 41: unary_expression ::= sizeof ( type_name )
+ //
+ case 41: { action.beforeConsume(); action. consumeExpressionUnarySizeofTypeName(); break;
+ }
+
+ //
+ // Rule 43: cast_expression ::= ( type_name ) cast_expression
+ //
+ case 43: { action.beforeConsume(); action. consumeExpressionCast(); break;
+ }
+
+ //
+ // Rule 45: multiplicative_expression ::= multiplicative_expression * cast_expression
+ //
+ case 45: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply); break;
+ }
+
+ //
+ // Rule 46: multiplicative_expression ::= multiplicative_expression / cast_expression
+ //
+ case 46: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide); break;
+ }
+
+ //
+ // Rule 47: multiplicative_expression ::= multiplicative_expression % cast_expression
+ //
+ case 47: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo); break;
+ }
+
+ //
+ // Rule 49: additive_expression ::= additive_expression + multiplicative_expression
+ //
+ case 49: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus); break;
+ }
+
+ //
+ // Rule 50: additive_expression ::= additive_expression - multiplicative_expression
+ //
+ case 50: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus); break;
+ }
+
+ //
+ // Rule 52: shift_expression ::= shift_expression << additive_expression
+ //
+ case 52: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft); break;
+ }
+
+ //
+ // Rule 53: shift_expression ::= shift_expression >> additive_expression
+ //
+ case 53: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight); break;
+ }
+
+ //
+ // Rule 55: relational_expression ::= relational_expression < shift_expression
+ //
+ case 55: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan); break;
+ }
+
+ //
+ // Rule 56: relational_expression ::= relational_expression > shift_expression
+ //
+ case 56: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan); break;
+ }
+
+ //
+ // Rule 57: relational_expression ::= relational_expression <= shift_expression
+ //
+ case 57: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual); break;
+ }
+
+ //
+ // Rule 58: relational_expression ::= relational_expression >= shift_expression
+ //
+ case 58: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual); break;
+ }
+
+ //
+ // Rule 60: equality_expression ::= equality_expression == relational_expression
+ //
+ case 60: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals); break;
+ }
+
+ //
+ // Rule 61: equality_expression ::= equality_expression != relational_expression
+ //
+ case 61: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals); break;
+ }
+
+ //
+ // Rule 63: AND_expression ::= AND_expression & equality_expression
+ //
+ case 63: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd); break;
+ }
+
+ //
+ // Rule 65: exclusive_OR_expression ::= exclusive_OR_expression ^ AND_expression
+ //
+ case 65: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor); break;
+ }
+
+ //
+ // Rule 67: inclusive_OR_expression ::= inclusive_OR_expression | exclusive_OR_expression
+ //
+ case 67: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr); break;
+ }
+
+ //
+ // Rule 69: logical_AND_expression ::= logical_AND_expression && inclusive_OR_expression
+ //
+ case 69: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd); break;
+ }
+
+ //
+ // Rule 71: logical_OR_expression ::= logical_OR_expression || logical_AND_expression
+ //
+ case 71: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr); break;
+ }
+
+ //
+ // Rule 73: conditional_expression ::= logical_OR_expression ? expression : conditional_expression
+ //
+ case 73: { action.beforeConsume(); action. consumeExpressionConditional(); break;
+ }
+
+ //
+ // Rule 75: assignment_expression ::= unary_expression = assignment_expression
+ //
+ case 75: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break;
+ }
+
+ //
+ // Rule 76: assignment_expression ::= unary_expression *= assignment_expression
+ //
+ case 76: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign); break;
+ }
+
+ //
+ // Rule 77: assignment_expression ::= unary_expression /= assignment_expression
+ //
+ case 77: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign); break;
+ }
+
+ //
+ // Rule 78: assignment_expression ::= unary_expression %= assignment_expression
+ //
+ case 78: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign); break;
+ }
+
+ //
+ // Rule 79: assignment_expression ::= unary_expression += assignment_expression
+ //
+ case 79: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign); break;
+ }
+
+ //
+ // Rule 80: assignment_expression ::= unary_expression -= assignment_expression
+ //
+ case 80: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign); break;
+ }
+
+ //
+ // Rule 81: assignment_expression ::= unary_expression <<= assignment_expression
+ //
+ case 81: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign); break;
+ }
+
+ //
+ // Rule 82: assignment_expression ::= unary_expression >>= assignment_expression
+ //
+ case 82: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign); break;
+ }
+
+ //
+ // Rule 83: assignment_expression ::= unary_expression &= assignment_expression
+ //
+ case 83: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign); break;
+ }
+
+ //
+ // Rule 84: assignment_expression ::= unary_expression ^= assignment_expression
+ //
+ case 84: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign); break;
+ }
+
+ //
+ // Rule 85: assignment_expression ::= unary_expression |= assignment_expression
+ //
+ case 85: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign); break;
+ }
+
+ //
+ // Rule 86: expression_in_statement ::= expression_list
+ //
+ case 86: { action.beforeConsume(); action. consumeExpression(); break;
+ }
+
+ //
+ // Rule 87: expression ::= expression_list
+ //
+ case 87: { action.beforeConsume(); action. consumeExpression(); break;
+ }
+
+ //
+ // Rule 88: expression_list ::= assignment_expression
+ //
+ case 88: { action.beforeConsume(); action. consumeExpressionList(true); break;
+ }
+
+ //
+ // Rule 89: expression_list ::= expression_list , assignment_expression
+ //
+ case 89: { action.beforeConsume(); action. consumeExpressionList(false); break;
+ }
+
+ //
+ // Rule 97: statement ::= ERROR_TOKEN
+ //
+ case 97: { action.beforeConsume(); action. consumeStatementProblem(); break;
+ }
+
+ //
+ // Rule 98: labeled_statement ::= label_identifier : statement
+ //
+ case 98: { action.beforeConsume(); action. consumeStatementLabeled(); break;
+ }
+
+ //
+ // Rule 99: labeled_statement ::= case constant_expression : statement
+ //
+ case 99: { action.beforeConsume(); action. consumeStatementCase(); break;
+ }
+
+ //
+ // Rule 100: labeled_statement ::= default : statement
+ //
+ case 100: { action.beforeConsume(); action. consumeStatementDefault(); break;
+ }
+
+ //
+ // Rule 101: label_identifier ::= identifier
+ //
+ case 101: { action.beforeConsume(); action. consumeName(); break;
+ }
+
+ //
+ // Rule 102: compound_statement ::= { }
+ //
+ case 102: { action.beforeConsume(); action. consumeStatementEmptyCompoundStatement(); break;
+ }
+
+ //
+ // Rule 103: compound_statement ::= { <openscope> block_item_list }
+ //
+ case 103: { action.beforeConsume(); action. consumeStatementCompoundStatement(); break;
+ }
+
+ //
+ // Rule 107: block_item ::= declaration
+ //
+ case 107: { action.beforeConsume(); action. consumeStatementDeclaration(); break;
+ }
+
+ //
+ // Rule 108: expression_statement ::= ;
+ //
+ case 108: { action.beforeConsume(); action. consumeStatementNull(); break;
+ }
+
+ //
+ // Rule 109: expression_statement ::= expression_in_statement ;
+ //
+ case 109: { action.beforeConsume(); action. consumeStatementExpression(); break;
+ }
+
+ //
+ // Rule 110: selection_statement ::= if ( expression ) statement
+ //
+ case 110: { action.beforeConsume(); action. consumeStatementIfThen(); break;
+ }
+
+ //
+ // Rule 111: selection_statement ::= if ( expression ) statement else statement
+ //
+ case 111: { action.beforeConsume(); action. consumeStatementIfThenElse(); break;
+ }
+
+ //
+ // Rule 112: selection_statement ::= switch ( expression ) statement
+ //
+ case 112: { action.beforeConsume(); action. consumeStatementSwitch(); break;
+ }
+
+ //
+ // Rule 113: iteration_statement ::= do statement while ( expression ) ;
+ //
+ case 113: { action.beforeConsume(); action. consumeStatementDoLoop(); break;
+ }
+
+ //
+ // Rule 114: iteration_statement ::= while ( expression ) statement
+ //
+ case 114: { action.beforeConsume(); action. consumeStatementWhileLoop(); break;
+ }
+
+ //
+ // Rule 115: iteration_statement ::= for ( expression ; expression ; expression ) statement
+ //
+ case 115: { action.beforeConsume(); action. consumeStatementForLoop(true, true, true); break;
+ }
+
+ //
+ // Rule 116: iteration_statement ::= for ( expression ; expression ; ) statement
+ //
+ case 116: { action.beforeConsume(); action. consumeStatementForLoop(true, true, false); break;
+ }
+
+ //
+ // Rule 117: iteration_statement ::= for ( expression ; ; expression ) statement
+ //
+ case 117: { action.beforeConsume(); action. consumeStatementForLoop(true, false, true); break;
+ }
+
+ //
+ // Rule 118: iteration_statement ::= for ( expression ; ; ) statement
+ //
+ case 118: { action.beforeConsume(); action. consumeStatementForLoop(true, false, false); break;
+ }
+
+ //
+ // Rule 119: iteration_statement ::= for ( ; expression ; expression ) statement
+ //
+ case 119: { action.beforeConsume(); action. consumeStatementForLoop(false, true, true); break;
+ }
+
+ //
+ // Rule 120: iteration_statement ::= for ( ; expression ; ) statement
+ //
+ case 120: { action.beforeConsume(); action. consumeStatementForLoop(false, true, false); break;
+ }
+
+ //
+ // Rule 121: iteration_statement ::= for ( ; ; expression ) statement
+ //
+ case 121: { action.beforeConsume(); action. consumeStatementForLoop(false, false, true); break;
+ }
+
+ //
+ // Rule 122: iteration_statement ::= for ( ; ; ) statement
+ //
+ case 122: { action.beforeConsume(); action. consumeStatementForLoop(false, false, false); break;
+ }
+
+ //
+ // Rule 123: iteration_statement ::= for ( declaration expression ; expression ) statement
+ //
+ case 123: { action.beforeConsume(); action. consumeStatementForLoop(true, true, true); break;
+ }
+
+ //
+ // Rule 124: iteration_statement ::= for ( declaration expression ; ) statement
+ //
+ case 124: { action.beforeConsume(); action. consumeStatementForLoop(true, true, false); break;
+ }
+
+ //
+ // Rule 125: iteration_statement ::= for ( declaration ; expression ) statement
+ //
+ case 125: { action.beforeConsume(); action. consumeStatementForLoop(true, false, true); break;
+ }
+
+ //
+ // Rule 126: iteration_statement ::= for ( declaration ; ) statement
+ //
+ case 126: { action.beforeConsume(); action. consumeStatementForLoop(true, false, false); break;
+ }
+
+ //
+ // Rule 127: jump_statement ::= goto goto_identifier ;
+ //
+ case 127: { action.beforeConsume(); action. consumeStatementGoto(); break;
+ }
+
+ //
+ // Rule 128: jump_statement ::= continue ;
+ //
+ case 128: { action.beforeConsume(); action. consumeStatementContinue(); break;
+ }
+
+ //
+ // Rule 129: jump_statement ::= break ;
+ //
+ case 129: { action.beforeConsume(); action. consumeStatementBreak(); break;
+ }
+
+ //
+ // Rule 130: jump_statement ::= return ;
+ //
+ case 130: { action.beforeConsume(); action. consumeStatementReturn(false); break;
+ }
+
+ //
+ // Rule 131: jump_statement ::= return expression ;
+ //
+ case 131: { action.beforeConsume(); action. consumeStatementReturn(true); break;
+ }
+
+ //
+ // Rule 132: goto_identifier ::= identifier
+ //
+ case 132: { action.beforeConsume(); action. consumeName(); break;
+ }
+
+ //
+ // Rule 133: declaration ::= declaration_specifiers ;
+ //
+ case 133: { action.beforeConsume(); action. consumeDeclaration(false); break;
+ }
+
+ //
+ // Rule 134: declaration ::= declaration_specifiers <openscope> init_declarator_list ;
+ //
+ case 134: { action.beforeConsume(); action. consumeDeclaration(true); break;
+ }
+
+ //
+ // Rule 135: declaration_specifiers ::= <openscope> simple_declaration_specifiers
+ //
+ case 135: { action.beforeConsume(); action. consumeDeclarationSpecifiersSimple(); break;
+ }
+
+ //
+ // Rule 136: declaration_specifiers ::= <openscope> struct_or_union_declaration_specifiers
+ //
+ case 136: { action.beforeConsume(); action. consumeDeclarationSpecifiersStructUnionEnum(); break;
+ }
+
+ //
+ // Rule 137: declaration_specifiers ::= <openscope> enum_declaration_specifiers
+ //
+ case 137: { action.beforeConsume(); action. consumeDeclarationSpecifiersStructUnionEnum(); break;
+ }
+
+ //
+ // Rule 138: declaration_specifiers ::= <openscope> typdef_name_declaration_specifiers
+ //
+ case 138: { action.beforeConsume(); action. consumeDeclarationSpecifiersTypedefName(); break;
+ }
+
+ //
+ // Rule 165: init_declarator ::= declarator = initializer
+ //
+ case 165: { action.beforeConsume(); action. consumeDeclaratorWithInitializer(); break;
+ }
+
+ //
+ // Rule 166: storage_class_specifier ::= typedef
+ //
+ case 166: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 167: storage_class_specifier ::= extern
+ //
+ case 167: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 168: storage_class_specifier ::= static
+ //
+ case 168: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 169: storage_class_specifier ::= auto
+ //
+ case 169: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 170: storage_class_specifier ::= register
+ //
+ case 170: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 171: type_specifier ::= void
+ //
+ case 171: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 172: type_specifier ::= char
+ //
+ case 172: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 173: type_specifier ::= short
+ //
+ case 173: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 174: type_specifier ::= int
+ //
+ case 174: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 175: type_specifier ::= long
+ //
+ case 175: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 176: type_specifier ::= float
+ //
+ case 176: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 177: type_specifier ::= double
+ //
+ case 177: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 178: type_specifier ::= signed
+ //
+ case 178: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 179: type_specifier ::= unsigned
+ //
+ case 179: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 180: type_specifier ::= _Bool
+ //
+ case 180: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 181: type_specifier ::= _Complex
+ //
+ case 181: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 182: type_specifier ::= _Imaginary
+ //
+ case 182: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 183: typedef_name ::= ident
+ //
+ case 183: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 184: struct_or_union_specifier ::= struct { <openscope> struct_declaration_list_opt }
+ //
+ case 184: { action.beforeConsume(); action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_struct); break;
+ }
+
+ //
+ // Rule 185: struct_or_union_specifier ::= union { <openscope> struct_declaration_list_opt }
+ //
+ case 185: { action.beforeConsume(); action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_union); break;
+ }
+
+ //
+ // Rule 186: struct_or_union_specifier ::= struct struct_or_union_identifier { <openscope> struct_declaration_list_opt }
+ //
+ case 186: { action.beforeConsume(); action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_struct); break;
+ }
+
+ //
+ // Rule 187: struct_or_union_specifier ::= union struct_or_union_identifier { <openscope> struct_declaration_list_opt }
+ //
+ case 187: { action.beforeConsume(); action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_union); break;
+ }
+
+ //
+ // Rule 188: struct_or_union_specifier ::= struct struct_or_union_identifier
+ //
+ case 188: { action.beforeConsume(); action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_struct); break;
+ }
+
+ //
+ // Rule 189: struct_or_union_specifier ::= union struct_or_union_identifier
+ //
+ case 189: { action.beforeConsume(); action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_union); break;
+ }
+
+ //
+ // Rule 190: struct_or_union_identifier ::= identifier
+ //
+ case 190: { action.beforeConsume(); action. consumeName(); break;
+ }
+
+ //
+ // Rule 195: struct_declaration ::= specifier_qualifier_list <openscope> struct_declarator_list ;
+ //
+ case 195: { action.beforeConsume(); action. consumeStructDeclaration(true); break;
+ }
+
+ //
+ // Rule 196: struct_declaration ::= specifier_qualifier_list ;
+ //
+ case 196: { action.beforeConsume(); action. consumeStructDeclaration(false); break;
+ }
+
+ //
+ // Rule 201: struct_declarator ::= : constant_expression
+ //
+ case 201: { action.beforeConsume(); action. consumeStructBitField(false); break;
+ }
+
+ //
+ // Rule 202: struct_declarator ::= declarator : constant_expression
+ //
+ case 202: { action.beforeConsume(); action. consumeStructBitField(true); break;
+ }
+
+ //
+ // Rule 203: enum_identifier ::= identifier
+ //
+ case 203: { action.beforeConsume(); action. consumeName(); break;
+ }
+
+ //
+ // Rule 204: enum_specifier ::= enum { <openscope> enumerator_list_opt }
+ //
+ case 204: { action.beforeConsume(); action. consumeTypeSpecifierEnumeration(false); break;
+ }
+
+ //
+ // Rule 205: enum_specifier ::= enum enum_identifier { <openscope> enumerator_list_opt }
+ //
+ case 205: { action.beforeConsume(); action. consumeTypeSpecifierEnumeration(true); break;
+ }
+
+ //
+ // Rule 206: enum_specifier ::= enum { <openscope> enumerator_list_opt , }
+ //
+ case 206: { action.beforeConsume(); action. consumeTypeSpecifierEnumeration(false); break;
+ }
+
+ //
+ // Rule 207: enum_specifier ::= enum enum_identifier { <openscope> enumerator_list_opt , }
+ //
+ case 207: { action.beforeConsume(); action. consumeTypeSpecifierEnumeration(true); break;
+ }
+
+ //
+ // Rule 208: enum_specifier ::= enum enum_identifier
+ //
+ case 208: { action.beforeConsume(); action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); break;
+ }
+
+ //
+ // Rule 213: enumerator ::= enum_identifier
+ //
+ case 213: { action.beforeConsume(); action. consumeEnumerator(false); break;
+ }
+
+ //
+ // Rule 214: enumerator ::= enum_identifier = constant_expression
+ //
+ case 214: { action.beforeConsume(); action. consumeEnumerator(true); break;
+ }
+
+ //
+ // Rule 215: type_qualifier ::= const
+ //
+ case 215: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 216: type_qualifier ::= restrict
+ //
+ case 216: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 217: type_qualifier ::= volatile
+ //
+ case 217: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 218: function_specifier ::= inline
+ //
+ case 218: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 220: declarator ::= <openscope> pointer direct_declarator
+ //
+ case 220: { action.beforeConsume(); action. consumeDeclaratorWithPointer(true); break;
+ }
+
+ //
+ // Rule 221: direct_declarator ::= identifier
+ //
+ case 221: { action.beforeConsume(); action. consumeDirectDeclaratorIdentifier(); break;
+ }
+
+ //
+ // Rule 222: direct_declarator ::= ( declarator )
+ //
+ case 222: { action.beforeConsume(); action. consumeDirectDeclaratorBracketed(); break;
+ }
+
+ //
+ // Rule 225: array_direct_declarator ::= direct_declarator array_modifier
+ //
+ case 225: { action.beforeConsume(); action. consumeDirectDeclaratorArrayDeclarator(); break;
+ }
+
+ //
+ // Rule 226: function_direct_declarator ::= direct_declarator ( <openscope> parameter_type_list )
+ //
+ case 226: { action.beforeConsume(); action. consumeDirectDeclaratorFunctionDeclarator(true); break;
+ }
+
+ //
+ // Rule 227: function_direct_declarator ::= direct_declarator ( )
+ //
+ case 227: { action.beforeConsume(); action. consumeDirectDeclaratorFunctionDeclarator(false); break;
+ }
+
+ //
+ // Rule 229: function_declarator ::= <openscope> pointer function_direct_declarator
+ //
+ case 229: { action.beforeConsume(); action. consumeDeclaratorWithPointer(true); break;
+ }
+
+ //
+ // Rule 230: knr_direct_declarator ::= direct_declarator ( <openscope> identifier_list )
+ //
+ case 230: { action.beforeConsume(); action. consumeDirectDeclaratorFunctionDeclaratorKnR(); break;
+ }
+
+ //
+ // Rule 232: knr_function_declarator ::= <openscope> pointer knr_direct_declarator
+ //
+ case 232: { action.beforeConsume(); action. consumeDeclaratorWithPointer(true); break;
+ }
+
+ //
+ // Rule 233: array_modifier ::= [ ]
+ //
+ case 233: { action.beforeConsume(); action. consumeDirectDeclaratorArrayModifier(false); break;
+ }
+
+ //
+ // Rule 234: array_modifier ::= [ <openscope> type_qualifier_list ]
+ //
+ case 234: { action.beforeConsume(); action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break;
+ }
+
+ //
+ // Rule 235: array_modifier ::= [ assignment_expression ]
+ //
+ case 235: { action.beforeConsume(); action. consumeDirectDeclaratorArrayModifier(true ); break;
+ }
+
+ //
+ // Rule 236: array_modifier ::= [ <openscope> type_qualifier_list assignment_expression ]
+ //
+ case 236: { action.beforeConsume(); action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true ); break;
+ }
+
+ //
+ // Rule 237: array_modifier ::= [ static assignment_expression ]
+ //
+ case 237: { action.beforeConsume(); action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true ); break;
+ }
+
+ //
+ // Rule 238: array_modifier ::= [ static <openscope> type_qualifier_list assignment_expression ]
+ //
+ case 238: { action.beforeConsume(); action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true ); break;
+ }
+
+ //
+ // Rule 239: array_modifier ::= [ <openscope> type_qualifier_list static assignment_expression ]
+ //
+ case 239: { action.beforeConsume(); action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true ); break;
+ }
+
+ //
+ // Rule 240: array_modifier ::= [ * ]
+ //
+ case 240: { action.beforeConsume(); action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break;
+ }
+
+ //
+ // Rule 241: array_modifier ::= [ <openscope> type_qualifier_list * ]
+ //
+ case 241: { action.beforeConsume(); action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break;
+ }
+
+ //
+ // Rule 242: pointer ::= *
+ //
+ case 242: { action.beforeConsume(); action. consumePointer(); break;
+ }
+
+ //
+ // Rule 243: pointer ::= pointer *
+ //
+ case 243: { action.beforeConsume(); action. consumePointer(); break;
+ }
+
+ //
+ // Rule 244: pointer ::= * <openscope> type_qualifier_list
+ //
+ case 244: { action.beforeConsume(); action. consumePointerTypeQualifierList(); break;
+ }
+
+ //
+ // Rule 245: pointer ::= pointer * <openscope> type_qualifier_list
+ //
+ case 245: { action.beforeConsume(); action. consumePointerTypeQualifierList(); break;
+ }
+
+ //
+ // Rule 253: parameter_declaration ::= declaration_specifiers init_declarator
+ //
+ case 253: { action.beforeConsume(); action. consumeParameterDeclaration(true); break;
+ }
+
+ //
+ // Rule 254: parameter_declaration ::= declaration_specifiers
+ //
+ case 254: { action.beforeConsume(); action. consumeParameterDeclaration(false); break;
+ }
+
+ //
+ // Rule 255: parameter_declaration ::= declaration_specifiers abstract_declarator
+ //
+ case 255: { action.beforeConsume(); action. consumeParameterDeclaration(true); break;
+ }
+
+ //
+ // Rule 256: identifier_list ::= identifier
+ //
+ case 256: { action.beforeConsume(); action. consumeName(); break;
+ }
+
+ //
+ // Rule 257: identifier_list ::= identifier_list , identifier
+ //
+ case 257: { action.beforeConsume(); action. consumeName(); break;
+ }
+
+ //
+ // Rule 258: type_name ::= specifier_qualifier_list
+ //
+ case 258: { action.beforeConsume(); action. consumeTypeId(false); break;
+ }
+
+ //
+ // Rule 259: type_name ::= specifier_qualifier_list abstract_declarator
+ //
+ case 259: { action.beforeConsume(); action. consumeTypeId(true); break;
+ }
+
+ //
+ // Rule 260: abstract_declarator ::= <openscope> pointer
+ //
+ case 260: { action.beforeConsume(); action. consumeDeclaratorWithPointer(false); break;
+ }
+
+ //
+ // Rule 262: abstract_declarator ::= <openscope> pointer direct_abstract_declarator
+ //
+ case 262: { action.beforeConsume(); action. consumeDeclaratorWithPointer(true); break;
+ }
+
+ //
+ // Rule 263: direct_abstract_declarator ::= ( abstract_declarator )
+ //
+ case 263: { action.beforeConsume(); action. consumeDirectDeclaratorBracketed(); break;
+ }
+
+ //
+ // Rule 264: direct_abstract_declarator ::= array_modifier
+ //
+ case 264: { action.beforeConsume(); action. consumeAbstractDeclaratorArrayModifier(false); break;
+ }
+
+ //
+ // Rule 265: direct_abstract_declarator ::= direct_abstract_declarator array_modifier
+ //
+ case 265: { action.beforeConsume(); action. consumeAbstractDeclaratorArrayModifier(true); break;
+ }
+
+ //
+ // Rule 266: direct_abstract_declarator ::= ( )
+ //
+ case 266: { action.beforeConsume(); action. consumeAbstractDeclaratorFunctionDeclarator(false, false); break;
+ }
+
+ //
+ // Rule 267: direct_abstract_declarator ::= direct_abstract_declarator ( )
+ //
+ case 267: { action.beforeConsume(); action. consumeAbstractDeclaratorFunctionDeclarator(true, false); break;
+ }
+
+ //
+ // Rule 268: direct_abstract_declarator ::= ( <openscope> parameter_type_list )
+ //
+ case 268: { action.beforeConsume(); action. consumeAbstractDeclaratorFunctionDeclarator(false, true); break;
+ }
+
+ //
+ // Rule 269: direct_abstract_declarator ::= direct_abstract_declarator ( <openscope> parameter_type_list )
+ //
+ case 269: { action.beforeConsume(); action. consumeAbstractDeclaratorFunctionDeclarator(true, true); break;
+ }
+
+ //
+ // Rule 270: initializer ::= assignment_expression
+ //
+ case 270: { action.beforeConsume(); action. consumeInitializer(); break;
+ }
+
+ //
+ // Rule 271: initializer ::= { <openscope> initializer_list }
+ //
+ case 271: { action.beforeConsume(); action. consumeInitializerList(); break;
+ }
+
+ //
+ // Rule 272: initializer ::= { <openscope> initializer_list , }
+ //
+ case 272: { action.beforeConsume(); action. consumeInitializerList(); break;
+ }
+
+ //
+ // Rule 277: designated_initializer ::= <openscope> designation initializer
+ //
+ case 277: { action.beforeConsume(); action. consumeInitializerDesignated(); break;
+ }
+
+ //
+ // Rule 281: designator ::= [ constant_expression ]
+ //
+ case 281: { action.beforeConsume(); action. consumeDesignatorArrayDesignator(); break;
+ }
+
+ //
+ // Rule 282: designator ::= . identifier
+ //
+ case 282: { action.beforeConsume(); action. consumeDesignatorFieldDesignator(); break;
+ }
+
+ //
+ // Rule 283: translation_unit ::= external_declaration_list
+ //
+ case 283: { action.beforeConsume(); action. consumeTranslationUnit(); break;
+ }
+
+ //
+ // Rule 284: translation_unit ::= $Empty
+ //
+ case 284: { action.beforeConsume(); action. consumeTranslationUnit(); break;
+ }
+
+ //
+ // Rule 289: external_declaration ::= ;
+ //
+ case 289: { action.beforeConsume(); action. consumeDeclarationEmpty(); break;
+ }
+
+ //
+ // Rule 290: external_declaration ::= ERROR_TOKEN
+ //
+ case 290: { action.beforeConsume(); action. consumeDeclarationProblem(); break;
+ }
+
+ //
+ // Rule 291: function_definition ::= declaration_specifiers <openscope> function_declarator compound_statement
+ //
+ case 291: { action.beforeConsume(); action. consumeFunctionDefinition(); break;
+ }
+
+ //
+ // Rule 292: function_definition ::= declaration_specifiers <openscope> knr_function_declarator <openscope> declaration_list compound_statement
+ //
+ case 292: { action.beforeConsume(); action. consumeFunctionDefinitionKnR(); break;
+ }
+
+ //
+ // Rule 295: constant ::= MYTHREAD
+ //
+ case 295: { action.beforeConsume(); action. consumeKeywordExpression(IUPCASTKeywordExpression.kw_mythread); break;
+ }
+
+ //
+ // Rule 296: constant ::= THREADS
+ //
+ case 296: { action.beforeConsume(); action. consumeKeywordExpression(IUPCASTKeywordExpression.kw_threads); break;
+ }
+
+ //
+ // Rule 297: constant ::= UPC_MAX_BLOCKSIZE
+ //
+ case 297: { action.beforeConsume(); action. consumeKeywordExpression(IUPCASTKeywordExpression.kw_upc_max_block_size); break;
+ }
+
+ //
+ // Rule 298: unary_expression ::= upc_localsizeof unary_expression
+ //
+ case 298: { action.beforeConsume(); action. consumeExpressionUpcSizeofOperator(IUPCASTSizeofExpression.op_upc_localsizeof); break;
+ }
+
+ //
+ // Rule 299: unary_expression ::= upc_localsizeof ( type_name )
+ //
+ case 299: { action.beforeConsume(); action. consumeExpressionUpcSizeofTypeName(IUPCASTSizeofExpression.op_upc_localsizeof); break;
+ }
+
+ //
+ // Rule 300: unary_expression ::= upc_blocksizeof unary_expression
+ //
+ case 300: { action.beforeConsume(); action. consumeExpressionUpcSizeofOperator(IUPCASTSizeofExpression.op_upc_blocksizeof); break;
+ }
+
+ //
+ // Rule 301: unary_expression ::= upc_blocksizeof ( type_name )
+ //
+ case 301: { action.beforeConsume(); action. consumeExpressionUpcSizeofTypeName(IUPCASTSizeofExpression.op_upc_blocksizeof); break;
+ }
+
+ //
+ // Rule 302: unary_expression ::= upc_elemsizeof unary_expression
+ //
+ case 302: { action.beforeConsume(); action. consumeExpressionUpcSizeofOperator(IUPCASTSizeofExpression.op_upc_elemsizeof); break;
+ }
+
+ //
+ // Rule 303: unary_expression ::= upc_elemsizeof ( type_name )
+ //
+ case 303: { action.beforeConsume(); action. consumeExpressionUpcSizeofTypeName(IUPCASTSizeofExpression.op_upc_elemsizeof); break;
+ }
+
+ //
+ // Rule 307: shared_type_qualifier ::= shared
+ //
+ case 307: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 308: reference_type_qualifier ::= relaxed
+ //
+ case 308: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 309: reference_type_qualifier ::= strict
+ //
+ case 309: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+ //
+ // Rule 310: layout_qualifier ::= [ constant_expression ]
+ //
+ case 310: { action.beforeConsume(); action. consumeLayoutQualifier(true, false); break;
+ }
+
+ //
+ // Rule 311: layout_qualifier ::= [ * ]
+ //
+ case 311: { action.beforeConsume(); action. consumeLayoutQualifier(false, true); break;
+ }
+
+ //
+ // Rule 312: layout_qualifier ::= [ ]
+ //
+ case 312: { action.beforeConsume(); action. consumeLayoutQualifier(false, false); break;
+ }
+
+ //
+ // Rule 314: synchronization_statement ::= upc_notify expression ;
+ //
+ case 314: { action.beforeConsume(); action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, true); break;
+ }
+
+ //
+ // Rule 315: synchronization_statement ::= upc_notify ;
+ //
+ case 315: { action.beforeConsume(); action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, false); break;
+ }
+
+ //
+ // Rule 316: synchronization_statement ::= upc_wait expression ;
+ //
+ case 316: { action.beforeConsume(); action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, true); break;
+ }
+
+ //
+ // Rule 317: synchronization_statement ::= upc_wait ;
+ //
+ case 317: { action.beforeConsume(); action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, false); break;
+ }
+
+ //
+ // Rule 318: synchronization_statement ::= upc_barrier expression ;
+ //
+ case 318: { action.beforeConsume(); action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, true); break;
+ }
+
+ //
+ // Rule 319: synchronization_statement ::= upc_barrier ;
+ //
+ case 319: { action.beforeConsume(); action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, false); break;
+ }
+
+ //
+ // Rule 320: synchronization_statement ::= upc_fence ;
+ //
+ case 320: { action.beforeConsume(); action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_fence, false); break;
+ }
+
+ //
+ // Rule 321: iteration_statement ::= upc_forall ( expression ; expression ; expression ; affinity ) statement
+ //
+ case 321: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, true, true, true); break;
+ }
+
+ //
+ // Rule 322: iteration_statement ::= upc_forall ( expression ; expression ; expression ; ) statement
+ //
+ case 322: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, true, true, false); break;
+ }
+
+ //
+ // Rule 323: iteration_statement ::= upc_forall ( expression ; expression ; ; affinity ) statement
+ //
+ case 323: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, true, false, true); break;
+ }
+
+ //
+ // Rule 324: iteration_statement ::= upc_forall ( expression ; expression ; ; ) statement
+ //
+ case 324: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, true, false, false); break;
+ }
+
+ //
+ // Rule 325: iteration_statement ::= upc_forall ( expression ; ; expression ; affinity ) statement
+ //
+ case 325: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, false, true, true); break;
+ }
+
+ //
+ // Rule 326: iteration_statement ::= upc_forall ( expression ; ; expression ; ) statement
+ //
+ case 326: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, false, true, false); break;
+ }
+
+ //
+ // Rule 327: iteration_statement ::= upc_forall ( expression ; ; ; affinity ) statement
+ //
+ case 327: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, false, false, true); break;
+ }
+
+ //
+ // Rule 328: iteration_statement ::= upc_forall ( expression ; ; ; ) statement
+ //
+ case 328: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, false, false, false); break;
+ }
+
+ //
+ // Rule 329: iteration_statement ::= upc_forall ( ; expression ; expression ; affinity ) statement
+ //
+ case 329: { action.beforeConsume(); action. consumeStatementUPCForallLoop(false, true, true, true); break;
+ }
+
+ //
+ // Rule 330: iteration_statement ::= upc_forall ( ; expression ; expression ; ) statement
+ //
+ case 330: { action.beforeConsume(); action. consumeStatementUPCForallLoop(false, true, true, false); break;
+ }
+
+ //
+ // Rule 331: iteration_statement ::= upc_forall ( ; expression ; ; affinity ) statement
+ //
+ case 331: { action.beforeConsume(); action. consumeStatementUPCForallLoop(false, true, false, true); break;
+ }
+
+ //
+ // Rule 332: iteration_statement ::= upc_forall ( ; expression ; ; ) statement
+ //
+ case 332: { action.beforeConsume(); action. consumeStatementUPCForallLoop(false, true, false, false); break;
+ }
+
+ //
+ // Rule 333: iteration_statement ::= upc_forall ( ; ; expression ; affinity ) statement
+ //
+ case 333: { action.beforeConsume(); action. consumeStatementUPCForallLoop(false, false, true, true); break;
+ }
+
+ //
+ // Rule 334: iteration_statement ::= upc_forall ( ; ; expression ; ) statement
+ //
+ case 334: { action.beforeConsume(); action. consumeStatementUPCForallLoop(false, false, true, false); break;
+ }
+
+ //
+ // Rule 335: iteration_statement ::= upc_forall ( ; ; ; affinity ) statement
+ //
+ case 335: { action.beforeConsume(); action. consumeStatementUPCForallLoop(false, false, false, true); break;
+ }
+
+ //
+ // Rule 336: iteration_statement ::= upc_forall ( ; ; ; ) statement
+ //
+ case 336: { action.beforeConsume(); action. consumeStatementUPCForallLoop(false, false, false, false); break;
+ }
+
+ //
+ // Rule 337: iteration_statement ::= upc_forall ( declaration expression ; expression ; affinity ) statement
+ //
+ case 337: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, true, true, true); break;
+ }
+
+ //
+ // Rule 338: iteration_statement ::= upc_forall ( declaration expression ; expression ; ) statement
+ //
+ case 338: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, true, true, false); break;
+ }
+
+ //
+ // Rule 339: iteration_statement ::= upc_forall ( declaration expression ; ; affinity ) statement
+ //
+ case 339: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, true, false, true); break;
+ }
+
+ //
+ // Rule 340: iteration_statement ::= upc_forall ( declaration expression ; ; ) statement
+ //
+ case 340: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, true, false, false); break;
+ }
+
+ //
+ // Rule 341: iteration_statement ::= upc_forall ( declaration ; expression ; affinity ) statement
+ //
+ case 341: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, false, true, true); break;
+ }
+
+ //
+ // Rule 342: iteration_statement ::= upc_forall ( declaration ; expression ; ) statement
+ //
+ case 342: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, false, true, false); break;
+ }
+
+ //
+ // Rule 343: iteration_statement ::= upc_forall ( declaration ; ; affinity ) statement
+ //
+ case 343: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, false, false, true); break;
+ }
+
+ //
+ // Rule 344: iteration_statement ::= upc_forall ( declaration ; ; ) statement
+ //
+ case 344: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, false, false, false); break;
+ }
+
+ //
+ // Rule 346: affinity ::= continue
+ //
+ case 346: { action.beforeConsume(); action. consumeToken(); break;
+ }
+
+
+ default:
+ break;
+ }
+ return;
+ }
+}
+
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParserprs.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParserprs.java
new file mode 100644
index 00000000000..48a117f6539
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParserprs.java
@@ -0,0 +1,2025 @@
+/*******************************************************************************
+* Copyright (c) 2006, 2007 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.dom.parser.upc;
+
+public class UPCParserprs implements lpg.lpgjavaruntime.ParseTable, UPCParsersym {
+
+ 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
+ };
+ };
+ 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,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,3,1,4,
+ 3,4,3,3,2,2,7,8,1,3,
+ 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,1,3,1,
+ 1,1,1,1,1,1,1,3,4,3,
+ 1,2,4,1,2,1,1,1,2,5,
+ 7,5,7,5,9,8,8,7,8,7,
+ 7,6,8,7,7,6,3,2,2,2,
+ 3,1,2,4,2,2,2,2,1,2,
+ 1,2,1,2,3,2,1,1,2,3,
+ 2,2,1,3,2,2,1,3,2,2,
+ 1,1,3,1,3,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,5,5,6,6,2,2,1,
+ 1,0,1,2,4,2,1,1,3,1,
+ 2,3,1,5,6,6,7,2,1,0,
+ 1,3,1,3,1,1,1,1,1,3,
+ 1,3,1,1,2,5,3,1,3,5,
+ 1,3,2,4,3,5,4,6,6,3,
+ 5,1,2,3,4,1,2,1,3,1,
+ 1,3,2,1,2,1,3,1,2,2,
+ 1,3,3,1,2,2,3,4,5,1,
+ 4,5,1,1,3,3,3,2,1,2,
+ 3,2,1,0,1,2,1,1,1,1,
+ 4,6,1,2,1,1,1,2,4,2,
+ 4,2,4,1,1,2,1,1,1,3,
+ 3,2,1,3,2,3,2,3,2,2,
+ 11,10,10,9,10,9,9,8,10,9,
+ 9,8,9,8,8,7,10,9,9,8,
+ 9,8,8,7,1,1,-130,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-188,0,-7,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-115,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-190,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-2,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-95,0,-19,0,0,-45,0,
+ 0,0,0,0,0,0,-202,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-21,
+ 0,0,0,0,0,0,0,0,0,0,
+ -251,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-96,0,-24,0,0,0,0,0,0,
+ 0,0,0,0,-253,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-35,-36,-53,0,0,
+ 0,0,0,0,0,0,0,0,-281,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-54,
+ -55,-56,0,0,0,0,0,0,0,0,
+ 0,0,-303,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-57,-58,-59,0,0,0,0,
+ 0,0,0,0,0,0,-305,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-60,-61,-62,
+ 0,0,0,0,0,0,0,0,0,0,
+ -306,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-63,-86,-88,0,0,0,0,0,0,
+ 0,0,0,0,-317,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-126,-127,-135,0,0,
+ 0,0,0,0,0,0,0,0,-320,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-166,
+ -167,-168,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,-169,-170,-171,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,-172,-173,-174,
+ 0,0,0,0,0,0,0,0,0,0,
+ -340,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-175,-176,-177,0,0,0,0,0,0,
+ 0,0,0,0,-341,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-178,-179,-180,0,0,
+ 0,0,0,0,0,0,0,0,-343,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-181,
+ -199,-200,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,-201,-203,-204,0,0,0,0,
+ 0,0,0,0,0,0,-346,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-205,-207,-208,
+ 0,0,0,0,0,0,0,0,0,0,
+ -350,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-210,-218,-228,0,0,0,0,0,0,
+ 0,0,0,0,-351,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-229,-230,-231,0,0,
+ 0,0,0,0,0,0,0,0,-352,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-232,
+ -237,-239,0,0,0,0,0,0,0,0,
+ 0,0,-354,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-248,-252,-260,0,0,0,0,
+ 0,0,0,0,0,0,-357,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-278,-284,-326,
+ 0,0,0,0,0,0,0,0,0,0,
+ -358,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-360,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-363,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-368,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-369,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -370,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-371,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-373,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-375,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -377,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-378,0,0,0,0,0,
+ 0,0,0,0,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,0,0,0,0,0,0,0,
+ 0,0,-381,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,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,0,0,0,
+ -384,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,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,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-388,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,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,
+ 0,0,0,0,0,0,-390,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -391,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-392,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-12,0,0,
+ 0,0,0,0,0,0,0,0,-394,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-40,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-108,0,0,0,
+ 0,0,0,0,0,0,0,-102,0,0,
+ 0,0,0,0,0,0,0,-41,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,-9,0,0,0,0,-109,0,
+ 0,0,0,0,0,0,0,0,0,-103,
+ 0,0,0,0,0,0,0,0,0,-42,
+ 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,-10,0,0,0,0,
+ -110,0,0,0,0,0,0,0,0,0,
+ 0,-104,0,0,0,0,0,0,0,0,
+ 0,-43,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,-37,0,0,
+ 0,0,-111,0,0,0,0,0,0,0,
+ 0,0,0,0,-49,0,0,0,0,0,
+ 0,0,0,-44,0,0,0,0,0,0,
+ -93,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-105,0,0,0,0,
+ 0,0,0,-77,0,0,-142,0,0,0,
+ 0,0,0,-16,0,-51,0,0,0,0,
+ 0,0,-94,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-286,0,-20,0,0,0,-82,0,0,
+ 0,0,0,-33,0,0,0,0,-264,0,
+ 0,0,0,0,0,0,0,-39,0,0,
+ 0,-32,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,0,-46,
+ 0,0,0,0,0,0,0,0,0,-112,
+ 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,0,0,0,
+ 0,0,0,0,0,0,0,0,-47,0,
+ 0,0,0,0,0,0,0,0,0,-113,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-213,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-131,-215,-119,0,-222,0,0,
+ 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,0,0,0,
+ 0,0,-183,-156,0,-265,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-8,-38,0,-282,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-191,0,-123,-22,-4,-25,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,-107,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-308,0,0,0,
+ 0,0,0,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,0,0,
+ 0,0,0,0,0,0,0,0,-48,0,
+ 0,0,0,0,0,0,-140,-198,0,0,
+ -50,0,0,0,0,0,0,-52,0,0,
+ 0,0,0,0,-309,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-312,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,-330,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,-335,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-337,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-356,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-362,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -365,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-366,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,0,-144,0,0,0,0,0,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,0,0,0,0,0,-193,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -194,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-195,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-261,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-117,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-271,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -272,0,0,0,0,0,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,0,0,0,0,0,
+ 0,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,-293,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,0,0,0,0,0,0,0,0,
+ -297,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-31,0,0,-298,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-76,0,-300,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-302,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-311,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -314,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-315,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-64,0,0,-319,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -84,0,-322,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-85,0,-323,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,-66,0,0,-348,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-74,0,-83,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-78,0,0,
+ 0,-114,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-68,0,0,-97,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-98,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-81,0,0,-116,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-125,0,0,-87,
+ 0,0,0,0,0,0,-99,0,0,0,
+ 0,0,0,-159,0,-247,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-133,0,0,-249,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -134,0,0,-250,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-304,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-224,0,-136,-165,
+ 0,-17,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-79,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-100,0,0,0,0,0,0,-120,
+ -196,-157,0,0,-101,0,0,0,0,0,
+ 0,-143,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,0,0,0,
+ 0,0,-287,0,-182,0,-283,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-145,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -146,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-147,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-148,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-149,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-150,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-151,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-152,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-153,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,0,0,0,0,
+ 0,-155,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -187,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-209,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-129,-197,-132,0,
+ -225,0,-160,-161,-162,-163,-164,0,-216,-206,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,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,
+ -236,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-262,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-69,0,
+ -124,0,0,-257,0,0,0,0,0,0,
+ -184,0,0,-270,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,-3,
+ 0,0,-158,-15,-14,0,-221,0,0,-219,
+ -185,-186,0,-211,0,0,-238,0,-254,0,
+ 0,-266,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-256,0,0,0,0,
+ 0,0,0,0,-217,0,0,0,0,0,
+ -80,0,-223,0,0,-226,-235,0,0,0,
+ -268,-258,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -1,0,0,0,-6,0,0,0,0,0,
+ 0,0,0,-189,0,0,0,0,-30,0,
+ 0,0,0,0,0,0,0,0,0,-240,
+ 0,0,-241,-263,0,0,-289,0,-290,0,
+ 0,0,0,0,0,-5,-34,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-242,0,0,-11,0,0,0,-243,
+ -13,-255,0,0,0,0,0,0,0,0,
+ -244,0,0,0,0,0,0,-27,0,-307,
+ -277,0,0,0,0,-28,0,0,-273,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -29,0,0,0,-291,-279,-65,0,0,-67,
+ 0,-276,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-138,0,-75,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-280,0,0,-118,0,-294,0,0,0,
+ 0,0,0,0,0,-122,0,0,-18,-292,
+ 0,0,0,-318,0,0,0,0,0,0,
+ -227,0,0,-23,0,0,0,0,0,0,
+ 0,-269,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-321,0,
+ -288,-26,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-70,0,-296,0,0,0,
+ 0,-325,0,-128,0,0,0,0,0,0,
+ 0,0,-71,0,0,0,0,0,0,0,
+ 0,-72,0,-328,-89,0,-299,0,0,0,
+ 0,0,0,0,0,0,-301,0,0,0,
+ 0,-212,-73,-267,0,0,0,0,0,0,
+ 0,0,0,-310,-313,0,0,0,0,0,
+ 0,-121,-316,0,0,0,0,-324,-331,-336,
+ -259,-141,0,0,-214,0,0,0,-220,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-338,0,0,0,-333,0,-342,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-345,-347,0,0,
+ 0,-353,-349,-355,-359,0,-361,-364,0,-372,
+ -367,-376,-380,-383,-385,-393,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[] = {
+ 84,22,1,1,40,40,21,21,41,41,
+ 19,19,2,2,2,2,3,3,3,4,
+ 4,4,4,4,4,4,4,4,4,85,
+ 85,5,5,5,5,5,5,5,5,5,
+ 5,5,6,6,7,7,7,7,8,8,
+ 8,9,9,9,10,10,10,10,10,11,
+ 11,11,12,12,13,13,14,14,15,15,
+ 16,16,17,17,18,18,18,18,18,18,
+ 18,18,18,18,18,18,25,23,20,20,
+ 52,26,26,26,26,26,26,26,27,27,
+ 27,32,24,24,86,86,71,71,28,28,
+ 29,29,29,30,30,30,30,30,30,30,
+ 30,30,30,30,30,30,30,31,31,31,
+ 31,31,87,49,49,34,34,34,34,48,
+ 48,48,48,48,48,68,68,68,68,68,
+ 88,88,88,88,89,89,89,89,90,90,
+ 90,90,72,72,61,61,38,38,38,38,
+ 38,57,57,57,57,57,57,57,57,57,
+ 57,57,57,75,73,73,73,73,73,73,
+ 76,62,62,63,63,58,58,44,91,91,
+ 77,77,77,64,74,74,74,74,74,78,
+ 78,79,79,69,69,35,35,35,39,50,
+ 50,45,45,45,45,46,47,47,92,92,
+ 80,94,94,42,42,42,42,42,42,42,
+ 42,42,54,54,54,54,65,65,59,59,
+ 59,60,60,55,55,55,93,93,51,51,
+ 66,66,66,56,56,56,56,56,56,56,
+ 53,53,53,70,70,70,70,67,95,96,
+ 96,81,81,84,84,97,97,82,82,82,
+ 82,83,83,98,98,2,2,2,5,5,
+ 5,5,5,5,35,35,36,36,37,37,
+ 99,99,99,26,33,33,33,33,33,33,
+ 33,30,30,30,30,30,30,30,30,30,
+ 30,30,30,30,30,30,30,30,30,30,
+ 30,30,30,30,30,43,43,161,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,88,108,978,760,4200,
+ 118,92,4070,106,91,93,94,95,96,1012,
+ 313,4057,1307,17,16,19,538,42,44,570,
+ 572,571,605,604,638,877,107,1,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,88,108,978,104,4200,
+ 324,92,4070,106,91,93,94,95,96,1012,
+ 313,4057,706,397,337,24,420,212,103,1307,
+ 17,16,19,538,42,39,107,241,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,88,108,978,105,306,
+ 654,92,4070,1114,91,93,94,95,96,1012,
+ 313,241,17,16,19,538,673,44,570,572,
+ 571,605,604,638,606,640,639,672,74,88,
+ 108,978,337,23,655,92,4070,100,91,93,
+ 94,95,96,1012,313,241,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,108,978,218,965,503,92,
+ 4070,98,91,93,94,95,96,1012,313,241,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,88,108,978,
+ 714,393,291,92,4070,99,91,93,94,95,
+ 96,1012,313,241,17,16,19,538,673,44,
+ 570,572,571,605,604,638,606,640,639,672,
+ 74,88,108,978,134,250,224,92,4070,114,
+ 91,93,94,95,96,1012,313,241,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,88,108,978,571,409,
+ 560,92,4070,112,91,93,94,95,96,1012,
+ 313,241,17,16,19,538,673,44,570,572,
+ 571,605,604,638,606,640,639,672,74,88,
+ 108,978,418,343,775,92,4070,1150,91,93,
+ 94,95,96,1012,313,241,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,108,978,512,969,1008,92,
+ 4070,126,91,93,94,95,96,1012,313,241,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,88,108,978,
+ 394,526,807,92,4070,122,91,93,94,95,
+ 96,1012,313,241,17,16,19,538,673,44,
+ 570,572,571,605,604,638,606,640,639,672,
+ 74,88,108,978,809,439,769,92,4070,344,
+ 91,93,94,95,96,1012,313,241,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,88,108,978,742,819,
+ 831,92,4070,336,91,93,94,95,96,1012,
+ 313,241,17,16,19,538,673,44,570,572,
+ 571,605,604,638,606,640,639,672,74,88,
+ 108,978,905,751,652,92,4070,125,91,93,
+ 94,95,96,1012,313,241,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,108,978,898,315,537,92,
+ 4070,124,91,93,94,95,96,1012,313,241,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,88,108,978,
+ 561,289,340,92,4070,121,91,93,94,95,
+ 96,1012,313,241,17,16,19,538,673,44,
+ 570,572,571,605,604,638,606,640,639,672,
+ 74,88,108,978,452,595,816,92,4070,120,
+ 91,93,94,95,96,1012,313,241,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,88,108,978,1000,763,
+ 1134,92,4070,118,91,93,94,95,96,1012,
+ 313,241,17,16,19,538,673,44,570,572,
+ 571,605,604,638,606,640,639,672,74,88,
+ 108,978,1164,1065,1010,92,4070,111,91,93,
+ 94,95,96,1012,313,241,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,108,978,1011,1071,1101,92,
+ 4070,343,91,93,94,95,96,1012,313,241,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,88,108,978,
+ 1135,1167,81,92,4070,342,91,93,94,95,
+ 96,1012,313,241,17,16,19,538,673,44,
+ 570,572,571,605,604,638,606,640,639,672,
+ 74,88,108,978,154,1194,828,92,4070,340,
+ 91,93,94,95,96,1012,313,241,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,88,108,978,990,993,
+ 877,92,4070,335,91,93,94,95,96,1012,
+ 313,241,17,16,19,538,673,44,570,572,
+ 571,605,604,638,606,640,639,672,74,88,
+ 108,978,4710,4710,4710,92,4070,334,91,93,
+ 94,95,96,1012,313,241,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,108,978,4710,4710,4710,92,
+ 4070,332,91,93,94,95,96,1012,313,241,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,88,108,978,
+ 4710,4710,4710,92,4070,328,91,93,94,95,
+ 96,1012,313,241,17,16,19,538,673,44,
+ 570,572,571,605,604,638,606,640,639,672,
+ 74,88,108,978,4710,4710,4710,92,4070,123,
+ 91,93,94,95,96,1012,313,241,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,88,108,978,4710,4710,
+ 4710,92,4070,119,91,93,94,95,96,1012,
+ 313,241,17,16,19,538,673,44,570,572,
+ 571,605,604,638,606,640,639,672,74,88,
+ 108,978,4710,4710,4710,92,4070,117,91,93,
+ 94,95,96,1012,313,241,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,108,978,4710,4710,4710,92,
+ 4070,116,91,93,94,95,96,1012,313,241,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,88,108,978,
+ 4710,4710,4710,92,4070,341,91,93,94,95,
+ 96,1012,313,241,17,16,19,538,673,44,
+ 570,572,571,605,604,638,606,640,639,672,
+ 74,88,108,978,4710,4710,4710,92,4070,339,
+ 91,93,94,95,96,1012,313,241,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,88,108,978,4710,4710,
+ 4710,92,4070,338,91,93,94,95,96,1012,
+ 313,241,17,16,19,538,673,44,570,572,
+ 571,605,604,638,606,640,639,672,74,88,
+ 108,978,4710,4710,4710,92,4070,333,91,93,
+ 94,95,96,1012,313,241,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,108,978,4710,4710,4710,92,
+ 4070,331,91,93,94,95,96,1012,313,241,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,88,108,978,
+ 4710,4710,4710,92,4070,330,91,93,94,95,
+ 96,1012,313,241,17,16,19,538,673,44,
+ 570,572,571,605,604,638,606,640,639,672,
+ 74,88,108,978,4710,4710,4710,92,4070,327,
+ 91,93,94,95,96,1012,313,241,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,88,108,978,4710,4710,
+ 4710,92,4070,326,91,93,94,95,96,1012,
+ 313,241,17,16,19,538,673,44,570,572,
+ 571,605,604,638,606,640,639,672,74,88,
+ 108,978,4710,4710,4710,92,4070,324,91,93,
+ 94,95,96,1012,313,241,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,108,978,4710,4710,4710,92,
+ 4070,115,91,93,94,95,96,1012,313,241,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,88,108,978,
+ 4710,4710,4710,92,4070,337,91,93,94,95,
+ 96,1012,313,241,17,16,19,538,673,44,
+ 570,572,571,605,604,638,606,640,639,672,
+ 74,88,108,978,4710,4710,4710,92,4070,329,
+ 91,93,94,95,96,1012,313,241,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,88,108,978,4710,4710,
+ 4710,92,4070,325,91,93,94,95,96,1012,
+ 313,241,17,16,19,538,673,44,570,572,
+ 571,605,604,638,606,640,639,672,74,88,
+ 108,978,4710,4710,4710,92,4070,323,91,93,
+ 94,95,96,1012,313,241,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,108,978,4710,4710,527,92,
+ 4070,322,91,93,94,95,96,1012,313,241,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,88,108,978,
+ 4710,4710,4710,92,4070,321,91,93,94,95,
+ 96,1012,313,1157,17,16,19,538,673,44,
+ 570,572,571,605,604,638,606,640,639,672,
+ 74,88,504,674,4710,4200,3385,1307,17,16,
+ 19,538,42,44,570,572,808,197,1307,17,
+ 16,19,538,42,44,570,740,4545,1187,17,
+ 16,19,538,302,3361,1157,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,271,674,4710,4200,3385,1307,
+ 17,16,19,538,42,44,570,572,809,197,
+ 1307,17,16,19,538,42,44,570,741,4545,
+ 1217,17,16,19,538,300,3584,1157,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,88,350,674,4710,4200,
+ 3385,1307,17,16,19,538,42,44,570,572,
+ 810,197,1307,17,16,19,538,42,44,742,
+ 436,4545,1247,17,16,19,538,298,4063,1157,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,88,581,674,
+ 4710,4200,3385,1307,17,16,19,538,42,44,
+ 570,572,842,197,4710,929,17,16,19,538,
+ 42,35,470,4545,1277,17,16,19,538,40,
+ 4064,1157,17,16,19,538,673,44,570,572,
+ 571,605,604,638,606,640,639,672,74,88,
+ 4710,674,4261,4200,3385,311,1307,17,16,19,
+ 538,42,44,774,581,197,4710,929,17,16,
+ 19,538,42,35,791,4545,1337,17,16,19,
+ 538,33,4065,1157,17,16,19,538,673,44,
+ 570,572,571,605,604,638,606,640,639,672,
+ 74,88,1434,674,54,4200,3385,240,753,142,
+ 304,305,140,144,739,4710,4710,197,2374,929,
+ 17,16,19,538,42,35,4407,4545,374,227,
+ 4428,4309,719,134,4066,1031,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,3051,674,291,4200,4389,241,
+ 1307,17,16,19,538,42,38,4710,310,4057,
+ 1307,17,16,19,538,42,44,570,572,571,
+ 605,604,843,280,3027,1031,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,3099,674,4710,4200,4412,1307,
+ 17,16,19,538,42,37,4710,4710,4710,4057,
+ 1307,17,16,19,538,42,44,570,572,571,
+ 605,844,4710,4710,3075,1125,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,270,276,392,874,4362,468,17,
+ 16,19,538,673,44,570,572,571,605,604,
+ 638,606,640,639,672,74,4324,1307,17,16,
+ 19,538,42,44,570,572,571,775,273,4710,
+ 247,304,305,247,304,305,4710,185,234,4214,
+ 223,224,274,62,581,4219,1125,17,16,19,
+ 538,673,44,570,572,571,605,604,638,606,
+ 640,639,672,74,270,2184,1397,38,4362,675,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,270,3478,223,
+ 224,4362,1129,1081,874,54,811,54,3677,273,
+ 4710,141,304,305,139,143,4710,4710,4710,225,
+ 272,320,4710,274,4459,133,4405,4410,4204,4149,
+ 198,338,275,1307,17,16,19,538,42,44,
+ 570,572,571,776,4267,184,276,675,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,270,246,304,305,4362,
+ 1307,17,16,19,538,42,44,570,572,571,
+ 605,604,638,606,640,639,672,73,28,1307,
+ 17,16,19,538,42,36,2375,374,764,4710,
+ 275,1307,17,16,19,538,42,34,1337,17,
+ 16,19,538,32,276,708,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,4710,674,753,235,345,708,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,88,4544,674,
+ 787,4710,345,708,17,16,19,538,673,44,
+ 570,572,571,605,604,638,606,640,639,672,
+ 74,88,4618,674,1059,4371,345,708,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,88,4642,674,1093,4710,
+ 345,708,17,16,19,538,673,44,570,572,
+ 571,605,604,638,606,640,639,672,74,88,
+ 4644,674,1161,4710,345,708,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,4645,674,1195,4710,345,708,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,88,4647,674,
+ 1229,4710,345,708,17,16,19,538,673,44,
+ 570,572,571,605,604,638,606,640,639,672,
+ 74,88,4648,674,1467,4710,345,708,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,88,4652,674,1569,4710,
+ 345,708,17,16,19,538,673,44,570,572,
+ 571,605,604,638,606,640,639,672,74,88,
+ 4653,674,1637,4710,345,708,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,4654,674,1671,4710,345,708,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,88,4655,674,
+ 1875,4710,345,1307,17,16,19,538,673,44,
+ 570,572,571,605,604,638,606,640,639,672,
+ 74,85,4656,1001,17,16,19,538,673,44,
+ 570,572,571,605,604,638,606,640,639,672,
+ 74,88,319,674,4710,4710,4320,1001,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,88,317,674,4710,4710,
+ 4323,1001,17,16,19,538,673,44,570,572,
+ 571,605,604,638,606,640,639,672,74,88,
+ 315,674,4710,4710,4353,1001,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,130,674,4710,4710,4360,614,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,4327,1307,17,
+ 16,19,538,42,44,570,572,571,605,604,
+ 638,606,640,910,247,304,305,1001,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,88,3123,674,4710,4710,
+ 4447,1001,17,16,19,538,673,44,570,572,
+ 571,605,604,638,606,640,639,672,74,88,
+ 3147,674,4710,4710,4517,1001,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,3195,674,4710,4710,4547,1001,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,88,3219,674,
+ 4710,4710,4557,1001,17,16,19,538,673,44,
+ 570,572,571,605,604,638,606,640,639,672,
+ 74,88,2585,674,4710,4710,4574,1001,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,88,2609,674,4710,4710,
+ 4575,1001,17,16,19,538,673,44,570,572,
+ 571,605,604,638,606,640,639,672,74,88,
+ 3315,674,54,4710,4583,959,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,4563,674,685,752,4464,959,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,88,222,674,
+ 719,4710,4499,1001,17,16,19,538,673,44,
+ 570,572,571,605,604,638,606,640,639,672,
+ 74,88,3387,674,4710,4710,4588,1001,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,88,2657,674,4710,4710,
+ 4589,1001,17,16,19,538,673,44,570,572,
+ 571,605,604,638,606,640,639,672,74,88,
+ 2705,674,4710,4710,4590,1001,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,2729,674,54,4710,4614,959,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,88,4445,674,
+ 855,752,4620,959,17,16,19,538,673,44,
+ 570,572,571,605,604,638,606,640,639,672,
+ 74,88,3742,674,923,752,4637,959,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,88,18,674,957,4710,
+ 4638,1001,17,16,19,538,673,44,570,572,
+ 571,605,604,638,606,640,639,672,74,88,
+ 2825,674,54,4710,4651,959,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,88,4456,674,1365,578,4650,644,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,2567,396,347,
+ 4710,4592,1307,17,16,19,538,42,44,570,
+ 572,571,605,604,638,606,876,54,102,233,
+ 959,17,16,19,538,673,44,570,572,571,
+ 605,604,638,606,640,639,672,74,29,4151,
+ 225,21,1307,17,16,19,538,673,44,570,
+ 572,571,605,604,638,606,640,639,672,74,
+ 88,4710,674,275,4710,3680,1307,17,16,19,
+ 538,673,44,570,572,571,605,604,638,606,
+ 640,639,672,74,88,2501,674,754,4710,878,
+ 1307,17,16,19,538,42,35,1307,17,16,
+ 19,538,42,47,752,4067,1307,17,16,19,
+ 538,673,44,570,572,571,605,604,638,606,
+ 640,639,672,74,88,1014,674,54,204,4381,
+ 1307,17,16,19,538,673,44,570,572,571,
+ 605,604,638,606,640,639,672,74,88,2355,
+ 674,287,4710,4406,1307,17,16,19,538,673,
+ 44,570,572,571,605,604,638,606,640,639,
+ 672,74,88,4595,674,4710,4710,4442,1307,17,
+ 16,19,538,673,44,570,572,571,605,604,
+ 638,606,640,639,672,74,88,358,674,1067,
+ 374,4522,844,17,16,19,538,42,44,570,
+ 572,571,605,604,638,606,640,639,672,90,
+ 1061,17,16,19,538,673,44,570,572,571,
+ 605,604,638,606,640,639,672,74,270,264,
+ 20,225,312,1307,17,16,19,538,42,46,
+ 811,1129,1099,4222,2248,1307,17,16,19,538,
+ 42,45,1093,17,16,19,538,42,43,196,
+ 129,4710,2423,165,1367,17,16,19,538,673,
+ 44,570,572,571,605,604,638,606,640,639,
+ 672,74,4207,681,265,874,4599,1061,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,270,1307,17,16,19,
+ 538,673,44,570,572,571,605,604,638,606,
+ 640,639,672,74,84,264,187,4710,4214,223,
+ 224,4710,4710,4710,4710,4710,4710,4710,4710,4222,
+ 277,1307,17,16,19,538,673,44,570,572,
+ 571,605,604,638,606,640,639,672,74,83,
+ 1307,17,16,19,538,673,44,570,572,571,
+ 605,604,638,606,640,639,672,74,82,1307,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,81,1307,17,
+ 16,19,538,673,44,570,572,571,605,604,
+ 638,606,640,639,672,74,80,1307,17,16,
+ 19,538,673,44,570,572,571,605,604,638,
+ 606,640,639,672,74,79,1307,17,16,19,
+ 538,673,44,570,572,571,605,604,638,606,
+ 640,639,672,74,78,1307,17,16,19,538,
+ 673,44,570,572,571,605,604,638,606,640,
+ 639,672,74,77,1307,17,16,19,538,673,
+ 44,570,572,571,605,604,638,606,640,639,
+ 672,74,76,1307,17,16,19,538,673,44,
+ 570,572,571,605,604,638,606,640,639,672,
+ 74,75,1307,17,16,19,538,673,44,570,
+ 572,571,605,604,638,606,640,639,672,74,
+ 89,1307,17,16,19,538,42,44,570,572,
+ 571,605,604,638,606,640,639,672,90,1307,
+ 17,16,19,538,42,44,570,572,571,605,
+ 604,638,606,640,639,672,90,811,1129,753,
+ 4710,753,4710,752,752,752,752,755,4710,752,
+ 1129,4710,4710,214,4710,4710,133,128,4710,4304,
+ 227,4562,267,4564,1046,1047,1048,1080,22,109,
+ 226,1115,1307,17,16,19,538,673,44,570,
+ 572,571,605,604,638,606,640,639,672,74,
+ 30,1307,17,16,19,538,42,44,570,572,
+ 571,605,604,638,606,640,639,672,90,1307,
+ 17,16,19,538,673,44,570,572,571,605,
+ 604,638,606,640,639,672,74,4329,4710,570,
+ 4710,570,4710,4710,581,4710,4710,4710,4710,4710,
+ 4710,874,4710,201,1307,17,16,19,538,42,
+ 44,570,572,571,605,604,638,606,640,639,
+ 672,90,1307,17,16,19,538,42,44,570,
+ 572,571,605,604,638,606,640,639,672,90,
+ 500,183,186,516,142,557,183,374,3773,4710,
+ 1373,875,874,706,1375,706,202,874,211,899,
+ 211,4710,1398,4710,266,4471,2118,3567,707,4211,
+ 707,230,4710,4710,4380,141,304,305,139,143,
+ 142,304,305,140,144,264,450,237,4205,2447,
+ 223,537,205,206,536,573,225,4295,207,3732,
+ 271,276,4309,54,265,162,752,897,135,4266,
+ 4710,752,462,2446,4356,4361,2234,4154,4401,4386,
+ 4378,247,304,305,231,2426,195,263,136,137,
+ 138,321,268,266,4501,738,2252,264,3192,4710,
+ 3478,223,224,4710,142,536,3679,223,708,876,
+ 289,3732,4710,4200,264,4710,253,3478,223,224,
+ 1129,255,3217,1129,374,2476,2184,374,3732,374,
+ 141,304,305,139,143,4710,380,142,4266,318,
+ 288,232,316,2194,141,304,305,139,143,3478,
+ 223,224,4295,1129,536,289,1409,2194,4200,2184,
+ 1129,1440,814,146,236,162,4295,238,4710,239,
+ 2476,1129,314,285,287,420,2234,145,1526,131,
+ 374,752,3478,223,224,288,1538,3217,4336,1129,
+ 127,141,304,305,139,143,141,304,305,139,
+ 143,1569,583,4710,4474,900,752,248,3171,4502,
+ 248,4710,1129,141,304,305,139,143,286,287,
+ 281,141,304,305,139,143,4515,617,249,4200,
+ 142,3243,4200,4710,4533,4710,141,304,305,139,
+ 143,197,752,279,197,248,27,1129,4710,4542,
+ 4200,3730,2184,4710,3730,4710,248,3777,2222,1452,
+ 752,4710,4255,651,752,193,3267,4200,193,2376,
+ 4582,577,2474,4582,1483,3478,223,224,4200,197,
+ 536,269,62,251,4710,821,4710,4069,1013,3730,
+ 197,163,4710,4200,142,304,305,140,144,752,
+ 3730,577,1495,193,2184,4255,4710,3775,4582,142,
+ 304,305,140,144,193,1581,4710,1129,4161,4582,
+ 889,4210,752,4200,968,3677,251,3478,223,224,
+ 4271,1013,1081,1612,4710,4255,3291,142,304,305,
+ 140,144,1624,4643,752,198,4200,1129,292,4710,
+ 142,304,305,140,144,3773,251,1129,4057,199,
+ 4271,1013,822,54,822,1025,3339,2424,142,304,
+ 305,140,144,294,1129,1129,3363,142,304,305,
+ 140,144,1374,1129,4200,4200,4200,264,1129,1129,
+ 1129,829,338,2633,2681,338,4255,4057,4255,338,
+ 4710,3732,3411,4710,4200,4710,4710,3435,2753,2777,
+ 4710,259,293,4200,1129,4710,197,251,752,251,
+ 752,4069,1013,4460,1013,4255,3730,246,304,305,
+ 246,304,305,2801,246,304,305,752,752,1127,
+ 194,1263,752,1129,752,752,252,752,752,4710,
+ 752,1129,752,752,752,752,752,2378,1297,1331,
+ 4246,4524,113,1399,2989,1433,1501,4710,1535,1603,
+ 2849,1705,4710,1739,1773,1807,1841,1909,4710,0,
+ 307,3682,0,148,4712,0,1,4713,0,1,
+ 4712,0,4719,1,0,1,979,0,1,4966,
+ 0,9,11,0,1,4931,0,110,991,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,1,39,
+ 40,41,42,43,44,45,46,47,48,49,
+ 50,51,52,0,54,55,56,0,58,59,
+ 60,0,1,2,64,65,66,67,68,69,
+ 70,71,72,0,37,75,76,77,78,79,
+ 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,57,39,
+ 40,41,42,43,44,45,46,47,48,49,
+ 50,51,52,0,54,55,56,0,58,59,
+ 60,0,1,2,64,65,66,67,68,69,
+ 70,71,72,0,37,75,76,77,78,79,
+ 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,1,39,
+ 3,41,42,43,44,45,46,47,48,49,
+ 50,51,52,60,54,55,56,0,58,59,
+ 60,88,89,0,64,65,66,67,68,69,
+ 70,71,72,0,37,75,76,77,78,79,
+ 0,1,2,3,4,5,0,0,0,0,
+ 2,4,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,27,28,29,
+ 0,31,2,0,0,0,1,2,3,39,
+ 6,7,8,9,10,11,0,40,0,1,
+ 0,74,6,7,8,9,10,11,58,59,
+ 60,31,12,13,64,65,66,67,68,69,
+ 70,71,72,90,0,75,76,77,78,79,
+ 0,73,2,0,4,5,6,7,8,9,
+ 10,11,83,84,85,86,0,0,2,0,
+ 1,5,0,6,7,8,9,10,11,0,
+ 30,2,32,33,34,35,36,0,1,39,
+ 3,41,42,43,44,45,46,47,48,49,
+ 50,51,52,0,54,55,56,4,58,0,
+ 31,2,0,4,5,6,7,8,9,10,
+ 11,0,0,0,37,0,1,6,7,8,
+ 9,10,11,0,90,12,13,87,0,30,
+ 87,32,33,34,35,36,74,0,39,0,
+ 41,42,43,44,45,46,47,48,49,50,
+ 51,52,37,54,55,56,63,58,0,97,
+ 98,99,100,101,102,103,104,105,106,0,
+ 31,0,1,61,62,6,7,8,9,10,
+ 11,0,1,2,0,4,87,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,37,0,
+ 92,2,0,1,5,6,7,8,9,10,
+ 11,0,95,96,53,0,1,15,16,4,
+ 0,83,84,85,86,0,0,0,2,30,
+ 63,32,33,34,35,36,0,12,13,37,
+ 41,42,43,44,45,46,47,48,49,50,
+ 51,52,37,54,55,56,0,31,2,0,
+ 0,5,6,7,8,9,10,11,53,0,
+ 0,2,0,1,2,3,0,0,0,3,
+ 0,4,80,3,14,74,30,0,32,33,
+ 34,35,36,57,0,1,94,41,42,43,
+ 44,45,46,47,48,49,50,51,52,37,
+ 54,55,56,0,1,2,3,40,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,0,1,2,3,4,5,73,
+ 91,0,92,0,0,12,13,14,15,16,
+ 17,18,19,20,21,22,23,24,25,26,
+ 27,28,29,30,0,1,2,3,4,5,
+ 0,1,2,3,31,31,12,13,14,15,
+ 16,17,18,19,20,21,22,23,24,25,
+ 26,27,28,29,0,31,63,0,1,2,
+ 3,4,5,0,40,0,3,37,0,12,
+ 13,14,15,16,17,18,19,20,21,22,
+ 23,24,25,26,27,28,29,0,0,88,
+ 89,0,4,6,7,8,9,10,11,31,
+ 0,0,0,0,0,4,4,4,4,0,
+ 53,2,0,0,14,2,59,30,0,32,
+ 33,34,35,36,0,0,38,39,41,42,
+ 43,44,45,46,47,48,49,50,51,52,
+ 0,38,38,40,81,82,6,7,8,9,
+ 10,11,61,62,53,53,0,53,0,3,
+ 0,3,38,0,4,0,1,0,0,57,
+ 30,0,32,33,34,35,36,0,0,2,
+ 0,41,42,43,44,45,46,47,48,49,
+ 50,51,52,0,1,2,3,4,5,39,
+ 37,83,84,85,86,12,13,14,15,16,
+ 17,18,19,20,21,22,23,24,25,26,
+ 27,28,29,0,0,0,0,4,4,61,
+ 62,6,7,8,9,10,11,81,82,81,
+ 82,61,62,80,73,0,0,0,0,0,
+ 4,73,4,4,0,30,63,32,33,34,
+ 35,36,38,40,40,0,41,42,43,44,
+ 45,46,47,48,49,50,51,52,0,1,
+ 2,3,4,5,38,39,38,38,40,40,
+ 12,13,14,15,16,17,18,19,20,21,
+ 22,23,24,25,26,27,28,29,0,1,
+ 2,3,4,5,0,61,62,0,0,93,
+ 12,13,14,15,16,17,18,19,20,21,
+ 22,23,24,25,26,27,28,29,91,0,
+ 1,63,0,0,2,31,0,0,31,0,
+ 0,1,2,3,4,5,38,0,0,0,
+ 0,53,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,27,28,29,
+ 0,1,2,3,4,5,0,38,31,39,
+ 31,31,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,27,28,29,
+ 0,1,2,3,0,5,0,1,0,39,
+ 0,0,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,27,28,29,
+ 0,31,0,1,2,3,0,5,0,1,
+ 0,31,38,37,12,13,14,15,16,17,
+ 18,19,20,21,22,23,24,25,26,27,
+ 28,29,0,31,0,1,2,3,0,5,
+ 0,31,4,0,0,37,12,13,14,15,
+ 16,17,18,19,20,21,22,23,24,25,
+ 26,27,28,29,0,31,0,1,2,3,
+ 0,5,2,0,0,31,0,39,12,13,
+ 14,15,16,17,18,19,20,21,22,23,
+ 24,25,26,27,28,29,0,1,2,3,
+ 57,5,0,0,0,0,0,0,12,13,
+ 14,15,16,17,18,19,20,21,22,23,
+ 24,25,26,27,28,29,0,1,2,3,
+ 57,5,0,57,0,0,0,0,12,13,
+ 14,15,16,17,18,19,20,21,22,23,
+ 24,25,26,27,28,29,0,1,2,3,
+ 57,5,0,0,0,0,0,0,12,13,
+ 14,15,16,17,18,19,20,21,22,23,
+ 24,25,26,27,28,29,0,1,2,3,
+ 0,5,0,0,0,0,0,0,12,13,
+ 14,15,16,17,18,19,20,21,22,23,
+ 24,25,26,27,28,29,0,1,2,3,
+ 0,5,0,0,0,0,0,0,12,13,
+ 14,15,16,17,18,19,20,21,22,23,
+ 24,25,26,27,28,29,0,1,2,3,
+ 0,5,0,0,0,0,0,0,12,13,
+ 14,15,16,17,18,19,20,21,22,23,
+ 24,25,26,27,28,29,0,1,2,3,
+ 0,5,0,0,0,1,4,4,12,13,
+ 14,15,16,17,18,19,20,21,22,23,
+ 24,25,26,27,28,29,0,0,1,0,
+ 0,0,6,7,8,9,10,11,0,0,
+ 38,37,0,40,6,7,8,9,10,11,
+ 0,0,0,0,0,53,30,0,32,33,
+ 34,35,36,0,37,0,0,0,30,0,
+ 32,33,34,35,36,6,7,8,9,10,
+ 11,0,0,0,0,0,0,6,7,8,
+ 9,10,11,0,0,0,0,0,0,30,
+ 37,32,33,34,35,36,0,0,0,0,
+ 0,30,0,32,33,34,35,36,6,7,
+ 8,9,10,11,0,0,0,0,0,0,
+ 6,7,8,9,10,11,0,74,0,0,
+ 0,0,30,80,32,33,34,35,36,0,
+ 0,0,0,0,30,0,32,33,34,35,
+ 36,6,7,8,9,10,11,0,0,0,
+ 0,0,0,6,7,8,9,10,11,0,
+ 0,0,0,0,0,30,0,32,33,34,
+ 35,36,0,0,0,0,0,30,0,32,
+ 33,34,35,36,6,7,8,9,10,11,
+ 0,0,0,0,0,0,6,7,8,9,
+ 10,11,0,0,0,0,0,0,30,0,
+ 32,33,34,35,36,0,0,0,0,0,
+ 30,0,32,33,34,35,36,6,7,8,
+ 9,10,11,0,0,0,0,0,0,6,
+ 7,8,9,10,11,0,0,0,0,0,
+ 0,30,0,32,33,34,35,36,0,0,
+ 0,0,0,30,0,32,33,34,35,36,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 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,
+ 4710,1943,4695,3570,1082,4686,1,1,1,1,
+ 1,1,2559,2329,2571,2578,2196,2144,2280,439,
+ 5005,5006,5007,2092,2040,1988,4722,4723,4724,4725,
+ 1,3457,1,1,1,1,1,219,2228,4720,
+ 4718,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,4710,4807,4058,
+ 944,1,4337,4931,3731,4039,980,447,912,2568,
+ 946,2965,945,4710,3459,2893,2941,2472,2917,911,
+ 9,4701,4701,4701,4701,4701,4701,4701,4701,4701,
+ 4701,4701,4701,4701,4701,4701,4701,4701,4701,4701,
+ 4701,4701,4701,4701,4701,4701,4701,4701,4701,4701,
+ 4701,4701,4701,4701,4701,4701,4701,307,4111,4701,
+ 4701,4701,4701,4701,4701,4701,4701,4701,4701,4701,
+ 4701,4701,4701,62,4701,4701,4701,4710,4701,4701,
+ 4701,1,4337,4931,4701,4701,4701,4701,4701,4701,
+ 4701,4701,4701,4710,4680,4701,4701,4701,4701,4701,
+ 4710,1943,4695,3570,4721,4686,1,1,1,1,
+ 1,1,2559,2329,2571,2578,2196,2144,2280,439,
+ 5005,5006,5007,2092,2040,1988,4722,4723,4724,4725,
+ 1,3457,1,1,1,1,1,258,4203,4720,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1148,1,1,1,164,4807,4058,
+ 944,2503,2397,66,3731,4039,980,447,912,2568,
+ 946,2965,945,4710,3459,2893,2941,2472,2917,911,
+ 4710,1943,979,3570,4721,4713,4710,1,1,59,
+ 4698,192,2559,2329,2571,2578,2196,2144,2280,439,
+ 5005,5006,5007,2092,2040,1988,4722,4723,4724,4725,
+ 4710,3457,4900,4710,242,4710,4337,4931,3631,4720,
+ 1,1,1,1,1,1,243,192,4710,2255,
+ 51,3700,1,1,1,1,1,1,4807,4058,
+ 944,2224,2176,2082,3731,4039,980,447,912,2568,
+ 946,2965,945,2290,67,2893,2941,2472,2917,911,
+ 4710,4960,1,4710,4721,1,1,1,1,1,
+ 1,1,2123,2071,2019,1967,4710,4710,4712,4710,
+ 2305,4713,42,4925,4926,4927,5018,370,5019,4710,
+ 1,4900,1,1,1,1,1,260,4203,4720,
+ 3631,1,1,1,1,1,1,1,1,1,
+ 1,1,1,4710,1,1,1,4715,5000,4710,
+ 2475,1,4710,4721,1,1,1,1,1,1,
+ 1,244,54,53,3459,219,4059,4925,4926,4927,
+ 5018,370,5019,4710,2290,2176,2082,284,70,1,
+ 4679,1,1,1,1,1,3983,72,4720,189,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,3459,1,1,1,4714,5000,61,3964,
+ 3945,3926,3907,3888,3850,3869,3831,3796,2873,245,
+ 3336,4710,3586,1978,2030,4925,4926,4927,5018,370,
+ 5019,1,4272,4704,4710,4717,283,4710,1943,4712,
+ 2239,4715,4713,4925,4926,4927,5018,370,5019,2559,
+ 2329,2571,2578,2196,2144,2280,439,5005,5006,5007,
+ 2092,2040,1988,4722,4723,4724,4725,4129,3459,4710,
+ 3482,4712,31,3500,4713,4925,4926,4927,5018,370,
+ 5019,213,3008,3546,4716,1,4203,4735,4736,4717,
+ 4710,2123,2071,2019,1967,52,4710,4710,4913,4878,
+ 4714,4879,4877,4928,4880,4876,4710,2176,2082,3522,
+ 4882,4887,4886,4884,4885,4883,4888,4889,4881,4890,
+ 4891,4892,3459,1898,2066,2014,148,2477,4683,68,
+ 71,4713,4925,4926,4927,5018,370,5019,4716,210,
+ 64,4913,254,4272,4931,1,1,1,4710,3543,
+ 4710,4692,502,3543,2340,4021,4878,4710,4879,4877,
+ 4928,4880,4876,2540,4710,3610,434,4882,4887,4886,
+ 4884,4885,4883,4888,4889,4881,4890,4891,4892,3459,
+ 1898,2066,2014,4710,1943,4712,3570,4718,4713,4925,
+ 4926,4927,5018,370,5019,2559,2329,2571,2578,2196,
+ 2144,2280,439,5005,5006,5007,2092,2040,1988,4722,
+ 4723,4724,4725,1,1943,4712,2187,4715,4713,4960,
+ 382,63,3482,188,208,2559,2329,2571,2578,2196,
+ 2144,2280,439,5005,5006,5007,2092,2040,1988,4722,
+ 4723,4724,4725,3754,1,1943,4712,3570,4719,4713,
+ 260,4272,4931,3631,3432,3497,2559,2329,2571,2578,
+ 2196,2144,2280,439,5005,5006,5007,2092,2040,1988,
+ 4722,4723,4724,4725,4710,3607,4714,4710,1943,4712,
+ 3570,4717,4713,48,4718,4710,3735,3459,4710,2559,
+ 2329,2571,2578,2196,2144,2280,439,5005,5006,5007,
+ 2092,2040,1988,4722,4723,4724,4725,147,4710,2503,
+ 2397,58,4721,4925,4926,4927,5018,370,5019,3457,
+ 65,4710,1,4710,4710,4717,4717,4719,4717,4710,
+ 4716,4913,2,4710,2340,4842,5056,4878,60,4879,
+ 4877,4928,4880,4876,87,4710,4430,4720,4882,4887,
+ 4886,4884,4885,4883,4888,4889,4881,4890,4891,4892,
+ 148,4212,4092,4718,3723,3577,4925,4926,4927,5018,
+ 370,5019,1978,2030,4716,4716,50,4716,49,3735,
+ 1,3735,4002,4710,4721,4710,3634,4710,57,101,
+ 4878,1,4879,4877,4928,4880,4876,4710,1,4967,
+ 56,4882,4887,4886,4884,4885,4883,4888,4889,4881,
+ 4890,4891,4892,4710,1943,4712,2135,4715,4713,4720,
+ 4182,2123,2071,2019,1967,2559,2329,2571,2578,2196,
+ 2144,2280,439,5005,5006,5007,2092,2040,1988,4722,
+ 4723,4724,4725,4710,4710,149,110,4719,4719,1978,
+ 2030,4925,4926,4927,5018,370,5019,3723,3577,3723,
+ 3577,1978,2030,1149,4960,4710,4710,69,4710,4710,
+ 4721,4959,4719,4719,55,4878,4714,4879,4877,4928,
+ 4880,4876,4217,4718,4718,4710,4882,4887,4886,4884,
+ 4885,4883,4888,4889,4881,4890,4891,4892,4710,1943,
+ 4712,3570,4715,4713,4482,4720,2449,2517,4718,4718,
+ 2559,2329,2571,2578,2196,2144,2280,439,5005,5006,
+ 5007,2092,2040,1988,4722,4723,4724,4725,4710,1943,
+ 4712,3570,4717,4713,224,1978,2030,1,209,4707,
+ 2559,2329,2571,2578,2196,2144,2280,439,5005,5006,
+ 5007,2092,2040,1988,4722,4723,4724,4725,382,4710,
+ 3658,4714,4710,4710,4992,228,4710,4710,3457,86,
+ 4710,1943,4712,3570,4721,4713,6217,224,4710,303,
+ 301,4716,2559,2329,2571,2578,2196,2144,2280,439,
+ 5005,5006,5007,2092,2040,1988,4722,4723,4724,4725,
+ 1,1943,4689,3570,4721,4686,4710,4002,229,4720,
+ 4263,4263,2559,2329,2571,2578,2196,2144,2280,439,
+ 5005,5006,5007,2092,2040,1988,4722,4723,4724,4725,
+ 4710,1943,4712,3570,248,4713,220,2228,4710,4720,
+ 299,4710,2559,2329,2571,2578,2196,2144,2280,439,
+ 5005,5006,5007,2092,2040,1988,4722,4723,4724,4725,
+ 4710,3607,4710,1943,4712,3570,4710,4713,261,4061,
+ 41,4263,4591,3459,2559,2329,2571,2578,2196,2144,
+ 2280,439,5005,5006,5007,2092,2040,1988,4722,4723,
+ 4724,4725,4710,4263,1,1943,4712,3570,4710,4713,
+ 4710,4263,4721,4710,4710,3459,2559,2329,2571,2578,
+ 2196,2144,2280,439,5005,5006,5007,2092,2040,1988,
+ 4722,4723,4724,4725,4710,3607,1,1943,4689,3570,
+ 209,4686,368,4710,4710,4263,200,4720,2559,2329,
+ 2571,2578,2196,2144,2280,439,5005,5006,5007,2092,
+ 2040,1988,4722,4723,4724,4725,4710,1995,4712,3570,
+ 481,4713,4710,4710,4710,4710,4710,4710,2559,2329,
+ 2571,2578,2196,2144,2280,439,5005,5006,5007,2092,
+ 2040,1988,4722,4723,4724,4725,4710,2047,4712,3570,
+ 515,4713,4710,4164,4710,4710,4710,4710,2559,2329,
+ 2571,2578,2196,2144,2280,439,5005,5006,5007,2092,
+ 2040,1988,4722,4723,4724,4725,4710,2099,4712,3570,
+ 549,4713,4710,4710,4710,4710,4710,4710,2559,2329,
+ 2571,2578,2196,2144,2280,439,5005,5006,5007,2092,
+ 2040,1988,4722,4723,4724,4725,4710,2151,4712,3570,
+ 4710,4713,4710,4710,4710,4710,4710,4710,2559,2329,
+ 2571,2578,2196,2144,2280,439,5005,5006,5007,2092,
+ 2040,1988,4722,4723,4724,4725,4710,1943,4712,3570,
+ 4710,4713,4710,4710,4710,4710,4710,4710,2559,2329,
+ 2571,2578,2196,2144,2280,439,5005,5006,5007,2092,
+ 2040,1988,4722,4723,4724,4725,4710,2203,4712,3570,
+ 4710,4713,4710,4710,4710,4710,4710,4710,2559,2329,
+ 2571,2578,2196,2144,2280,439,5005,5006,5007,2092,
+ 2040,1988,4722,4723,4724,4725,1,1943,4712,3570,
+ 4710,4713,4710,1,220,4059,4717,191,2559,2329,
+ 2571,2578,2196,2144,2280,439,5005,5006,5007,2092,
+ 2040,1988,4722,4723,4724,4725,153,262,4061,4710,
+ 4710,4710,4925,4926,4927,5018,370,5019,157,4710,
+ 1116,3459,4710,191,4925,4926,4927,5018,370,5019,
+ 4710,4710,4710,4710,4710,4716,4878,4710,4879,4877,
+ 4928,4880,4876,4710,3459,4710,4710,4710,4878,161,
+ 4879,4877,4928,4880,4876,4925,4926,4927,5018,370,
+ 5019,151,4710,4710,4710,4710,4710,4925,4926,4927,
+ 5018,370,5019,4710,4710,4710,4710,4710,4710,4878,
+ 4182,4879,4877,4928,4880,4876,4710,4710,4710,4710,
+ 4710,4878,155,4879,4877,4928,4880,4876,4925,4926,
+ 4927,5018,370,5019,159,4710,4710,4710,4710,4710,
+ 4925,4926,4927,5018,370,5019,4710,4988,4710,4710,
+ 4710,4710,4878,1149,4879,4877,4928,4880,4876,4710,
+ 4710,4710,4710,4710,4878,160,4879,4877,4928,4880,
+ 4876,4925,4926,4927,5018,370,5019,156,4710,4710,
+ 4710,4710,4710,4925,4926,4927,5018,370,5019,4710,
+ 4710,4710,4710,4710,4710,4878,4710,4879,4877,4928,
+ 4880,4876,4710,4710,4710,4710,4710,4878,152,4879,
+ 4877,4928,4880,4876,4925,4926,4927,5018,370,5019,
+ 158,4710,4710,4710,4710,4710,4925,4926,4927,5018,
+ 370,5019,4710,4710,4710,4710,4710,4710,4878,4710,
+ 4879,4877,4928,4880,4876,4710,4710,4710,4710,4710,
+ 4878,154,4879,4877,4928,4880,4876,4925,4926,4927,
+ 5018,370,5019,150,4710,4710,4710,4710,4710,4925,
+ 4926,4927,5018,370,5019,4710,4710,4710,4710,4710,
+ 4710,4878,4710,4879,4877,4928,4880,4876,4710,4710,
+ 4710,4710,4710,4878,4710,4879,4877,4928,4880,4876
+ };
+ };
+ 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,
+ 497,529,263,75,497,24,1,36,591,591,
+ 36,591,36,20,120,24,436,36,58,299,
+ 58,299,36,58,364,36,36,36,36,24,
+ 263,592,172,120,430,124,561,169,458,243,
+ 101,101,101,101,101,101,101,101,436,101,
+ 101,101,132,193,198,196,204,200,207,206,
+ 209,208,210,299,299,299,299,364,364,36,
+ 36,36,263,222,120,55,561,427,340,120,
+ 44,464,395,55,55,182,101,213,594,243,
+ 243,243,243,243,494,494,370,101,101,101,
+ 101,101,101,101,101,101,101,101,101,101,
+ 101,101,101,101,101,101,101,299,328,74,
+ 299,299,328,364,177,176,177,563,75,223,
+ 120,464,338,44,124,169,286,466,398,458,
+ 286,436,340,101,101,101,101,101,101,101,
+ 101,101,101,101,101,561,52,461,55,55,
+ 55,55,55,54,458,196,196,193,193,200,
+ 200,198,198,198,198,206,204,208,207,218,
+ 209,328,331,328,177,328,101,495,120,222,
+ 173,99,99,99,99,173,173,495,122,122,
+ 122,81,122,122,172,173,135,218,101,218,
+ 427,466,338,286,44,55,50,54,54,286,
+ 458,395,338,594,464,55,531,181,181,181,
+ 181,592,101,101,172,101,215,328,220,173,
+ 173,173,173,173,241,241,101,293,101,101,
+ 81,218,81,177,296,44,561,461,466,495,
+ 398,101,458,436,338,52,466,55,331,101,
+ 99,99,173,99,99,173,55,122,55,55,
+ 81,336,340,495,101,295,50,531,458,458,
+ 177,55,99,173,99,173,99,370,173,370,
+ 173,99,81,101,81,81,458,336,369,173,
+ 99,369,173,99,99,173,81,55,370,81,
+ 55,370,370,173,55,221,81,55,369,369,
+ 173,81,55,369,369,173,369,173,99,81,
+ 81,55,81,81,55,81,55,370,173,81,
+ 81,81,55,81,55,369,81,81,55,81,
+ 55,369,81,55,369,369,173,81,81,81,
+ 81,55,81,81,81,55,81,81,81,55,
+ 81,81,55,81,55,369,81,81,81,81,
+ 81,81,55,81
+ };
+ };
+ 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,
+ 17,15,16,14,12,13,18,19,20,21,
+ 22,23,24,25,26,27,28,29,63,5,
+ 54,55,56,49,41,46,44,45,43,42,
+ 47,48,50,51,52,57,39,36,33,30,
+ 32,35,34,6,7,8,9,10,11,3,
+ 2,37,1,38,53,4,0,32,6,33,
+ 34,35,7,30,36,8,37,38,9,10,
+ 11,53,31,57,1,3,2,39,4,0,
+ 65,66,31,70,72,67,60,68,79,69,
+ 59,64,71,76,78,75,77,58,39,4,
+ 26,27,28,29,20,21,22,5,15,16,
+ 14,12,13,18,19,17,23,24,25,3,
+ 2,1,0,31,37,1,74,38,39,4,
+ 0,63,53,40,57,80,94,15,16,14,
+ 3,12,13,81,82,61,62,83,84,85,
+ 86,88,89,90,91,92,95,96,97,98,
+ 99,100,101,102,103,104,105,106,74,37,
+ 1,38,39,4,0,74,40,4,38,0,
+ 31,74,97,98,99,100,101,103,102,104,
+ 105,106,3,81,82,12,13,62,61,83,
+ 84,85,86,88,89,14,90,91,92,40,
+ 95,96,63,53,38,39,4,57,0,87,
+ 93,40,65,66,31,70,72,67,60,68,
+ 79,69,59,64,71,76,78,75,77,58,
+ 39,4,15,16,14,3,12,13,18,19,
+ 17,23,24,25,1,26,27,28,29,20,
+ 21,22,2,5,54,55,56,34,36,33,
+ 30,32,35,49,41,46,44,45,43,42,
+ 47,48,50,51,52,6,7,8,9,11,
+ 10,0,60,0,74,37,80,0,32,41,
+ 6,42,54,33,43,34,44,45,35,7,
+ 46,47,30,55,36,56,48,49,8,50,
+ 51,52,9,10,11,2,5,40,4,0,
+ 3,57,2,1,0,40,4,37,80,1,
+ 26,27,28,29,20,21,22,2,5,15,
+ 16,14,3,12,13,18,19,17,23,24,
+ 25,31,0,38,2,40,4,0,59,1,
+ 26,27,28,29,20,21,22,2,5,15,
+ 16,14,3,12,13,18,19,17,23,24,
+ 25,53,4,0,63,4,30,6,7,8,
+ 9,10,11,15,16,14,3,12,13,18,
+ 19,17,23,24,25,1,2,5,26,27,
+ 28,29,20,21,22,0,57,37,1,38,
+ 53,39,4,74,0,15,16,14,3,12,
+ 13,18,19,17,23,24,25,1,2,5,
+ 26,27,28,29,20,21,22,63,4,0,
+ 3,1,37,53,4,32,41,6,42,54,
+ 33,43,34,44,45,35,7,46,47,30,
+ 55,36,56,48,49,8,50,51,52,9,
+ 10,11,73,5,2,0,32,41,6,42,
+ 54,33,43,34,44,45,35,7,46,47,
+ 30,55,36,56,48,49,8,50,51,52,
+ 9,10,11,2,5,39,4,58,87,0,
+ 32,41,6,42,54,33,43,34,44,45,
+ 35,7,46,47,30,55,36,56,48,49,
+ 8,50,51,52,9,10,11,2,5,73,
+ 3,0,32,41,6,42,54,33,43,34,
+ 44,45,35,7,46,47,30,55,36,56,
+ 48,49,8,50,51,52,9,10,11,5,
+ 2,31,0,53,4,3,1,37,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,
+ 96,87,66,52,100,69,7,70,28,28,
+ 70,22,70,80,76,83,60,84,87,14,
+ 87,14,84,87,14,84,70,70,70,69,
+ 14,125,53,104,87,87,120,45,61,24,
+ 39,39,39,39,39,39,39,39,60,39,
+ 39,39,87,87,87,87,87,87,87,87,
+ 87,87,87,14,110,14,110,14,22,84,
+ 84,84,127,49,104,64,120,45,39,88,
+ 14,32,59,64,64,87,39,87,73,24,
+ 24,24,24,24,16,16,63,39,39,39,
+ 39,39,39,39,39,39,39,39,39,39,
+ 39,39,39,39,39,39,39,110,50,52,
+ 131,110,50,22,50,87,87,122,52,1,
+ 105,32,14,14,87,45,55,114,4,61,
+ 55,60,39,39,39,39,39,39,39,39,
+ 39,39,39,39,39,120,45,72,64,64,
+ 64,64,64,64,61,87,87,87,87,87,
+ 87,87,87,87,87,87,87,87,87,87,
+ 87,50,104,50,50,50,39,22,104,9,
+ 53,38,38,38,38,53,53,57,87,87,
+ 87,18,87,87,87,53,87,87,39,87,
+ 45,13,4,55,86,64,92,87,64,55,
+ 61,41,14,94,32,64,118,87,87,87,
+ 87,87,39,39,53,39,87,50,87,53,
+ 53,53,53,53,35,35,39,87,39,39,
+ 18,87,18,50,107,86,120,91,13,87,
+ 42,39,61,60,4,45,13,64,104,39,
+ 38,38,53,38,38,53,64,87,64,64,
+ 18,47,39,87,39,30,93,118,61,61,
+ 50,64,38,53,38,53,38,63,53,63,
+ 53,38,18,39,18,18,61,47,63,53,
+ 38,63,53,38,38,53,18,64,63,18,
+ 64,63,63,53,64,87,18,64,63,63,
+ 53,18,64,63,63,53,63,53,38,18,
+ 18,64,18,18,64,18,64,63,53,18,
+ 18,18,64,18,64,63,18,18,64,18,
+ 64,63,18,64,63,63,53,18,18,18,
+ 18,64,18,18,18,64,18,18,18,64,
+ 18,18,64,18,64,63,18,18,18,18,
+ 18,18,64,18
+ };
+ };
+ 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,
+ 34,32,86,4,22,0,99,0,4,32,
+ 41,71,34,22,0,1,0,32,4,26,
+ 0,64,0,22,44,4,0,76,0,81,
+ 0,22,21,0,22,34,49,19,4,0,
+ 40,4,35,0,42,0,4,67,22,41,
+ 0,22,19,0,65,0,87,0,22,4,
+ 40,0,4,21,0,75,74,73,57,48,
+ 0,21,56,22,0,22,47,94,0,73,
+ 74,75,57,38,39,35,0,47,80,0,
+ 21,22,45,56,0,97,34,22,0,34,
+ 22,82,0,22,45,0,96,95,0,63,
+ 22,44,0,93,22,34,0,22,34,54,
+ 0,22,34,49,24,0,34,22,98,0,
+ 22,44,58,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,99,9,113,112,51,67,79,87,88,
+ 89,10,11,8,6,7,71,12,13,84,
+ 85,86,91,92,93,100,101,102,103,72,
+ 3,47,58,63,66,75,1,42,107,106,
+ 50,55,59,64,65,69,70,77,78,81,
+ 82,83,105,57,73,76,29,116,52,80,
+ 16,17,104,48,49,53,54,60,61,62,
+ 68,74,30,31,90,94,95,96,97,4,
+ 14,15,18,19,20,21,98,22,23,24,
+ 25,26,56,5,27,28,32,33,34,35,
+ 36,37,38,39,40,41,43,44,45,108,
+ 109,110,111,114,115
+ };
+ };
+ 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,
+ 117,0,0,123,128,129,130,131,132,133,
+ 134,135,136,137,138,139,140,127,121,142,
+ 119,0,122,145,141,144,0,0,0,0,
+ 0,146,0,151,159,0,0,158,160,118,
+ 120,180,199,171,177,0,179,157,149,166,
+ 125,143,167,178,188,190,161,170,181,187,
+ 165,0,169,174,186,189,191,153,176,126,
+ 148,152,162,163,164,168,173,0,175,183,
+ 194,196,0,0,124,147,150,154,155,156,
+ 172,182,184,185,192,193,195,197,198,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[] = {
+ 219,219,62,72,108,133,139,108,189,38,
+ 90,98,114,145,150,78,114,6,12,16,
+ 29,43,86,55,123,198,215,239,243,29,
+ 55,55,202,55,1,1,24,47,50,95,
+ 103,50,164,174,247,127,209,180,209,209,
+ 20,119,155,155,155,155,155,155
+ };
+ };
+ public final static char scopePrefix[] = ScopePrefix.scopePrefix;
+ public final int scopePrefix(int index) { return scopePrefix[index]; }
+
+ public interface ScopeSuffix {
+ public final static char scopeSuffix[] = {
+ 36,33,4,4,36,36,36,33,195,10,
+ 4,10,36,36,36,83,33,10,10,10,
+ 36,10,4,4,121,36,10,10,4,33,
+ 59,83,206,68,4,4,27,10,53,4,
+ 10,106,167,167,10,130,212,183,233,226,
+ 22,121,157,162,172,159,169,177
+ };
+ };
+ public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
+ public final int scopeSuffix(int index) { return scopeSuffix[index]; }
+
+ public interface ScopeLhs {
+ public final static char scopeLhs[] = {
+ 4,4,42,42,74,73,73,74,29,56,
+ 42,47,74,73,73,42,74,5,5,5,
+ 53,56,42,42,58,24,5,4,4,53,
+ 42,42,17,42,99,81,67,56,66,42,
+ 45,50,89,88,3,58,6,30,4,4,
+ 95,58,90,89,88,90,89,88
+ };
+ };
+ public final static char scopeLhs[] = ScopeLhs.scopeLhs;
+ public final int scopeLhs(int index) { return scopeLhs[index]; }
+
+ public interface ScopeLa {
+ public final static byte scopeLa[] = {
+ 40,38,63,63,40,40,40,38,93,53,
+ 63,53,40,40,40,26,38,53,53,53,
+ 40,53,63,63,39,40,53,53,63,38,
+ 3,26,57,30,63,63,26,53,1,63,
+ 53,2,36,36,53,2,53,60,53,53,
+ 74,39,2,54,55,2,54,55
+ };
+ };
+ public final static byte scopeLa[] = ScopeLa.scopeLa;
+ public final int scopeLa(int index) { return scopeLa[index]; }
+
+ public interface ScopeStateSet {
+ public final static char scopeStateSet[] = {
+ 79,79,17,17,254,254,254,254,193,23,
+ 17,240,254,254,254,17,254,79,79,79,
+ 4,23,17,17,11,30,79,79,79,4,
+ 17,17,113,17,252,1,6,23,25,17,
+ 240,243,255,255,79,11,85,193,79,79,
+ 2,11,255,255,255,255,255,255
+ };
+ };
+ 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,
+ 167,37,0,118,0,166,1,25,0,119,
+ 0,166,1,24,0,166,1,23,0,211,
+ 0,31,0,210,137,0,167,0,185,137,
+ 31,0,42,120,0,120,0,174,137,1,
+ 171,0,174,137,1,0,181,1,0,169,
+ 137,0,190,0,180,137,37,0,9,118,
+ 0,133,30,180,137,37,0,72,127,118,
+ 0,133,180,137,30,37,0,180,137,30,
+ 37,0,127,118,0,133,30,37,0,133,
+ 180,137,37,0,133,37,0,174,137,1,
+ 160,0,165,1,0,177,0,193,137,31,
+ 179,54,0,193,137,31,54,0,159,0,
+ 121,0,206,137,159,0,137,159,0,172,
+ 121,0,177,137,31,191,56,0,177,137,
+ 31,191,55,0,177,137,31,56,0,177,
+ 137,31,55,0,163,0,164,0,164,157,
+ 0,163,0,189,163,0,157,0,163,157,
+ 0,162,0,188,163,0,162,157,0,141,
+ 67,0,80,2,122,119,121,0,141,136,
+ 138,1,70,0,56,144,0,201,137,31,
+ 0,138,96,131,0,29,140,0,166,1,
+ 0,119,129,0,166,1,17,0,185,137,
+ 31,136,166,1,0,119,3,0,126,42,
+ 120,0,119,3,0,126,120,0,200,1,
+ 119,0,138,37,119,0,138,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,
+ 2222,4362,0,3777,3700,2517,2449,2426,2355,0,
+ 4456,4582,4445,4410,4407,0,4222,4214,3732,3679,
+ 3478,2447,3773,3677,4272,4255,4203,4545,0,1909,
+ 1875,1841,1807,1773,1739,1705,1671,1637,1603,1569,
+ 1535,1501,1467,1433,1399,1365,1331,1297,1263,1229,
+ 1195,1161,1127,1093,1059,1025,991,957,923,889,
+ 855,821,787,753,719,685,651,617,583,549,
+ 515,481,447,397,347,4524,2252,0,2578,2196,
+ 2144,2092,2040,1988,2239,3742,2187,3008,382,3482,
+ 2340,2290,2123,2071,2019,1967,2503,2397,2176,2082,
+ 2030,1978,3735,3723,3577,3570,2571,2135,2559,2329,
+ 2280,439,2849,2825,2801,2777,2753,3435,3411,2729,
+ 2705,2681,2657,2633,3387,3363,3339,3315,3291,2609,
+ 3267,2585,2517,3658,3243,3219,3195,3171,3147,3123,
+ 4182,3777,2449,3099,3075,3051,3027,4164,2426,4129,
+ 2989,3634,3610,3586,2305,2255,4111,2540,4092,2378,
+ 2355,4039,2965,2941,2917,2893,4021,4002,3983,3964,
+ 3945,3926,3907,3888,3869,3850,3831,3796,2873,3754,
+ 3546,3522,3500,2203,2151,2099,2047,1995,3459,3700,
+ 1943,3682,1909,1875,1841,1807,1773,1739,1705,1671,
+ 1637,1603,1569,1535,1501,1467,1433,1399,1365,1331,
+ 1297,1263,1229,1195,1161,1127,1093,1059,1025,991,
+ 957,923,889,855,821,787,753,719,685,651,
+ 617,583,549,515,481,447,397,347,0,3773,
+ 2374,4261,4482,4272,4255,4304,2423,4430,4337,4204,
+ 0,370,0,4205,4200,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,199,137,149,212,172,10,188,56,55,
+ 189,54,190,163,137,163,37,163,191,31,
+ 191,31,163,179,31,163,190,189,188,172,
+ 209,207,187,1,165,162,137,160,167,1,
+ 25,24,23,17,19,18,13,12,3,14,
+ 16,15,119,122,124,123,126,125,128,127,
+ 130,129,131,31,137,31,137,31,137,163,
+ 163,163,137,31,38,165,137,160,74,169,
+ 3,1,37,166,138,120,3,135,159,1,
+ 1,1,1,1,94,80,1,37,82,81,
+ 3,61,62,13,12,89,88,86,85,84,
+ 83,90,14,92,91,96,95,137,177,159,
+ 178,137,177,137,193,179,194,213,149,137,
+ 169,1,31,3,162,160,137,137,30,133,
+ 137,3,136,106,105,104,102,103,101,100,
+ 99,98,97,74,38,137,171,1,166,166,
+ 166,166,166,200,138,123,123,122,122,125,
+ 125,124,124,124,124,127,126,129,128,138,
+ 130,177,137,177,193,38,74,38,137,201,
+ 77,75,78,76,71,64,59,69,79,68,
+ 60,67,72,70,135,140,2,66,65,147,
+ 160,137,137,137,180,174,149,175,208,137,
+ 133,180,31,169,1,181,137,136,136,136,
+ 136,136,38,57,206,57,165,38,4,138,
+ 138,138,138,202,1,1,1,141,1,1,
+ 57,167,57,185,137,180,137,1,38,38,
+ 180,30,133,3,137,171,137,174,38,57,
+ 164,134,138,164,134,138,138,60,138,138,
+ 57,38,210,80,37,211,169,137,133,133,
+ 185,174,134,138,134,138,134,134,138,134,
+ 138,134,136,1,136,136,167,38,134,138,
+ 134,134,138,134,134,138,136,138,134,136,
+ 138,134,134,138,138,141,136,158,134,134,
+ 138,136,158,134,134,138,134,138,134,136,
+ 136,138,136,136,138,136,138,134,136,93,
+ 136,136,158,136,158,134,136,136,158,136,
+ 158,134,136,158,134,134,138,136,136,136,
+ 136,138,136,136,136,158,136,136,136,158,
+ 136,136,158,136,158,134,136,136,136,136,
+ 136,136,158,136
+ };
+ };
+ public final static char inSymb[] = InSymb.inSymb;
+ public final int inSymb(int index) { return inSymb[index]; }
+
+ public interface Name {
+ public final static String name[] = {
+ "",
+ "[",
+ "(",
+ "{",
+ ".",
+ "->",
+ "++",
+ "--",
+ "&",
+ "*",
+ "+",
+ "-",
+ "~",
+ "!",
+ "/",
+ "%",
+ ">>",
+ "<<",
+ "<",
+ ">",
+ "<=",
+ ">=",
+ "==",
+ "!=",
+ "^",
+ "|",
+ "&&",
+ "||",
+ "?",
+ ":",
+ "...",
+ "=",
+ "*=",
+ "/=",
+ "%=",
+ "+=",
+ "-=",
+ ">>=",
+ "<<=",
+ "&=",
+ "^=",
+ "|=",
+ ",",
+ "#",
+ "##",
+ "nl",
+ "$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",
+ "MYTHREAD",
+ "THREADS",
+ "UPC_MAX_BLOCKSIZE",
+ "relaxed",
+ "shared",
+ "strict",
+ "upc_barrier",
+ "upc_localsizeof",
+ "upc_blocksizeof",
+ "upc_elemsizeof",
+ "upc_notify",
+ "upc_fence",
+ "upc_wait",
+ "upc_forall",
+ "EOF_TOKEN",
+ "identifier",
+ "integer",
+ "floating",
+ "charconst",
+ "stringlit",
+ "RightBracket",
+ "RightParen",
+ "RightBrace",
+ "SemiColon",
+ "Invalid",
+ "PlaceMarker",
+ "Parameter",
+ "DisabledMacroName",
+ "Completion",
+ "EndOfCompletion",
+ "SingleLineComment",
+ "MultiLineComment",
+ "ERROR_TOKEN",
+ "ident",
+ "]",
+ ")",
+ "}",
+ ";",
+ "expression",
+ "postfix_expression",
+ "argument_expression_list",
+ "type_name",
+ "initializer_list",
+ "assignment_expression",
+ "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",
+ "conditional_expression",
+ "expression_in_statement",
+ "expression_list",
+ "constant_expression",
+ "statement",
+ "compound_statement",
+ "label_identifier",
+ "block_item_list",
+ "block_item",
+ "declaration",
+ "goto_identifier",
+ "declaration_specifiers",
+ "init_declarator_list",
+ "simple_declaration_specifiers",
+ "struct_or_union_declaration_sp" +
+ "ecifiers",
+ "enum_declaration_specifiers",
+ "typdef_name_declaration_specif" +
+ "iers",
+ "no_type_declaration_specifiers",
+ "storage_class_specifier",
+ "type_qualifier",
+ "function_specifier",
+ "type_specifier",
+ "struct_or_union_specifier",
+ "enum_specifier",
+ "typedef_name",
+ "init_declarator",
+ "declarator",
+ "initializer",
+ "struct_or_union_identifier",
+ "struct_declaration_list",
+ "struct_declaration",
+ "specifier_qualifier_list",
+ "struct_declarator_list",
+ "struct_declarator",
+ "enum_identifier",
+ "enumerator_list",
+ "enumerator",
+ "direct_declarator",
+ "pointer",
+ "function_direct_declarator",
+ "array_modifier",
+ "parameter_type_list",
+ "function_declarator",
+ "knr_direct_declarator",
+ "identifier_list",
+ "knr_function_declarator",
+ "type_qualifier_list",
+ "parameter_list",
+ "parameter_declaration",
+ "abstract_declarator",
+ "direct_abstract_declarator",
+ "designated_initializer",
+ "designation",
+ "designator_list",
+ "designator",
+ "external_declaration_list",
+ "external_declaration",
+ "declaration_list",
+ "layout_qualifier",
+ "affinity"
+ };
+ };
+ public final static String name[] = Name.name;
+ public final String name(int index) { return name[index]; }
+
+ public final static int
+ ERROR_SYMBOL = 58,
+ SCOPE_UBOUND = 57,
+ SCOPE_SIZE = 58,
+ 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 = 394,
+ NT_OFFSET = 115,
+ LA_STATE_OFFSET = 5056,
+ MAX_LA = 2147483647,
+ NUM_RULES = 346,
+ NUM_NONTERMINALS = 100,
+ NUM_SYMBOLS = 215,
+ SEGMENT_SIZE = 8192,
+ START_STATE = 4291,
+ IDENTIFIER_SYMBOL = 0,
+ EOFT_SYMBOL = 87,
+ EOLT_SYMBOL = 87,
+ ACCEPT_ACTION = 4679,
+ ERROR_ACTION = 4710;
+
+ 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/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParsersym.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParsersym.java
new file mode 100644
index 00000000000..3b027b662ec
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParsersym.java
@@ -0,0 +1,254 @@
+/*******************************************************************************
+* Copyright (c) 2006, 2007 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.dom.parser.upc;
+
+public interface UPCParsersym {
+ public final static int
+ TK_auto = 32,
+ TK_break = 64,
+ TK_case = 65,
+ TK_char = 41,
+ TK_const = 6,
+ TK_continue = 59,
+ TK_default = 66,
+ TK_do = 67,
+ TK_double = 42,
+ TK_else = 93,
+ TK_enum = 54,
+ TK_extern = 33,
+ TK_float = 43,
+ TK_for = 68,
+ TK_goto = 69,
+ TK_if = 70,
+ TK_inline = 34,
+ TK_int = 44,
+ TK_long = 45,
+ TK_register = 35,
+ TK_restrict = 7,
+ TK_return = 71,
+ TK_short = 46,
+ TK_signed = 47,
+ TK_sizeof = 17,
+ TK_static = 30,
+ TK_struct = 55,
+ TK_switch = 72,
+ TK_typedef = 36,
+ TK_union = 56,
+ TK_unsigned = 48,
+ TK_void = 49,
+ TK_volatile = 8,
+ TK_while = 60,
+ TK__Bool = 50,
+ TK__Complex = 51,
+ TK__Imaginary = 52,
+ TK_LeftBracket = 37,
+ TK_LeftParen = 1,
+ TK_LeftBrace = 31,
+ TK_Dot = 80,
+ TK_Arrow = 94,
+ TK_PlusPlus = 15,
+ TK_MinusMinus = 16,
+ TK_And = 14,
+ TK_Star = 3,
+ TK_Plus = 12,
+ TK_Minus = 13,
+ TK_Tilde = 18,
+ TK_Bang = 19,
+ TK_Slash = 81,
+ TK_Percent = 82,
+ TK_RightShift = 61,
+ TK_LeftShift = 62,
+ TK_LT = 83,
+ TK_GT = 84,
+ TK_LE = 85,
+ TK_GE = 86,
+ TK_EQ = 88,
+ TK_NE = 89,
+ TK_Caret = 90,
+ TK_Or = 91,
+ TK_AndAnd = 92,
+ TK_OrOr = 95,
+ TK_Question = 96,
+ TK_Colon = 57,
+ TK_DotDotDot = 73,
+ TK_Assign = 74,
+ TK_StarAssign = 97,
+ TK_SlashAssign = 98,
+ TK_PercentAssign = 99,
+ TK_PlusAssign = 100,
+ TK_MinusAssign = 101,
+ TK_RightShiftAssign = 102,
+ TK_LeftShiftAssign = 103,
+ TK_AndAssign = 104,
+ TK_CaretAssign = 105,
+ TK_OrAssign = 106,
+ TK_Comma = 38,
+ TK_Hash = 107,
+ TK_HashHash = 108,
+ TK_NewLine = 109,
+ TK_MYTHREAD = 20,
+ TK_THREADS = 21,
+ TK_UPC_MAX_BLOCKSIZE = 22,
+ TK_relaxed = 9,
+ TK_shared = 10,
+ TK_strict = 11,
+ TK_upc_barrier = 75,
+ TK_upc_localsizeof = 23,
+ TK_upc_blocksizeof = 24,
+ TK_upc_elemsizeof = 25,
+ TK_upc_notify = 76,
+ TK_upc_fence = 77,
+ TK_upc_wait = 78,
+ TK_upc_forall = 79,
+ TK_EOF_TOKEN = 87,
+ TK_identifier = 2,
+ TK_integer = 26,
+ TK_floating = 27,
+ TK_charconst = 28,
+ TK_stringlit = 29,
+ TK_RightBracket = 63,
+ TK_RightParen = 53,
+ TK_RightBrace = 40,
+ TK_SemiColon = 39,
+ TK_Invalid = 110,
+ TK_PlaceMarker = 111,
+ TK_Parameter = 112,
+ TK_DisabledMacroName = 113,
+ TK_Completion = 5,
+ TK_EndOfCompletion = 4,
+ TK_SingleLineComment = 114,
+ TK_MultiLineComment = 115,
+ TK_ERROR_TOKEN = 58;
+
+ public final static String orderedTerminalSymbols[] = {
+ "",//$NON-NLS-1$
+ "LeftParen",//$NON-NLS-1$
+ "identifier",//$NON-NLS-1$
+ "Star",//$NON-NLS-1$
+ "EndOfCompletion",//$NON-NLS-1$
+ "Completion",//$NON-NLS-1$
+ "const",//$NON-NLS-1$
+ "restrict",//$NON-NLS-1$
+ "volatile",//$NON-NLS-1$
+ "relaxed",//$NON-NLS-1$
+ "shared",//$NON-NLS-1$
+ "strict",//$NON-NLS-1$
+ "Plus",//$NON-NLS-1$
+ "Minus",//$NON-NLS-1$
+ "And",//$NON-NLS-1$
+ "PlusPlus",//$NON-NLS-1$
+ "MinusMinus",//$NON-NLS-1$
+ "sizeof",//$NON-NLS-1$
+ "Tilde",//$NON-NLS-1$
+ "Bang",//$NON-NLS-1$
+ "MYTHREAD",//$NON-NLS-1$
+ "THREADS",//$NON-NLS-1$
+ "UPC_MAX_BLOCKSIZE",//$NON-NLS-1$
+ "upc_localsizeof",//$NON-NLS-1$
+ "upc_blocksizeof",//$NON-NLS-1$
+ "upc_elemsizeof",//$NON-NLS-1$
+ "integer",//$NON-NLS-1$
+ "floating",//$NON-NLS-1$
+ "charconst",//$NON-NLS-1$
+ "stringlit",//$NON-NLS-1$
+ "static",//$NON-NLS-1$
+ "LeftBrace",//$NON-NLS-1$
+ "auto",//$NON-NLS-1$
+ "extern",//$NON-NLS-1$
+ "inline",//$NON-NLS-1$
+ "register",//$NON-NLS-1$
+ "typedef",//$NON-NLS-1$
+ "LeftBracket",//$NON-NLS-1$
+ "Comma",//$NON-NLS-1$
+ "SemiColon",//$NON-NLS-1$
+ "RightBrace",//$NON-NLS-1$
+ "char",//$NON-NLS-1$
+ "double",//$NON-NLS-1$
+ "float",//$NON-NLS-1$
+ "int",//$NON-NLS-1$
+ "long",//$NON-NLS-1$
+ "short",//$NON-NLS-1$
+ "signed",//$NON-NLS-1$
+ "unsigned",//$NON-NLS-1$
+ "void",//$NON-NLS-1$
+ "_Bool",//$NON-NLS-1$
+ "_Complex",//$NON-NLS-1$
+ "_Imaginary",//$NON-NLS-1$
+ "RightParen",//$NON-NLS-1$
+ "enum",//$NON-NLS-1$
+ "struct",//$NON-NLS-1$
+ "union",//$NON-NLS-1$
+ "Colon",//$NON-NLS-1$
+ "ERROR_TOKEN",//$NON-NLS-1$
+ "continue",//$NON-NLS-1$
+ "while",//$NON-NLS-1$
+ "RightShift",//$NON-NLS-1$
+ "LeftShift",//$NON-NLS-1$
+ "RightBracket",//$NON-NLS-1$
+ "break",//$NON-NLS-1$
+ "case",//$NON-NLS-1$
+ "default",//$NON-NLS-1$
+ "do",//$NON-NLS-1$
+ "for",//$NON-NLS-1$
+ "goto",//$NON-NLS-1$
+ "if",//$NON-NLS-1$
+ "return",//$NON-NLS-1$
+ "switch",//$NON-NLS-1$
+ "DotDotDot",//$NON-NLS-1$
+ "Assign",//$NON-NLS-1$
+ "upc_barrier",//$NON-NLS-1$
+ "upc_notify",//$NON-NLS-1$
+ "upc_fence",//$NON-NLS-1$
+ "upc_wait",//$NON-NLS-1$
+ "upc_forall",//$NON-NLS-1$
+ "Dot",//$NON-NLS-1$
+ "Slash",//$NON-NLS-1$
+ "Percent",//$NON-NLS-1$
+ "LT",//$NON-NLS-1$
+ "GT",//$NON-NLS-1$
+ "LE",//$NON-NLS-1$
+ "GE",//$NON-NLS-1$
+ "EOF_TOKEN",//$NON-NLS-1$
+ "EQ",//$NON-NLS-1$
+ "NE",//$NON-NLS-1$
+ "Caret",//$NON-NLS-1$
+ "Or",//$NON-NLS-1$
+ "AndAnd",//$NON-NLS-1$
+ "else",//$NON-NLS-1$
+ "Arrow",//$NON-NLS-1$
+ "OrOr",//$NON-NLS-1$
+ "Question",//$NON-NLS-1$
+ "StarAssign",//$NON-NLS-1$
+ "SlashAssign",//$NON-NLS-1$
+ "PercentAssign",//$NON-NLS-1$
+ "PlusAssign",//$NON-NLS-1$
+ "MinusAssign",//$NON-NLS-1$
+ "RightShiftAssign",//$NON-NLS-1$
+ "LeftShiftAssign",//$NON-NLS-1$
+ "AndAssign",//$NON-NLS-1$
+ "CaretAssign",//$NON-NLS-1$
+ "OrAssign",//$NON-NLS-1$
+ "Hash",//$NON-NLS-1$
+ "HashHash",//$NON-NLS-1$
+ "NewLine",//$NON-NLS-1$
+ "Invalid",//$NON-NLS-1$
+ "PlaceMarker",//$NON-NLS-1$
+ "Parameter",//$NON-NLS-1$
+ "DisabledMacroName",//$NON-NLS-1$
+ "SingleLineComment",//$NON-NLS-1$
+ "MultiLineComment"//$NON-NLS-1$
+ };
+
+ public final static boolean isValidForParser = true;
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTCompositeTypeSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTCompositeTypeSpecifier.java
new file mode 100644
index 00000000000..b8fcd023f0a
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTCompositeTypeSpecifier.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.parser.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTCompositeTypeSpecifier;
+import org.eclipse.cdt.internal.core.dom.parser.c.CASTCompositeTypeSpecifier;
+
+public class UPCASTCompositeTypeSpecifier extends CASTCompositeTypeSpecifier implements
+ IUPCASTCompositeTypeSpecifier {
+
+
+ private int referenceType;
+ private int sharedQualifier;
+ private IASTExpression blockSizeExpression;
+
+
+ public IASTExpression getBlockSizeExpression() {
+ return blockSizeExpression;
+ }
+
+ public int getReferenceType() {
+ return referenceType;
+ }
+
+ public int getSharedQualifier() {
+ return sharedQualifier;
+ }
+
+ public void setBlockSizeExpression(IASTExpression expr) {
+ this.blockSizeExpression = expr;
+ }
+
+ public void setReferenceType(int referenceType) {
+ this.referenceType = referenceType;
+ }
+
+ public void setSharedQualifier(int shared) {
+ this.sharedQualifier = shared;
+ }
+
+
+
+ public boolean accept( ASTVisitor action ){
+ if( action.shouldVisitDeclSpecifiers ){
+ switch( action.visit( this ) ){
+ case ASTVisitor.PROCESS_ABORT : return false;
+ case ASTVisitor.PROCESS_SKIP : return true;
+ default : break;
+ }
+ }
+ if( getName() != null ) if( !getName().accept( action ) ) return false;
+ if( blockSizeExpression != null) if( !blockSizeExpression.accept( action ) ) return false;
+
+ IASTDeclaration [] decls = getMembers();
+ for( int i = 0; i < decls.length; i++ )
+ if( !decls[i].accept( action ) ) return false;
+
+ if( action.shouldVisitDeclSpecifiers ){
+ switch( action.leave( this ) ){
+ case ASTVisitor.PROCESS_ABORT : return false;
+ case ASTVisitor.PROCESS_SKIP : return true;
+ default : break;
+ }
+ }
+ return true;
+ }
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTElaboratedTypeSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTElaboratedTypeSpecifier.java
new file mode 100644
index 00000000000..368d1fd0900
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTElaboratedTypeSpecifier.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.parser.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTElaboratedTypeSpecifier;
+import org.eclipse.cdt.internal.core.dom.parser.c.CASTElaboratedTypeSpecifier;
+
+public class UPCASTElaboratedTypeSpecifier extends CASTElaboratedTypeSpecifier implements IUPCASTElaboratedTypeSpecifier {
+
+ private int referenceType;
+ private int sharedQualifier;
+ private IASTExpression blockSizeExpression;
+
+
+ public IASTExpression getBlockSizeExpression() {
+ return blockSizeExpression;
+ }
+
+ public int getReferenceType() {
+ return referenceType;
+ }
+
+ public int getSharedQualifier() {
+ return sharedQualifier;
+ }
+
+ public void setBlockSizeExpression(IASTExpression expr) {
+ this.blockSizeExpression = expr;
+ }
+
+ public void setReferenceType(int referenceType) {
+ this.referenceType = referenceType;
+ }
+
+ public void setSharedQualifier(int shared) {
+ this.sharedQualifier = shared;
+ }
+
+
+ public boolean accept( ASTVisitor action ){
+ if( action.shouldVisitDeclSpecifiers ){
+ switch( action.visit( this ) ){
+ case ASTVisitor.PROCESS_ABORT : return false;
+ case ASTVisitor.PROCESS_SKIP : return true;
+ default : break;
+ }
+ }
+ if( getName() != null ) if( !getName().accept( action ) ) return false;
+ if( blockSizeExpression != null) if( !blockSizeExpression.accept( action ) ) return false;
+
+ if( action.shouldVisitDeclSpecifiers ){
+ switch( action.leave( this ) ){
+ case ASTVisitor.PROCESS_ABORT : return false;
+ case ASTVisitor.PROCESS_SKIP : return true;
+ default : break;
+ }
+ }
+ return true;
+ }
+
+
+
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTEnumerationSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTEnumerationSpecifier.java
new file mode 100644
index 00000000000..b1864064bdf
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTEnumerationSpecifier.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.parser.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTEnumerationSpecifier;
+import org.eclipse.cdt.internal.core.dom.parser.c.CASTEnumerationSpecifier;
+
+public class UPCASTEnumerationSpecifier extends CASTEnumerationSpecifier
+ implements IUPCASTEnumerationSpecifier {
+
+ private int referenceType;
+ private int sharedQualifier;
+ private IASTExpression blockSizeExpression;
+
+
+ public IASTExpression getBlockSizeExpression() {
+ return blockSizeExpression;
+ }
+
+ public int getReferenceType() {
+ return referenceType;
+ }
+
+ public int getSharedQualifier() {
+ return sharedQualifier;
+ }
+
+ public void setBlockSizeExpression(IASTExpression expr) {
+ this.blockSizeExpression = expr;
+ }
+
+ public void setReferenceType(int referenceType) {
+ this.referenceType = referenceType;
+ }
+
+ public void setSharedQualifier(int shared) {
+ this.sharedQualifier = shared;
+ }
+
+ public boolean accept( ASTVisitor action ){
+ if( action.shouldVisitDeclSpecifiers ){
+ switch( action.visit( this ) ){
+ case ASTVisitor.PROCESS_ABORT : return false;
+ case ASTVisitor.PROCESS_SKIP : return true;
+ default : break;
+ }
+ }
+ if( getName() != null ) if( !getName().accept( action ) ) return false;
+ if( blockSizeExpression != null) if( !blockSizeExpression.accept( action ) ) return false;
+
+ IASTEnumerator[] etors = getEnumerators();
+ for ( int i = 0; i < etors.length; i++ ) {
+ if( !etors[i].accept( action ) ) return false;
+ }
+ if( action.shouldVisitDeclSpecifiers ){
+ switch( action.leave( this ) ){
+ case ASTVisitor.PROCESS_ABORT : return false;
+ case ASTVisitor.PROCESS_SKIP : return true;
+ default : break;
+ }
+ }
+ return true;
+ }
+
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTForallStatement.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTForallStatement.java
new file mode 100644
index 00000000000..9b6bd49f35b
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTForallStatement.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.parser.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.ast.IASTStatement;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTForallStatement;
+import org.eclipse.cdt.internal.core.dom.parser.c.CASTForStatement;
+
+public class UPCASTForallStatement extends CASTForStatement implements IUPCASTForallStatement {
+
+ private IASTExpression affinity;
+ private boolean affinityContinue;
+
+
+ public boolean isAffinityContinue() {
+ return affinityContinue;
+ }
+
+ public IASTExpression getAffinityExpresiion() {
+ return affinity;
+ }
+
+ public void setAffinityExpression(IASTExpression affinity) {
+ if(affinity != null)
+ this.affinityContinue = false;
+ this.affinity = affinity;
+ }
+
+ public void setAffinityContinue(boolean affinityContinue) {
+ if(affinityContinue)
+ this.affinity = null;
+ this.affinityContinue = affinityContinue;
+ }
+
+
+ public boolean accept(ASTVisitor visitor) {
+ if(visitor.shouldVisitStatements) {
+ switch(visitor.visit(this)){
+ case ASTVisitor.PROCESS_ABORT : return false;
+ case ASTVisitor.PROCESS_SKIP : return true;
+ }
+ }
+
+ IASTStatement initializer = super.getInitializerStatement();
+ if(initializer != null) if(!initializer.accept(visitor)) return false;
+
+ IASTExpression condition = super.getConditionExpression();
+ if(condition != null) if(!condition.accept(visitor)) return false;
+
+ IASTExpression iteration = super.getIterationExpression();
+ if(iteration != null) if(!iteration.accept(visitor)) return false;
+
+ if(affinity != null) if(!affinity.accept(visitor)) return false;
+
+ IASTStatement body = super.getBody();
+ if(body != null) if(!body.accept(visitor)) return false;
+
+ if(visitor.shouldVisitStatements) {
+ switch(visitor.leave(this)){
+ case ASTVisitor.PROCESS_ABORT : return false;
+ case ASTVisitor.PROCESS_SKIP : return true;
+ }
+ }
+
+ return true;
+ }
+
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTKeywordExpression.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTKeywordExpression.java
new file mode 100644
index 00000000000..5d2ed7e1102
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTKeywordExpression.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.parser.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.IBasicType;
+import org.eclipse.cdt.core.dom.ast.IType;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
+import org.eclipse.cdt.internal.core.dom.parser.c.CASTNode;
+import org.eclipse.cdt.internal.core.dom.parser.c.CBasicType;
+
+public class UPCASTKeywordExpression extends CASTNode implements IUPCASTKeywordExpression {
+
+
+ private int keywordKind;
+
+ public int getKeywordKind() {
+ return keywordKind;
+ }
+
+ public void setKeywordKind(int kind) {
+ this.keywordKind = kind;
+
+ }
+
+ public IType getExpressionType() {
+ return new CBasicType(IBasicType.t_int, 0, this);
+ }
+
+
+ public boolean accept(ASTVisitor visitor) {
+ if(visitor.shouldVisitExpressions) {
+ switch(visitor.visit(this)) {
+ case ASTVisitor.PROCESS_ABORT : return false;
+ case ASTVisitor.PROCESS_SKIP : return true;
+ }
+ }
+ if(visitor.shouldVisitExpressions) {
+ switch(visitor.leave(this)) {
+ case ASTVisitor.PROCESS_ABORT : return false;
+ case ASTVisitor.PROCESS_SKIP : return true;
+ }
+ }
+ return true;
+ }
+
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTLayoutQualifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTLayoutQualifier.java
new file mode 100644
index 00000000000..66b955eb09d
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTLayoutQualifier.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.parser.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTLayoutQualifier;
+
+public class UPCASTLayoutQualifier implements IUPCASTLayoutQualifier {
+
+
+ private boolean isPure;
+ private boolean isIndefinite;
+ private IASTExpression blockSizeExpression;
+
+
+ public IASTExpression getBlockSizeExpression() {
+ return blockSizeExpression;
+ }
+
+
+ public boolean isIndefiniteBlockAllocation() {
+ return isIndefinite;
+ }
+
+
+ public boolean isPureBlockAllocation() {
+ return isPure;
+ }
+
+
+ public void setBlockSizeExpression(IASTExpression expr) {
+ this.blockSizeExpression = expr;
+ }
+
+
+ public void setIndefiniteBlockAllocation(boolean allocation) {
+ this.isIndefinite = allocation;
+
+ }
+
+
+ public void setPureBlockAllocation(boolean allocation) {
+ this.isPure = allocation;
+ }
+
+
+
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSimpleDeclSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSimpleDeclSpecifier.java
new file mode 100644
index 00000000000..42f64d9db4e
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSimpleDeclSpecifier.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.parser.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSimpleDeclSpecifier;
+import org.eclipse.cdt.internal.core.dom.parser.c.CASTSimpleDeclSpecifier;
+
+public class UPCASTSimpleDeclSpecifier extends CASTSimpleDeclSpecifier
+ implements IUPCASTSimpleDeclSpecifier {
+
+ private int referenceType;
+ private int sharedQualifier;
+ private IASTExpression blockSizeExpression;
+
+
+ public IASTExpression getBlockSizeExpression() {
+ return blockSizeExpression;
+ }
+
+ public int getReferenceType() {
+ return referenceType;
+ }
+
+ public int getSharedQualifier() {
+ return sharedQualifier;
+ }
+
+ public void setBlockSizeExpression(IASTExpression expr) {
+ this.blockSizeExpression = expr;
+ }
+
+ public void setReferenceType(int referenceType) {
+ this.referenceType = referenceType;
+ }
+
+ public void setSharedQualifier(int shared) {
+ this.sharedQualifier = shared;
+ }
+
+
+ public boolean accept( ASTVisitor action ){
+ if( action.shouldVisitDeclSpecifiers ){
+ switch( action.visit( this ) ){
+ case ASTVisitor.PROCESS_ABORT : return false;
+ case ASTVisitor.PROCESS_SKIP : return true;
+ default : break;
+ }
+ }
+ if( blockSizeExpression != null) if( !blockSizeExpression.accept( action ) ) return false;
+
+ if( action.shouldVisitDeclSpecifiers ){
+ switch( action.leave( this ) ){
+ case ASTVisitor.PROCESS_ABORT : return false;
+ case ASTVisitor.PROCESS_SKIP : return true;
+ default : break;
+ }
+ }
+ return true;
+ }
+
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSizeofExpression.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSizeofExpression.java
new file mode 100644
index 00000000000..766a92db06b
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSizeofExpression.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.parser.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSizeofExpression;
+import org.eclipse.cdt.internal.core.dom.parser.c.CASTUnaryExpression;
+
+public class UPCASTSizeofExpression extends CASTUnaryExpression implements IUPCASTSizeofExpression {
+
+ // TODO: don't really know if extending CASTUnaryExpression is the right thing to do
+ private int upcSizeofOperator;
+
+
+ public int getOperator() {
+ return IASTUnaryExpression.op_sizeof;
+ }
+
+
+ public void setUPCSizeofOperator(int upcSizeofOperator) {
+ this.upcSizeofOperator = upcSizeofOperator;
+ }
+
+
+ public int getUPCSizeofOperator() {
+ return upcSizeofOperator;
+ }
+
+
+}
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSynchronizationStatement.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSynchronizationStatement.java
new file mode 100644
index 00000000000..7a7e945e5b7
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTSynchronizationStatement.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.parser.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
+import org.eclipse.cdt.internal.core.dom.parser.c.CASTNode;
+
+public class UPCASTSynchronizationStatement extends CASTNode implements IUPCASTSynchronizationStatement {
+
+ private int statmentKind;
+ private IASTExpression barrierExpression = null;
+
+ public IASTExpression getBarrierExpression() {
+ return barrierExpression;
+ }
+
+ public int getStatementKind() {
+ return statmentKind;
+ }
+
+ public void setBarrierExpression(IASTExpression expr) {
+ this.barrierExpression = expr;
+
+ }
+
+ public void setStatementKind(int kind) {
+ this.statmentKind = kind;
+ }
+
+
+ public boolean accept(ASTVisitor visitor) {
+ if(visitor.shouldVisitStatements) {
+ switch(visitor.visit(this)) {
+ case ASTVisitor.PROCESS_ABORT : return false;
+ case ASTVisitor.PROCESS_SKIP : return true;
+ }
+ }
+
+ if(barrierExpression != null) {
+ boolean abort = !barrierExpression.accept(visitor);
+ if(abort)
+ return false;
+ }
+
+ if(visitor.shouldVisitStatements) {
+ switch(visitor.leave(this)) {
+ case ASTVisitor.PROCESS_ABORT : return false;
+ case ASTVisitor.PROCESS_SKIP : return true;
+ }
+ }
+
+ return true;
+ }
+} \ No newline at end of file
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTTypedefNameSpecifier.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTTypedefNameSpecifier.java
new file mode 100644
index 00000000000..5955bbcbc07
--- /dev/null
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/ast/UPCASTTypedefNameSpecifier.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 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.dom.parser.upc.ast;
+
+import org.eclipse.cdt.core.dom.ast.ASTVisitor;
+import org.eclipse.cdt.core.dom.ast.IASTExpression;
+import org.eclipse.cdt.core.dom.upc.ast.IUPCASTTypedefNameSpecifier;
+import org.eclipse.cdt.internal.core.dom.parser.c.CASTTypedefNameSpecifier;
+
+public class UPCASTTypedefNameSpecifier extends CASTTypedefNameSpecifier
+ implements IUPCASTTypedefNameSpecifier {
+
+
+ private int referenceType;
+ private int sharedQualifier;
+ private IASTExpression blockSizeExpression;
+
+
+ public IASTExpression getBlockSizeExpression() {
+ return blockSizeExpression;
+ }
+
+ public int getReferenceType() {
+ return referenceType;
+ }
+
+ public int getSharedQualifier() {
+ return sharedQualifier;
+ }
+
+ public void setBlockSizeExpression(IASTExpression expr) {
+ this.blockSizeExpression = expr;
+ }
+
+ public void setReferenceType(int referenceType) {
+ this.referenceType = referenceType;
+ }
+
+ public void setSharedQualifier(int shared) {
+ this.sharedQualifier = shared;
+ }
+
+
+ public boolean accept( ASTVisitor action ){
+ if( action.shouldVisitDeclSpecifiers ){
+ switch( action.visit( this ) ){
+ case ASTVisitor.PROCESS_ABORT : return false;
+ case ASTVisitor.PROCESS_SKIP : return true;
+ default : break;
+ }
+ }
+ if( getName() != null ) if( !getName().accept( action ) ) return false;
+ if( blockSizeExpression != null) if( !blockSizeExpression.accept( action ) ) return false;
+
+ if( action.shouldVisitDeclSpecifiers ){
+ switch( action.leave( this ) ){
+ case ASTVisitor.PROCESS_ABORT : return false;
+ case ASTVisitor.PROCESS_SKIP : return true;
+ default : break;
+ }
+ }
+ return true;
+ }
+
+}

Back to the top