diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99CommentTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99CommentTests.java index 5c50b226a70..376f0418128 100644 --- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99CommentTests.java +++ b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99CommentTests.java @@ -16,7 +16,8 @@ import org.eclipse.cdt.core.lrparser.tests.c99.C99CommentTests; public class UPCC99CommentTests extends C99CommentTests { - protected BaseExtensibleLanguage getLanguage() { + @Override + protected BaseExtensibleLanguage getC99Language() { return UPCLanguage.getDefault(); } } diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99CompleteParser2Tests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99CompleteParser2Tests.java index 015bc419a80..d5d9fba2361 100644 --- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99CompleteParser2Tests.java +++ b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99CompleteParser2Tests.java @@ -16,7 +16,8 @@ import org.eclipse.cdt.core.lrparser.tests.c99.C99CompleteParser2Tests; public class UPCC99CompleteParser2Tests extends C99CompleteParser2Tests { - protected BaseExtensibleLanguage getLanguage() { + @Override + protected BaseExtensibleLanguage getC99Language() { return UPCLanguage.getDefault(); } diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99CompletionBasicTest.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99CompletionBasicTest.java index 02824c7e266..287c7d6fdee 100644 --- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99CompletionBasicTest.java +++ b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99CompletionBasicTest.java @@ -18,7 +18,8 @@ public class UPCC99CompletionBasicTest extends C99CompletionBasicTest { public UPCC99CompletionBasicTest() { } - protected BaseExtensibleLanguage getLanguage() { + @Override + protected BaseExtensibleLanguage getC99Language() { return C99Language.getDefault(); } diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99CompletionParseTest.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99CompletionParseTest.java index 383c2e17ee5..560d604adb3 100644 --- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99CompletionParseTest.java +++ b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99CompletionParseTest.java @@ -19,7 +19,7 @@ public class UPCC99CompletionParseTest extends C99CompletionParseTest { public UPCC99CompletionParseTest() { } public UPCC99CompletionParseTest(String name) { super(name); } - + @Override protected BaseExtensibleLanguage getLanguage() { return UPCLanguage.getDefault(); } diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DOMLocationInclusionTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DOMLocationInclusionTests.java index 9219c703a4d..c236bf00c93 100644 --- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DOMLocationInclusionTests.java +++ b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DOMLocationInclusionTests.java @@ -19,15 +19,12 @@ public class UPCC99DOMLocationInclusionTests extends C99DOMLocationInclusionTest public UPCC99DOMLocationInclusionTests() { } - public UPCC99DOMLocationInclusionTests(String name, Class className) { - super(name, className); - } - public UPCC99DOMLocationInclusionTests(String name) { super(name); } - protected BaseExtensibleLanguage getLanguage() { + @Override + protected BaseExtensibleLanguage getC99Language() { return UPCLanguage.getDefault(); } } diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DOMLocationMacroTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DOMLocationMacroTests.java index a699f51e1e6..4e14043177a 100644 --- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DOMLocationMacroTests.java +++ b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DOMLocationMacroTests.java @@ -19,7 +19,8 @@ public class UPCC99DOMLocationMacroTests extends C99DOMLocationMacroTests { public UPCC99DOMLocationMacroTests() { } - protected BaseExtensibleLanguage getLanguage() { + @Override + protected BaseExtensibleLanguage getC99Language() { return UPCLanguage.getDefault(); } } diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DOMLocationTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DOMLocationTests.java index 151d2bd1464..90005c24cb2 100644 --- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DOMLocationTests.java +++ b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DOMLocationTests.java @@ -23,7 +23,8 @@ public class UPCC99DOMLocationTests extends C99DOMLocationTests { super(name); } - protected BaseExtensibleLanguage getLanguage() { + @Override + protected BaseExtensibleLanguage getC99Language() { return UPCLanguage.getDefault(); } } diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DOMPreprocessorInformationTest.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DOMPreprocessorInformationTest.java index f73044f28fd..d46398babce 100644 --- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DOMPreprocessorInformationTest.java +++ b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DOMPreprocessorInformationTest.java @@ -16,7 +16,8 @@ import org.eclipse.cdt.core.lrparser.tests.c99.C99DOMPreprocessorInformationTest public class UPCC99DOMPreprocessorInformationTest extends C99DOMPreprocessorInformationTest { - protected BaseExtensibleLanguage getLanguage() { + @Override + protected BaseExtensibleLanguage getC99Language() { return UPCLanguage.getDefault(); } diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DigraphTrigraphTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DigraphTrigraphTests.java index b56681211ee..9aaaf2a61c7 100644 --- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DigraphTrigraphTests.java +++ b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99DigraphTrigraphTests.java @@ -20,6 +20,7 @@ public class UPCC99DigraphTrigraphTests extends C99DigraphTrigraphTests { public UPCC99DigraphTrigraphTests() { } public UPCC99DigraphTrigraphTests(String name) { super(name); } + @Override protected BaseExtensibleLanguage getLanguage() { return UPCLanguage.getDefault(); } diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99GCCTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99GCCTests.java index ed393db1a33..2debeefe409 100644 --- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99GCCTests.java +++ b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99GCCTests.java @@ -23,7 +23,8 @@ public class UPCC99GCCTests extends C99GCCTests { super(message); } - protected BaseExtensibleLanguage getLanguage() { + @Override + protected BaseExtensibleLanguage getC99Language() { return UPCLanguage.getDefault(); } diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99KnRTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99KnRTests.java index 2c3eb7b0052..b5b254088a8 100644 --- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99KnRTests.java +++ b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99KnRTests.java @@ -19,7 +19,8 @@ public class UPCC99KnRTests extends C99KnRTests { public UPCC99KnRTests() { } - protected BaseExtensibleLanguage getLanguage() { + @Override + protected BaseExtensibleLanguage getC99Language() { return UPCLanguage.getDefault(); } diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99SelectionParseTest.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99SelectionParseTest.java index e1ec43ded76..72eb13f5081 100644 --- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99SelectionParseTest.java +++ b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99SelectionParseTest.java @@ -20,7 +20,8 @@ public class UPCC99SelectionParseTest extends C99SelectionParseTest { public UPCC99SelectionParseTest(String name) { super(name); } - protected BaseExtensibleLanguage getLanguage() { + @Override + protected BaseExtensibleLanguage getC99Language() { return UPCLanguage.getDefault(); } } diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99SpecTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99SpecTests.java index fb04d3d9b8e..c342ab82120 100644 --- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99SpecTests.java +++ b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99SpecTests.java @@ -23,7 +23,8 @@ public class UPCC99SpecTests extends C99SpecTests { super(name); } - protected BaseExtensibleLanguage getLanguage() { + @Override + protected BaseExtensibleLanguage getCLanguage() { return UPCLanguage.getDefault(); } diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99TaskParserTest.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99TaskParserTest.java index 1a16c4b4382..5231b3ecd13 100644 --- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99TaskParserTest.java +++ b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99TaskParserTest.java @@ -16,7 +16,8 @@ import org.eclipse.cdt.core.lrparser.tests.c99.C99TaskParserTest; public class UPCC99TaskParserTest extends C99TaskParserTest { - protected BaseExtensibleLanguage getLanguage() { + @Override + protected BaseExtensibleLanguage getC99Language() { return UPCLanguage.getDefault(); } diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99Tests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99Tests.java index 5e1f72f9621..9cf08d3f375 100644 --- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99Tests.java +++ b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99Tests.java @@ -29,7 +29,8 @@ public class UPCC99Tests extends C99Tests { super(name); } - protected BaseExtensibleLanguage getLanguage() { + @Override + protected BaseExtensibleLanguage getC99Language() { return UPCLanguage.getDefault(); } diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99UtilOldTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99UtilOldTests.java index cf119e6207e..9d3aee00671 100644 --- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99UtilOldTests.java +++ b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99UtilOldTests.java @@ -16,7 +16,8 @@ import org.eclipse.cdt.core.lrparser.tests.c99.C99UtilOldTests; public class UPCC99UtilOldTests extends C99UtilOldTests { - protected BaseExtensibleLanguage getLanguage() { + @Override + protected BaseExtensibleLanguage getC99Language() { return UPCLanguage.getDefault(); } diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99UtilTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99UtilTests.java index 48cddb62260..c167045cdaf 100644 --- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99UtilTests.java +++ b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCC99UtilTests.java @@ -16,7 +16,8 @@ import org.eclipse.cdt.core.lrparser.tests.c99.C99UtilTests; public class UPCC99UtilTests extends C99UtilTests { - protected BaseExtensibleLanguage getLanguage() { + @Override + protected BaseExtensibleLanguage getC99Language() { return UPCLanguage.getDefault(); } diff --git a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCLanguageExtensionTests.java b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCLanguageExtensionTests.java index 8e64939a23c..a3245777355 100644 --- a/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCLanguageExtensionTests.java +++ b/upc/org.eclipse.cdt.core.parser.upc.tests/src/org/eclipse/cdt/core/parser/upc/tests/UPCLanguageExtensionTests.java @@ -42,7 +42,7 @@ import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSimpleDeclSpecifier; import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement; import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnaryExpression; import org.eclipse.cdt.core.lrparser.tests.ParseHelper; -import org.eclipse.cdt.internal.core.parser.ParserException; + public class UPCLanguageExtensionTests extends TestCase { @@ -62,12 +62,12 @@ public class UPCLanguageExtensionTests extends TestCase { // test the AST is correct // test that binding resolution works - private IASTTranslationUnit parseAndCheckBindings(String code) throws ParserException { + private IASTTranslationUnit parseAndCheckBindings(String code) { return ParseHelper.parse(code, getLanguage(), true, true, 0 ); } - private IASTTranslationUnit parse(String code) throws ParserException { + private IASTTranslationUnit parse(String code) { return ParseHelper.parse(code, getLanguage(), true, false, 0 ); } @@ -135,6 +135,7 @@ public class UPCLanguageExtensionTests extends TestCase { assertEquals(IUPCASTDeclSpecifier.rt_unspecified, declspec_c.getReferenceType()); assertEquals(IUPCASTDeclSpecifier.sh_shared_constant_expression, declspec_c.getSharedQualifier()); assertEquals(IASTSimpleDeclSpecifier.t_int, declspec_c.getType()); + @SuppressWarnings("unused") IASTLiteralExpression literalExpr = (IASTLiteralExpression) declspec_c.getBlockSizeExpression(); declarators = decl_c.getDeclarators(); assertNotNull(declarators); @@ -167,11 +168,11 @@ public class UPCLanguageExtensionTests extends TestCase { IASTSimpleDeclaration decl_x = (IASTSimpleDeclaration) declarations[4]; IUPCASTSimpleDeclSpecifier declspec_x = (IUPCASTSimpleDeclSpecifier) decl_x.getDeclSpecifier(); - assertEquals(IUPCASTSimpleDeclSpecifier.rt_relaxed, declspec_x.getReferenceType()); + assertEquals(IUPCASTDeclSpecifier.rt_relaxed, declspec_x.getReferenceType()); IASTSimpleDeclaration decl_y = (IASTSimpleDeclaration) declarations[5]; IUPCASTSimpleDeclSpecifier declspec_y = (IUPCASTSimpleDeclSpecifier) decl_y.getDeclSpecifier(); - assertEquals(IUPCASTSimpleDeclSpecifier.rt_strict, declspec_y.getReferenceType()); + assertEquals(IUPCASTDeclSpecifier.rt_strict, declspec_y.getReferenceType()); IVariable binding_a = (IVariable) name_a.resolveBinding(); @@ -489,6 +490,7 @@ public class UPCLanguageExtensionTests extends TestCase { + @SuppressWarnings("unused") IASTTypeIdExpression idexpr = (IASTTypeIdExpression)((IASTExpressionStatement)body[0]).getExpression(); IASTUnaryExpression cexpr = (IASTUnaryExpression)((IASTExpressionStatement)body[1]).getExpression(); diff --git a/upc/org.eclipse.cdt.core.parser.upc/grammar/build.xml b/upc/org.eclipse.cdt.core.parser.upc/grammar/build.xml index d60df92d2c7..0b39b1f8bab 100644 --- a/upc/org.eclipse.cdt.core.parser.upc/grammar/build.xml +++ b/upc/org.eclipse.cdt.core.parser.upc/grammar/build.xml @@ -31,23 +31,17 @@ - - - diff --git a/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCExpressionStatementParser.g b/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCExpressionStatementParser.g new file mode 100644 index 00000000000..ea3e51ec175 --- /dev/null +++ b/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCExpressionStatementParser.g @@ -0,0 +1,23 @@ +----------------------------------------------------------------------------------- +-- Copyright (c) 2006, 2008 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 + + +$Import + C99ExpressionStatementParser.g +$End + +$Import + UPCGrammarExtensions.g +$End diff --git a/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCGrammarExtensions.g b/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCGrammarExtensions.g new file mode 100644 index 00000000000..ec7d2d0f59b --- /dev/null +++ b/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCGrammarExtensions.g @@ -0,0 +1,218 @@ +----------------------------------------------------------------------------------- +-- 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 +----------------------------------------------------------------------------------- + + +$Define + $build_action_class /. UPCParserAction ./ + $node_factory_create_expression /. UPCASTNodeFactory.DEFAULT_INSTANCE ./ +$End + + +$Globals +/. +import org.eclipse.cdt.core.dom.parser.upc.UPCASTNodeFactory; +import org.eclipse.cdt.core.dom.parser.upc.UPCParserAction; +import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression; +import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement; +import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnaryExpression; +./ +$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 +----------------------------------------------------------------------------------- + + +literal + ::= 'MYTHREAD' + /. $Build consumeKeywordExpression(IUPCASTKeywordExpression.kw_mythread); $EndBuild ./ + | 'THREADS' + /. $Build consumeKeywordExpression(IUPCASTKeywordExpression.kw_threads); $EndBuild ./ + | 'UPC_MAX_BLOCKSIZE' + /. $Build consumeKeywordExpression(IUPCASTKeywordExpression.kw_upc_max_block_size); $EndBuild ./ + + +-- causes ambiguities because of no type information, solution is SGLR +unary_expression + ::= 'upc_localsizeof' unary_expression + /. $Build consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_localsizeof); $EndBuild ./ + | 'upc_localsizeof' '(' type_name ')' + /. $Build consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_localsizeof); $EndBuild ./ + | 'upc_blocksizeof' unary_expression + /. $Build consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_blocksizeof); $EndBuild ./ + | 'upc_blocksizeof' '(' type_name ')' + /. $Build consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_blocksizeof); $EndBuild ./ + | 'upc_elemsizeof' unary_expression + /. $Build consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_elemsizeof); $EndBuild ./ + | 'upc_elemsizeof' '(' type_name ')' + /. $Build consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_elemsizeof); $EndBuild ./ + + +----------------------------------------------------------------------------------- +-- 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' /. $Build consumeToken(); $EndBuild ./ + +reference_type_qualifier + ::= 'relaxed' /. $Build consumeToken(); $EndBuild ./ + | 'strict' /. $Build consumeToken(); $EndBuild ./ + +layout_qualifier + ::= '[' constant_expression ']' + /. $Build consumeLayoutQualifier(true, false); $EndBuild ./ + | '[' '*' ']' + /. $Build consumeLayoutQualifier(false, true); $EndBuild ./ + | '[' ']' + /. $Build consumeLayoutQualifier(false, false); $EndBuild ./ + + + +----------------------------------------------------------------------------------- +-- Statements +----------------------------------------------------------------------------------- + +statement + ::= synchronization_statement + +synchronization_statement + ::= 'upc_notify' expression ';' + /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, true); $EndBuild ./ + | 'upc_notify' ';' + /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, false); $EndBuild ./ + | 'upc_wait' expression ';' + /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, true); $EndBuild ./ + | 'upc_wait' ';' + /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, false); $EndBuild ./ + | 'upc_barrier' expression ';' + /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, true); $EndBuild ./ + | 'upc_barrier' ';' + /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, false); $EndBuild ./ + | 'upc_fence' ';' + /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_fence, false); $EndBuild ./ + + +iteration_statement + ::= 'upc_forall' '(' expression ';' expression ';' expression ';' affinity ')' statement + /. $Build consumeStatementUPCForallLoop(true, true, true, true); $EndBuild ./ + + | 'upc_forall' '(' expression ';' expression ';' expression ';' ')' statement + /. $Build consumeStatementUPCForallLoop(true, true, true, false); $EndBuild ./ + + | 'upc_forall' '(' expression ';' expression ';' ';' affinity ')' statement + /. $Build consumeStatementUPCForallLoop(true, true, false, true); $EndBuild ./ + + | 'upc_forall' '(' expression ';' expression ';' ';' ')' statement + /. $Build consumeStatementUPCForallLoop(true, true, false, false); $EndBuild ./ + + | 'upc_forall' '(' expression ';' ';' expression ';' affinity ')' statement + /. $Build consumeStatementUPCForallLoop(true, false, true, true); $EndBuild ./ + + | 'upc_forall' '(' expression ';' ';' expression ';' ')' statement + /. $Build consumeStatementUPCForallLoop(true, false, true, false); $EndBuild ./ + + | 'upc_forall' '(' expression ';' ';' ';' affinity ')' statement + /. $Build consumeStatementUPCForallLoop(true, false, false, true); $EndBuild ./ + + | 'upc_forall' '(' expression ';' ';' ';' ')' statement + /. $Build consumeStatementUPCForallLoop(true, false, false, false); $EndBuild ./ + + | 'upc_forall' '(' ';' expression ';' expression ';' affinity ')' statement + /. $Build consumeStatementUPCForallLoop(false, true, true, true); $EndBuild ./ + + | 'upc_forall' '(' ';' expression ';' expression ';' ')' statement + /. $Build consumeStatementUPCForallLoop(false, true, true, false); $EndBuild ./ + + | 'upc_forall' '(' ';' expression ';' ';' affinity ')' statement + /. $Build consumeStatementUPCForallLoop(false, true, false, true); $EndBuild ./ + + | 'upc_forall' '(' ';' expression ';' ';' ')' statement + /. $Build consumeStatementUPCForallLoop(false, true, false, false); $EndBuild ./ + + | 'upc_forall' '(' ';' ';' expression ';' affinity ')' statement + /. $Build consumeStatementUPCForallLoop(false, false, true, true); $EndBuild ./ + + | 'upc_forall' '(' ';' ';' expression ';' ')' statement + /. $Build consumeStatementUPCForallLoop(false, false, true, false); $EndBuild ./ + + | 'upc_forall' '(' ';' ';' ';' affinity ')' statement + /. $Build consumeStatementUPCForallLoop(false, false, false, true); $EndBuild ./ + + | 'upc_forall' '(' ';' ';' ';' ')' statement + /. $Build consumeStatementUPCForallLoop(false, false, false, false); $EndBuild ./ + + | 'upc_forall' '(' declaration expression ';' expression ';' affinity ')' statement + /. $Build consumeStatementUPCForallLoop(true, true, true, true); $EndBuild ./ + + | 'upc_forall' '(' declaration expression ';' expression ';' ')' statement + /. $Build consumeStatementUPCForallLoop(true, true, true, false); $EndBuild ./ + + | 'upc_forall' '(' declaration expression ';' ';' affinity ')' statement + /. $Build consumeStatementUPCForallLoop(true, true, false, true); $EndBuild ./ + + | 'upc_forall' '(' declaration expression ';' ';' ')' statement + /. $Build consumeStatementUPCForallLoop(true, true, false, false); $EndBuild ./ + + | 'upc_forall' '(' declaration ';' expression ';' affinity ')' statement + /. $Build consumeStatementUPCForallLoop(true, false, true, true); $EndBuild ./ + + | 'upc_forall' '(' declaration ';' expression ';' ')' statement + /. $Build consumeStatementUPCForallLoop(true, false, true, false); $EndBuild ./ + + | 'upc_forall' '(' declaration ';' ';' affinity ')' statement + /. $Build consumeStatementUPCForallLoop(true, false, false, true); $EndBuild ./ + + | 'upc_forall' '(' declaration ';' ';' ')' statement + /. $Build consumeStatementUPCForallLoop(true, false, false, false); $EndBuild ./ + +affinity + ::= expression + | 'continue' + /. $Build consumeToken(); $EndBuild ./ + +$End + + diff --git a/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCNoCastExpressionParser.g b/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCNoCastExpressionParser.g new file mode 100644 index 00000000000..1fd0c35040c --- /dev/null +++ b/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCNoCastExpressionParser.g @@ -0,0 +1,23 @@ +----------------------------------------------------------------------------------- +-- Copyright (c) 2006, 2008 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 + + +$Import + C99NoCastExpressionParser.g +$End + +$Import + UPCGrammarExtensions.g +$End \ No newline at end of file diff --git a/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCParser.g b/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCParser.g index 7fe27275f51..1106a78d9e1 100644 --- a/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCParser.g +++ b/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCParser.g @@ -1,5 +1,5 @@ ----------------------------------------------------------------------------------- --- Copyright (c) 2006, 2007 IBM Corporation and others. +-- Copyright (c) 2006, 2008 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 @@ -14,232 +14,11 @@ %options template=btParserTemplateD.g --- Unified Parallel C (UPC) is an extension of C99. --- Must set LPG_INCLUDE environment variable to the location of C99Parser.g $Import - C99Grammar.g + C99Parser.g $End -$Start - translation_unit -$End - - -$Define - $build_action_class /. UPCParserAction ./ - $node_factory_create_expression /. UPCASTNodeFactory.DEFAULT_INSTANCE ./ -$End - -$Globals -/. -import org.eclipse.cdt.core.dom.parser.upc.UPCASTNodeFactory; -import org.eclipse.cdt.core.dom.parser.upc.UPCParserAction; -import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression; -import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement; -import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnaryExpression; -./ -$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 ------------------------------------------------------------------------------------ - - -literal - ::= 'MYTHREAD' - /. $Build consumeKeywordExpression(IUPCASTKeywordExpression.kw_mythread); $EndBuild ./ - | 'THREADS' - /. $Build consumeKeywordExpression(IUPCASTKeywordExpression.kw_threads); $EndBuild ./ - | 'UPC_MAX_BLOCKSIZE' - /. $Build consumeKeywordExpression(IUPCASTKeywordExpression.kw_upc_max_block_size); $EndBuild ./ - - --- causes ambiguities because of no type information, solution is SGLR -unary_expression - ::= 'upc_localsizeof' unary_expression - /. $Build consumeExpressionUpcSizeofOperator(IUPCASTUnaryExpression.op_upc_localsizeof); $EndBuild ./ - | 'upc_localsizeof' '(' type_name ')' - /. $Build consumeExpressionUpcSizeofTypeName(IUPCASTUnaryExpression.op_upc_localsizeof); $EndBuild ./ - | 'upc_blocksizeof' unary_expression - /. $Build consumeExpressionUpcSizeofOperator(IUPCASTUnaryExpression.op_upc_blocksizeof); $EndBuild ./ - | 'upc_blocksizeof' '(' type_name ')' - /. $Build consumeExpressionUpcSizeofTypeName(IUPCASTUnaryExpression.op_upc_blocksizeof); $EndBuild ./ - | 'upc_elemsizeof' unary_expression - /. $Build consumeExpressionUpcSizeofOperator(IUPCASTUnaryExpression.op_upc_elemsizeof); $EndBuild ./ - | 'upc_elemsizeof' '(' type_name ')' - /. $Build consumeExpressionUpcSizeofTypeName(IUPCASTUnaryExpression.op_upc_elemsizeof); $EndBuild ./ - - ------------------------------------------------------------------------------------ --- 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' /. $Build consumeToken(); $EndBuild ./ - -reference_type_qualifier - ::= 'relaxed' /. $Build consumeToken(); $EndBuild ./ - | 'strict' /. $Build consumeToken(); $EndBuild ./ - -layout_qualifier - ::= '[' constant_expression ']' - /. $Build consumeLayoutQualifier(true, false); $EndBuild ./ - | '[' '*' ']' - /. $Build consumeLayoutQualifier(false, true); $EndBuild ./ - | '[' ']' - /. $Build consumeLayoutQualifier(false, false); $EndBuild ./ - - - ------------------------------------------------------------------------------------ --- Statements ------------------------------------------------------------------------------------ - -statement - ::= synchronization_statement - -synchronization_statement - ::= 'upc_notify' expression ';' - /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, true); $EndBuild ./ - | 'upc_notify' ';' - /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, false); $EndBuild ./ - | 'upc_wait' expression ';' - /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, true); $EndBuild ./ - | 'upc_wait' ';' - /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, false); $EndBuild ./ - | 'upc_barrier' expression ';' - /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, true); $EndBuild ./ - | 'upc_barrier' ';' - /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, false); $EndBuild ./ - | 'upc_fence' ';' - /. $Build consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_fence, false); $EndBuild ./ - - -iteration_statement - ::= 'upc_forall' '(' expression ';' expression ';' expression ';' affinity ')' statement - /. $Build consumeStatementUPCForallLoop(true, true, true, true); $EndBuild ./ - - | 'upc_forall' '(' expression ';' expression ';' expression ';' ')' statement - /. $Build consumeStatementUPCForallLoop(true, true, true, false); $EndBuild ./ - - | 'upc_forall' '(' expression ';' expression ';' ';' affinity ')' statement - /. $Build consumeStatementUPCForallLoop(true, true, false, true); $EndBuild ./ - - | 'upc_forall' '(' expression ';' expression ';' ';' ')' statement - /. $Build consumeStatementUPCForallLoop(true, true, false, false); $EndBuild ./ - - | 'upc_forall' '(' expression ';' ';' expression ';' affinity ')' statement - /. $Build consumeStatementUPCForallLoop(true, false, true, true); $EndBuild ./ - - | 'upc_forall' '(' expression ';' ';' expression ';' ')' statement - /. $Build consumeStatementUPCForallLoop(true, false, true, false); $EndBuild ./ - - | 'upc_forall' '(' expression ';' ';' ';' affinity ')' statement - /. $Build consumeStatementUPCForallLoop(true, false, false, true); $EndBuild ./ - - | 'upc_forall' '(' expression ';' ';' ';' ')' statement - /. $Build consumeStatementUPCForallLoop(true, false, false, false); $EndBuild ./ - - | 'upc_forall' '(' ';' expression ';' expression ';' affinity ')' statement - /. $Build consumeStatementUPCForallLoop(false, true, true, true); $EndBuild ./ - - | 'upc_forall' '(' ';' expression ';' expression ';' ')' statement - /. $Build consumeStatementUPCForallLoop(false, true, true, false); $EndBuild ./ - - | 'upc_forall' '(' ';' expression ';' ';' affinity ')' statement - /. $Build consumeStatementUPCForallLoop(false, true, false, true); $EndBuild ./ - - | 'upc_forall' '(' ';' expression ';' ';' ')' statement - /. $Build consumeStatementUPCForallLoop(false, true, false, false); $EndBuild ./ - - | 'upc_forall' '(' ';' ';' expression ';' affinity ')' statement - /. $Build consumeStatementUPCForallLoop(false, false, true, true); $EndBuild ./ - - | 'upc_forall' '(' ';' ';' expression ';' ')' statement - /. $Build consumeStatementUPCForallLoop(false, false, true, false); $EndBuild ./ - - | 'upc_forall' '(' ';' ';' ';' affinity ')' statement - /. $Build consumeStatementUPCForallLoop(false, false, false, true); $EndBuild ./ - - | 'upc_forall' '(' ';' ';' ';' ')' statement - /. $Build consumeStatementUPCForallLoop(false, false, false, false); $EndBuild ./ - - | 'upc_forall' '(' declaration expression ';' expression ';' affinity ')' statement - /. $Build consumeStatementUPCForallLoop(true, true, true, true); $EndBuild ./ - - | 'upc_forall' '(' declaration expression ';' expression ';' ')' statement - /. $Build consumeStatementUPCForallLoop(true, true, true, false); $EndBuild ./ - - | 'upc_forall' '(' declaration expression ';' ';' affinity ')' statement - /. $Build consumeStatementUPCForallLoop(true, true, false, true); $EndBuild ./ - - | 'upc_forall' '(' declaration expression ';' ';' ')' statement - /. $Build consumeStatementUPCForallLoop(true, true, false, false); $EndBuild ./ - - | 'upc_forall' '(' declaration ';' expression ';' affinity ')' statement - /. $Build consumeStatementUPCForallLoop(true, false, true, true); $EndBuild ./ - - | 'upc_forall' '(' declaration ';' expression ';' ')' statement - /. $Build consumeStatementUPCForallLoop(true, false, true, false); $EndBuild ./ - - | 'upc_forall' '(' declaration ';' ';' affinity ')' statement - /. $Build consumeStatementUPCForallLoop(true, false, false, true); $EndBuild ./ - - | 'upc_forall' '(' declaration ';' ';' ')' statement - /. $Build consumeStatementUPCForallLoop(true, false, false, false); $EndBuild ./ - -affinity - ::= expression - | 'continue' - /. $Build consumeToken(); $EndBuild ./ - -$End - - - - - - - - - - - - - - +$Import + UPCGrammarExtensions.g +$End diff --git a/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCSizeofExpressionParser.g b/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCSizeofExpressionParser.g new file mode 100644 index 00000000000..20f5216d458 --- /dev/null +++ b/upc/org.eclipse.cdt.core.parser.upc/grammar/upc/UPCSizeofExpressionParser.g @@ -0,0 +1,30 @@ +----------------------------------------------------------------------------------- +-- Copyright (c) 2006, 2008 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 + + +$Import + C99SizeofExpressionParser.g +$End + +$Import + UPCGrammarExtensions.g +$DropRules + +unary_expression + ::= 'upc_localsizeof' '(' type_name ')' + | 'upc_blocksizeof' '(' type_name ')' + | 'upc_elemsizeof' '(' type_name ')' + +$End \ No newline at end of file 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 index b468ae76b7a..a5c51f33c27 100644 --- 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 @@ -17,8 +17,6 @@ import org.eclipse.cdt.core.dom.ast.IASTDeclaration; import org.eclipse.cdt.core.dom.ast.IASTExpression; import org.eclipse.cdt.core.dom.ast.IASTStatement; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; -import org.eclipse.cdt.core.dom.ast.IASTTypeId; -import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression; import org.eclipse.cdt.core.dom.ast.c.ICASTDeclSpecifier; import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction; @@ -26,7 +24,6 @@ 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.IUPCASTSynchronizationStatement; -import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnaryExpression; import org.eclipse.cdt.internal.core.dom.parser.upc.UPCParsersym; @@ -65,32 +62,6 @@ public class UPCParserAction extends C99BuildASTParserAction { } - /** - * unary_expression ::= 'upc_localsizeof' unary_expression - * | 'upc_blocksizeof' unary_expression - * | 'upc_elemsizeof' unary_expression - */ - public void consumeExpressionUpcSizeofOperator(int sizeofOp) { - IASTExpression operand = (IASTExpression) astStack.pop(); - IUPCASTUnaryExpression expr = nodeFactory.newUnaryExpression(sizeofOp, 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(sizeofOp, typeId); - setOffsetAndLength(expr); - astStack.push(expr); - } - - /** * synchronization_statement ::= 'upc_notify' expression ';' * | 'upc_notify' ';' 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 index bdfe8149b8d..73baaef7ec3 100644 --- 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 @@ -33,6 +33,7 @@ import org.eclipse.cdt.internal.core.dom.parser.c.CASTTranslationUnit; * * @author Mike Kucera */ +@SuppressWarnings("restriction") public class UPCLanguage extends BaseExtensibleLanguage { public static final String PLUGIN_ID = "org.eclipse.cdt.core.parser.upc"; //$NON-NLS-1$ @@ -60,6 +61,9 @@ public class UPCLanguage extends BaseExtensibleLanguage { return null; } + /** + * @param tu Not used, default model builder used. + */ public IContributedModelBuilder createModelBuilder(ITranslationUnit tu) { return null; } @@ -96,7 +100,6 @@ public class UPCLanguage extends BaseExtensibleLanguage { /** * Gets the translation unit object and sets the index and the location resolver. */ - @SuppressWarnings("restriction") @Override protected IASTTranslationUnit createASTTranslationUnit(IIndex index, IScanner preprocessor) { IASTTranslationUnit tu = C99ASTNodeFactory.DEFAULT_INSTANCE.newTranslationUnit(); 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 index f93a2af328b..c49fd6665d5 100644 --- 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 @@ -17,7 +17,7 @@ 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 + "IUPCASTDeclSpecifier.BLOCK_SIZE_EXPRESSION - IUPCASTDeclSpecifier block size expression"); //$NON-NLS-1$ public static final int rt_unspecified = 0; diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionStatementParser.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionStatementParser.java new file mode 100644 index 00000000000..d5f5af03bef --- /dev/null +++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionStatementParser.java @@ -0,0 +1,1552 @@ +/******************************************************************************* +* Copyright (c) 2006, 2008 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.lrparser.IParser; +import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; + +import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; +import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; + +import org.eclipse.cdt.core.dom.lrparser.action.c99.C99ASTNodeFactory; +import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction; + +import org.eclipse.cdt.core.dom.parser.upc.UPCASTNodeFactory; +import org.eclipse.cdt.core.dom.parser.upc.UPCParserAction; +import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression; +import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement; +import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnaryExpression; + +@SuppressWarnings("all") +public class UPCExpressionStatementParser extends PrsStream implements RuleAction , IParserActionTokenProvider, IParser +{ + private static ParseTable prs = new UPCExpressionStatementParserprs(); + 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 UPCExpressionStatementParser(LexStream lexStream) + { + super(lexStream); + + try + { + super.remapTerminalSymbols(orderedTerminalSymbols(), UPCExpressionStatementParserprs.EOFT_SYMBOL); + } + catch(NullExportedSymbolsException e) { + } + catch(NullTerminalSymbolsException e) { + } + catch(UnimplementedTerminalsException e) + { + java.util.ArrayList unimplemented_symbols = e.getSymbols(); + System.out.println("The Lexer will not scan the following token(s):"); + for (int i = 0; i < unimplemented_symbols.size(); i++) + { + Integer id = (Integer) unimplemented_symbols.get(i); + System.out.println(" " + UPCExpressionStatementParsersym.orderedTerminalSymbols[id.intValue()]); + } + System.out.println(); + } + catch(UndefinedEofSymbolException e) + { + throw new Error(new UndefinedEofSymbolException + ("The Lexer does not implement the Eof symbol " + + UPCExpressionStatementParsersym.orderedTerminalSymbols[UPCExpressionStatementParserprs.EOFT_SYMBOL])); + } + } + + public String[] orderedTerminalSymbols() { return UPCExpressionStatementParsersym.orderedTerminalSymbols; } + public String getTokenKindName(int kind) { return UPCExpressionStatementParsersym.orderedTerminalSymbols[kind]; } + public int getEOFTokenKind() { return UPCExpressionStatementParserprs.EOFT_SYMBOL; } + public PrsStream getParseStream() { return (PrsStream) this; } + + // + // Report error message for given error_token. + // + public final void reportErrorTokenMessage(int error_token, String msg) + { + int firsttok = super.getFirstErrorToken(error_token), + lasttok = super.getLastErrorToken(error_token); + String location = super.getFileName() + ':' + + (firsttok > lasttok + ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok)) + : (super.getLine(error_token) + ":" + + super.getColumn(error_token) + ":" + + super.getEndLine(error_token) + ":" + + super.getEndColumn(error_token))) + + ": "; + super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE), location, msg); + } + + public 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 UPCExpressionStatementParserprs.java with -BACKTRACK option")); + } + catch (BadParseSymFileException e) + { + throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- UPCExpressionStatementParsersym.java")); + } + + 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; + +public UPCExpressionStatementParser() { // constructor +} + +private void initActions(IASTTranslationUnit tu) { + action = new UPCParserAction ( UPCASTNodeFactory.DEFAULT_INSTANCE , this, tu); +} + + +public void addToken(IToken token) { + token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called? + super.addToken(token); +} + + +public IASTCompletionNode parse(IASTTranslationUnit tu) { + // this has to be done, or... kaboom! + setStreamLength(getSize()); + initActions(tu); + + final int errorRepairCount = -1; // -1 means full error handling + parser(null, errorRepairCount); // do the actual parse + super.resetTokenStream(); // allow tokens to be garbage collected + + // the completion node may be null + IASTCompletionNode compNode = action.getASTCompletionNode(); + + //action = null; + //parserAction = null; + return compNode; +} + +// uncomment this method to use with backtracking parser +public List getRuleTokens() { + return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +} + + +public IASTNode getSecondaryParseResult() { + return action.getSecondaryParseResult(); +} + +public String[] getOrderedTerminalSymbols() { + return UPCExpressionStatementParsersym.orderedTerminalSymbols; +} + +public String getName() { + return "UPCExpressionStatementParser"; //$NON-NLS-1$ +} + + + +private ITokenMap tokenMap = null; + +public void setTokens(List tokens) { + resetTokenStream(); + addToken(new Token(null, 0, 0, 0)); // dummy token + for(IToken token : tokens) { + token.setKind(tokenMap.mapKind(token.getKind())); + addToken(token); + } + addToken(new Token(null, 0, 0, UPCExpressionStatementParsersym.TK_EOF_TOKEN)); +} + +public UPCExpressionStatementParser(String[] mapFrom) { // constructor + tokenMap = new TokenMap(UPCExpressionStatementParsersym.orderedTerminalSymbols, mapFrom); +} + + + + public void ruleAction(int ruleNumber) + { + switch (ruleNumber) + { + + // + // Rule 1: ::= $Empty + // + case 1: { action. openASTScope(); break; + } + + // + // Rule 10: literal ::= integer + // + case 10: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant); break; + } + + // + // Rule 11: literal ::= floating + // + case 11: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant); break; + } + + // + // Rule 12: literal ::= charconst + // + case 12: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant); break; + } + + // + // Rule 13: literal ::= stringlit + // + case 13: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal); break; + } + + // + // Rule 15: primary_expression ::= primary_expression_id + // + case 15: { action. consumeExpressionID(); break; + } + + // + // Rule 16: primary_expression ::= ( expression ) + // + case 16: { action. consumeExpressionBracketed(); break; + } + + // + // Rule 20: postfix_expression ::= postfix_expression [ expression ] + // + case 20: { action. consumeExpressionArraySubscript(); break; + } + + // + // Rule 21: postfix_expression ::= postfix_expression ( expression_list_opt ) + // + case 21: { action. consumeExpressionFunctionCall(); break; + } + + // + // Rule 22: postfix_expression ::= postfix_expression . member_name + // + case 22: { action. consumeExpressionFieldReference(false); break; + } + + // + // Rule 23: postfix_expression ::= postfix_expression -> member_name + // + case 23: { action. consumeExpressionFieldReference(true); break; + } + + // + // Rule 24: postfix_expression ::= postfix_expression ++ + // + case 24: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); break; + } + + // + // Rule 25: postfix_expression ::= postfix_expression -- + // + case 25: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); break; + } + + // + // Rule 26: postfix_expression ::= ( type_name ) { initializer_list comma_opt } + // + case 26: { action. consumeExpressionTypeIdInitializer(); break; + } + + // + // Rule 32: unary_expression ::= ++ unary_expression + // + case 32: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); break; + } + + // + // Rule 33: unary_expression ::= -- unary_expression + // + case 33: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); break; + } + + // + // Rule 34: unary_expression ::= & cast_expression + // + case 34: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); break; + } + + // + // Rule 35: unary_expression ::= * cast_expression + // + case 35: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); break; + } + + // + // Rule 36: unary_expression ::= + cast_expression + // + case 36: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); break; + } + + // + // Rule 37: unary_expression ::= - cast_expression + // + case 37: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); break; + } + + // + // Rule 38: unary_expression ::= ~ cast_expression + // + case 38: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); break; + } + + // + // Rule 39: unary_expression ::= ! cast_expression + // + case 39: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); break; + } + + // + // Rule 40: unary_expression ::= sizeof unary_expression + // + case 40: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); break; + } + + // + // Rule 41: unary_expression ::= sizeof ( type_name ) + // + case 41: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof); break; + } + + // + // Rule 43: cast_expression ::= ( type_name ) cast_expression + // + case 43: { action. consumeExpressionCast(IASTCastExpression.op_cast); break; + } + + // + // Rule 45: multiplicative_expression ::= multiplicative_expression * cast_expression + // + case 45: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply); break; + } + + // + // Rule 46: multiplicative_expression ::= multiplicative_expression / cast_expression + // + case 46: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide); break; + } + + // + // Rule 47: multiplicative_expression ::= multiplicative_expression % cast_expression + // + case 47: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo); break; + } + + // + // Rule 49: additive_expression ::= additive_expression + multiplicative_expression + // + case 49: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus); break; + } + + // + // Rule 50: additive_expression ::= additive_expression - multiplicative_expression + // + case 50: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus); break; + } + + // + // Rule 52: shift_expression ::= shift_expression << additive_expression + // + case 52: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft); break; + } + + // + // Rule 53: shift_expression ::= shift_expression >> additive_expression + // + case 53: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight); break; + } + + // + // Rule 55: relational_expression ::= relational_expression < shift_expression + // + case 55: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan); break; + } + + // + // Rule 56: relational_expression ::= relational_expression > shift_expression + // + case 56: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan); break; + } + + // + // Rule 57: relational_expression ::= relational_expression <= shift_expression + // + case 57: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual); break; + } + + // + // Rule 58: relational_expression ::= relational_expression >= shift_expression + // + case 58: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual); break; + } + + // + // Rule 60: equality_expression ::= equality_expression == relational_expression + // + case 60: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals); break; + } + + // + // Rule 61: equality_expression ::= equality_expression != relational_expression + // + case 61: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals); break; + } + + // + // Rule 63: AND_expression ::= AND_expression & equality_expression + // + case 63: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd); break; + } + + // + // Rule 65: exclusive_OR_expression ::= exclusive_OR_expression ^ AND_expression + // + case 65: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor); break; + } + + // + // Rule 67: inclusive_OR_expression ::= inclusive_OR_expression | exclusive_OR_expression + // + case 67: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr); break; + } + + // + // Rule 69: logical_AND_expression ::= logical_AND_expression && inclusive_OR_expression + // + case 69: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd); break; + } + + // + // Rule 71: logical_OR_expression ::= logical_OR_expression || logical_AND_expression + // + case 71: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr); break; + } + + // + // Rule 73: conditional_expression ::= logical_OR_expression ? expression : conditional_expression + // + case 73: { action. consumeExpressionConditional(); break; + } + + // + // Rule 75: assignment_expression ::= unary_expression = assignment_expression + // + case 75: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break; + } + + // + // Rule 76: assignment_expression ::= unary_expression *= assignment_expression + // + case 76: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign); break; + } + + // + // Rule 77: assignment_expression ::= unary_expression /= assignment_expression + // + case 77: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign); break; + } + + // + // Rule 78: assignment_expression ::= unary_expression %= assignment_expression + // + case 78: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign); break; + } + + // + // Rule 79: assignment_expression ::= unary_expression += assignment_expression + // + case 79: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign); break; + } + + // + // Rule 80: assignment_expression ::= unary_expression -= assignment_expression + // + case 80: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign); break; + } + + // + // Rule 81: assignment_expression ::= unary_expression <<= assignment_expression + // + case 81: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign); break; + } + + // + // Rule 82: assignment_expression ::= unary_expression >>= assignment_expression + // + case 82: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign); break; + } + + // + // Rule 83: assignment_expression ::= unary_expression &= assignment_expression + // + case 83: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign); break; + } + + // + // Rule 84: assignment_expression ::= unary_expression ^= assignment_expression + // + case 84: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign); break; + } + + // + // Rule 85: assignment_expression ::= unary_expression |= assignment_expression + // + case 85: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign); break; + } + + // + // Rule 88: expression_list ::= expression_list_actual + // + case 88: { action. consumeExpressionList(); break; + } + + // + // Rule 90: expression_list_opt ::= $Empty + // + case 90: { action. consumeEmpty(); break; + } + + // + // Rule 100: statement ::= ERROR_TOKEN + // + case 100: { action. consumeStatementProblem(); break; + } + + // + // Rule 101: labeled_statement ::= identifier_or_typedefname : statement + // + case 101: { action. consumeStatementLabeled(); break; + } + + // + // Rule 102: labeled_statement ::= case constant_expression : + // + case 102: { action. consumeStatementCase(); break; + } + + // + // Rule 103: labeled_statement ::= default : + // + case 103: { action. consumeStatementDefault(); break; + } + + // + // Rule 104: compound_statement ::= { } + // + case 104: { action. consumeStatementCompoundStatement(false); break; + } + + // + // Rule 105: compound_statement ::= { block_item_list } + // + case 105: { action. consumeStatementCompoundStatement(true); break; + } + + // + // Rule 109: block_item ::= declaration + // + case 109: { action. consumeStatementDeclarationWithDisambiguation(); break; + } + + // + // Rule 110: expression_statement ::= ; + // + case 110: { action. consumeStatementNull(); break; + } + + // + // Rule 111: expression_statement ::= expression_in_statement ; + // + case 111: { action. consumeStatementExpression(); break; + } + + // + // Rule 112: selection_statement ::= if ( expression ) statement + // + case 112: { action. consumeStatementIf(false); break; + } + + // + // Rule 113: selection_statement ::= if ( expression ) statement else statement + // + case 113: { action. consumeStatementIf(true); break; + } + + // + // Rule 114: selection_statement ::= switch ( expression ) statement + // + case 114: { action. consumeStatementSwitch(); break; + } + + // + // Rule 116: expression_opt ::= $Empty + // + case 116: { action. consumeEmpty(); break; + } + + // + // Rule 117: iteration_statement ::= do statement while ( expression ) ; + // + case 117: { action. consumeStatementDoLoop(); break; + } + + // + // Rule 118: iteration_statement ::= while ( expression ) statement + // + case 118: { action. consumeStatementWhileLoop(); break; + } + + // + // Rule 119: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement + // + case 119: { action. consumeStatementForLoop(); break; + } + + // + // Rule 120: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement + // + case 120: { action. consumeStatementForLoop(); break; + } + + // + // Rule 121: jump_statement ::= goto identifier_or_typedefname ; + // + case 121: { action. consumeStatementGoto(); break; + } + + // + // Rule 122: jump_statement ::= continue ; + // + case 122: { action. consumeStatementContinue(); break; + } + + // + // Rule 123: jump_statement ::= break ; + // + case 123: { action. consumeStatementBreak(); break; + } + + // + // Rule 124: jump_statement ::= return ; + // + case 124: { action. consumeStatementReturn(false); break; + } + + // + // Rule 125: jump_statement ::= return expression ; + // + case 125: { action. consumeStatementReturn(true); break; + } + + // + // Rule 126: declaration ::= declaration_specifiers ; + // + case 126: { action. consumeDeclarationSimple(false); break; + } + + // + // Rule 127: declaration ::= declaration_specifiers init_declarator_list ; + // + case 127: { action. consumeDeclarationSimple(true); break; + } + + // + // Rule 128: declaration_specifiers ::= simple_declaration_specifiers + // + case 128: { action. consumeDeclarationSpecifiersSimple(); break; + } + + // + // Rule 129: declaration_specifiers ::= struct_or_union_declaration_specifiers + // + case 129: { action. consumeDeclarationSpecifiersStructUnionEnum(); break; + } + + // + // Rule 130: declaration_specifiers ::= elaborated_declaration_specifiers + // + case 130: { action. consumeDeclarationSpecifiersStructUnionEnum(); break; + } + + // + // Rule 131: declaration_specifiers ::= enum_declaration_specifiers + // + case 131: { action. consumeDeclarationSpecifiersStructUnionEnum(); break; + } + + // + // Rule 132: declaration_specifiers ::= typdef_name_declaration_specifiers + // + case 132: { action. consumeDeclarationSpecifiersTypedefName(); break; + } + + // + // Rule 157: init_declarator ::= complete_declarator = initializer + // + case 157: { action. consumeDeclaratorWithInitializer(true); break; + } + + // + // Rule 159: storage_class_specifier ::= storage_class_specifier_token + // + case 159: { action. consumeDeclSpecToken(); break; + } + + // + // Rule 165: simple_type_specifier ::= simple_type_specifier_token + // + case 165: { action. consumeDeclSpecToken(); break; + } + + // + // Rule 178: typedef_name_in_declspec ::= Completion + // + case 178: { action. consumeDeclSpecToken(); break; + } + + // + // Rule 179: typedef_name_in_declspec ::= identifier + // + case 179: { action. consumeDeclSpecToken(); break; + } + + // + // Rule 182: struct_or_union_specifier ::= struct { struct_declaration_list_opt } + // + case 182: { action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_struct); break; + } + + // + // Rule 183: struct_or_union_specifier ::= union { struct_declaration_list_opt } + // + case 183: { action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_union); break; + } + + // + // Rule 184: struct_or_union_specifier ::= struct identifier_or_typedefname { struct_declaration_list_opt } + // + case 184: { action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_struct); break; + } + + // + // Rule 185: struct_or_union_specifier ::= union identifier_or_typedefname { struct_declaration_list_opt } + // + case 185: { action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_union); break; + } + + // + // Rule 186: elaborated_specifier ::= struct identifier_or_typedefname + // + case 186: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); break; + } + + // + // Rule 187: elaborated_specifier ::= union identifier_or_typedefname + // + case 187: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); break; + } + + // + // Rule 188: elaborated_specifier ::= enum identifier_or_typedefname + // + case 188: { action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); break; + } + + // + // Rule 193: struct_declaration ::= specifier_qualifier_list struct_declarator_list ; + // + case 193: { action. consumeStructDeclaration(true); break; + } + + // + // Rule 194: struct_declaration ::= specifier_qualifier_list ; + // + case 194: { action. consumeStructDeclaration(false); break; + } + + // + // Rule 195: struct_declaration ::= ERROR_TOKEN + // + case 195: { action. consumeDeclarationProblem(); break; + } + + // + // Rule 201: struct_declarator ::= : constant_expression + // + case 201: { action. consumeBitField(false); break; + } + + // + // Rule 202: struct_declarator ::= declarator : constant_expression + // + case 202: { action. consumeBitField(true); break; + } + + // + // Rule 203: enum_specifier ::= enum { enumerator_list_opt comma_opt } + // + case 203: { action. consumeTypeSpecifierEnumeration(false); break; + } + + // + // Rule 204: enum_specifier ::= enum identifier_or_typedefname { enumerator_list_opt comma_opt } + // + case 204: { action. consumeTypeSpecifierEnumeration(true); break; + } + + // + // Rule 209: enumerator ::= identifier_or_typedefname + // + case 209: { action. consumeEnumerator(false); break; + } + + // + // Rule 210: enumerator ::= identifier_or_typedefname = constant_expression + // + case 210: { action. consumeEnumerator(true); break; + } + + // + // Rule 211: type_qualifier ::= type_qualifier_token + // + case 211: { action. consumeDeclSpecToken(); break; + } + + // + // Rule 215: function_specifier ::= inline + // + case 215: { action. consumeDeclSpecToken(); break; + } + + // + // Rule 217: declarator ::= pointer_seq direct_declarator + // + case 217: { action. consumeDeclaratorWithPointer(true); break; + } + + // + // Rule 222: basic_direct_declarator ::= declarator_id_name + // + case 222: { action. consumeDirectDeclaratorIdentifier(); break; + } + + // + // Rule 223: basic_direct_declarator ::= ( declarator ) + // + case 223: { action. consumeDirectDeclaratorBracketed(); break; + } + + // + // Rule 224: declarator_id_name ::= identifier + // + case 224: { action. consumeIdentifierName(); break; + } + + // + // Rule 225: array_direct_declarator ::= basic_direct_declarator array_modifier + // + case 225: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 226: array_direct_declarator ::= array_direct_declarator array_modifier + // + case 226: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 228: function_direct_declarator ::= basic_direct_declarator ( parameter_type_list ) + // + case 228: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; + } + + // + // Rule 229: function_direct_declarator ::= basic_direct_declarator ( ) + // + case 229: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; + } + + // + // Rule 231: function_declarator ::= pointer_seq function_direct_declarator + // + case 231: { action. consumeDeclaratorWithPointer(true); break; + } + + // + // Rule 232: knr_direct_declarator ::= basic_direct_declarator ( identifier_list ) + // + case 232: { action. consumeDirectDeclaratorFunctionDeclaratorKnR(); break; + } + + // + // Rule 234: knr_function_declarator ::= pointer_seq knr_direct_declarator + // + case 234: { action. consumeDeclaratorWithPointer(true); break; + } + + // + // Rule 235: identifier_list ::= identifier + // + case 235: { action. consumeIdentifierKnR(); break; + } + + // + // Rule 236: identifier_list ::= identifier_list , identifier + // + case 236: { action. consumeIdentifierKnR(); break; + } + + // + // Rule 237: array_modifier ::= [ ] + // + case 237: { action. consumeDirectDeclaratorArrayModifier(false); break; + } + + // + // Rule 238: array_modifier ::= [ array_modifier_type_qualifiers ] + // + case 238: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break; + } + + // + // Rule 239: array_modifier ::= [ assignment_expression ] + // + case 239: { action. consumeDirectDeclaratorArrayModifier(true); break; + } + + // + // Rule 240: array_modifier ::= [ array_modifier_type_qualifiers assignment_expression ] + // + case 240: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break; + } + + // + // Rule 241: array_modifier ::= [ static assignment_expression ] + // + case 241: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break; + } + + // + // Rule 242: array_modifier ::= [ static array_modifier_type_qualifiers assignment_expression ] + // + case 242: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; + } + + // + // Rule 243: array_modifier ::= [ array_modifier_type_qualifiers static assignment_expression ] + // + case 243: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; + } + + // + // Rule 244: array_modifier ::= [ * ] + // + case 244: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break; + } + + // + // Rule 245: array_modifier ::= [ array_modifier_type_qualifiers * ] + // + case 245: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break; + } + + // + // Rule 247: pointer_seq ::= * + // + case 247: { action. consumePointer(); break; + } + + // + // Rule 248: pointer_seq ::= pointer_seq * + // + case 248: { action. consumePointer(); break; + } + + // + // Rule 249: pointer_seq ::= * type_qualifier_list + // + case 249: { action. consumePointerTypeQualifierList(); break; + } + + // + // Rule 250: pointer_seq ::= pointer_seq * type_qualifier_list + // + case 250: { action. consumePointerTypeQualifierList(); break; + } + + // + // Rule 253: parameter_type_list ::= parameter_list + // + case 253: { action. consumeEmpty(); break; + } + + // + // Rule 254: parameter_type_list ::= parameter_list , ... + // + case 254: { action. consumePlaceHolder(); break; + } + + // + // Rule 255: parameter_type_list ::= ... + // + case 255: { action. consumePlaceHolder(); break; + } + + // + // Rule 258: parameter_declaration ::= declaration_specifiers complete_parameter_declarator + // + case 258: { action. consumeParameterDeclaration(); break; + } + + // + // Rule 259: parameter_declaration ::= declaration_specifiers + // + case 259: { action. consumeParameterDeclarationWithoutDeclarator(); break; + } + + // + // Rule 262: type_name ::= specifier_qualifier_list + // + case 262: { action. consumeTypeId(false); break; + } + + // + // Rule 263: type_name ::= specifier_qualifier_list abstract_declarator + // + case 263: { action. consumeTypeId(true); break; + } + + // + // Rule 265: abstract_declarator ::= pointer_seq + // + case 265: { action. consumeDeclaratorWithPointer(false); break; + } + + // + // Rule 266: abstract_declarator ::= pointer_seq direct_abstract_declarator + // + case 266: { action. consumeDeclaratorWithPointer(false); break; + } + + // + // Rule 270: basic_direct_abstract_declarator ::= ( abstract_declarator ) + // + case 270: { action. consumeDirectDeclaratorBracketed(); break; + } + + // + // Rule 271: array_direct_abstract_declarator ::= array_modifier + // + case 271: { action. consumeDirectDeclaratorArrayDeclarator(false); break; + } + + // + // Rule 272: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier + // + case 272: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 273: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier + // + case 273: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 274: function_direct_abstract_declarator ::= ( ) + // + case 274: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break; + } + + // + // Rule 275: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( ) + // + case 275: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; + } + + // + // Rule 276: function_direct_abstract_declarator ::= ( parameter_type_list ) + // + case 276: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break; + } + + // + // Rule 277: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( parameter_type_list ) + // + case 277: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; + } + + // + // Rule 278: initializer ::= assignment_expression + // + case 278: { action. consumeInitializer(); break; + } + + // + // Rule 279: initializer ::= { initializer_list comma_opt } + // + case 279: { action. consumeInitializerList(); break; + } + + // + // Rule 284: designated_initializer ::= designation = initializer + // + case 284: { action. consumeInitializerDesignated(); break; + } + + // + // Rule 288: designator_base ::= [ constant_expression ] + // + case 288: { action. consumeDesignatorArray(); break; + } + + // + // Rule 289: designator_base ::= . identifier_or_typedefname + // + case 289: { action. consumeDesignatorField(); break; + } + + // + // Rule 290: designator ::= [ constant_expression ] + // + case 290: { action. consumeDesignatorArray(); break; + } + + // + // Rule 291: designator ::= . identifier_or_typedefname + // + case 291: { action. consumeDesignatorField(); break; + } + + // + // Rule 292: translation_unit ::= external_declaration_list + // + case 292: { action. consumeTranslationUnit(); break; + } + + // + // Rule 293: translation_unit ::= $Empty + // + case 293: { action. consumeTranslationUnit(); break; + } + + // + // Rule 298: external_declaration ::= ; + // + case 298: { action. consumeDeclarationEmpty(); break; + } + + // + // Rule 299: external_declaration ::= ERROR_TOKEN + // + case 299: { action. consumeDeclarationProblem(); break; + } + + // + // Rule 302: function_definition ::= declaration_specifiers function_declarator function_body + // + case 302: { action. consumeFunctionDefinition(true); break; + } + + // + // Rule 303: function_definition ::= function_declarator function_body + // + case 303: { action. consumeFunctionDefinition(false); break; + } + + // + // Rule 304: function_definition ::= declaration_specifiers knr_function_declarator declaration_list compound_statement + // + case 304: { action. consumeFunctionDefinitionKnR(); break; + } + + // + // Rule 305: function_body ::= { } + // + case 305: { action. consumeStatementCompoundStatement(false); break; + } + + // + // Rule 306: function_body ::= { block_item_list } + // + case 306: { action. consumeStatementCompoundStatement(true); break; + } + + // + // Rule 308: expression_parser_start ::= ERROR_TOKEN + // + case 308: { action. consumeExpressionProblem(); break; + } + + // + // Rule 309: literal ::= MYTHREAD + // + case 309: { action. consumeKeywordExpression(IUPCASTKeywordExpression.kw_mythread); break; + } + + // + // Rule 310: literal ::= THREADS + // + case 310: { action. consumeKeywordExpression(IUPCASTKeywordExpression.kw_threads); break; + } + + // + // Rule 311: literal ::= UPC_MAX_BLOCKSIZE + // + case 311: { action. consumeKeywordExpression(IUPCASTKeywordExpression.kw_upc_max_block_size); break; + } + + // + // Rule 312: unary_expression ::= upc_localsizeof unary_expression + // + case 312: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_localsizeof); break; + } + + // + // Rule 313: unary_expression ::= upc_localsizeof ( type_name ) + // + case 313: { action. consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_localsizeof); break; + } + + // + // Rule 314: unary_expression ::= upc_blocksizeof unary_expression + // + case 314: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_blocksizeof); break; + } + + // + // Rule 315: unary_expression ::= upc_blocksizeof ( type_name ) + // + case 315: { action. consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_blocksizeof); break; + } + + // + // Rule 316: unary_expression ::= upc_elemsizeof unary_expression + // + case 316: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_elemsizeof); break; + } + + // + // Rule 317: unary_expression ::= upc_elemsizeof ( type_name ) + // + case 317: { action. consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_elemsizeof); break; + } + + // + // Rule 321: shared_type_qualifier ::= shared + // + case 321: { action. consumeToken(); break; + } + + // + // Rule 322: reference_type_qualifier ::= relaxed + // + case 322: { action. consumeToken(); break; + } + + // + // Rule 323: reference_type_qualifier ::= strict + // + case 323: { action. consumeToken(); break; + } + + // + // Rule 324: layout_qualifier ::= [ constant_expression ] + // + case 324: { action. consumeLayoutQualifier(true, false); break; + } + + // + // Rule 325: layout_qualifier ::= [ * ] + // + case 325: { action. consumeLayoutQualifier(false, true); break; + } + + // + // Rule 326: layout_qualifier ::= [ ] + // + case 326: { action. consumeLayoutQualifier(false, false); break; + } + + // + // Rule 328: synchronization_statement ::= upc_notify expression ; + // + case 328: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, true); break; + } + + // + // Rule 329: synchronization_statement ::= upc_notify ; + // + case 329: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, false); break; + } + + // + // Rule 330: synchronization_statement ::= upc_wait expression ; + // + case 330: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, true); break; + } + + // + // Rule 331: synchronization_statement ::= upc_wait ; + // + case 331: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, false); break; + } + + // + // Rule 332: synchronization_statement ::= upc_barrier expression ; + // + case 332: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, true); break; + } + + // + // Rule 333: synchronization_statement ::= upc_barrier ; + // + case 333: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, false); break; + } + + // + // Rule 334: synchronization_statement ::= upc_fence ; + // + case 334: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_fence, false); break; + } + + // + // Rule 335: iteration_statement ::= upc_forall ( expression ; expression ; expression ; affinity ) statement + // + case 335: { action. consumeStatementUPCForallLoop(true, true, true, true); break; + } + + // + // Rule 336: iteration_statement ::= upc_forall ( expression ; expression ; expression ; ) statement + // + case 336: { action. consumeStatementUPCForallLoop(true, true, true, false); break; + } + + // + // Rule 337: iteration_statement ::= upc_forall ( expression ; expression ; ; affinity ) statement + // + case 337: { action. consumeStatementUPCForallLoop(true, true, false, true); break; + } + + // + // Rule 338: iteration_statement ::= upc_forall ( expression ; expression ; ; ) statement + // + case 338: { action. consumeStatementUPCForallLoop(true, true, false, false); break; + } + + // + // Rule 339: iteration_statement ::= upc_forall ( expression ; ; expression ; affinity ) statement + // + case 339: { action. consumeStatementUPCForallLoop(true, false, true, true); break; + } + + // + // Rule 340: iteration_statement ::= upc_forall ( expression ; ; expression ; ) statement + // + case 340: { action. consumeStatementUPCForallLoop(true, false, true, false); break; + } + + // + // Rule 341: iteration_statement ::= upc_forall ( expression ; ; ; affinity ) statement + // + case 341: { action. consumeStatementUPCForallLoop(true, false, false, true); break; + } + + // + // Rule 342: iteration_statement ::= upc_forall ( expression ; ; ; ) statement + // + case 342: { action. consumeStatementUPCForallLoop(true, false, false, false); break; + } + + // + // Rule 343: iteration_statement ::= upc_forall ( ; expression ; expression ; affinity ) statement + // + case 343: { action. consumeStatementUPCForallLoop(false, true, true, true); break; + } + + // + // Rule 344: iteration_statement ::= upc_forall ( ; expression ; expression ; ) statement + // + case 344: { action. consumeStatementUPCForallLoop(false, true, true, false); break; + } + + // + // Rule 345: iteration_statement ::= upc_forall ( ; expression ; ; affinity ) statement + // + case 345: { action. consumeStatementUPCForallLoop(false, true, false, true); break; + } + + // + // Rule 346: iteration_statement ::= upc_forall ( ; expression ; ; ) statement + // + case 346: { action. consumeStatementUPCForallLoop(false, true, false, false); break; + } + + // + // Rule 347: iteration_statement ::= upc_forall ( ; ; expression ; affinity ) statement + // + case 347: { action. consumeStatementUPCForallLoop(false, false, true, true); break; + } + + // + // Rule 348: iteration_statement ::= upc_forall ( ; ; expression ; ) statement + // + case 348: { action. consumeStatementUPCForallLoop(false, false, true, false); break; + } + + // + // Rule 349: iteration_statement ::= upc_forall ( ; ; ; affinity ) statement + // + case 349: { action. consumeStatementUPCForallLoop(false, false, false, true); break; + } + + // + // Rule 350: iteration_statement ::= upc_forall ( ; ; ; ) statement + // + case 350: { action. consumeStatementUPCForallLoop(false, false, false, false); break; + } + + // + // Rule 351: iteration_statement ::= upc_forall ( declaration expression ; expression ; affinity ) statement + // + case 351: { action. consumeStatementUPCForallLoop(true, true, true, true); break; + } + + // + // Rule 352: iteration_statement ::= upc_forall ( declaration expression ; expression ; ) statement + // + case 352: { action. consumeStatementUPCForallLoop(true, true, true, false); break; + } + + // + // Rule 353: iteration_statement ::= upc_forall ( declaration expression ; ; affinity ) statement + // + case 353: { action. consumeStatementUPCForallLoop(true, true, false, true); break; + } + + // + // Rule 354: iteration_statement ::= upc_forall ( declaration expression ; ; ) statement + // + case 354: { action. consumeStatementUPCForallLoop(true, true, false, false); break; + } + + // + // Rule 355: iteration_statement ::= upc_forall ( declaration ; expression ; affinity ) statement + // + case 355: { action. consumeStatementUPCForallLoop(true, false, true, true); break; + } + + // + // Rule 356: iteration_statement ::= upc_forall ( declaration ; expression ; ) statement + // + case 356: { action. consumeStatementUPCForallLoop(true, false, true, false); break; + } + + // + // Rule 357: iteration_statement ::= upc_forall ( declaration ; ; affinity ) statement + // + case 357: { action. consumeStatementUPCForallLoop(true, false, false, true); break; + } + + // + // Rule 358: iteration_statement ::= upc_forall ( declaration ; ; ) statement + // + case 358: { action. consumeStatementUPCForallLoop(true, false, false, false); break; + } + + // + // Rule 360: affinity ::= continue + // + case 360: { 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/UPCExpressionStatementParserprs.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionStatementParserprs.java new file mode 100644 index 00000000000..bb0aa834240 --- /dev/null +++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionStatementParserprs.java @@ -0,0 +1,1279 @@ +/******************************************************************************* +* Copyright (c) 2006, 2008 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 UPCExpressionStatementParserprs implements lpg.lpgjavaruntime.ParseTable, UPCExpressionStatementParsersym { + + 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 + }; + }; + 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,3,1,1,1,4, + 4,3,3,2,2,8,1,0,1,1, + 1,2,2,2,2,2,2,2,2,2, + 4,1,4,1,3,3,3,1,3,3, + 1,3,3,1,3,3,3,3,1,3, + 3,1,3,1,3,1,3,1,3,1, + 3,1,5,1,3,3,3,3,3,3, + 3,3,3,3,3,1,1,2,1,0, + 1,3,1,1,1,1,1,1,1,1, + 3,3,2,2,4,1,2,1,1,1, + 2,5,7,5,1,0,7,5,9,8, + 3,2,2,2,3,2,4,2,2,2, + 2,2,1,1,1,1,2,1,2,2, + 2,1,2,2,1,2,2,1,2,2, + 1,2,2,1,3,1,3,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,5,5,6,6,2,2,2,1,0, + 1,2,4,2,1,1,1,3,1,1, + 2,3,6,7,1,0,1,3,1,3, + 1,1,1,1,1,1,3,1,1,1, + 1,1,3,1,2,2,1,5,3,1, + 3,5,1,3,1,3,2,4,3,5, + 4,6,6,3,5,1,1,2,3,4, + 1,2,1,3,1,1,3,2,1,1, + 1,1,2,1,2,3,1,1,1,3, + 1,2,2,2,3,4,5,1,5,1, + 1,3,3,4,1,1,2,3,2,3, + 2,1,0,1,2,1,1,1,1,1, + 2,4,3,6,2,4,2,1,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, + -44,0,0,0,0,0,0,-41,0,0, + 0,0,0,0,0,0,0,0,0,0, + -83,-214,-81,0,0,0,0,0,0,-2, + -5,-18,-125,0,0,0,0,-62,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-20,0,0,0, + 0,0,0,0,0,0,0,0,0,-21, + -89,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,0, + -190,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -197,-10,0,0,0,0,0,0,-22,-144, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-23,-24,-25,0,0,0,0, + 0,0,0,0,0,-26,0,0,0,0, + 0,-37,0,-185,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-84,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-148,-38,0,-6,0,0,0, + 0,0,-60,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -86,-27,0,0,-28,-143,0,0,0,0, + -63,0,0,0,0,0,0,-87,0,0, + 0,0,0,0,0,0,-160,0,0,0, + 0,-11,0,0,0,0,0,0,0,0, + 0,0,-29,-30,-98,0,0,0,0,0, + 0,0,0,-4,0,0,0,0,0,0, + -171,0,0,0,0,0,0,0,0,0, + 0,0,0,-124,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-131,0,0,0,0,0,0, + -99,0,0,0,0,0,0,0,0,0, + 0,0,0,-100,-3,0,0,0,0,-57, + 0,0,0,0,0,0,0,0,0,0, + 0,-205,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-31,0,0,0,0,0,0,-101,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-45,0,0,0,0,0,0,0,0, + -64,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -65,0,0,0,0,0,0,-42,0,0, + 0,0,0,0,0,0,0,0,0,0, + -66,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -67,0,0,0,0,0,0,-75,0,0, + 0,0,0,0,0,0,0,0,0,0, + -68,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -69,0,0,0,0,0,0,-76,0,0, + 0,0,0,0,0,0,0,0,0,0, + -70,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -71,0,0,0,0,0,0,-77,0,0, + 0,0,0,0,0,0,0,0,0,0, + -72,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -73,0,0,0,0,0,0,-78,0,0, + 0,0,0,0,0,0,0,0,0,0, + -74,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -164,0,0,0,0,0,0,-79,0,0, + 0,0,0,0,0,0,0,0,0,0, + -165,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -188,0,0,0,0,0,0,-102,0,0, + 0,0,0,0,0,0,0,0,0,-202, + 0,0,0,0,0,0,-189,0,0,0, + 0,0,0,0,0,0,0,0,-208,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-212,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-222,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-138,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-103,-147,-104,-105,-106,0, + -107,0,0,-59,0,0,0,0,0,0, + -108,0,0,0,0,0,0,0,-7,0, + 0,0,0,0,0,-12,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-168, + -80,0,0,0,0,0,0,-50,0,0, + 0,0,0,0,-128,0,0,0,0,0, + 0,-46,0,0,0,0,0,0,0,0, + -97,-169,-159,-109,0,-151,0,0,0,0, + 0,0,0,-121,0,0,0,0,0,0, + 0,-199,-1,0,0,0,0,0,0,0, + 0,-166,0,0,0,0,0,-56,0,0, + 0,0,0,0,-221,0,0,0,0,0, + 0,0,0,0,-110,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-215, + -111,0,-92,-127,0,0,0,0,0,0, + -146,0,0,0,0,0,0,0,-8,0, + 0,0,0,0,0,0,-112,-113,-123,-133, + 0,0,0,-88,0,0,0,0,0,-58, + 0,0,0,0,0,0,-135,0,0,0, + 0,0,-114,0,0,0,0,0,0,0, + -9,0,0,0,0,0,0,0,0,0, + -51,0,0,0,0,0,0,-93,0,0, + 0,-13,0,0,0,0,0,0,0,-115, + 0,-52,0,0,0,0,0,0,-180,0, + 0,0,-53,0,0,0,0,0,0,0, + 0,0,0,-54,0,0,0,0,0,0, + -90,0,0,-55,0,0,0,0,0,0, + -85,0,0,-211,-95,-136,-116,0,-91,-117, + -40,-140,0,0,0,0,0,0,0,-173, + 0,-153,0,0,0,0,0,-118,0,0, + -155,0,0,0,0,-94,0,0,0,0, + 0,0,0,0,0,-187,0,0,0,0, + -96,-14,0,0,0,0,0,0,0,0, + 0,0,-194,0,-119,-43,-120,0,0,0, + 0,0,0,0,0,0,0,0,-203,-132, + -134,-223,0,0,0,0,0,-152,0,0, + 0,0,0,0,0,-167,0,0,0,0, + 0,0,-15,0,0,0,0,0,0,0, + 0,0,0,0,0,-137,-170,0,0,0, + 0,0,0,0,0,-19,-149,-172,0,-32, + -181,-130,0,-33,0,-158,0,-34,0,-175, + 0,-182,0,-179,0,0,0,0,0,-186, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-157,0,0,0,-213,0,-35,0, + 0,-196,-36,0,0,0,-224,0,0,0, + 0,0,-47,0,0,0,0,0,0,0, + -129,0,0,0,0,0,0,0,0,0, + 0,-184,0,-48,0,0,0,0,0,0, + -126,0,0,0,-142,0,0,-49,0,0, + 0,0,0,0,-82,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-154,0,0,0,0,-156,-161,0,0, + 0,-174,0,0,0,0,-178,-192,0,-195, + -193,-207,0,0,-198,0,0,0,0,-210, + -200,0,0,0,0,0,0,0,0,0, + 0,-204,0,0,-16,0,0,0,0,0, + 0,-122,0,0,0,0,-150,0,0,0, + 0,0,0,0,0,0,0,0,-206,0, + 0,0,0,-209,0,0,-183,0,-141,0, + 0,0,0,-17,0,0,0,0,0,0, + 0,0,-201,-217,-219,0,-162,0,0,0, + 0,0,0,0,0,-145,-176,-216,0,0, + -163,-218,0,0,0,0,0,0,0,0, + 0,0,0,0,-191,-177,0,0,0,0, + 0,0,0,0,0,0,0,-39,0,0, + 0,-220,0,0,0,0,0,0,0,0, + 0,0,0,-61,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0 + }; + }; + public final static short baseCheck[] = BaseCheck.baseCheck; + public final int baseCheck(int index) { return baseCheck[index]; } + public final static short rhs[] = baseCheck; + public final int rhs(int index) { return rhs[index]; }; + + public interface BaseAction { + public final static char baseAction[] = { + 85,7,22,22,20,20,31,31,64,64, + 1,1,1,1,2,2,2,3,3,4, + 4,4,4,4,4,4,4,54,54,71, + 71,5,5,5,5,5,5,5,5,5, + 5,5,6,6,8,8,8,8,9,9, + 9,10,10,10,11,11,11,11,11,12, + 12,12,13,13,14,14,15,15,16,16, + 17,17,18,18,19,19,19,19,19,19, + 19,19,19,19,19,19,96,30,28,86, + 86,73,73,45,97,97,97,97,97,97, + 97,98,98,98,99,99,104,104,105,105, + 100,100,101,101,101,107,107,102,102,102, + 102,103,103,103,103,103,106,106,21,21, + 21,21,21,33,33,33,79,79,74,74, + 74,74,75,75,75,76,76,76,77,77, + 77,78,78,78,108,108,109,109,110,34, + 36,36,36,36,36,55,57,57,57,57, + 57,57,57,57,57,57,57,57,68,68, + 32,32,65,65,65,65,66,66,66,58, + 58,59,59,51,51,51,27,87,87,80, + 81,81,81,67,67,82,82,83,83,69, + 69,23,24,24,24,35,50,50,37,37, + 37,37,40,40,42,38,38,39,43,43, + 111,111,41,112,112,88,88,29,29,29, + 29,29,29,29,29,29,84,52,52,52, + 52,61,61,60,60,60,62,62,53,53, + 89,89,44,44,63,63,63,46,46,46, + 47,48,48,48,49,49,49,49,56,56, + 72,72,72,72,70,90,91,91,92,92, + 93,93,113,113,114,114,115,115,115,115, + 117,117,116,116,116,118,118,85,85,1, + 1,1,5,5,5,5,5,5,23,23, + 25,25,26,26,94,94,94,97,119,119, + 119,119,119,119,119,102,102,102,102,102, + 102,102,102,102,102,102,102,102,102,102, + 102,102,102,102,102,102,102,102,102,120, + 120,1,14,19,15,392,644,44,573,430, + 417,514,489,516,515,602,526,643,605,74, + 91,333,446,476,134,211,318,319,1655,1300, + 33,51,1149,476,136,133,135,159,800,14, + 19,15,392,42,44,20,430,417,514,489, + 516,515,602,526,1353,239,138,245,165,216, + 1232,219,1547,221,222,227,142,145,148,151, + 430,494,1493,1722,391,1334,1421,1439,1466,1481, + 1231,734,14,19,15,392,644,44,627,430, + 417,514,489,516,515,602,526,643,605,74, + 278,734,14,19,15,392,644,44,627,430, + 417,514,489,516,515,602,526,643,605,74, + 278,1033,800,14,19,15,392,42,39,186, + 440,14,19,15,392,644,44,280,430,417, + 514,489,516,515,602,526,643,605,74,1262, + 271,281,238,1233,73,173,287,280,217,1232, + 219,1547,221,222,227,320,162,266,618,601, + 269,281,426,1744,486,14,19,15,392,644, + 44,627,430,417,514,489,516,515,602,526, + 643,605,74,278,394,14,19,15,392,644, + 44,1641,430,417,514,489,516,515,602,526, + 643,605,74,393,340,426,237,830,14,19, + 15,392,316,800,14,19,15,392,42,44, + 282,430,417,514,489,516,1327,134,211,318, + 319,314,65,23,283,6,476,136,133,135, + 159,800,14,19,15,392,42,44,369,430, + 417,514,489,516,515,602,1390,780,241,138, + 272,165,800,14,19,15,392,42,38,142, + 145,148,151,201,109,1010,22,273,1334,1421, + 1439,1466,1481,1231,800,14,19,15,392,644, + 44,333,430,417,514,489,516,515,602,526, + 643,605,74,91,980,14,19,15,392,644, + 44,1645,430,417,514,489,516,515,602,526, + 643,605,74,606,612,14,19,15,392,42, + 44,1050,430,417,514,489,516,515,602,526, + 643,605,93,481,435,69,326,1580,1067,286, + 800,14,19,15,392,42,44,391,430,417, + 514,1234,767,14,19,15,392,644,44,1236, + 430,417,514,489,516,515,602,526,643,605, + 74,278,800,14,19,15,392,644,44,471, + 430,417,514,489,516,515,602,526,643,605, + 74,92,800,14,19,15,392,42,44,307, + 714,800,14,19,15,392,644,44,284,430, + 417,514,489,516,515,602,526,643,605,74, + 85,800,14,19,15,392,644,44,573,430, + 417,514,489,516,515,602,526,643,605,74, + 84,800,14,19,15,392,644,44,16,430, + 417,514,489,516,515,602,526,643,605,74, + 83,800,14,19,15,392,644,44,573,430, + 417,514,489,516,515,602,526,643,605,74, + 82,800,14,19,15,392,644,44,1437,430, + 417,514,489,516,515,602,526,643,605,74, + 81,800,14,19,15,392,644,44,573,430, + 417,514,489,516,515,602,526,643,605,74, + 80,800,14,19,15,392,644,44,1440,430, + 417,514,489,516,515,602,526,643,605,74, + 79,800,14,19,15,392,644,44,573,430, + 417,514,489,516,515,602,526,643,605,74, + 78,800,14,19,15,392,644,44,1458,430, + 417,514,489,516,515,602,526,643,605,74, + 77,800,14,19,15,392,644,44,573,430, + 417,514,489,516,515,602,526,643,605,74, + 76,800,14,19,15,392,644,44,1495,430, + 417,514,489,516,515,602,526,643,605,74, + 75,800,14,19,15,392,644,44,573,430, + 417,514,489,516,515,602,526,643,605,74, + 1688,800,14,19,15,392,644,44,1497,430, + 417,514,489,516,515,602,526,643,605,74, + 1691,800,14,19,15,392,42,44,86,430, + 417,514,489,516,515,602,526,643,605,93, + 800,14,19,15,392,42,44,812,430,417, + 514,489,516,515,602,526,643,605,93,800, + 14,19,15,392,42,44,1739,430,417,514, + 489,516,515,602,526,643,605,93,800,14, + 19,15,392,42,44,210,430,417,514,489, + 516,515,602,526,643,605,93,800,14,19, + 15,392,42,44,1764,430,417,514,489,516, + 515,602,526,643,605,93,800,14,19,15, + 392,42,44,201,430,417,514,489,516,515, + 602,526,643,605,73,126,543,200,249,354, + 287,474,202,661,800,14,19,15,392,42, + 44,531,430,417,514,489,516,515,1301,860, + 14,19,15,392,314,271,800,14,19,15, + 392,42,37,216,1232,219,1547,221,222,227, + 135,573,264,618,601,269,260,1690,800,14, + 19,15,392,42,44,573,430,417,1048,261, + 274,21,800,14,19,15,392,42,44,271, + 759,340,708,644,244,270,476,216,1232,219, + 1547,221,222,227,32,258,264,618,601,269, + 1493,441,405,658,134,211,318,319,324,1300, + 654,226,476,1215,137,133,135,159,800,14, + 19,15,392,42,44,405,430,417,514,489, + 1171,87,1300,715,240,301,139,1632,165,216, + 1232,219,1547,221,222,227,143,146,149,152, + 333,618,1597,663,566,14,19,15,392,42, + 35,573,216,1232,219,1547,221,222,227,890, + 14,19,15,392,312,1597,244,610,452,64, + 32,276,197,199,516,1510,1749,1672,390,1434, + 800,14,19,15,392,42,44,32,430,417, + 514,1285,1512,240,1677,198,199,134,211,318, + 319,920,14,19,15,392,40,141,133,135, + 159,800,14,19,15,392,42,44,805,430, + 417,1155,800,14,19,15,392,42,36,140, + 619,165,800,14,19,15,392,42,44,692, + 430,417,1157,800,14,19,15,392,42,44, + 1511,430,417,1158,800,14,19,15,392,42, + 44,1059,430,1159,800,14,19,15,392,42, + 44,1148,430,1161,472,835,32,198,1621,1091, + 280,32,235,1593,134,211,318,319,654,1767, + 573,274,32,1763,144,133,135,159,540,1682, + 271,32,134,211,318,319,1101,1546,1687,87, + 277,383,147,133,135,159,606,264,618,601, + 269,1133,800,14,19,15,392,42,35,134, + 211,318,319,573,1215,620,517,656,193,150, + 133,135,159,381,134,211,318,319,289,606, + 665,699,78,223,153,133,135,159,566,14, + 19,15,392,42,35,271,566,14,19,15, + 392,42,35,800,14,19,15,392,42,34, + 325,1561,264,618,601,269,700,577,245,217, + 1232,219,1547,221,222,227,32,87,647,263, + 32,696,599,361,32,574,32,361,32,1727, + 600,361,842,1747,600,361,225,196,208,1156, + 706,196,275,1496,87,196,808,1496,87,196, + 808,1496,87,536,808,1496,87,745,808,32, + 368,183,599,32,848,182,361,653,888,1700, + 361,257,928,800,14,19,15,392,42,47, + 196,478,229,1912,196,1561,1496,87,574,808, + 1496,87,600,808,800,14,19,15,392,42, + 46,121,1156,968,1912,121,1912,1008,800,14, + 19,15,392,42,45,701,14,19,15,392, + 42,43,207,26,251,211,318,319,251,211, + 318,319,55,1722,256,1399,1572,112,32,574, + 1912,1311,169,1557,574,461,1912,283,476,574, + 478,476,606,196,574,600,1912,574,196,1777, + 597,600,1776,196,1777,1912,1776,574,196,1777, + 242,1156,692,243,1777,950,14,19,15,392, + 33,1156,1074,191,291,490,185,342,191,1001, + 1570,1796,184,191,574,1574,1796,1912,191,476, + 1695,1796,481,256,644,1701,1796,536,1156,121, + 1311,271,1557,256,950,14,19,15,392,32, + 1765,288,1557,600,476,573,1778,121,266,618, + 601,269,251,211,318,319,292,223,600,1561, + 256,349,600,1912,1252,228,290,1450,1812,1557, + 251,211,318,319,203,425,226,1912,1782,252, + 211,318,319,574,252,211,318,319,480,204, + 1781,1912,596,279,1912,654,207,196,252,211, + 318,319,1912,1777,32,1912,1912,1912,1795,1712, + 1572,654,232,1912,1912,1912,89,1912,1912,1912, + 1912,194,1912,1912,1912,1912,1912,192,1912,1912, + 1912,1912,87,1912,1328,1912,1912,1912,1912,1912, + 1912,1912,1912,1912,1912,1912,1912,1912,1912,1912, + 1912,1912,1912,1912,1912,1912,1912,1912,1912,1912, + 1912,1912,1912,1912,1912,1912,1912,1912,1912,1912, + 1912,1912,1912,1912,1201,1912,0,321,694,0, + 17,179,0,18,178,0,1,2136,0,1, + 2147,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,0,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,0,0,33,34,35,36,37,38,39, + 40,41,42,43,44,45,46,47,48,49, + 0,51,52,53,0,1,0,3,0,5, + 6,7,8,0,0,11,12,13,0,6, + 7,8,0,5,11,12,13,0,1,2, + 0,4,77,78,30,0,0,33,34,35, + 36,37,38,39,40,41,42,43,44,45, + 46,47,48,49,54,51,52,53,0,55, + 56,0,1,0,3,0,5,6,7,8, + 0,89,11,12,13,0,6,7,8,57, + 58,11,12,13,0,1,2,73,70,5, + 54,30,57,58,33,34,35,36,37,38, + 39,40,41,42,43,44,45,46,47,48, + 49,0,51,52,53,31,55,56,0,1, + 0,3,0,5,6,7,8,69,0,11, + 12,13,57,58,50,0,14,79,80,81, + 82,83,84,85,86,87,88,0,30,0, + 0,33,34,35,36,37,38,39,40,41, + 42,43,44,45,46,47,48,49,0,51, + 52,53,0,55,56,0,1,5,3,32, + 5,6,7,8,0,74,11,12,13,0, + 6,7,8,0,0,11,12,13,0,64, + 65,66,67,9,10,30,57,58,33,34, + 35,36,37,38,39,40,41,42,43,44, + 45,46,47,48,49,75,51,52,53,0, + 55,56,0,1,0,3,0,5,6,7, + 8,0,70,11,12,13,0,6,7,8, + 0,0,11,12,13,57,58,64,65,66, + 67,32,30,0,75,33,34,35,36,37, + 38,39,40,41,42,43,44,45,46,47, + 48,49,0,51,52,53,4,55,56,0, + 1,0,3,0,31,6,7,8,0,0, + 11,12,13,0,6,7,8,71,72,11, + 12,13,9,10,64,65,66,67,0,30, + 2,0,33,34,35,36,37,38,39,40, + 41,42,43,44,45,46,47,48,49,0, + 51,52,53,0,1,2,3,4,5,31, + 0,60,9,10,0,1,2,14,15,16, + 17,18,19,20,21,22,23,24,25,26, + 27,28,29,30,0,0,1,0,3,0, + 6,7,8,4,0,11,12,13,4,0, + 1,2,3,4,5,0,1,2,9,10, + 0,0,59,14,15,16,17,18,19,20, + 21,22,23,24,25,26,27,28,29,30, + 0,0,68,0,4,0,5,0,0,0, + 5,4,9,10,5,0,1,2,3,4, + 5,62,63,0,9,10,62,63,59,14, + 15,16,17,18,19,20,21,22,23,24, + 25,26,27,28,29,0,0,32,2,68, + 4,6,7,8,31,54,11,12,13,50, + 0,0,62,63,59,0,1,60,3,0, + 55,70,0,1,2,30,4,31,33,34, + 35,36,37,38,39,40,41,42,43,44, + 45,46,47,48,49,0,1,2,3,4, + 5,32,0,31,9,10,0,5,2,14, + 15,16,17,18,19,20,21,22,23,24, + 25,26,27,28,29,0,0,1,0,0, + 5,71,72,5,5,0,1,31,3,0, + 0,0,1,2,3,4,5,0,0,0, + 9,10,50,14,59,14,15,16,17,18, + 19,20,21,22,23,24,25,26,27,28, + 29,0,1,0,3,50,0,0,50,54, + 0,32,0,1,55,0,60,0,1,2, + 3,4,0,1,0,3,9,10,0,0, + 59,14,15,16,17,18,19,20,21,22, + 23,24,25,26,27,28,29,32,0,0, + 73,0,74,0,32,0,32,54,0,0, + 0,1,2,3,4,0,60,0,0,9, + 10,0,0,56,14,15,16,17,18,19, + 20,21,22,23,24,25,26,27,28,29, + 32,32,32,0,1,2,3,4,31,0, + 0,0,9,10,0,54,0,14,15,16, + 17,18,19,20,21,22,23,24,25,26, + 27,28,29,0,69,32,0,1,2,3, + 4,0,0,0,69,9,10,0,0,0, + 14,15,16,17,18,19,20,21,22,23, + 24,25,26,27,28,29,0,0,32,0, + 1,2,3,4,0,1,0,3,9,10, + 31,0,68,14,15,16,17,18,19,20, + 21,22,23,24,25,26,27,28,29,0, + 1,2,3,4,0,1,32,3,9,10, + 61,0,31,14,15,16,17,18,19,20, + 21,22,23,24,25,26,27,28,29,0, + 1,2,3,4,0,0,32,0,9,10, + 0,0,61,14,15,16,17,18,19,20, + 21,22,23,24,25,26,27,28,29,0, + 1,2,3,4,0,54,0,0,9,10, + 0,0,0,14,15,16,17,18,19,20, + 21,22,23,24,25,26,27,28,29,0, + 1,2,3,4,0,0,0,0,9,10, + 0,0,0,14,15,16,17,18,19,20, + 21,22,23,24,25,26,27,28,29,0, + 1,2,3,4,0,0,0,0,9,10, + 0,0,0,14,15,16,17,18,19,20, + 21,22,23,24,25,26,27,28,29,0, + 1,2,3,4,0,0,0,0,9,10, + 0,0,0,14,15,16,17,18,19,20, + 21,22,23,24,25,26,27,28,29,0, + 0,2,0,4,5,6,7,8,0,0, + 11,12,13,0,0,0,0,0,0,0, + 0,0,0,1,2,0,4,0,0,30, + 31,0,33,34,35,36,37,0,0,0, + 0,2,0,4,5,6,7,8,0,50, + 11,12,13,31,6,7,8,0,0,11, + 12,13,0,0,0,2,0,4,0,30, + 31,0,33,34,35,36,37,0,30,0, + 0,33,34,35,36,37,6,7,8,50, + 0,11,12,13,31,0,6,7,8,0, + 0,11,12,13,0,0,0,0,0,0, + 30,0,0,33,34,35,36,37,0,0, + 30,0,0,33,34,35,36,37,6,7, + 8,0,0,11,12,13,0,0,0,2, + 2,0,5,0,0,0,0,0,0,0, + 0,0,30,15,16,33,34,35,36,37, + 0,0,0,0,0,0,0,0,31,31, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,50,0,0, + 0,0,0,0,0,0,0,0,0,61, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,76,0,0,0,0,0, + 0,0,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, + 1912,645,1556,701,1482,72,2124,2125,2126,1382, + 1186,2234,431,2235,1533,1754,1715,1361,1922,1923, + 1924,1925,632,482,2221,2222,2223,1319,1179,577, + 2074,1,1912,2075,2073,2127,2076,2072,2079,2084, + 2083,2081,2082,2080,2085,2086,2078,2087,2088,2089, + 88,1435,1378,1303,1912,1,1912,1,1912,190, + 1,1,1,247,66,1,1,1,1912,1, + 1,1,54,1921,1,1,1,1912,2136,382, + 1912,1442,398,1824,1,58,253,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,752,1,1,1,42,190, + 2107,1912,1,1912,1,1912,190,1,1,1, + 1912,1896,1,1,1,57,2124,2125,2126,1414, + 1424,2234,431,2235,1,1906,1200,583,1920,1917, + 1558,1,1414,1424,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,68,1,1,1,554,190,2107,1912,1, + 1912,1,64,190,1,1,1,981,1912,1, + 1,1,1414,1424,1916,59,1268,961,941,921, + 901,881,841,861,821,801,781,317,1,56, + 70,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1912,1, + 1,1,1,190,2107,1912,1,1921,1,1244, + 189,1,1,1,248,1164,1,1,1,71, + 1,1,1,61,51,1,1,1,55,1403, + 1392,1371,1208,1222,772,1,1414,1424,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,611,1,1,1,315, + 189,2107,1912,1,1912,1,62,190,1,1, + 1,246,1920,1,1,1,1912,2124,2125,2126, + 60,1912,2234,431,2235,1414,1424,1403,1392,1371, + 1208,1244,1,268,611,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1912,1,1,1,1329,190,2107,1912, + 2091,1,2090,1912,554,2124,2125,2126,249,1912, + 2234,431,2235,53,2124,2125,2126,1340,720,2234, + 431,2235,1222,772,1403,1392,1371,1208,267,2074, + 1562,1912,2075,2073,2127,2076,2072,2079,2084,2083, + 2081,2082,2080,2085,2086,2078,2087,2088,2089,1912, + 1435,1378,1303,1,1929,1556,1930,1304,1915,554, + 1912,2167,1382,1186,1,2136,382,1533,1754,1715, + 1361,1922,1923,1924,1925,632,482,2221,2222,2223, + 1319,1179,577,674,250,1912,1941,1912,1942,48, + 2124,2125,2126,1648,50,2234,431,2235,1648,1912, + 1929,1556,1930,1526,1915,1,2136,382,1382,1186, + 1912,1912,1914,1533,1754,1715,1361,1922,1923,1924, + 1925,632,482,2221,2222,2223,1319,1179,577,1021, + 49,1912,1098,52,1648,1912,1921,1,1912,1, + 1915,1329,1222,772,90,1,1929,1556,1930,1482, + 27,1634,1613,321,1382,1186,1634,1613,1914,1533, + 1754,1715,1361,1922,1923,1924,1925,632,482,2221, + 2222,2223,1319,1179,577,128,262,1678,1431,1136, + 1,2124,2125,2126,1897,1275,2234,431,2235,90, + 63,1912,1634,1613,1914,206,2092,2167,2093,313, + 27,1920,259,2136,1200,2074,1,554,2075,2073, + 2127,2076,2072,2079,2084,2083,2081,2082,2080,2085, + 2086,2078,2087,2088,2089,1912,1929,1556,1930,1482, + 1915,1244,1912,554,1382,1186,220,1917,1602,1533, + 1754,1715,1361,1922,1923,1924,1925,632,482,2221, + 2222,2223,1319,1179,577,1912,1,1909,1,1912, + 1917,1340,720,1917,1919,1912,2092,554,2093,65, + 1912,1912,1929,1556,1930,1518,1915,67,69,41, + 1382,1186,1916,1268,1914,1533,1754,1715,1361,1922, + 1923,1924,1925,632,482,2221,2222,2223,1319,1179, + 577,205,1509,28,1509,1916,1,1912,1916,1607, + 1912,1244,1912,2148,1918,1912,2167,1912,1,1, + 1,1,1912,2092,187,2093,1,1,1912,1912, + 1914,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1244,1912,1912, + 583,28,1164,1912,1330,209,1452,534,186,188, + 1912,1929,1556,1930,1482,1912,2166,218,1912,1382, + 1186,1912,1912,2220,1533,1754,1715,1361,1922,1923, + 1924,1925,632,482,2221,2222,2223,1319,1179,577, + 1461,1566,1244,1,1929,1556,1930,1482,554,1912, + 1912,1912,1382,1186,200,1939,1912,1533,1754,1715, + 1361,1922,1923,1924,1925,632,482,2221,2222,2223, + 1319,1179,577,1912,1060,1678,1912,1929,1556,1930, + 1482,1912,1912,1912,732,1382,1186,1912,1912,1912, + 1533,1754,1715,1361,1922,1923,1924,1925,632,482, + 2221,2222,2223,1319,1179,577,1912,1912,1678,1912, + 1929,1556,1930,1482,1912,2092,1912,2093,1382,1186, + 1041,285,1117,1533,1754,1715,1361,1922,1923,1924, + 1925,632,482,2221,2222,2223,1319,1179,577,1912, + 1929,1560,1930,1482,1912,2092,1347,2093,1382,1186, + 1476,205,1079,1533,1754,1715,1361,1922,1923,1924, + 1925,632,482,2221,2222,2223,1319,1179,577,1912, + 1929,1564,1930,1482,1912,1912,1436,1912,1382,1186, + 1912,1912,1692,1533,1754,1715,1361,1922,1923,1924, + 1925,632,482,2221,2222,2223,1319,1179,577,1912, + 1929,1568,1930,1482,1912,2914,1912,1912,1382,1186, + 1912,1912,1912,1533,1754,1715,1361,1922,1923,1924, + 1925,632,482,2221,2222,2223,1319,1179,577,1912, + 1929,1599,1930,1482,1912,1912,1912,1912,1382,1186, + 1912,1912,1912,1533,1754,1715,1361,1922,1923,1924, + 1925,632,482,2221,2222,2223,1319,1179,577,1912, + 1929,1603,1930,1482,1912,1912,1912,1912,1382,1186, + 1912,1912,1912,1533,1754,1715,1361,1922,1923,1924, + 1925,632,482,2221,2222,2223,1319,1179,577,1, + 1929,1556,1930,1482,1912,1912,1912,1912,1382,1186, + 1912,1912,1912,1533,1754,1715,1361,1922,1923,1924, + 1925,632,482,2221,2222,2223,1319,1179,577,17, + 1912,1900,1912,1900,1900,179,179,179,1912,1912, + 179,179,179,1912,1912,1912,1912,1912,1912,1912, + 1912,1912,265,2136,1200,1912,1442,1912,1912,179, + 1900,1912,179,179,179,179,179,1912,1912,18, + 1912,1903,1912,1903,1903,178,178,178,129,1900, + 178,178,178,554,2124,2125,2126,1912,1912,2234, + 431,2235,1912,265,1912,1431,1912,1442,1912,178, + 1903,1912,178,178,178,178,178,1912,2074,1912, + 130,2075,2073,2127,2076,2072,2124,2125,2126,1903, + 131,2234,431,2235,554,1912,2124,2125,2126,1912, + 1912,2234,431,2235,1912,1912,1912,1912,1912,1912, + 2074,1912,1912,2075,2073,2127,2076,2072,1912,1912, + 2074,1912,132,2075,2073,2127,2076,2072,2124,2125, + 2126,1912,1912,2234,431,2235,1912,1,31,1431, + 1808,1912,1917,1912,1912,1912,1912,1912,1912,1912, + 1912,1912,2074,1936,1937,2075,2073,2127,2076,2072, + 1912,1912,1912,1912,1912,1912,1912,1912,554,1441, + 1912,1912,1912,1912,1912,1912,1912,1912,1912,1912, + 1912,1912,1912,1912,1912,1912,1912,1916,1912,1912, + 1912,1912,1912,1912,1912,1912,1912,1912,1912,575, + 1912,1912,1912,1912,1912,1912,1912,1912,1912,1912, + 1912,1912,1912,1912,532 + }; + }; + 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, + 246,1,44,167,40,167,167,167,167,167, + 167,167,167,167,167,167,167,3,54,23, + 20,27,25,33,31,35,34,37,36,9, + 167,54,54,54,54,54,370,370,482,167, + 239,239,331,54,167,167,167,167,167,167, + 167,167,167,167,167,167,167,167,167,167, + 167,167,167,167,167,167,167,167,167,167, + 167,167,167,167,239,239,239,239,239,239, + 127,134,335,158,337,237,236,303,47,315, + 315,154,154,315,154,315,74,190,190,20, + 20,25,25,25,25,23,23,31,27,27, + 34,33,439,36,35,379,379,379,379,156, + 132,331,323,161,127,97,105,239,443,340, + 105,418,270,418,270,373,418,167,132,323, + 97,97,127,104,158,239,329,74,238,342, + 127,105,270,270,270,270,373,373,414,243, + 132,97,323,167,167,127,105,337,434,433, + 335,342,239,270,415,475,270,270,415,414, + 413,414,373,415,130,441,370,167,242,132, + 323,127,127,239,443,340,329,415,477,415, + 415,167,370,414,134,127,370,167,414,342, + 43,167,42,186,335,415,127,415,239,238, + 477,167,186,371 + }; + }; + 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, + 89,0,31,2,61,76,15,16,69,79, + 80,81,82,83,85,84,86,87,88,4, + 62,63,9,10,58,57,64,65,66,67, + 71,72,14,73,74,75,55,77,78,59, + 50,68,54,70,5,0,5,68,54,59, + 50,70,31,17,18,19,20,21,2,15, + 16,14,4,9,10,22,23,24,25,26, + 27,28,29,3,1,51,52,53,46,38, + 43,41,42,40,39,44,45,47,48,49, + 37,34,30,33,36,35,6,7,8,12, + 11,13,0,30,15,16,14,4,9,10, + 22,23,17,27,28,29,2,1,3,18, + 19,20,21,24,25,26,59,5,0,5, + 55,31,61,15,16,14,4,9,10,22, + 23,17,27,28,29,2,18,19,20,21, + 24,25,26,1,3,32,0,59,5,30, + 6,7,8,11,12,13,18,19,20,21, + 24,25,26,3,15,16,14,9,10,22, + 23,17,27,28,29,4,2,1,0,7, + 30,37,8,36,35,34,6,33,11,12, + 13,61,76,15,16,14,9,10,62,63, + 57,58,64,65,66,67,71,72,73,74, + 75,77,78,69,79,80,81,82,83,84, + 85,86,87,88,4,2,31,54,50,5, + 0,69,31,61,0,17,18,19,20,21, + 1,3,2,15,16,14,4,9,10,22, + 23,24,25,26,27,28,29,56,0,33, + 38,6,39,51,34,40,35,41,42,36, + 7,43,44,30,52,37,53,45,46,8, + 47,48,49,1,3,5,55,11,12,13, + 56,0,46,38,43,41,42,40,39,44, + 45,47,48,49,68,70,37,34,30,33, + 36,35,6,7,8,11,12,13,54,1, + 5,50,2,31,4,0,4,2,31,50, + 5,33,38,6,39,51,34,40,35,41, + 42,36,7,43,44,30,52,37,53,45, + 46,8,47,48,49,11,12,13,60,3, + 1,0,1,3,5,54,55,0,14,4, + 9,10,62,63,57,58,64,65,66,67, + 71,72,73,74,75,77,78,68,79,80, + 81,82,83,84,85,86,87,88,59,50, + 70,32,69,54,55,5,0,33,6,34, + 35,36,7,30,37,8,1,4,11,12, + 13,32,2,5,54,50,70,31,68,0, + 69,0,33,38,6,39,51,34,40,35, + 41,42,36,7,43,44,30,52,37,53, + 45,46,8,47,48,49,1,3,11,12, + 13,60,4,0,70,5,4,1,2,68, + 0,5,50,17,18,19,20,21,1,3, + 2,15,16,14,4,9,10,22,23,24, + 25,26,27,28,29,0 + }; + }; + public final static byte asr[] = Asr.asr; + public final int asr(int index) { return asr[index]; } + + public interface Nasb { + public final static byte nasb[] = {0, + 47,8,84,15,8,15,15,15,15,15, + 15,15,15,15,15,15,15,8,58,8, + 8,8,8,8,8,8,8,8,8,8, + 15,58,58,58,58,58,11,11,90,59, + 63,63,54,1,15,15,15,15,15,15, + 15,15,15,15,15,15,15,15,15,15, + 59,15,15,15,15,15,15,15,15,15, + 15,15,15,15,63,63,63,63,63,63, + 19,15,69,17,53,21,21,38,9,39, + 39,51,51,39,51,39,34,8,8,8, + 8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8, + 79,55,79,14,19,71,18,63,67,62, + 18,8,79,8,79,79,8,15,14,79, + 71,71,19,18,81,63,28,2,8,78, + 19,18,79,73,79,73,51,79,41,23, + 79,71,81,15,15,19,18,27,21,21, + 69,78,63,73,65,83,86,73,65,41, + 8,8,51,65,13,8,51,15,25,14, + 81,19,19,63,67,62,29,65,43,65, + 65,15,51,41,15,19,51,15,41,77, + 84,15,8,43,69,65,19,65,63,63, + 43,15,31,8 + }; + }; + public final static byte nasb[] = Nasb.nasb; + public final int nasb(int index) { return nasb[index]; } + + public interface Nasr { + public final static char nasr[] = {0, + 4,79,78,77,76,75,74,0,94,0, + 71,0,70,7,4,0,7,4,22,0, + 29,0,91,0,93,0,20,7,48,47, + 40,38,0,65,66,67,68,55,33,0, + 54,0,7,40,38,0,7,30,85,0, + 32,0,20,7,48,47,0,27,7,30, + 0,7,20,0,31,0,7,21,52,0, + 61,0,59,7,27,0,88,21,7,0, + 23,0,7,64,0,7,27,51,0,7, + 86,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, + 85,2,86,9,87,48,64,76,10,11, + 96,97,98,8,6,7,68,81,82,83, + 84,12,13,93,94,95,100,101,102,69, + 1,3,44,55,60,63,72,47,52,56, + 61,62,66,67,74,75,78,79,80,90, + 54,70,73,42,91,107,16,17,89,30, + 4,14,15,18,19,20,21,29,31,92, + 22,23,24,25,26,5,27,28,32,33, + 34,35,36,37,38,39,40,41,108,45, + 46,49,50,51,53,57,58,59,65,71, + 77,88,99,103,104,105,106 + }; + }; + 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, + 0,0,0,115,119,120,0,121,122,123, + 124,125,126,127,128,129,130,131,132,111, + 136,110,143,0,0,0,154,0,163,114, + 112,135,142,0,0,0,159,161,0,162, + 0,0,0,117,134,172,173,174,0,151, + 153,160,169,0,145,150,0,0,152,164, + 167,168,171,113,146,147,148,149,158,175, + 116,118,133,137,138,139,140,141,144,156, + 0,0,157,166,109,0,155,165,170,176, + 177,0,178,179,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0 + }; + }; + public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex; + public final int nonterminalIndex(int index) { return nonterminalIndex[index]; } + + public interface ScopePrefix { + public final static char scopePrefix[] = { + 214,118,57,67,125,145,151,188,26,33, + 85,103,157,162,73,6,12,16,38,81, + 50,135,210,229,233,50,50,197,50,1, + 1,1,42,45,90,113,45,237,20,139, + 204,179,204,131,167,167,167,167,167,93, + 93,93 + }; + }; + public final static char scopePrefix[] = ScopePrefix.scopePrefix; + public final int scopePrefix(int index) { return scopePrefix[index]; } + + public interface ScopeSuffix { + public final static char scopeSuffix[] = { + 31,31,4,4,31,31,31,194,31,10, + 4,10,31,31,78,10,10,10,10,4, + 4,133,10,10,4,54,78,201,63,4, + 4,4,10,48,4,10,116,10,23,142, + 207,182,222,133,169,171,173,175,177,100, + 95,108 + }; + }; + 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,67,29,29,67,65,65,101,56,49, + 29,43,65,65,29,5,5,5,49,29, + 29,51,5,4,4,29,29,18,29,94, + 93,92,47,63,29,40,50,2,70,51, + 6,102,4,51,78,77,76,75,74,43, + 41,43 + }; + }; + public final static char scopeLhs[] = ScopeLhs.scopeLhs; + public final int scopeLhs(int index) { return scopeLhs[index]; } + + public interface ScopeLa { + public final static byte scopeLa[] = { + 55,55,59,59,55,55,55,95,55,50, + 59,50,55,55,18,50,50,50,50,59, + 59,70,50,50,59,4,18,68,30,59, + 59,59,50,2,59,50,1,50,69,1, + 50,101,50,70,3,51,52,52,46,2, + 2,2 + }; + }; + public final static byte scopeLa[] = ScopeLa.scopeLa; + public final int scopeLa(int index) { return scopeLa[index]; } + + public interface ScopeStateSet { + public final static byte scopeStateSet[] = { + 36,21,25,25,21,21,21,-1,96,29, + 25,11,21,21,25,36,36,36,29,25, + 25,5,36,36,36,25,25,70,25,19, + 1,3,29,31,25,11,13,36,97,5, + 42,-1,36,5,22,22,22,22,22,11, + 11,11 + }; + }; + public final static byte scopeStateSet[] = ScopeStateSet.scopeStateSet; + public final int scopeStateSet(int index) { return scopeStateSet[index]; } + + public interface ScopeRhs { + public final static char scopeRhs[] = {0, + 152,31,0,110,0,151,2,29,0,111, + 0,151,2,28,0,151,2,27,0,197, + 114,0,31,150,0,161,179,114,32,0, + 112,0,167,114,2,154,0,167,114,2, + 0,170,2,0,159,114,0,172,0,191, + 114,31,0,9,110,0,126,30,191,114, + 31,0,69,132,110,0,126,191,114,30, + 31,0,191,114,30,31,0,132,110,0, + 126,30,31,0,126,191,114,31,0,126, + 31,0,147,0,2,0,165,111,0,2, + 111,0,167,114,2,147,0,2,0,164, + 111,0,157,2,0,159,0,161,189,114, + 32,139,51,0,161,189,114,32,51,0, + 134,0,113,0,194,114,134,0,114,134, + 0,155,113,0,165,114,32,139,53,0, + 165,114,32,139,52,0,165,114,32,53, + 0,165,114,32,52,0,186,0,149,0, + 148,0,147,0,146,0,145,0,204,94, + 0,77,2,114,111,113,0,204,127,137, + 2,98,0,53,0,0,137,78,124,0, + 29,131,0,151,2,0,111,120,0,151, + 2,17,0,161,179,114,32,127,151,2, + 0,111,3,0,118,0,112,0,193,2, + 111,0,137,31,111,0,137,2,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, + 1067,0,627,0,1687,1796,1682,1677,1672,0, + 1512,481,1275,382,1252,1200,1156,0,431,0, + 1231,574,361,0,1547,1232,618,601,481,1722, + 1200,1156,1431,1496,0,1754,1715,1361,1319,1179, + 577,1526,1518,1304,1655,611,398,583,1164,1340, + 720,1268,1424,1414,1403,1392,1371,1208,1648,1634, + 1613,1222,772,1533,1482,1382,1186,632,482,1117, + 1098,1079,1060,1041,1021,1001,490,1136,694,674, + 554,981,961,941,921,901,881,861,841,821, + 801,781,361,752,654,732,461,534,441,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,192,137,114,180,29,28,27,17,23, + 22,10,9,4,14,16,15,111,2,116, + 115,118,117,120,119,122,121,124,123,112, + 54,2,2,2,2,2,76,61,2,31, + 151,137,134,114,10,9,63,62,4,67, + 66,65,64,57,58,14,72,71,74,73, + 78,77,75,88,87,86,84,85,83,82, + 81,80,79,69,151,151,151,151,151,193, + 137,127,114,31,2,155,154,181,12,182, + 183,53,52,184,51,185,186,1,3,115, + 115,117,117,117,117,116,116,119,118,118, + 121,120,137,123,122,127,127,127,127,127, + 32,159,4,30,126,114,4,170,114,2, + 31,139,32,139,32,32,139,68,114,4, + 114,114,126,191,168,167,128,114,169,114, + 152,4,32,114,32,114,114,32,179,114, + 32,114,168,191,30,126,4,2,145,147, + 114,54,167,114,165,134,166,114,165,189, + 139,190,114,161,54,197,61,31,198,114, + 168,126,126,157,114,2,159,165,114,165, + 161,69,54,189,69,152,61,31,179,114, + 194,68,157,2,114,161,152,161,167,195, + 54,68,159,54 + }; + }; + public final static char inSymb[] = InSymb.inSymb; + public final int inSymb(int index) { return inSymb[index]; } + + public interface Name { + public final static String name[] = { + "", + "[", + "(", + "{", + ".", + "->", + "++", + "--", + "&", + "*", + "+", + "-", + "~", + "!", + "/", + "%", + ">>", + "<<", + "<", + ">", + "<=", + ">=", + "==", + "!=", + "^", + "|", + "&&", + "||", + "?", + ":", + "...", + "=", + "*=", + "/=", + "%=", + "+=", + "-=", + ">>=", + "<<=", + "&=", + "^=", + "|=", + ",", + "$empty", + "auto", + "break", + "case", + "char", + "const", + "continue", + "default", + "do", + "double", + "else", + "enum", + "extern", + "float", + "for", + "goto", + "if", + "inline", + "int", + "long", + "register", + "restrict", + "return", + "short", + "signed", + "sizeof", + "static", + "struct", + "switch", + "typedef", + "union", + "unsigned", + "void", + "volatile", + "while", + "_Bool", + "_Complex", + "_Imaginary", + "integer", + "floating", + "charconst", + "stringlit", + "identifier", + "Completion", + "EndOfCompletion", + "Invalid", + "RightBracket", + "RightParen", + "RightBrace", + "SemiColon", + "MYTHREAD", + "THREADS", + "UPC_MAX_BLOCKSIZE", + "relaxed", + "shared", + "strict", + "upc_barrier", + "upc_localsizeof", + "upc_blocksizeof", + "upc_elemsizeof", + "upc_notify", + "upc_fence", + "upc_wait", + "upc_forall", + "ERROR_TOKEN", + "EOF_TOKEN", + "expression_parser_start", + "]", + ")", + "}", + ";", + "expression", + "postfix_expression", + "member_name", + "type_name", + "initializer_list", + "unary_expression", + "cast_expression", + "multiplicative_expression", + "additive_expression", + "shift_expression", + "relational_expression", + "equality_expression", + "AND_expression", + "exclusive_OR_expression", + "inclusive_OR_expression", + "logical_AND_expression", + "logical_OR_expression", + "conditional_expression", + "assignment_expression", + "expression_list_actual", + "constant_expression", + "identifier_or_typedefname", + "declaration_specifiers", + "simple_declaration_specifiers", + "struct_or_union_declaration_sp" + + "ecifiers", + "elaborated_declaration_specifi" + + "ers", + "enum_declaration_specifiers", + "typdef_name_declaration_specif" + + "iers", + "no_type_declaration_specifier", + "type_qualifier", + "no_type_declaration_specifiers", + "simple_type_specifier", + "struct_or_union_specifier", + "elaborated_specifier", + "enum_specifier", + "typedef_name_in_declspec", + "initializer", + "declarator", + "struct_declaration_list", + "struct_declaration", + "specifier_qualifier_list", + "struct_declarator_list", + "complete_struct_declarator", + "enumerator_list", + "enumerator", + "direct_declarator", + "pointer_seq", + "array_direct_declarator", + "basic_direct_declarator", + "array_modifier", + "parameter_type_list", + "identifier_list", + "array_modifier_type_qualifiers", + "type_qualifier_list", + "parameter_list", + "parameter_declaration", + "complete_parameter_declarator", + "abstract_declarator", + "direct_abstract_declarator", + "basic_direct_abstract_declarat" + + "or", + "array_direct_abstract_declarat" + + "or", + "designated_initializer", + "designation", + "designator_list", + "designator", + "layout_qualifier" + }; + }; + public final static String name[] = Name.name; + public final String name(int index) { return name[index]; } + + public final static int + ERROR_SYMBOL = 56, + SCOPE_UBOUND = 51, + SCOPE_SIZE = 52, + 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 = 224, + NT_OFFSET = 107, + LA_STATE_OFFSET = 2272, + MAX_LA = 2, + NUM_RULES = 360, + NUM_NONTERMINALS = 120, + NUM_SYMBOLS = 227, + SEGMENT_SIZE = 8192, + START_STATE = 1253, + IDENTIFIER_SYMBOL = 0, + EOFT_SYMBOL = 89, + EOLT_SYMBOL = 89, + ACCEPT_ACTION = 1896, + ERROR_ACTION = 1912; + + 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/UPCExpressionStatementParsersym.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionStatementParsersym.java new file mode 100644 index 00000000000..c58882d7641 --- /dev/null +++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCExpressionStatementParsersym.java @@ -0,0 +1,238 @@ +/******************************************************************************* +* Copyright (c) 2006, 2008 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 UPCExpressionStatementParsersym { + public final static int + TK_auto = 33, + TK_break = 90, + TK_case = 91, + TK_char = 38, + TK_const = 6, + TK_continue = 92, + TK_default = 93, + TK_do = 94, + TK_double = 39, + TK_else = 95, + TK_enum = 51, + TK_extern = 34, + TK_float = 40, + TK_for = 96, + TK_goto = 97, + TK_if = 98, + TK_inline = 35, + TK_int = 41, + TK_long = 42, + TK_register = 36, + TK_restrict = 7, + TK_return = 99, + TK_short = 43, + TK_signed = 44, + TK_sizeof = 17, + TK_static = 30, + TK_struct = 52, + TK_switch = 100, + TK_typedef = 37, + TK_union = 53, + TK_unsigned = 45, + TK_void = 46, + TK_volatile = 8, + TK_while = 101, + TK__Bool = 47, + TK__Complex = 48, + TK__Imaginary = 49, + TK_integer = 18, + TK_floating = 19, + TK_charconst = 20, + TK_stringlit = 21, + TK_identifier = 1, + TK_Completion = 3, + TK_EndOfCompletion = 5, + TK_Invalid = 102, + TK_LeftBracket = 31, + TK_LeftParen = 2, + TK_LeftBrace = 32, + TK_Dot = 61, + TK_Arrow = 76, + TK_PlusPlus = 15, + TK_MinusMinus = 16, + TK_And = 14, + TK_Star = 4, + TK_Plus = 9, + TK_Minus = 10, + TK_Tilde = 22, + TK_Bang = 23, + TK_Slash = 62, + TK_Percent = 63, + TK_RightShift = 57, + TK_LeftShift = 58, + TK_LT = 64, + TK_GT = 65, + TK_LE = 66, + TK_GE = 67, + TK_EQ = 71, + TK_NE = 72, + TK_Caret = 73, + TK_Or = 74, + TK_AndAnd = 75, + TK_OrOr = 77, + TK_Question = 78, + TK_Colon = 68, + TK_DotDotDot = 60, + TK_Assign = 69, + TK_StarAssign = 79, + TK_SlashAssign = 80, + TK_PercentAssign = 81, + TK_PlusAssign = 82, + TK_MinusAssign = 83, + TK_RightShiftAssign = 84, + TK_LeftShiftAssign = 85, + TK_AndAssign = 86, + TK_CaretAssign = 87, + TK_OrAssign = 88, + TK_Comma = 54, + TK_RightBracket = 59, + TK_RightParen = 50, + TK_RightBrace = 55, + TK_SemiColon = 70, + TK_MYTHREAD = 24, + TK_THREADS = 25, + TK_UPC_MAX_BLOCKSIZE = 26, + TK_relaxed = 11, + TK_shared = 12, + TK_strict = 13, + TK_upc_barrier = 103, + TK_upc_localsizeof = 27, + TK_upc_blocksizeof = 28, + TK_upc_elemsizeof = 29, + TK_upc_notify = 104, + TK_upc_fence = 105, + TK_upc_wait = 106, + TK_upc_forall = 107, + TK_ERROR_TOKEN = 56, + TK_EOF_TOKEN = 89; + + public final static String orderedTerminalSymbols[] = { + "", + "identifier", + "LeftParen", + "Completion", + "Star", + "EndOfCompletion", + "const", + "restrict", + "volatile", + "Plus", + "Minus", + "relaxed", + "shared", + "strict", + "And", + "PlusPlus", + "MinusMinus", + "sizeof", + "integer", + "floating", + "charconst", + "stringlit", + "Tilde", + "Bang", + "MYTHREAD", + "THREADS", + "UPC_MAX_BLOCKSIZE", + "upc_localsizeof", + "upc_blocksizeof", + "upc_elemsizeof", + "static", + "LeftBracket", + "LeftBrace", + "auto", + "extern", + "inline", + "register", + "typedef", + "char", + "double", + "float", + "int", + "long", + "short", + "signed", + "unsigned", + "void", + "_Bool", + "_Complex", + "_Imaginary", + "RightParen", + "enum", + "struct", + "union", + "Comma", + "RightBrace", + "ERROR_TOKEN", + "RightShift", + "LeftShift", + "RightBracket", + "DotDotDot", + "Dot", + "Slash", + "Percent", + "LT", + "GT", + "LE", + "GE", + "Colon", + "Assign", + "SemiColon", + "EQ", + "NE", + "Caret", + "Or", + "AndAnd", + "Arrow", + "OrOr", + "Question", + "StarAssign", + "SlashAssign", + "PercentAssign", + "PlusAssign", + "MinusAssign", + "RightShiftAssign", + "LeftShiftAssign", + "AndAssign", + "CaretAssign", + "OrAssign", + "EOF_TOKEN", + "break", + "case", + "continue", + "default", + "do", + "else", + "for", + "goto", + "if", + "return", + "switch", + "while", + "Invalid", + "upc_barrier", + "upc_notify", + "upc_fence", + "upc_wait", + "upc_forall" + }; + + 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/UPCNoCastExpressionParser.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParser.java new file mode 100644 index 00000000000..148e05b67b6 --- /dev/null +++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParser.java @@ -0,0 +1,1545 @@ +/******************************************************************************* +* Copyright (c) 2006, 2008 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.lrparser.IParser; +import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; + +import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; +import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; + +import org.eclipse.cdt.core.dom.lrparser.action.c99.C99ASTNodeFactory; +import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction; + +import org.eclipse.cdt.core.dom.parser.upc.UPCASTNodeFactory; +import org.eclipse.cdt.core.dom.parser.upc.UPCParserAction; +import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression; +import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement; +import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnaryExpression; + +public class UPCNoCastExpressionParser extends PrsStream implements RuleAction , IParserActionTokenProvider, IParser +{ + private static ParseTable prs = new UPCNoCastExpressionParserprs(); + 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 UPCNoCastExpressionParser(LexStream lexStream) + { + super(lexStream); + + try + { + super.remapTerminalSymbols(orderedTerminalSymbols(), UPCNoCastExpressionParserprs.EOFT_SYMBOL); + } + catch(NullExportedSymbolsException e) { + } + catch(NullTerminalSymbolsException e) { + } + catch(UnimplementedTerminalsException e) + { + java.util.ArrayList unimplemented_symbols = e.getSymbols(); + System.out.println("The Lexer will not scan the following token(s):"); + for (int i = 0; i < unimplemented_symbols.size(); i++) + { + Integer id = (Integer) unimplemented_symbols.get(i); + System.out.println(" " + UPCNoCastExpressionParsersym.orderedTerminalSymbols[id.intValue()]); + } + System.out.println(); + } + catch(UndefinedEofSymbolException e) + { + throw new Error(new UndefinedEofSymbolException + ("The Lexer does not implement the Eof symbol " + + UPCNoCastExpressionParsersym.orderedTerminalSymbols[UPCNoCastExpressionParserprs.EOFT_SYMBOL])); + } + } + + public String[] orderedTerminalSymbols() { return UPCNoCastExpressionParsersym.orderedTerminalSymbols; } + public String getTokenKindName(int kind) { return UPCNoCastExpressionParsersym.orderedTerminalSymbols[kind]; } + public int getEOFTokenKind() { return UPCNoCastExpressionParserprs.EOFT_SYMBOL; } + public PrsStream getParseStream() { return (PrsStream) this; } + + // + // Report error message for given error_token. + // + public final void reportErrorTokenMessage(int error_token, String msg) + { + int firsttok = super.getFirstErrorToken(error_token), + lasttok = super.getLastErrorToken(error_token); + String location = super.getFileName() + ':' + + (firsttok > lasttok + ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok)) + : (super.getLine(error_token) + ":" + + super.getColumn(error_token) + ":" + + super.getEndLine(error_token) + ":" + + super.getEndColumn(error_token))) + + ": "; + super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE), location, msg); + } + + public 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 UPCNoCastExpressionParserprs.java with -BACKTRACK option")); + } + catch (BadParseSymFileException e) + { + throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- UPCNoCastExpressionParsersym.java")); + } + + 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; + +public UPCNoCastExpressionParser() { // constructor +} + +private void initActions(IASTTranslationUnit tu) { + action = new UPCParserAction ( UPCASTNodeFactory.DEFAULT_INSTANCE , this, tu); +} + + +public void addToken(IToken token) { + token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called? + super.addToken(token); +} + + +public IASTCompletionNode parse(IASTTranslationUnit tu) { + // this has to be done, or... kaboom! + setStreamLength(getSize()); + initActions(tu); + + final int errorRepairCount = -1; // -1 means full error handling + parser(null, errorRepairCount); // do the actual parse + super.resetTokenStream(); // allow tokens to be garbage collected + + // the completion node may be null + IASTCompletionNode compNode = action.getASTCompletionNode(); + + //action = null; + //parserAction = null; + return compNode; +} + +// uncomment this method to use with backtracking parser +public List getRuleTokens() { + return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +} + + +public IASTNode getSecondaryParseResult() { + return action.getSecondaryParseResult(); +} + +public String[] getOrderedTerminalSymbols() { + return UPCNoCastExpressionParsersym.orderedTerminalSymbols; +} + +public String getName() { + return "UPCNoCastExpressionParser"; //$NON-NLS-1$ +} + + + +private ITokenMap tokenMap = null; + +public void setTokens(List tokens) { + resetTokenStream(); + addToken(new Token(null, 0, 0, 0)); // dummy token + for(IToken token : tokens) { + token.setKind(tokenMap.mapKind(token.getKind())); + addToken(token); + } + addToken(new Token(null, 0, 0, UPCNoCastExpressionParsersym.TK_EOF_TOKEN)); +} + +public UPCNoCastExpressionParser(String[] mapFrom) { // constructor + tokenMap = new TokenMap(UPCNoCastExpressionParsersym.orderedTerminalSymbols, mapFrom); +} + + + + public void ruleAction(int ruleNumber) + { + switch (ruleNumber) + { + + // + // Rule 1: ::= $Empty + // + case 1: { action. openASTScope(); break; + } + + // + // Rule 10: literal ::= integer + // + case 10: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant); break; + } + + // + // Rule 11: literal ::= floating + // + case 11: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant); break; + } + + // + // Rule 12: literal ::= charconst + // + case 12: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant); break; + } + + // + // Rule 13: literal ::= stringlit + // + case 13: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal); break; + } + + // + // Rule 15: primary_expression ::= primary_expression_id + // + case 15: { action. consumeExpressionID(); break; + } + + // + // Rule 16: primary_expression ::= ( expression ) + // + case 16: { action. consumeExpressionBracketed(); break; + } + + // + // Rule 20: postfix_expression ::= postfix_expression [ expression ] + // + case 20: { action. consumeExpressionArraySubscript(); break; + } + + // + // Rule 21: postfix_expression ::= postfix_expression ( expression_list_opt ) + // + case 21: { action. consumeExpressionFunctionCall(); break; + } + + // + // Rule 22: postfix_expression ::= postfix_expression . member_name + // + case 22: { action. consumeExpressionFieldReference(false); break; + } + + // + // Rule 23: postfix_expression ::= postfix_expression -> member_name + // + case 23: { action. consumeExpressionFieldReference(true); break; + } + + // + // Rule 24: postfix_expression ::= postfix_expression ++ + // + case 24: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); break; + } + + // + // Rule 25: postfix_expression ::= postfix_expression -- + // + case 25: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); break; + } + + // + // Rule 26: postfix_expression ::= ( type_name ) { initializer_list comma_opt } + // + case 26: { action. consumeExpressionTypeIdInitializer(); break; + } + + // + // Rule 32: unary_expression ::= ++ unary_expression + // + case 32: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); break; + } + + // + // Rule 33: unary_expression ::= -- unary_expression + // + case 33: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); break; + } + + // + // Rule 34: unary_expression ::= & cast_expression + // + case 34: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); break; + } + + // + // Rule 35: unary_expression ::= * cast_expression + // + case 35: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); break; + } + + // + // Rule 36: unary_expression ::= + cast_expression + // + case 36: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); break; + } + + // + // Rule 37: unary_expression ::= - cast_expression + // + case 37: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); break; + } + + // + // Rule 38: unary_expression ::= ~ cast_expression + // + case 38: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); break; + } + + // + // Rule 39: unary_expression ::= ! cast_expression + // + case 39: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); break; + } + + // + // Rule 40: unary_expression ::= sizeof unary_expression + // + case 40: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); break; + } + + // + // Rule 41: unary_expression ::= sizeof ( type_name ) + // + case 41: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof); break; + } + + // + // Rule 44: multiplicative_expression ::= multiplicative_expression * cast_expression + // + case 44: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply); break; + } + + // + // Rule 45: multiplicative_expression ::= multiplicative_expression / cast_expression + // + case 45: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide); break; + } + + // + // Rule 46: multiplicative_expression ::= multiplicative_expression % cast_expression + // + case 46: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo); break; + } + + // + // Rule 48: additive_expression ::= additive_expression + multiplicative_expression + // + case 48: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus); break; + } + + // + // Rule 49: additive_expression ::= additive_expression - multiplicative_expression + // + case 49: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus); break; + } + + // + // Rule 51: shift_expression ::= shift_expression << additive_expression + // + case 51: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft); break; + } + + // + // Rule 52: shift_expression ::= shift_expression >> additive_expression + // + case 52: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight); break; + } + + // + // Rule 54: relational_expression ::= relational_expression < shift_expression + // + case 54: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan); break; + } + + // + // Rule 55: relational_expression ::= relational_expression > shift_expression + // + case 55: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan); break; + } + + // + // Rule 56: relational_expression ::= relational_expression <= shift_expression + // + case 56: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual); break; + } + + // + // Rule 57: relational_expression ::= relational_expression >= shift_expression + // + case 57: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual); break; + } + + // + // Rule 59: equality_expression ::= equality_expression == relational_expression + // + case 59: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals); break; + } + + // + // Rule 60: equality_expression ::= equality_expression != relational_expression + // + case 60: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals); break; + } + + // + // Rule 62: AND_expression ::= AND_expression & equality_expression + // + case 62: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd); break; + } + + // + // Rule 64: exclusive_OR_expression ::= exclusive_OR_expression ^ AND_expression + // + case 64: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor); break; + } + + // + // Rule 66: inclusive_OR_expression ::= inclusive_OR_expression | exclusive_OR_expression + // + case 66: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr); break; + } + + // + // Rule 68: logical_AND_expression ::= logical_AND_expression && inclusive_OR_expression + // + case 68: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd); break; + } + + // + // Rule 70: logical_OR_expression ::= logical_OR_expression || logical_AND_expression + // + case 70: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr); break; + } + + // + // Rule 72: conditional_expression ::= logical_OR_expression ? expression : conditional_expression + // + case 72: { action. consumeExpressionConditional(); break; + } + + // + // Rule 74: assignment_expression ::= unary_expression = assignment_expression + // + case 74: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break; + } + + // + // Rule 75: assignment_expression ::= unary_expression *= assignment_expression + // + case 75: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign); break; + } + + // + // Rule 76: assignment_expression ::= unary_expression /= assignment_expression + // + case 76: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign); break; + } + + // + // Rule 77: assignment_expression ::= unary_expression %= assignment_expression + // + case 77: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign); break; + } + + // + // Rule 78: assignment_expression ::= unary_expression += assignment_expression + // + case 78: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign); break; + } + + // + // Rule 79: assignment_expression ::= unary_expression -= assignment_expression + // + case 79: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign); break; + } + + // + // Rule 80: assignment_expression ::= unary_expression <<= assignment_expression + // + case 80: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign); break; + } + + // + // Rule 81: assignment_expression ::= unary_expression >>= assignment_expression + // + case 81: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign); break; + } + + // + // Rule 82: assignment_expression ::= unary_expression &= assignment_expression + // + case 82: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign); break; + } + + // + // Rule 83: assignment_expression ::= unary_expression ^= assignment_expression + // + case 83: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign); break; + } + + // + // Rule 84: assignment_expression ::= unary_expression |= assignment_expression + // + case 84: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign); break; + } + + // + // Rule 87: expression_list ::= expression_list_actual + // + case 87: { action. consumeExpressionList(); break; + } + + // + // Rule 89: expression_list_opt ::= $Empty + // + case 89: { action. consumeEmpty(); break; + } + + // + // Rule 99: statement ::= ERROR_TOKEN + // + case 99: { action. consumeStatementProblem(); break; + } + + // + // Rule 100: labeled_statement ::= identifier_or_typedefname : statement + // + case 100: { action. consumeStatementLabeled(); break; + } + + // + // Rule 101: labeled_statement ::= case constant_expression : + // + case 101: { action. consumeStatementCase(); break; + } + + // + // Rule 102: labeled_statement ::= default : + // + case 102: { action. consumeStatementDefault(); break; + } + + // + // Rule 103: compound_statement ::= { } + // + case 103: { action. consumeStatementCompoundStatement(false); break; + } + + // + // Rule 104: compound_statement ::= { block_item_list } + // + case 104: { action. consumeStatementCompoundStatement(true); break; + } + + // + // Rule 108: block_item ::= declaration + // + case 108: { action. consumeStatementDeclarationWithDisambiguation(); break; + } + + // + // Rule 109: expression_statement ::= ; + // + case 109: { action. consumeStatementNull(); break; + } + + // + // Rule 110: expression_statement ::= expression_in_statement ; + // + case 110: { action. consumeStatementExpression(); break; + } + + // + // Rule 111: selection_statement ::= if ( expression ) statement + // + case 111: { action. consumeStatementIf(false); break; + } + + // + // Rule 112: selection_statement ::= if ( expression ) statement else statement + // + case 112: { action. consumeStatementIf(true); break; + } + + // + // Rule 113: selection_statement ::= switch ( expression ) statement + // + case 113: { action. consumeStatementSwitch(); break; + } + + // + // Rule 115: expression_opt ::= $Empty + // + case 115: { action. consumeEmpty(); break; + } + + // + // Rule 116: iteration_statement ::= do statement while ( expression ) ; + // + case 116: { action. consumeStatementDoLoop(); break; + } + + // + // Rule 117: iteration_statement ::= while ( expression ) statement + // + case 117: { action. consumeStatementWhileLoop(); break; + } + + // + // Rule 118: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement + // + case 118: { action. consumeStatementForLoop(); break; + } + + // + // Rule 119: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement + // + case 119: { action. consumeStatementForLoop(); break; + } + + // + // Rule 120: jump_statement ::= goto identifier_or_typedefname ; + // + case 120: { action. consumeStatementGoto(); break; + } + + // + // Rule 121: jump_statement ::= continue ; + // + case 121: { action. consumeStatementContinue(); break; + } + + // + // Rule 122: jump_statement ::= break ; + // + case 122: { action. consumeStatementBreak(); break; + } + + // + // Rule 123: jump_statement ::= return ; + // + case 123: { action. consumeStatementReturn(false); break; + } + + // + // Rule 124: jump_statement ::= return expression ; + // + case 124: { action. consumeStatementReturn(true); break; + } + + // + // Rule 125: declaration ::= declaration_specifiers ; + // + case 125: { action. consumeDeclarationSimple(false); break; + } + + // + // Rule 126: declaration ::= declaration_specifiers init_declarator_list ; + // + case 126: { action. consumeDeclarationSimple(true); break; + } + + // + // Rule 127: declaration_specifiers ::= simple_declaration_specifiers + // + case 127: { action. consumeDeclarationSpecifiersSimple(); break; + } + + // + // Rule 128: declaration_specifiers ::= struct_or_union_declaration_specifiers + // + case 128: { action. consumeDeclarationSpecifiersStructUnionEnum(); break; + } + + // + // Rule 129: declaration_specifiers ::= elaborated_declaration_specifiers + // + case 129: { action. consumeDeclarationSpecifiersStructUnionEnum(); break; + } + + // + // Rule 130: declaration_specifiers ::= enum_declaration_specifiers + // + case 130: { action. consumeDeclarationSpecifiersStructUnionEnum(); break; + } + + // + // Rule 131: declaration_specifiers ::= typdef_name_declaration_specifiers + // + case 131: { action. consumeDeclarationSpecifiersTypedefName(); break; + } + + // + // Rule 156: init_declarator ::= complete_declarator = initializer + // + case 156: { action. consumeDeclaratorWithInitializer(true); break; + } + + // + // Rule 158: storage_class_specifier ::= storage_class_specifier_token + // + case 158: { action. consumeDeclSpecToken(); break; + } + + // + // Rule 164: simple_type_specifier ::= simple_type_specifier_token + // + case 164: { action. consumeDeclSpecToken(); break; + } + + // + // Rule 177: typedef_name_in_declspec ::= Completion + // + case 177: { action. consumeDeclSpecToken(); break; + } + + // + // Rule 178: typedef_name_in_declspec ::= identifier + // + case 178: { action. consumeDeclSpecToken(); break; + } + + // + // Rule 181: struct_or_union_specifier ::= struct { struct_declaration_list_opt } + // + case 181: { action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_struct); break; + } + + // + // Rule 182: struct_or_union_specifier ::= union { struct_declaration_list_opt } + // + case 182: { action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_union); break; + } + + // + // Rule 183: struct_or_union_specifier ::= struct identifier_or_typedefname { struct_declaration_list_opt } + // + case 183: { action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_struct); break; + } + + // + // Rule 184: struct_or_union_specifier ::= union identifier_or_typedefname { struct_declaration_list_opt } + // + case 184: { action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_union); break; + } + + // + // Rule 185: elaborated_specifier ::= struct identifier_or_typedefname + // + case 185: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); break; + } + + // + // Rule 186: elaborated_specifier ::= union identifier_or_typedefname + // + case 186: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); break; + } + + // + // Rule 187: elaborated_specifier ::= enum identifier_or_typedefname + // + case 187: { action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); break; + } + + // + // Rule 192: struct_declaration ::= specifier_qualifier_list struct_declarator_list ; + // + case 192: { action. consumeStructDeclaration(true); break; + } + + // + // Rule 193: struct_declaration ::= specifier_qualifier_list ; + // + case 193: { action. consumeStructDeclaration(false); break; + } + + // + // Rule 194: struct_declaration ::= ERROR_TOKEN + // + case 194: { action. consumeDeclarationProblem(); break; + } + + // + // Rule 200: struct_declarator ::= : constant_expression + // + case 200: { action. consumeBitField(false); break; + } + + // + // Rule 201: struct_declarator ::= declarator : constant_expression + // + case 201: { action. consumeBitField(true); break; + } + + // + // Rule 202: enum_specifier ::= enum { enumerator_list_opt comma_opt } + // + case 202: { action. consumeTypeSpecifierEnumeration(false); break; + } + + // + // Rule 203: enum_specifier ::= enum identifier_or_typedefname { enumerator_list_opt comma_opt } + // + case 203: { action. consumeTypeSpecifierEnumeration(true); break; + } + + // + // Rule 208: enumerator ::= identifier_or_typedefname + // + case 208: { action. consumeEnumerator(false); break; + } + + // + // Rule 209: enumerator ::= identifier_or_typedefname = constant_expression + // + case 209: { action. consumeEnumerator(true); break; + } + + // + // Rule 210: type_qualifier ::= type_qualifier_token + // + case 210: { action. consumeDeclSpecToken(); break; + } + + // + // Rule 214: function_specifier ::= inline + // + case 214: { action. consumeDeclSpecToken(); break; + } + + // + // Rule 216: declarator ::= pointer_seq direct_declarator + // + case 216: { action. consumeDeclaratorWithPointer(true); break; + } + + // + // Rule 221: basic_direct_declarator ::= declarator_id_name + // + case 221: { action. consumeDirectDeclaratorIdentifier(); break; + } + + // + // Rule 222: basic_direct_declarator ::= ( declarator ) + // + case 222: { action. consumeDirectDeclaratorBracketed(); break; + } + + // + // Rule 223: declarator_id_name ::= identifier + // + case 223: { action. consumeIdentifierName(); break; + } + + // + // Rule 224: array_direct_declarator ::= basic_direct_declarator array_modifier + // + case 224: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 225: array_direct_declarator ::= array_direct_declarator array_modifier + // + case 225: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 227: function_direct_declarator ::= basic_direct_declarator ( parameter_type_list ) + // + case 227: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; + } + + // + // Rule 228: function_direct_declarator ::= basic_direct_declarator ( ) + // + case 228: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; + } + + // + // Rule 230: function_declarator ::= pointer_seq function_direct_declarator + // + case 230: { action. consumeDeclaratorWithPointer(true); break; + } + + // + // Rule 231: knr_direct_declarator ::= basic_direct_declarator ( identifier_list ) + // + case 231: { action. consumeDirectDeclaratorFunctionDeclaratorKnR(); break; + } + + // + // Rule 233: knr_function_declarator ::= pointer_seq knr_direct_declarator + // + case 233: { action. consumeDeclaratorWithPointer(true); break; + } + + // + // Rule 234: identifier_list ::= identifier + // + case 234: { action. consumeIdentifierKnR(); break; + } + + // + // Rule 235: identifier_list ::= identifier_list , identifier + // + case 235: { action. consumeIdentifierKnR(); break; + } + + // + // Rule 236: array_modifier ::= [ ] + // + case 236: { action. consumeDirectDeclaratorArrayModifier(false); break; + } + + // + // Rule 237: array_modifier ::= [ array_modifier_type_qualifiers ] + // + case 237: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break; + } + + // + // Rule 238: array_modifier ::= [ assignment_expression ] + // + case 238: { action. consumeDirectDeclaratorArrayModifier(true); break; + } + + // + // Rule 239: array_modifier ::= [ array_modifier_type_qualifiers assignment_expression ] + // + case 239: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break; + } + + // + // Rule 240: array_modifier ::= [ static assignment_expression ] + // + case 240: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break; + } + + // + // Rule 241: array_modifier ::= [ static array_modifier_type_qualifiers assignment_expression ] + // + case 241: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; + } + + // + // Rule 242: array_modifier ::= [ array_modifier_type_qualifiers static assignment_expression ] + // + case 242: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; + } + + // + // Rule 243: array_modifier ::= [ * ] + // + case 243: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break; + } + + // + // Rule 244: array_modifier ::= [ array_modifier_type_qualifiers * ] + // + case 244: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break; + } + + // + // Rule 246: pointer_seq ::= * + // + case 246: { action. consumePointer(); break; + } + + // + // Rule 247: pointer_seq ::= pointer_seq * + // + case 247: { action. consumePointer(); break; + } + + // + // Rule 248: pointer_seq ::= * type_qualifier_list + // + case 248: { action. consumePointerTypeQualifierList(); break; + } + + // + // Rule 249: pointer_seq ::= pointer_seq * type_qualifier_list + // + case 249: { action. consumePointerTypeQualifierList(); break; + } + + // + // Rule 252: parameter_type_list ::= parameter_list + // + case 252: { action. consumeEmpty(); break; + } + + // + // Rule 253: parameter_type_list ::= parameter_list , ... + // + case 253: { action. consumePlaceHolder(); break; + } + + // + // Rule 254: parameter_type_list ::= ... + // + case 254: { action. consumePlaceHolder(); break; + } + + // + // Rule 257: parameter_declaration ::= declaration_specifiers complete_parameter_declarator + // + case 257: { action. consumeParameterDeclaration(); break; + } + + // + // Rule 258: parameter_declaration ::= declaration_specifiers + // + case 258: { action. consumeParameterDeclarationWithoutDeclarator(); break; + } + + // + // Rule 261: type_name ::= specifier_qualifier_list + // + case 261: { action. consumeTypeId(false); break; + } + + // + // Rule 262: type_name ::= specifier_qualifier_list abstract_declarator + // + case 262: { action. consumeTypeId(true); break; + } + + // + // Rule 264: abstract_declarator ::= pointer_seq + // + case 264: { action. consumeDeclaratorWithPointer(false); break; + } + + // + // Rule 265: abstract_declarator ::= pointer_seq direct_abstract_declarator + // + case 265: { action. consumeDeclaratorWithPointer(false); break; + } + + // + // Rule 269: basic_direct_abstract_declarator ::= ( abstract_declarator ) + // + case 269: { action. consumeDirectDeclaratorBracketed(); break; + } + + // + // Rule 270: array_direct_abstract_declarator ::= array_modifier + // + case 270: { action. consumeDirectDeclaratorArrayDeclarator(false); break; + } + + // + // Rule 271: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier + // + case 271: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 272: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier + // + case 272: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 273: function_direct_abstract_declarator ::= ( ) + // + case 273: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break; + } + + // + // Rule 274: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( ) + // + case 274: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; + } + + // + // Rule 275: function_direct_abstract_declarator ::= ( parameter_type_list ) + // + case 275: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break; + } + + // + // Rule 276: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( parameter_type_list ) + // + case 276: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; + } + + // + // Rule 277: initializer ::= assignment_expression + // + case 277: { action. consumeInitializer(); break; + } + + // + // Rule 278: initializer ::= { initializer_list comma_opt } + // + case 278: { action. consumeInitializerList(); break; + } + + // + // Rule 283: designated_initializer ::= designation = initializer + // + case 283: { action. consumeInitializerDesignated(); break; + } + + // + // Rule 287: designator_base ::= [ constant_expression ] + // + case 287: { action. consumeDesignatorArray(); break; + } + + // + // Rule 288: designator_base ::= . identifier_or_typedefname + // + case 288: { action. consumeDesignatorField(); break; + } + + // + // Rule 289: designator ::= [ constant_expression ] + // + case 289: { action. consumeDesignatorArray(); break; + } + + // + // Rule 290: designator ::= . identifier_or_typedefname + // + case 290: { action. consumeDesignatorField(); break; + } + + // + // Rule 291: translation_unit ::= external_declaration_list + // + case 291: { action. consumeTranslationUnit(); break; + } + + // + // Rule 292: translation_unit ::= $Empty + // + case 292: { action. consumeTranslationUnit(); break; + } + + // + // Rule 297: external_declaration ::= ; + // + case 297: { action. consumeDeclarationEmpty(); break; + } + + // + // Rule 298: external_declaration ::= ERROR_TOKEN + // + case 298: { action. consumeDeclarationProblem(); break; + } + + // + // Rule 301: function_definition ::= declaration_specifiers function_declarator function_body + // + case 301: { action. consumeFunctionDefinition(true); break; + } + + // + // Rule 302: function_definition ::= function_declarator function_body + // + case 302: { action. consumeFunctionDefinition(false); break; + } + + // + // Rule 303: function_definition ::= declaration_specifiers knr_function_declarator declaration_list compound_statement + // + case 303: { action. consumeFunctionDefinitionKnR(); break; + } + + // + // Rule 304: function_body ::= { } + // + case 304: { action. consumeStatementCompoundStatement(false); break; + } + + // + // Rule 305: function_body ::= { block_item_list } + // + case 305: { action. consumeStatementCompoundStatement(true); break; + } + + // + // Rule 307: no_cast_start ::= ERROR_TOKEN + // + case 307: { action. consumeExpressionProblem(); break; + } + + // + // Rule 308: literal ::= MYTHREAD + // + case 308: { action. consumeKeywordExpression(IUPCASTKeywordExpression.kw_mythread); break; + } + + // + // Rule 309: literal ::= THREADS + // + case 309: { action. consumeKeywordExpression(IUPCASTKeywordExpression.kw_threads); break; + } + + // + // Rule 310: literal ::= UPC_MAX_BLOCKSIZE + // + case 310: { action. consumeKeywordExpression(IUPCASTKeywordExpression.kw_upc_max_block_size); break; + } + + // + // Rule 311: unary_expression ::= upc_localsizeof unary_expression + // + case 311: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_localsizeof); break; + } + + // + // Rule 312: unary_expression ::= upc_localsizeof ( type_name ) + // + case 312: { action. consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_localsizeof); break; + } + + // + // Rule 313: unary_expression ::= upc_blocksizeof unary_expression + // + case 313: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_blocksizeof); break; + } + + // + // Rule 314: unary_expression ::= upc_blocksizeof ( type_name ) + // + case 314: { action. consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_blocksizeof); break; + } + + // + // Rule 315: unary_expression ::= upc_elemsizeof unary_expression + // + case 315: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_elemsizeof); break; + } + + // + // Rule 316: unary_expression ::= upc_elemsizeof ( type_name ) + // + case 316: { action. consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_elemsizeof); break; + } + + // + // Rule 320: shared_type_qualifier ::= shared + // + case 320: { action. consumeToken(); break; + } + + // + // Rule 321: reference_type_qualifier ::= relaxed + // + case 321: { action. consumeToken(); break; + } + + // + // Rule 322: reference_type_qualifier ::= strict + // + case 322: { action. consumeToken(); break; + } + + // + // Rule 323: layout_qualifier ::= [ constant_expression ] + // + case 323: { action. consumeLayoutQualifier(true, false); break; + } + + // + // Rule 324: layout_qualifier ::= [ * ] + // + case 324: { action. consumeLayoutQualifier(false, true); break; + } + + // + // Rule 325: layout_qualifier ::= [ ] + // + case 325: { action. consumeLayoutQualifier(false, false); break; + } + + // + // Rule 327: synchronization_statement ::= upc_notify expression ; + // + case 327: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, true); break; + } + + // + // Rule 328: synchronization_statement ::= upc_notify ; + // + case 328: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, false); break; + } + + // + // Rule 329: synchronization_statement ::= upc_wait expression ; + // + case 329: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, true); break; + } + + // + // Rule 330: synchronization_statement ::= upc_wait ; + // + case 330: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, false); break; + } + + // + // Rule 331: synchronization_statement ::= upc_barrier expression ; + // + case 331: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, true); break; + } + + // + // Rule 332: synchronization_statement ::= upc_barrier ; + // + case 332: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, false); break; + } + + // + // Rule 333: synchronization_statement ::= upc_fence ; + // + case 333: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_fence, false); break; + } + + // + // Rule 334: iteration_statement ::= upc_forall ( expression ; expression ; expression ; affinity ) statement + // + case 334: { action. consumeStatementUPCForallLoop(true, true, true, true); break; + } + + // + // Rule 335: iteration_statement ::= upc_forall ( expression ; expression ; expression ; ) statement + // + case 335: { action. consumeStatementUPCForallLoop(true, true, true, false); break; + } + + // + // Rule 336: iteration_statement ::= upc_forall ( expression ; expression ; ; affinity ) statement + // + case 336: { action. consumeStatementUPCForallLoop(true, true, false, true); break; + } + + // + // Rule 337: iteration_statement ::= upc_forall ( expression ; expression ; ; ) statement + // + case 337: { action. consumeStatementUPCForallLoop(true, true, false, false); break; + } + + // + // Rule 338: iteration_statement ::= upc_forall ( expression ; ; expression ; affinity ) statement + // + case 338: { action. consumeStatementUPCForallLoop(true, false, true, true); break; + } + + // + // Rule 339: iteration_statement ::= upc_forall ( expression ; ; expression ; ) statement + // + case 339: { action. consumeStatementUPCForallLoop(true, false, true, false); break; + } + + // + // Rule 340: iteration_statement ::= upc_forall ( expression ; ; ; affinity ) statement + // + case 340: { action. consumeStatementUPCForallLoop(true, false, false, true); break; + } + + // + // Rule 341: iteration_statement ::= upc_forall ( expression ; ; ; ) statement + // + case 341: { action. consumeStatementUPCForallLoop(true, false, false, false); break; + } + + // + // Rule 342: iteration_statement ::= upc_forall ( ; expression ; expression ; affinity ) statement + // + case 342: { action. consumeStatementUPCForallLoop(false, true, true, true); break; + } + + // + // Rule 343: iteration_statement ::= upc_forall ( ; expression ; expression ; ) statement + // + case 343: { action. consumeStatementUPCForallLoop(false, true, true, false); break; + } + + // + // Rule 344: iteration_statement ::= upc_forall ( ; expression ; ; affinity ) statement + // + case 344: { action. consumeStatementUPCForallLoop(false, true, false, true); break; + } + + // + // Rule 345: iteration_statement ::= upc_forall ( ; expression ; ; ) statement + // + case 345: { action. consumeStatementUPCForallLoop(false, true, false, false); break; + } + + // + // Rule 346: iteration_statement ::= upc_forall ( ; ; expression ; affinity ) statement + // + case 346: { action. consumeStatementUPCForallLoop(false, false, true, true); break; + } + + // + // Rule 347: iteration_statement ::= upc_forall ( ; ; expression ; ) statement + // + case 347: { action. consumeStatementUPCForallLoop(false, false, true, false); break; + } + + // + // Rule 348: iteration_statement ::= upc_forall ( ; ; ; affinity ) statement + // + case 348: { action. consumeStatementUPCForallLoop(false, false, false, true); break; + } + + // + // Rule 349: iteration_statement ::= upc_forall ( ; ; ; ) statement + // + case 349: { action. consumeStatementUPCForallLoop(false, false, false, false); break; + } + + // + // Rule 350: iteration_statement ::= upc_forall ( declaration expression ; expression ; affinity ) statement + // + case 350: { action. consumeStatementUPCForallLoop(true, true, true, true); break; + } + + // + // Rule 351: iteration_statement ::= upc_forall ( declaration expression ; expression ; ) statement + // + case 351: { action. consumeStatementUPCForallLoop(true, true, true, false); break; + } + + // + // Rule 352: iteration_statement ::= upc_forall ( declaration expression ; ; affinity ) statement + // + case 352: { action. consumeStatementUPCForallLoop(true, true, false, true); break; + } + + // + // Rule 353: iteration_statement ::= upc_forall ( declaration expression ; ; ) statement + // + case 353: { action. consumeStatementUPCForallLoop(true, true, false, false); break; + } + + // + // Rule 354: iteration_statement ::= upc_forall ( declaration ; expression ; affinity ) statement + // + case 354: { action. consumeStatementUPCForallLoop(true, false, true, true); break; + } + + // + // Rule 355: iteration_statement ::= upc_forall ( declaration ; expression ; ) statement + // + case 355: { action. consumeStatementUPCForallLoop(true, false, true, false); break; + } + + // + // Rule 356: iteration_statement ::= upc_forall ( declaration ; ; affinity ) statement + // + case 356: { action. consumeStatementUPCForallLoop(true, false, false, true); break; + } + + // + // Rule 357: iteration_statement ::= upc_forall ( declaration ; ; ) statement + // + case 357: { action. consumeStatementUPCForallLoop(true, false, false, false); break; + } + + // + // Rule 359: affinity ::= continue + // + case 359: { 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/UPCNoCastExpressionParserprs.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParserprs.java new file mode 100644 index 00000000000..c919965ad79 --- /dev/null +++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParserprs.java @@ -0,0 +1,1246 @@ +/******************************************************************************* +* Copyright (c) 2006, 2008 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 UPCNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTable, UPCNoCastExpressionParsersym { + + 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 + }; + }; + 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,3,1,1,1,4, + 4,3,3,2,2,8,1,0,1,1, + 1,2,2,2,2,2,2,2,2,2, + 4,1,1,3,3,3,1,3,3,1, + 3,3,1,3,3,3,3,1,3,3, + 1,3,1,3,1,3,1,3,1,3, + 1,5,1,3,3,3,3,3,3,3, + 3,3,3,3,1,1,2,1,0,1, + 3,1,1,1,1,1,1,1,1,3, + 3,2,2,4,1,2,1,1,1,2, + 5,7,5,1,0,7,5,9,8,3, + 2,2,2,3,2,4,2,2,2,2, + 2,1,1,1,1,2,1,2,2,2, + 1,2,2,1,2,2,1,2,2,1, + 2,2,1,3,1,3,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 5,5,6,6,2,2,2,1,0,1, + 2,4,2,1,1,1,3,1,1,2, + 3,6,7,1,0,1,3,1,3,1, + 1,1,1,1,1,3,1,1,1,1, + 1,3,1,2,2,1,5,3,1,3, + 5,1,3,1,3,2,4,3,5,4, + 6,6,3,5,1,1,2,3,4,1, + 2,1,3,1,1,3,2,1,1,1, + 1,2,1,2,3,1,1,1,3,1, + 2,2,2,3,4,5,1,5,1,1, + 3,3,4,1,1,2,3,2,3,2, + 1,0,1,2,1,1,1,1,1,2, + 4,3,6,2,4,1,1,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,-38, + 0,0,0,0,0,0,0,-2,0,0, + 0,0,0,0,0,0,0,0,0,-78, + -4,-87,0,0,0,0,-5,0,0,0, + 0,0,0,0,0,0,-60,0,0,0, + 0,0,0,0,-141,0,0,0,0,0, + 0,0,0,0,0,-18,0,-6,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-135, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-186, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-193, + -9,0,0,0,0,0,0,-30,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-35, + -36,0,-156,-19,-20,0,0,0,0,0, + 0,0,0,-84,0,0,0,0,0,0, + 0,0,-181,0,0,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,-144,0,-7,0,0,0,0,0, + -57,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-21, + -81,0,0,0,0,0,0,0,0,-61, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-22,-23,0,0,0, + -8,0,0,0,0,0,0,0,0,0, + -15,0,0,0,0,0,0,0,0,0, + 0,0,-3,0,0,0,0,0,0,0, + -167,0,0,0,0,0,0,0,0,0, + 0,0,-120,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-127,0,0,0,0,0,0,0, + -24,0,0,0,0,0,0,0,0,0, + 0,-25,0,0,-48,0,0,0,0,0, + 0,0,-26,0,0,0,-27,-96,-140,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -201,0,0,0,0,0,0,0,-73,0, + 0,0,0,0,0,0,0,0,0,0, + -62,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -43,0,0,0,0,0,0,0,-63,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-64,0, + 0,0,0,0,0,0,-74,0,0,0, + 0,0,0,0,0,0,0,0,-65,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-66,0, + 0,0,0,0,0,0,-75,0,0,0, + 0,0,0,0,0,0,0,0,-67,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-68,0, + 0,0,0,0,0,0,-76,0,0,0, + 0,0,0,0,0,0,0,0,-69,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-70,0, + 0,0,0,0,0,0,-95,0,0,0, + 0,0,0,0,0,0,0,0,-71,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-72,0, + 0,0,0,0,0,0,-124,0,0,0, + 0,0,0,0,0,0,0,0,-160,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-161,0, + 0,0,0,0,0,0,-142,0,0,0, + 0,0,0,0,0,0,0,0,-184,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-198,0,0, + 0,0,0,0,0,-39,0,0,0,0, + 0,0,0,0,0,0,-16,0,0,0, + 0,0,0,-52,0,0,0,0,0,0, + 0,-28,0,-204,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-208,0,0,0,0,0,0,0, + -40,0,0,0,0,0,0,0,0,0, + 0,-29,-77,-93,-94,-155,0,0,-53,0, + 0,0,0,0,0,0,-97,0,-218,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-134,0,0, + 0,0,0,0,0,-82,0,0,0,0, + 0,0,0,0,0,0,-143,-122,-88,0, + -98,0,0,-159,0,-58,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-165, + 0,0,0,0,0,-187,0,0,0,0, + 0,-85,-164,0,0,0,0,0,0,0, + 0,0,0,0,0,-99,0,0,0,0, + 0,0,0,-172,0,0,0,0,0,0, + 0,0,-171,-92,0,0,0,0,-90,0, + 0,0,0,0,0,0,-117,0,0,0, + 0,0,0,-119,0,0,0,0,0,0, + -199,0,0,-37,-195,0,0,0,0,0, + 0,0,0,-54,0,0,0,0,0,0, + 0,-217,0,0,0,0,-1,-100,0,0, + 0,0,0,0,0,-121,-101,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-102,-185,0,0,0,0,0,0, + 0,0,0,0,0,-139,0,-169,0,-147, + -176,0,-55,0,0,0,0,0,0,0, + -129,0,0,0,0,0,0,0,0,-175, + 0,0,-83,-44,0,0,0,0,0,0, + 0,0,0,-56,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -162,-188,-189,-202,0,0,0,0,0,-49, + 0,0,0,0,0,0,0,-210,0,0, + -41,0,0,0,0,0,0,0,0,0, + -50,0,0,0,0,0,0,0,-211,0, + 0,-51,0,0,0,0,0,0,0,0, + 0,0,-86,-80,0,0,0,0,0,0, + 0,0,-126,-192,-131,-183,-132,0,-166,-89, + 0,0,0,0,0,0,0,0,0,-103, + -104,0,0,0,-91,0,0,0,0,-137, + 0,-190,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-123,0,0,0,0,0,0,-148,0, + 0,0,0,0,0,-163,0,0,0,0, + 0,0,0,-219,-136,-149,-151,-154,-180,0, + 0,-200,0,0,0,0,0,-10,0,0, + 0,0,0,0,-11,0,0,0,0,0, + 0,-12,0,0,0,0,0,0,0,-105, + 0,0,0,0,0,0,0,-13,0,0, + 0,0,0,0,-14,0,0,0,0,0, + 0,-17,-31,-157,-213,0,-106,-215,-107,0, + 0,0,-32,-33,-168,-207,-203,-108,-42,-109, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-34,-125,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-45,0,0,0,0,0,0,0, + 0,0,0,-194,0,-196,0,0,0,-46, + 0,0,0,0,0,0,-47,0,0,0, + 0,0,0,-138,-197,0,0,-205,-150,-110, + 0,0,-212,0,-152,0,0,-170,0,-111, + 0,-112,0,-174,-113,0,0,0,0,0, + 0,0,-191,-214,0,0,0,-114,-206,0, + 0,0,0,-115,0,0,0,-153,-146,-59, + 0,-179,-116,-128,0,-130,0,0,-118,0, + 0,0,-133,0,0,0,0,0,0,-216, + 0,-145,0,0,0,0,0,-177,0,0, + 0,0,0,0,0,0,0,0,-158,0, + -178,0,0,-182,0,-209,-220,0,0,0, + 0,0,0,0,0,0,0,0,0,-173, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0 + }; + }; + public final static short baseCheck[] = BaseCheck.baseCheck; + public final int baseCheck(int index) { return baseCheck[index]; } + public final static short rhs[] = baseCheck; + public final int rhs(int index) { return rhs[index]; }; + + public interface BaseAction { + public final static char baseAction[] = { + 85,8,21,21,20,20,30,30,70,70, + 1,1,1,1,2,2,2,3,3,4, + 4,4,4,4,4,4,4,54,54,71, + 71,5,5,5,5,5,5,5,5,5, + 5,5,6,7,7,7,7,9,9,9, + 10,10,10,11,11,11,11,11,12,12, + 12,13,13,14,14,15,15,16,16,17, + 17,18,18,19,19,19,19,19,19,19, + 19,19,19,19,19,96,31,29,86,86, + 73,73,44,97,97,97,97,97,97,97, + 98,98,98,99,99,104,104,105,105,100, + 100,101,101,101,107,107,102,102,102,102, + 103,103,103,103,103,106,106,22,22,22, + 22,22,33,33,33,79,79,74,74,74, + 74,75,75,75,76,76,76,77,77,77, + 78,78,78,108,108,109,109,110,34,36, + 36,36,36,36,55,57,57,57,57,57, + 57,57,57,57,57,57,57,67,67,32, + 32,64,64,64,64,65,65,65,58,58, + 59,59,51,51,51,27,87,87,80,81, + 81,81,66,66,82,82,83,83,68,68, + 23,24,24,24,35,50,50,37,37,37, + 37,40,40,42,38,38,39,43,43,111, + 111,41,112,112,88,88,28,28,28,28, + 28,28,28,28,28,84,52,52,52,52, + 61,61,60,60,60,62,62,53,53,89, + 89,49,49,63,63,63,45,45,45,46, + 47,47,47,48,48,48,48,56,56,72, + 72,72,72,69,90,91,91,92,92,93, + 93,113,113,114,114,115,115,115,115,117, + 117,116,116,116,118,118,85,85,1,1, + 1,5,5,5,5,5,5,23,23,25, + 25,26,26,94,94,94,97,119,119,119, + 119,119,119,119,102,102,102,102,102,102, + 102,102,102,102,102,102,102,102,102,102, + 102,102,102,102,102,102,102,102,120,120, + 1,14,19,15,416,1132,43,515,314,514, + 626,600,701,627,723,712,1092,727,73,90, + 105,38,182,133,210,317,318,784,14,19, + 15,416,315,135,132,134,158,752,14,19, + 15,416,42,43,515,238,514,626,600,701, + 627,723,712,1700,1734,137,67,164,816,14, + 19,15,416,313,141,144,147,150,251,210, + 317,318,1739,381,1373,1222,1453,1470,1485,1254, + 688,14,19,15,416,1132,43,515,513,514, + 626,600,701,627,723,712,1092,727,73,277, + 688,14,19,15,416,1132,43,515,513,514, + 626,600,701,627,723,712,1092,727,73,277, + 595,752,14,19,15,416,42,39,752,14, + 19,15,416,1132,43,515,279,514,626,600, + 701,627,723,712,1092,727,73,91,270,280, + 528,528,1136,516,243,307,279,216,1210,218, + 1469,220,221,226,525,265,1176,601,268,280, + 1133,16,1688,480,14,19,15,416,1132,43, + 515,513,514,626,600,701,627,723,712,1092, + 727,73,277,394,14,19,15,416,1132,43, + 515,1188,514,626,600,701,627,723,712,1092, + 727,73,1316,340,236,848,14,19,15,416, + 311,752,14,19,15,416,42,43,515,281, + 514,626,600,701,627,1618,133,210,317,318, + 72,514,282,1774,1334,285,135,132,134,158, + 752,14,19,15,416,42,43,515,319,514, + 626,600,701,627,723,1702,140,357,137,271, + 164,880,14,19,15,416,40,141,144,147, + 150,752,14,19,15,416,33,1373,1222,1453, + 1470,1485,1254,752,14,19,15,416,1132,43, + 515,105,514,626,600,701,627,723,712,1092, + 727,73,90,912,14,19,15,416,1132,43, + 515,1684,514,626,600,701,627,723,712,1092, + 727,73,1346,605,14,19,15,416,42,43, + 515,71,514,626,600,701,627,723,712,1092, + 727,92,126,480,325,752,14,19,15,416, + 42,43,515,228,514,1236,381,287,598,437, + 14,19,15,416,1132,43,515,1350,514,626, + 600,701,627,723,712,1092,727,73,1401,20, + 237,720,14,19,15,416,1132,43,515,528, + 514,626,600,701,627,723,712,1092,727,73, + 277,752,14,19,15,416,1132,43,515,1705, + 514,626,600,701,627,723,712,1092,727,73, + 84,752,14,19,15,416,42,43,1147,752, + 14,19,15,416,1132,43,515,283,514,626, + 600,701,627,723,712,1092,727,73,83,752, + 14,19,15,416,1132,43,515,528,514,626, + 600,701,627,723,712,1092,727,73,82,752, + 14,19,15,416,1132,43,515,1718,514,626, + 600,701,627,723,712,1092,727,73,81,752, + 14,19,15,416,1132,43,515,528,514,626, + 600,701,627,723,712,1092,727,73,80,752, + 14,19,15,416,1132,43,515,1724,514,626, + 600,701,627,723,712,1092,727,73,79,752, + 14,19,15,416,1132,43,515,528,514,626, + 600,701,627,723,712,1092,727,73,78,752, + 14,19,15,416,1132,43,515,1733,514,626, + 600,701,627,723,712,1092,727,73,77,752, + 14,19,15,416,1132,43,515,528,514,626, + 600,701,627,723,712,1092,727,73,76,752, + 14,19,15,416,1132,43,515,21,514,626, + 600,701,627,723,712,1092,727,73,75,752, + 14,19,15,416,1132,43,515,528,514,626, + 600,701,627,723,712,1092,727,73,74,752, + 14,19,15,416,1132,43,515,269,514,626, + 600,701,627,723,712,1092,727,73,1402,752, + 14,19,15,416,1132,43,515,528,514,626, + 600,701,627,723,712,1092,727,73,1403,752, + 14,19,15,416,42,43,515,275,514,626, + 600,701,627,723,712,1092,727,92,752,14, + 19,15,416,42,43,515,353,514,626,600, + 701,627,723,712,1092,727,92,752,14,19, + 15,416,32,1404,752,14,19,15,416,42, + 43,515,51,1480,752,14,19,15,416,42, + 43,515,209,514,626,600,701,627,723,712, + 1092,727,92,752,14,19,15,416,42,43, + 515,353,514,626,600,701,627,723,712,1092, + 727,92,887,531,944,981,495,23,1605,752, + 14,19,15,416,42,43,515,426,1481,752, + 14,19,15,416,42,43,515,200,514,626, + 600,701,627,723,712,1092,727,92,752,14, + 19,15,416,42,43,515,57,514,626,600, + 701,627,723,712,1092,727,72,471,124,239, + 1549,538,22,201,295,661,752,14,19,15, + 416,42,43,515,272,514,626,600,701,1620, + 1006,250,210,317,318,270,352,251,210,317, + 318,1736,993,427,215,1210,218,1469,220,221, + 226,1713,263,1176,601,268,344,259,225,251, + 210,317,318,273,529,133,210,317,318,405, + 260,270,1285,1005,340,143,132,134,158,296, + 215,1210,218,1469,220,221,226,6,263,1176, + 601,268,729,1492,68,440,257,133,210,317, + 318,726,1490,182,431,366,987,136,132,134, + 158,1743,380,1439,752,14,19,15,416,42, + 43,515,366,514,626,600,1580,648,513,138, + 1439,164,270,1758,193,653,598,515,142,145, + 148,151,215,1210,218,1469,220,221,226,263, + 1176,601,268,638,982,1776,86,238,306,215, + 1210,218,1469,220,221,226,598,262,528,207, + 598,640,1776,752,14,19,15,416,42,43, + 515,6,514,626,1607,196,198,240,276,1689, + 1005,323,1616,512,752,14,19,15,416,42, + 43,1191,197,198,752,14,19,15,416,42, + 43,515,368,514,626,1609,133,210,317,318, + 181,598,598,598,598,1685,140,132,134,158, + 752,14,19,15,416,42,43,515,80,514, + 1308,680,239,241,242,287,1439,286,139,653, + 164,752,14,19,15,416,42,43,515,105, + 514,1317,752,14,19,15,416,42,43,515, + 88,514,1333,1030,474,215,1210,218,1469,220, + 221,226,1639,681,681,6,726,6,1492,945, + 1042,1729,1719,1695,273,1728,133,210,317,318, + 602,642,270,274,228,1073,146,132,134,158, + 124,1544,528,133,210,317,318,224,288,263, + 1176,601,268,149,132,134,158,947,133,210, + 317,318,222,250,210,317,318,987,152,132, + 134,158,562,14,19,15,416,42,35,562, + 14,19,15,416,42,35,562,14,19,15, + 416,42,35,243,308,181,6,6,6,1005, + 324,1194,640,1769,1698,1704,1732,244,752,14, + 19,15,416,42,38,752,14,19,15,416, + 42,37,752,14,19,15,416,42,36,26, + 612,216,1210,218,1469,220,221,226,752,14, + 19,15,416,42,35,752,14,19,15,416, + 42,34,6,6,6,598,1693,129,528,186, + 360,360,460,6,6,793,957,726,656,6, + 390,360,360,573,195,195,289,653,227,1284, + 1284,86,86,511,511,195,195,1187,6,643, + 1284,1284,86,86,511,511,360,573,86,290, + 728,510,759,752,14,19,15,416,42,46, + 195,1187,827,867,1005,1284,1005,86,256,511, + 752,14,19,15,416,42,45,752,14,19, + 15,416,42,44,124,1005,192,907,495,55, + 162,1739,255,1005,184,112,183,573,169,1027, + 149,1752,337,573,283,763,573,250,210,317, + 318,195,573,643,1005,202,1244,195,789,698, + 195,573,1244,203,790,1244,195,573,445,285, + 6,1244,445,794,795,1187,821,573,653,637, + 190,1187,1714,822,278,405,190,1253,1790,190, + 486,1187,200,1370,1790,190,1664,1790,17,86, + 1758,1690,1666,1790,1758,480,255,270,999,124, + 231,863,255,1027,400,1752,526,644,1859,1608, + 1859,1752,255,1859,265,1176,601,268,1859,1348, + 226,1752,250,210,317,318,206,1859,573,1859, + 206,1859,1859,1859,1859,1859,1859,1750,1859,1859, + 1351,1771,195,1859,1552,1771,1859,1244,1859,1859, + 1859,1859,1859,1859,1859,1859,1859,1859,1859,1859, + 1216,1859,1859,1859,1859,1859,1859,1859,1859,1859, + 1859,191,1859,0,320,693,0,17,178,0, + 18,177,0,1,2082,0,1,2093,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,0,6,7,8,9, + 10,11,12,13,14,15,0,17,18,19, + 20,21,22,23,24,25,26,27,28,29, + 30,31,32,33,34,35,36,0,38,39, + 40,41,42,43,44,45,46,47,48,49, + 0,51,52,53,0,1,0,3,2,5, + 6,7,8,9,10,11,0,0,2,15, + 0,0,16,6,7,8,9,10,11,0, + 1,2,16,17,18,69,32,33,34,35, + 36,54,38,39,40,41,42,43,44,45, + 46,47,48,49,0,51,52,53,4,55, + 56,0,1,0,3,0,5,6,7,8, + 9,10,11,0,74,0,15,61,0,6, + 7,8,9,10,11,64,65,66,67,0, + 70,71,76,32,33,34,35,36,0,38, + 39,40,41,42,43,44,45,46,47,48, + 49,0,51,52,53,0,55,56,0,1, + 0,3,0,5,6,7,8,9,10,11, + 0,0,1,15,3,0,6,7,8,9, + 10,11,64,65,66,67,57,58,73,0, + 32,33,34,35,36,0,38,39,40,41, + 42,43,44,45,46,47,48,49,37,51, + 52,53,74,55,56,0,1,0,3,68, + 5,6,7,8,9,10,11,0,0,1, + 15,3,0,6,7,8,9,10,11,64, + 65,66,67,54,12,13,0,32,33,34, + 35,36,0,38,39,40,41,42,43,44, + 45,46,47,48,49,37,51,52,53,0, + 55,56,0,1,0,3,0,5,6,7, + 8,9,10,11,0,0,1,15,3,72, + 6,7,8,9,10,11,0,0,1,2, + 4,4,0,0,32,33,34,35,36,0, + 38,39,40,41,42,43,44,45,46,47, + 48,49,37,51,52,53,0,55,56,0, + 1,0,3,0,60,6,7,8,9,10, + 11,0,0,1,15,3,0,6,7,8, + 9,10,11,77,78,0,1,2,62,63, + 14,32,33,34,35,36,0,38,39,40, + 41,42,43,44,45,46,47,48,49,0, + 51,52,53,0,1,2,3,4,5,0, + 57,58,89,14,0,12,13,14,15,73, + 17,18,19,20,21,22,23,24,25,26, + 27,28,29,30,31,0,0,1,2,4, + 0,5,2,68,4,0,0,1,2,3, + 4,5,16,0,0,1,16,3,12,13, + 14,15,59,17,18,19,20,21,22,23, + 24,25,26,27,28,29,30,31,69,0, + 0,1,2,0,4,2,50,0,5,0, + 1,2,3,4,5,0,16,62,63,16, + 5,12,13,14,0,59,17,18,19,20, + 21,22,23,24,25,26,27,28,29,30, + 31,0,0,0,0,0,37,6,7,8, + 9,10,11,50,0,0,15,0,0,16, + 0,16,5,5,55,50,0,0,0,54, + 16,4,0,32,33,34,35,36,54,38, + 39,40,41,42,43,44,45,46,47,48, + 49,0,1,2,3,4,5,37,0,57, + 58,57,58,12,13,14,61,50,17,18, + 19,20,21,22,23,24,25,26,27,28, + 29,30,31,68,0,1,2,0,4,62, + 63,0,5,75,0,1,2,3,4,5, + 16,0,0,12,13,0,12,13,14,0, + 59,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,0,0,2,0, + 4,0,0,0,1,0,4,0,1,2, + 3,4,16,12,13,0,59,0,0,12, + 13,14,0,59,17,18,19,20,21,22, + 23,24,25,26,27,28,29,30,31,0, + 0,70,71,0,5,5,0,0,1,2, + 3,4,0,54,57,58,0,0,1,12, + 13,14,60,56,17,18,19,20,21,22, + 23,24,25,26,27,28,29,30,31,0, + 1,2,3,4,37,0,1,72,3,50, + 50,12,13,14,0,0,17,18,19,20, + 21,22,23,24,25,26,27,28,29,30, + 31,0,1,2,3,4,37,60,0,1, + 0,3,0,12,13,14,0,0,17,18, + 19,20,21,22,23,24,25,26,27,28, + 29,30,31,0,1,2,3,4,0,0, + 0,0,0,0,0,12,13,14,0,37, + 17,18,19,20,21,22,23,24,25,26, + 27,28,29,30,31,0,1,2,3,4, + 0,0,0,0,0,37,37,12,13,14, + 37,37,17,18,19,20,21,22,23,24, + 25,26,27,28,29,30,31,0,1,2, + 3,4,60,0,0,0,0,37,37,12, + 13,14,0,0,17,18,19,20,21,22, + 23,24,25,26,27,28,29,30,31,0, + 1,2,3,4,0,0,0,0,0,0, + 0,12,13,14,0,0,17,18,19,20, + 21,22,23,24,25,26,27,28,29,30, + 31,0,1,2,3,4,54,0,0,0, + 0,0,0,12,13,14,0,0,17,18, + 19,20,21,22,23,24,25,26,27,28, + 29,30,31,0,0,2,2,4,5,6, + 7,8,9,10,11,69,0,0,15,16, + 16,5,0,0,0,79,80,81,82,83, + 84,85,86,87,88,32,33,34,35,36, + 0,0,2,0,4,5,6,7,8,9, + 10,11,0,50,0,15,16,16,6,7, + 8,9,10,11,0,0,0,15,0,5, + 54,0,32,33,34,35,36,0,0,0, + 0,16,0,0,32,33,34,35,36,0, + 50,75,0,0,0,6,7,8,9,10, + 11,0,61,0,15,0,0,6,7,8, + 9,10,11,0,0,0,15,0,0,55, + 0,32,33,34,35,36,0,0,0,0, + 0,0,0,32,33,34,35,36,6,7, + 8,9,10,11,0,0,0,15,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,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 + }; + }; + 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, + 1859,1134,1602,1135,1588,1,2070,2071,2072,2180, + 524,2181,1572,1565,1595,2020,208,1077,641,631, + 1869,1870,1871,1872,1558,481,2167,2168,2169,575, + 418,387,2021,2019,2073,2022,2018,87,2025,2030, + 2029,2027,2028,2026,2031,2032,2024,2033,2034,2035, + 69,1259,1189,382,1859,1,266,1,1463,189, + 1,1,1,1,1,1,31,246,1421,1, + 61,58,553,1,1,1,1,1,1,1, + 2082,1418,1619,1883,1884,1058,1,1,1,1, + 1,488,1,1,1,1,1,1,1,1, + 1,1,1,1,1859,1,1,1,1274,189, + 2053,1859,1,1859,1,1859,189,1,1,1, + 1,1,1,1859,610,67,1,1121,60,2070, + 2071,2072,2180,524,2181,1442,1431,1410,715,53, + 1384,1353,1066,1,1,1,1,1,70,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1859,1,1,1,1859,189,2053,1859,1, + 1859,1,1859,189,1,1,1,1,1,1, + 247,1859,2038,1,2039,59,1,1,1,1, + 1,1,1442,1431,1410,715,1084,1139,581,252, + 1,1,1,1,1,1859,1,1,1,1, + 1,1,1,1,1,1,1,1,1361,1, + 1,1,610,189,2053,1859,1,65,1,1168, + 188,1,1,1,1,1,1,245,1859,2038, + 1,2039,50,2070,2071,2072,2180,524,2181,1442, + 1431,1410,715,1615,1374,791,1859,1,1,1, + 1,1,1859,1,1,1,1,1,1,1, + 1,1,1,1,1,1465,1,1,1,1859, + 188,2053,1859,1,1,1,71,189,1,1, + 1,1,1,1,248,1859,2038,1,2039,1196, + 2070,2071,2072,2180,524,2181,47,1859,2082,1418, + 1677,1545,1859,1859,1,1,1,1,1,1859, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1467,1,1,1,68,189,2053,1859, + 2037,1859,2036,57,2113,2070,2071,2072,2180,524, + 2181,249,1859,1888,2020,1889,63,2070,2071,2072, + 2180,524,2181,397,1730,1,2082,1418,1670,1653, + 1294,2021,2019,2073,2022,2018,1859,2025,2030,2029, + 2027,2028,2026,2031,2032,2024,2033,2034,2035,64, + 1259,1189,382,1,1876,1602,1877,1522,1862,1859, + 1084,1139,1843,1294,1859,1572,1565,1595,673,581, + 1077,641,631,1869,1870,1871,1872,1558,481,2167, + 2168,2169,575,418,387,49,1,1853,1223,1677, + 261,1864,1454,1113,1,1859,1859,1876,1602,1877, + 1536,1862,553,1859,205,2038,553,2039,1572,1565, + 1595,1019,1861,1077,641,631,1869,1870,1871,1872, + 1558,481,2167,2168,2169,575,418,387,751,1859, + 258,2082,1223,1,1,1454,1863,1859,1864,1, + 1876,1602,1877,1588,27,1859,553,1670,1653,553, + 1864,1572,1565,1595,28,1861,1077,641,631,1869, + 1870,1871,1872,1558,481,2167,2168,2169,575,418, + 387,127,56,267,55,1859,1604,2070,2071,2072, + 2180,524,2181,1863,320,199,2020,1859,1,553, + 1859,1039,1864,1868,27,1863,1859,48,1859,1777, + 1844,1677,1859,2021,2019,2073,2022,2018,533,2025, + 2030,2029,2027,2028,2026,2031,2032,2024,2033,2034, + 2035,1859,1876,1602,1877,1588,1862,1267,1859,1084, + 1139,1084,1139,1572,1565,1595,1466,1863,1077,641, + 631,1869,1870,1871,1872,1558,481,2167,2168,2169, + 575,418,387,1149,264,2082,1223,1859,1545,1670, + 1653,52,1862,1867,1859,1876,1602,1877,1529,1862, + 553,62,1859,1374,791,1859,1572,1565,1595,1859, + 1861,1077,641,631,1869,1870,1871,1872,1558,481, + 2167,2168,2169,575,418,387,264,54,1454,28, + 1545,51,1,1859,2094,1859,1274,1859,1,1, + 1,1,553,1374,791,66,1861,1859,1859,1, + 1,1,1859,1861,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1384,1353,1859,89,1864,1859,1,1876,1602, + 1877,1588,1859,1886,1084,1139,1859,1,1856,1572, + 1565,1595,2113,2166,1077,641,631,1869,1870,1871, + 1872,1558,481,2167,2168,2169,575,418,387,1859, + 1876,1602,1877,1588,1604,1859,2038,1196,2039,89, + 1863,1572,1565,1595,1859,1859,1077,641,631,1869, + 1870,1871,1872,1558,481,2167,2168,2169,575,418, + 387,1859,1876,1602,1877,1588,1604,2113,204,1281, + 1859,1281,316,1572,1565,1595,1859,1859,1077,641, + 631,1869,1870,1871,1872,1558,481,2167,2168,2169, + 575,418,387,1859,1876,1603,1877,1588,314,312, + 1859,1859,1,41,186,1572,1565,1595,1859,1267, + 1077,641,631,1869,1870,1871,1872,1558,481,2167, + 2168,2169,575,418,387,1859,1876,1613,1877,1588, + 185,187,1859,1859,1859,1267,1267,1572,1565,1595, + 1267,1546,1077,641,631,1869,1870,1871,1872,1558, + 481,2167,2168,2169,575,418,387,1859,1876,1614, + 1877,1588,2112,1859,1859,1859,1859,1547,1548,1572, + 1565,1595,204,1859,1077,641,631,1869,1870,1871, + 1872,1558,481,2167,2168,2169,575,418,387,1859, + 1876,1638,1877,1588,1859,1859,42,1859,1859,1859, + 1859,1572,1565,1595,1859,1859,1077,641,631,1869, + 1870,1871,1872,1558,481,2167,2168,2169,575,418, + 387,1,1876,1602,1877,1588,2977,1859,1859,1859, + 1859,1859,1859,1572,1565,1595,1859,1859,1077,641, + 631,1869,1870,1871,1872,1558,481,2167,2168,2169, + 575,418,387,17,219,1847,1464,1847,1847,178, + 178,178,178,178,178,979,1859,1859,178,1847, + 553,1868,1859,1859,1859,959,939,919,899,879, + 839,859,819,799,771,178,178,178,178,178, + 18,284,1850,1859,1850,1850,177,177,177,177, + 177,177,128,1847,1859,177,1850,1094,2070,2071, + 2072,2180,524,2181,1859,217,1859,2020,1859,1866, + 1302,1859,177,177,177,177,177,1859,1859,1859, + 1859,553,1859,1859,2021,2019,2073,2022,2018,129, + 1850,1867,1859,1859,1859,2070,2071,2072,2180,524, + 2181,130,1617,1859,2020,1859,1859,2070,2071,2072, + 2180,524,2181,1859,1859,1859,2020,1859,1859,1865, + 1859,2021,2019,2073,2022,2018,1859,1859,1859,1859, + 1859,1859,131,2021,2019,2073,2022,2018,2070,2071, + 2072,2180,524,2181,1859,1859,1859,2020,1859,1859, + 1859,1859,1859,1859,1859,1859,1859,1859,1859,1859, + 1859,1859,1859,1859,2021,2019,2073,2022,2018 + }; + }; + 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, + 250,1,142,41,142,142,142,142,142,142, + 142,142,142,142,142,142,55,3,459,456, + 463,461,469,467,471,470,473,472,10,142, + 55,55,55,55,240,240,339,55,403,403, + 345,142,142,142,142,142,142,142,142,142, + 142,142,142,142,142,142,142,142,142,142, + 142,142,142,142,142,142,142,142,142,142, + 142,142,240,240,240,240,131,343,133,370, + 238,237,311,48,323,323,129,129,323,129, + 323,75,191,191,240,45,456,456,461,461, + 461,461,459,459,467,463,463,470,469,505, + 472,471,444,444,444,444,107,339,331,136, + 45,98,166,240,412,373,166,484,278,484, + 278,406,484,142,107,331,98,98,45,165, + 133,240,337,75,239,375,45,166,278,278, + 278,278,406,406,408,275,107,98,331,142, + 142,45,166,370,500,499,343,375,240,278, + 308,243,278,278,308,408,507,408,406,308, + 105,510,403,142,274,107,331,45,45,240, + 412,373,337,308,245,308,308,142,403,408, + 109,45,403,142,408,375,480,142,479,161, + 343,308,45,308,240,239,245,142,161,404 + }; + }; + 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, + 89,0,75,16,2,61,76,17,18,14, + 4,12,13,62,63,57,58,64,65,66, + 67,70,71,72,73,74,77,78,55,69, + 79,80,81,82,83,85,84,86,87,88, + 68,50,89,54,59,5,0,5,68,54, + 59,50,75,16,19,20,21,22,23,2, + 17,18,14,4,12,13,24,25,26,27, + 28,29,30,31,3,1,51,52,53,46, + 38,43,41,42,40,39,44,45,47,48, + 49,36,33,15,32,35,34,6,7,8, + 10,9,11,0,5,55,16,61,17,18, + 14,4,12,13,24,25,19,29,30,31, + 2,20,21,22,23,26,27,28,1,3, + 37,0,59,5,15,6,7,8,9,10, + 11,20,21,22,23,26,27,28,3,17, + 18,14,12,13,24,25,19,29,30,31, + 4,2,1,0,15,59,5,17,18,14, + 4,12,13,24,25,19,29,30,31,2, + 1,3,20,21,22,23,26,27,28,0, + 7,15,36,8,35,34,33,6,32,9, + 10,11,61,76,17,18,14,12,13,62, + 63,57,58,64,65,66,67,70,71,72, + 73,74,77,78,69,79,80,81,82,83, + 84,85,86,87,88,4,2,16,54,50, + 5,0,75,5,4,1,2,68,0,19, + 20,21,22,23,1,3,2,17,18,14, + 4,12,13,24,25,26,27,28,29,30, + 31,56,0,69,16,61,0,32,38,6, + 39,51,33,40,34,41,42,35,7,43, + 44,15,52,36,53,45,46,8,47,48, + 49,1,3,9,10,11,56,55,5,0, + 46,38,43,41,42,40,39,44,45,47, + 48,49,68,75,36,33,15,32,35,34, + 6,7,8,9,10,11,54,1,5,50, + 2,16,4,0,5,50,19,20,21,22, + 23,1,3,2,17,18,14,4,12,13, + 24,25,26,27,28,29,30,31,0,4, + 2,16,50,5,32,38,6,39,51,33, + 40,34,41,42,35,7,43,44,15,52, + 36,53,45,46,8,47,48,49,9,10, + 11,60,3,1,0,1,3,5,55,54, + 0,32,38,6,39,51,33,40,34,41, + 42,35,7,43,44,15,52,36,53,45, + 46,8,47,48,49,1,3,9,10,11, + 60,4,0,69,79,80,81,82,83,84, + 85,86,87,88,37,4,62,63,12,13, + 58,57,64,65,66,67,70,71,14,72, + 73,74,59,50,55,89,77,78,68,75, + 5,54,0,32,6,33,34,35,7,15, + 36,8,1,4,9,10,11,37,2,5, + 54,50,75,16,68,0,5,54,55,69, + 0 + }; + }; + public final static byte asr[] = Asr.asr; + public final int asr(int index) { return asr[index]; } + + public interface Nasb { + public final static byte nasb[] = {0, + 56,8,19,8,19,19,19,19,19,19, + 19,19,19,19,19,19,72,8,8,8, + 8,8,8,8,8,8,8,8,8,19, + 72,72,72,72,70,70,65,1,27,27, + 61,73,19,19,19,19,19,19,19,19, + 19,19,19,19,19,19,19,19,73,19, + 19,19,19,19,19,19,19,19,19,19, + 19,19,70,70,70,70,8,78,21,64, + 25,25,49,15,50,50,9,9,50,9, + 50,45,8,8,70,23,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,86,66,86,18, + 23,31,22,70,76,69,22,8,86,8, + 86,86,8,19,18,86,31,31,23,22, + 11,70,34,2,8,85,23,22,86,80, + 86,80,9,86,29,13,86,31,11,19, + 19,23,22,33,25,25,78,85,70,80, + 43,40,88,80,43,29,8,8,9,43, + 17,8,9,19,59,18,11,23,23,70, + 76,69,35,43,52,43,43,19,9,29, + 19,23,9,19,29,84,41,19,8,52, + 78,43,23,43,70,70,52,19,37,8 + }; + }; + public final static byte nasb[] = Nasb.nasb; + public final int nasb(int index) { return nasb[index]; } + + public interface Nasr { + public final static char nasr[] = {0, + 4,79,78,77,76,75,74,0,32,0, + 23,0,91,0,94,0,69,8,4,0, + 8,4,21,0,28,0,71,0,54,0, + 61,0,20,8,47,46,40,38,0,8, + 70,0,30,0,64,65,66,67,55,33, + 0,8,40,38,0,8,85,0,93,0, + 8,86,0,20,8,47,46,0,8,20, + 0,27,8,31,0,8,22,52,0,59, + 8,27,0,88,22,8,0,8,27,51, + 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, + 85,2,86,9,87,48,64,76,96,97, + 98,10,11,8,69,1,6,7,68,81, + 82,83,84,12,13,93,94,95,100,101, + 102,44,55,60,63,72,3,47,52,56, + 61,62,66,67,74,75,78,79,80,90, + 54,70,73,42,91,107,16,17,89,30, + 4,14,15,18,19,20,21,29,31,22, + 23,24,25,26,92,5,27,28,32,33, + 34,35,36,37,38,39,40,41,108,45, + 46,49,50,51,53,57,58,59,65,71, + 77,88,99,103,104,105,106 + }; + }; + 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, + 0,0,0,115,119,120,121,0,122,123, + 124,125,126,127,128,129,130,131,132,111, + 110,136,143,0,0,0,154,163,0,112, + 114,135,142,0,0,0,159,161,0,162, + 0,0,0,134,172,173,174,0,117,151, + 153,160,169,0,145,150,0,0,152,164, + 167,168,171,146,147,148,149,158,175,113, + 116,118,133,137,138,139,140,141,144,156, + 0,0,157,166,109,0,155,165,170,176, + 177,0,178,179,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0 + }; + }; + public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex; + public final int nonterminalIndex(int index) { return nonterminalIndex[index]; } + + public interface ScopePrefix { + public final static char scopePrefix[] = { + 208,118,57,67,125,145,151,188,26,33, + 85,103,157,162,73,6,12,16,38,81, + 50,135,204,226,230,50,50,197,50,1, + 1,1,42,45,90,113,45,234,20,139, + 179,216,131,167,167,167,167,167,93,93, + 93 + }; + }; + public final static char scopePrefix[] = ScopePrefix.scopePrefix; + public final int scopePrefix(int index) { return scopePrefix[index]; } + + public interface ScopeSuffix { + public final static char scopeSuffix[] = { + 31,31,4,4,31,31,31,194,31,10, + 4,10,31,31,78,10,10,10,10,4, + 4,133,10,10,4,54,78,201,63,4, + 4,4,10,48,4,10,116,10,23,142, + 182,219,133,169,171,173,175,177,100,95, + 108 + }; + }; + 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,66,28,28,66,64,64,101,56,48, + 28,43,64,64,28,5,5,5,48,28, + 28,51,5,4,4,28,28,18,28,94, + 93,92,46,63,28,40,50,2,69,51, + 102,4,51,78,77,76,75,74,43,41, + 43 + }; + }; + public final static char scopeLhs[] = ScopeLhs.scopeLhs; + public final int scopeLhs(int index) { return scopeLhs[index]; } + + public interface ScopeLa { + public final static byte scopeLa[] = { + 55,55,59,59,55,55,55,95,55,50, + 59,50,55,55,20,50,50,50,50,59, + 59,75,50,50,59,4,20,68,15,59, + 59,59,50,2,59,50,1,50,69,1, + 101,50,75,3,51,52,52,46,2,2, + 2 + }; + }; + public final static byte scopeLa[] = ScopeLa.scopeLa; + public final int scopeLa(int index) { return scopeLa[index]; } + + public interface ScopeStateSet { + public final static byte scopeStateSet[] = { + 36,21,25,25,21,21,21,-1,95,29, + 25,11,21,21,25,36,36,36,29,25, + 25,5,36,36,36,25,25,69,25,19, + 1,3,29,31,25,11,13,36,96,5, + -1,36,5,22,22,22,22,22,11,11, + 11 + }; + }; + public final static byte scopeStateSet[] = ScopeStateSet.scopeStateSet; + public final int scopeStateSet(int index) { return scopeStateSet[index]; } + + public interface ScopeRhs { + public final static char scopeRhs[] = {0, + 151,16,0,110,0,156,2,31,0,111, + 0,156,2,30,0,156,2,29,0,197, + 115,0,31,150,0,161,179,115,37,0, + 112,0,167,115,2,153,0,167,115,2, + 0,170,2,0,159,115,0,172,0,191, + 115,16,0,9,110,0,126,15,191,115, + 16,0,69,132,110,0,126,191,115,15, + 16,0,191,115,15,16,0,132,110,0, + 126,15,16,0,126,191,115,16,0,126, + 16,0,147,0,2,0,165,111,0,2, + 111,0,167,115,2,147,0,2,0,164, + 111,0,157,2,0,159,0,161,189,115, + 37,139,51,0,161,189,115,37,51,0, + 134,0,113,0,194,115,134,0,115,134, + 0,155,113,0,165,115,37,139,53,0, + 165,115,37,139,52,0,165,115,37,53, + 0,165,115,37,52,0,186,0,149,0, + 148,0,147,0,146,0,145,0,204,94, + 0,77,2,114,111,113,0,204,127,138, + 2,98,0,53,0,0,138,78,124,0, + 29,131,0,156,2,19,0,161,179,115, + 37,127,156,2,0,156,2,0,111,3, + 0,118,0,112,0,193,2,111,0,138, + 16,111,0,138,2,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, + 1334,0,513,0,1704,1790,1698,1695,1689,0, + 1544,480,1302,1418,1285,1223,1187,0,524,0, + 1254,573,360,0,1469,1210,1176,601,480,1739, + 1223,1187,1454,1284,0,1536,1529,1522,610,397, + 1196,581,1384,1353,1294,1139,1084,1442,1431,1410, + 715,1677,1670,1653,1374,791,1077,641,1595,1588, + 1572,1565,1558,481,631,575,418,387,1149,1113, + 1094,1058,1039,1019,999,729,1168,693,673,553, + 979,959,939,919,899,879,859,839,819,799, + 771,360,488,653,751,460,533,440,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,192,115,180,31,30,29,19,25,24, + 13,12,4,14,18,17,2,111,116,114, + 118,117,120,119,122,121,124,123,112,54, + 2,2,2,2,156,138,134,115,76,61, + 2,16,13,12,63,62,4,67,66,65, + 64,57,58,14,71,70,73,72,78,77, + 74,88,87,86,84,85,83,82,81,80, + 79,69,156,156,156,156,127,115,16,2, + 154,153,181,10,182,183,53,52,184,51, + 185,186,1,3,193,138,114,114,117,117, + 117,117,116,116,119,118,118,121,120,138, + 123,122,127,127,127,127,37,159,4,15, + 126,115,4,170,115,2,16,139,37,139, + 37,37,139,68,115,4,115,115,126,191, + 168,167,129,115,169,115,151,4,37,115, + 37,115,115,37,179,115,37,115,168,191, + 15,126,4,2,145,147,115,54,167,115, + 165,134,166,115,165,189,139,190,115,161, + 54,197,61,16,198,115,168,126,126,157, + 115,2,159,165,115,165,161,69,54,189, + 69,151,61,16,179,115,194,68,157,2, + 115,161,151,161,167,195,54,68,159,54 + }; + }; + public final static char inSymb[] = InSymb.inSymb; + public final int inSymb(int index) { return inSymb[index]; } + + public interface Name { + public final static String name[] = { + "", + "[", + "(", + "{", + ".", + "->", + "++", + "--", + "&", + "*", + "+", + "-", + "~", + "!", + "/", + "%", + ">>", + "<<", + "<", + ">", + "<=", + ">=", + "==", + "!=", + "^", + "|", + "&&", + "||", + "?", + ":", + "...", + "=", + "*=", + "/=", + "%=", + "+=", + "-=", + ">>=", + "<<=", + "&=", + "^=", + "|=", + ",", + "$empty", + "auto", + "break", + "case", + "char", + "const", + "continue", + "default", + "do", + "double", + "else", + "enum", + "extern", + "float", + "for", + "goto", + "if", + "inline", + "int", + "long", + "register", + "restrict", + "return", + "short", + "signed", + "sizeof", + "static", + "struct", + "switch", + "typedef", + "union", + "unsigned", + "void", + "volatile", + "while", + "_Bool", + "_Complex", + "_Imaginary", + "integer", + "floating", + "charconst", + "stringlit", + "identifier", + "Completion", + "EndOfCompletion", + "Invalid", + "RightBracket", + "RightParen", + "RightBrace", + "SemiColon", + "MYTHREAD", + "THREADS", + "UPC_MAX_BLOCKSIZE", + "relaxed", + "shared", + "strict", + "upc_barrier", + "upc_localsizeof", + "upc_blocksizeof", + "upc_elemsizeof", + "upc_notify", + "upc_fence", + "upc_wait", + "upc_forall", + "ERROR_TOKEN", + "EOF_TOKEN", + "no_cast_start", + "]", + ")", + "}", + ";", + "expression", + "postfix_expression", + "member_name", + "type_name", + "initializer_list", + "unary_expression", + "cast_expression", + "multiplicative_expression", + "additive_expression", + "shift_expression", + "relational_expression", + "equality_expression", + "AND_expression", + "exclusive_OR_expression", + "inclusive_OR_expression", + "logical_AND_expression", + "logical_OR_expression", + "conditional_expression", + "assignment_expression", + "expression_list_actual", + "constant_expression", + "identifier_or_typedefname", + "declaration_specifiers", + "simple_declaration_specifiers", + "struct_or_union_declaration_sp" + + "ecifiers", + "elaborated_declaration_specifi" + + "ers", + "enum_declaration_specifiers", + "typdef_name_declaration_specif" + + "iers", + "no_type_declaration_specifier", + "type_qualifier", + "no_type_declaration_specifiers", + "simple_type_specifier", + "struct_or_union_specifier", + "elaborated_specifier", + "enum_specifier", + "typedef_name_in_declspec", + "initializer", + "declarator", + "struct_declaration_list", + "struct_declaration", + "specifier_qualifier_list", + "struct_declarator_list", + "complete_struct_declarator", + "enumerator_list", + "enumerator", + "direct_declarator", + "pointer_seq", + "array_direct_declarator", + "basic_direct_declarator", + "array_modifier", + "parameter_type_list", + "identifier_list", + "array_modifier_type_qualifiers", + "type_qualifier_list", + "parameter_list", + "parameter_declaration", + "complete_parameter_declarator", + "abstract_declarator", + "direct_abstract_declarator", + "basic_direct_abstract_declarat" + + "or", + "array_direct_abstract_declarat" + + "or", + "designated_initializer", + "designation", + "designator_list", + "designator", + "layout_qualifier" + }; + }; + public final static String name[] = Name.name; + public final String name(int index) { return name[index]; } + + public final static int + ERROR_SYMBOL = 56, + SCOPE_UBOUND = 50, + SCOPE_SIZE = 51, + 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 = 220, + NT_OFFSET = 107, + LA_STATE_OFFSET = 2218, + MAX_LA = 2, + NUM_RULES = 359, + NUM_NONTERMINALS = 120, + NUM_SYMBOLS = 227, + SEGMENT_SIZE = 8192, + START_STATE = 1307, + IDENTIFIER_SYMBOL = 0, + EOFT_SYMBOL = 89, + EOLT_SYMBOL = 89, + ACCEPT_ACTION = 1843, + ERROR_ACTION = 1859; + + 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/UPCNoCastExpressionParsersym.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParsersym.java new file mode 100644 index 00000000000..7ff98639ba5 --- /dev/null +++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCNoCastExpressionParsersym.java @@ -0,0 +1,238 @@ +/******************************************************************************* +* Copyright (c) 2006, 2008 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 UPCNoCastExpressionParsersym { + public final static int + TK_auto = 32, + TK_break = 90, + TK_case = 91, + TK_char = 38, + TK_const = 6, + TK_continue = 92, + TK_default = 93, + TK_do = 94, + TK_double = 39, + TK_else = 95, + TK_enum = 51, + TK_extern = 33, + TK_float = 40, + TK_for = 96, + TK_goto = 97, + TK_if = 98, + TK_inline = 34, + TK_int = 41, + TK_long = 42, + TK_register = 35, + TK_restrict = 7, + TK_return = 99, + TK_short = 43, + TK_signed = 44, + TK_sizeof = 19, + TK_static = 15, + TK_struct = 52, + TK_switch = 100, + TK_typedef = 36, + TK_union = 53, + TK_unsigned = 45, + TK_void = 46, + TK_volatile = 8, + TK_while = 101, + TK__Bool = 47, + TK__Complex = 48, + TK__Imaginary = 49, + TK_integer = 20, + TK_floating = 21, + TK_charconst = 22, + TK_stringlit = 23, + TK_identifier = 1, + TK_Completion = 3, + TK_EndOfCompletion = 5, + TK_Invalid = 102, + TK_LeftBracket = 16, + TK_LeftParen = 2, + TK_LeftBrace = 37, + TK_Dot = 61, + TK_Arrow = 76, + TK_PlusPlus = 17, + TK_MinusMinus = 18, + TK_And = 14, + TK_Star = 4, + TK_Plus = 12, + TK_Minus = 13, + TK_Tilde = 24, + TK_Bang = 25, + TK_Slash = 62, + TK_Percent = 63, + TK_RightShift = 57, + TK_LeftShift = 58, + TK_LT = 64, + TK_GT = 65, + TK_LE = 66, + TK_GE = 67, + TK_EQ = 70, + TK_NE = 71, + TK_Caret = 72, + TK_Or = 73, + TK_AndAnd = 74, + TK_OrOr = 77, + TK_Question = 78, + TK_Colon = 68, + TK_DotDotDot = 60, + TK_Assign = 69, + TK_StarAssign = 79, + TK_SlashAssign = 80, + TK_PercentAssign = 81, + TK_PlusAssign = 82, + TK_MinusAssign = 83, + TK_RightShiftAssign = 84, + TK_LeftShiftAssign = 85, + TK_AndAssign = 86, + TK_CaretAssign = 87, + TK_OrAssign = 88, + TK_Comma = 54, + TK_RightBracket = 59, + TK_RightParen = 50, + TK_RightBrace = 55, + TK_SemiColon = 75, + TK_MYTHREAD = 26, + TK_THREADS = 27, + TK_UPC_MAX_BLOCKSIZE = 28, + TK_relaxed = 9, + TK_shared = 10, + TK_strict = 11, + TK_upc_barrier = 103, + TK_upc_localsizeof = 29, + TK_upc_blocksizeof = 30, + TK_upc_elemsizeof = 31, + TK_upc_notify = 104, + TK_upc_fence = 105, + TK_upc_wait = 106, + TK_upc_forall = 107, + TK_ERROR_TOKEN = 56, + TK_EOF_TOKEN = 89; + + public final static String orderedTerminalSymbols[] = { + "", + "identifier", + "LeftParen", + "Completion", + "Star", + "EndOfCompletion", + "const", + "restrict", + "volatile", + "relaxed", + "shared", + "strict", + "Plus", + "Minus", + "And", + "static", + "LeftBracket", + "PlusPlus", + "MinusMinus", + "sizeof", + "integer", + "floating", + "charconst", + "stringlit", + "Tilde", + "Bang", + "MYTHREAD", + "THREADS", + "UPC_MAX_BLOCKSIZE", + "upc_localsizeof", + "upc_blocksizeof", + "upc_elemsizeof", + "auto", + "extern", + "inline", + "register", + "typedef", + "LeftBrace", + "char", + "double", + "float", + "int", + "long", + "short", + "signed", + "unsigned", + "void", + "_Bool", + "_Complex", + "_Imaginary", + "RightParen", + "enum", + "struct", + "union", + "Comma", + "RightBrace", + "ERROR_TOKEN", + "RightShift", + "LeftShift", + "RightBracket", + "DotDotDot", + "Dot", + "Slash", + "Percent", + "LT", + "GT", + "LE", + "GE", + "Colon", + "Assign", + "EQ", + "NE", + "Caret", + "Or", + "AndAnd", + "SemiColon", + "Arrow", + "OrOr", + "Question", + "StarAssign", + "SlashAssign", + "PercentAssign", + "PlusAssign", + "MinusAssign", + "RightShiftAssign", + "LeftShiftAssign", + "AndAssign", + "CaretAssign", + "OrAssign", + "EOF_TOKEN", + "break", + "case", + "continue", + "default", + "do", + "else", + "for", + "goto", + "if", + "return", + "switch", + "while", + "Invalid", + "upc_barrier", + "upc_notify", + "upc_fence", + "upc_wait", + "upc_forall" + }; + + 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/UPCParser.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java index 928741d83bd..a90179442aa 100644 --- 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 @@ -1274,37 +1274,37 @@ public UPCParser(String[] mapFrom) { // constructor // // Rule 310: unary_expression ::= upc_localsizeof unary_expression // - case 310: { action. consumeExpressionUpcSizeofOperator(IUPCASTUnaryExpression.op_upc_localsizeof); break; + case 310: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_localsizeof); break; } // // Rule 311: unary_expression ::= upc_localsizeof ( type_name ) // - case 311: { action. consumeExpressionUpcSizeofTypeName(IUPCASTUnaryExpression.op_upc_localsizeof); break; + case 311: { action. consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_localsizeof); break; } // // Rule 312: unary_expression ::= upc_blocksizeof unary_expression // - case 312: { action. consumeExpressionUpcSizeofOperator(IUPCASTUnaryExpression.op_upc_blocksizeof); break; + case 312: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_blocksizeof); break; } // // Rule 313: unary_expression ::= upc_blocksizeof ( type_name ) // - case 313: { action. consumeExpressionUpcSizeofTypeName(IUPCASTUnaryExpression.op_upc_blocksizeof); break; + case 313: { action. consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_blocksizeof); break; } // // Rule 314: unary_expression ::= upc_elemsizeof unary_expression // - case 314: { action. consumeExpressionUpcSizeofOperator(IUPCASTUnaryExpression.op_upc_elemsizeof); break; + case 314: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_elemsizeof); break; } // // Rule 315: unary_expression ::= upc_elemsizeof ( type_name ) // - case 315: { action. consumeExpressionUpcSizeofTypeName(IUPCASTUnaryExpression.op_upc_elemsizeof); break; + case 315: { action. consumeExpressionTypeId(IUPCASTUnaryExpression.op_upc_elemsizeof); break; } // diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParser.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParser.java new file mode 100644 index 00000000000..5bc540cc2aa --- /dev/null +++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParser.java @@ -0,0 +1,1527 @@ +/******************************************************************************* +* Copyright (c) 2006, 2008 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.lrparser.IParser; +import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider; + +import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; +import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; + +import org.eclipse.cdt.core.dom.lrparser.action.c99.C99ASTNodeFactory; +import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction; + +import org.eclipse.cdt.core.dom.parser.upc.UPCASTNodeFactory; +import org.eclipse.cdt.core.dom.parser.upc.UPCParserAction; +import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression; +import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement; +import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnaryExpression; + +public class UPCSizeofExpressionParser extends PrsStream implements RuleAction , IParserActionTokenProvider, IParser +{ + private static ParseTable prs = new UPCSizeofExpressionParserprs(); + 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 UPCSizeofExpressionParser(LexStream lexStream) + { + super(lexStream); + + try + { + super.remapTerminalSymbols(orderedTerminalSymbols(), UPCSizeofExpressionParserprs.EOFT_SYMBOL); + } + catch(NullExportedSymbolsException e) { + } + catch(NullTerminalSymbolsException e) { + } + catch(UnimplementedTerminalsException e) + { + java.util.ArrayList unimplemented_symbols = e.getSymbols(); + System.out.println("The Lexer will not scan the following token(s):"); + for (int i = 0; i < unimplemented_symbols.size(); i++) + { + Integer id = (Integer) unimplemented_symbols.get(i); + System.out.println(" " + UPCSizeofExpressionParsersym.orderedTerminalSymbols[id.intValue()]); + } + System.out.println(); + } + catch(UndefinedEofSymbolException e) + { + throw new Error(new UndefinedEofSymbolException + ("The Lexer does not implement the Eof symbol " + + UPCSizeofExpressionParsersym.orderedTerminalSymbols[UPCSizeofExpressionParserprs.EOFT_SYMBOL])); + } + } + + public String[] orderedTerminalSymbols() { return UPCSizeofExpressionParsersym.orderedTerminalSymbols; } + public String getTokenKindName(int kind) { return UPCSizeofExpressionParsersym.orderedTerminalSymbols[kind]; } + public int getEOFTokenKind() { return UPCSizeofExpressionParserprs.EOFT_SYMBOL; } + public PrsStream getParseStream() { return (PrsStream) this; } + + // + // Report error message for given error_token. + // + public final void reportErrorTokenMessage(int error_token, String msg) + { + int firsttok = super.getFirstErrorToken(error_token), + lasttok = super.getLastErrorToken(error_token); + String location = super.getFileName() + ':' + + (firsttok > lasttok + ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok)) + : (super.getLine(error_token) + ":" + + super.getColumn(error_token) + ":" + + super.getEndLine(error_token) + ":" + + super.getEndColumn(error_token))) + + ": "; + super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE), location, msg); + } + + public 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 UPCSizeofExpressionParserprs.java with -BACKTRACK option")); + } + catch (BadParseSymFileException e) + { + throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- UPCSizeofExpressionParsersym.java")); + } + + 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; + +public UPCSizeofExpressionParser() { // constructor +} + +private void initActions(IASTTranslationUnit tu) { + action = new UPCParserAction ( UPCASTNodeFactory.DEFAULT_INSTANCE , this, tu); +} + + +public void addToken(IToken token) { + token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called? + super.addToken(token); +} + + +public IASTCompletionNode parse(IASTTranslationUnit tu) { + // this has to be done, or... kaboom! + setStreamLength(getSize()); + initActions(tu); + + final int errorRepairCount = -1; // -1 means full error handling + parser(null, errorRepairCount); // do the actual parse + super.resetTokenStream(); // allow tokens to be garbage collected + + // the completion node may be null + IASTCompletionNode compNode = action.getASTCompletionNode(); + + //action = null; + //parserAction = null; + return compNode; +} + +// uncomment this method to use with backtracking parser +public List getRuleTokens() { + return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1)); +} + + +public IASTNode getSecondaryParseResult() { + return action.getSecondaryParseResult(); +} + +public String[] getOrderedTerminalSymbols() { + return UPCSizeofExpressionParsersym.orderedTerminalSymbols; +} + +public String getName() { + return "UPCSizeofExpressionParser"; //$NON-NLS-1$ +} + + + +private ITokenMap tokenMap = null; + +public void setTokens(List tokens) { + resetTokenStream(); + addToken(new Token(null, 0, 0, 0)); // dummy token + for(IToken token : tokens) { + token.setKind(tokenMap.mapKind(token.getKind())); + addToken(token); + } + addToken(new Token(null, 0, 0, UPCSizeofExpressionParsersym.TK_EOF_TOKEN)); +} + +public UPCSizeofExpressionParser(String[] mapFrom) { // constructor + tokenMap = new TokenMap(UPCSizeofExpressionParsersym.orderedTerminalSymbols, mapFrom); +} + + + + public void ruleAction(int ruleNumber) + { + switch (ruleNumber) + { + + // + // Rule 1: ::= $Empty + // + case 1: { action. openASTScope(); break; + } + + // + // Rule 10: literal ::= integer + // + case 10: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant); break; + } + + // + // Rule 11: literal ::= floating + // + case 11: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant); break; + } + + // + // Rule 12: literal ::= charconst + // + case 12: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant); break; + } + + // + // Rule 13: literal ::= stringlit + // + case 13: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal); break; + } + + // + // Rule 15: primary_expression ::= primary_expression_id + // + case 15: { action. consumeExpressionID(); break; + } + + // + // Rule 16: primary_expression ::= ( expression ) + // + case 16: { action. consumeExpressionBracketed(); break; + } + + // + // Rule 20: postfix_expression ::= postfix_expression [ expression ] + // + case 20: { action. consumeExpressionArraySubscript(); break; + } + + // + // Rule 21: postfix_expression ::= postfix_expression ( expression_list_opt ) + // + case 21: { action. consumeExpressionFunctionCall(); break; + } + + // + // Rule 22: postfix_expression ::= postfix_expression . member_name + // + case 22: { action. consumeExpressionFieldReference(false); break; + } + + // + // Rule 23: postfix_expression ::= postfix_expression -> member_name + // + case 23: { action. consumeExpressionFieldReference(true); break; + } + + // + // Rule 24: postfix_expression ::= postfix_expression ++ + // + case 24: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); break; + } + + // + // Rule 25: postfix_expression ::= postfix_expression -- + // + case 25: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); break; + } + + // + // Rule 26: postfix_expression ::= ( type_name ) { initializer_list comma_opt } + // + case 26: { action. consumeExpressionTypeIdInitializer(); break; + } + + // + // Rule 32: unary_expression ::= ++ unary_expression + // + case 32: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); break; + } + + // + // Rule 33: unary_expression ::= -- unary_expression + // + case 33: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); break; + } + + // + // Rule 34: unary_expression ::= & cast_expression + // + case 34: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); break; + } + + // + // Rule 35: unary_expression ::= * cast_expression + // + case 35: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); break; + } + + // + // Rule 36: unary_expression ::= + cast_expression + // + case 36: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); break; + } + + // + // Rule 37: unary_expression ::= - cast_expression + // + case 37: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); break; + } + + // + // Rule 38: unary_expression ::= ~ cast_expression + // + case 38: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); break; + } + + // + // Rule 39: unary_expression ::= ! cast_expression + // + case 39: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); break; + } + + // + // Rule 40: unary_expression ::= sizeof unary_expression + // + case 40: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); break; + } + + // + // Rule 42: cast_expression ::= ( type_name ) cast_expression + // + case 42: { action. consumeExpressionCast(IASTCastExpression.op_cast); break; + } + + // + // Rule 44: multiplicative_expression ::= multiplicative_expression * cast_expression + // + case 44: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply); break; + } + + // + // Rule 45: multiplicative_expression ::= multiplicative_expression / cast_expression + // + case 45: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide); break; + } + + // + // Rule 46: multiplicative_expression ::= multiplicative_expression % cast_expression + // + case 46: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo); break; + } + + // + // Rule 48: additive_expression ::= additive_expression + multiplicative_expression + // + case 48: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus); break; + } + + // + // Rule 49: additive_expression ::= additive_expression - multiplicative_expression + // + case 49: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus); break; + } + + // + // Rule 51: shift_expression ::= shift_expression << additive_expression + // + case 51: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft); break; + } + + // + // Rule 52: shift_expression ::= shift_expression >> additive_expression + // + case 52: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight); break; + } + + // + // Rule 54: relational_expression ::= relational_expression < shift_expression + // + case 54: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan); break; + } + + // + // Rule 55: relational_expression ::= relational_expression > shift_expression + // + case 55: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan); break; + } + + // + // Rule 56: relational_expression ::= relational_expression <= shift_expression + // + case 56: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual); break; + } + + // + // Rule 57: relational_expression ::= relational_expression >= shift_expression + // + case 57: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual); break; + } + + // + // Rule 59: equality_expression ::= equality_expression == relational_expression + // + case 59: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals); break; + } + + // + // Rule 60: equality_expression ::= equality_expression != relational_expression + // + case 60: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals); break; + } + + // + // Rule 62: AND_expression ::= AND_expression & equality_expression + // + case 62: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd); break; + } + + // + // Rule 64: exclusive_OR_expression ::= exclusive_OR_expression ^ AND_expression + // + case 64: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor); break; + } + + // + // Rule 66: inclusive_OR_expression ::= inclusive_OR_expression | exclusive_OR_expression + // + case 66: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr); break; + } + + // + // Rule 68: logical_AND_expression ::= logical_AND_expression && inclusive_OR_expression + // + case 68: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd); break; + } + + // + // Rule 70: logical_OR_expression ::= logical_OR_expression || logical_AND_expression + // + case 70: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr); break; + } + + // + // Rule 72: conditional_expression ::= logical_OR_expression ? expression : conditional_expression + // + case 72: { action. consumeExpressionConditional(); break; + } + + // + // Rule 74: assignment_expression ::= unary_expression = assignment_expression + // + case 74: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break; + } + + // + // Rule 75: assignment_expression ::= unary_expression *= assignment_expression + // + case 75: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign); break; + } + + // + // Rule 76: assignment_expression ::= unary_expression /= assignment_expression + // + case 76: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign); break; + } + + // + // Rule 77: assignment_expression ::= unary_expression %= assignment_expression + // + case 77: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign); break; + } + + // + // Rule 78: assignment_expression ::= unary_expression += assignment_expression + // + case 78: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign); break; + } + + // + // Rule 79: assignment_expression ::= unary_expression -= assignment_expression + // + case 79: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign); break; + } + + // + // Rule 80: assignment_expression ::= unary_expression <<= assignment_expression + // + case 80: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign); break; + } + + // + // Rule 81: assignment_expression ::= unary_expression >>= assignment_expression + // + case 81: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign); break; + } + + // + // Rule 82: assignment_expression ::= unary_expression &= assignment_expression + // + case 82: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign); break; + } + + // + // Rule 83: assignment_expression ::= unary_expression ^= assignment_expression + // + case 83: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign); break; + } + + // + // Rule 84: assignment_expression ::= unary_expression |= assignment_expression + // + case 84: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign); break; + } + + // + // Rule 87: expression_list ::= expression_list_actual + // + case 87: { action. consumeExpressionList(); break; + } + + // + // Rule 89: expression_list_opt ::= $Empty + // + case 89: { action. consumeEmpty(); break; + } + + // + // Rule 99: statement ::= ERROR_TOKEN + // + case 99: { action. consumeStatementProblem(); break; + } + + // + // Rule 100: labeled_statement ::= identifier_or_typedefname : statement + // + case 100: { action. consumeStatementLabeled(); break; + } + + // + // Rule 101: labeled_statement ::= case constant_expression : + // + case 101: { action. consumeStatementCase(); break; + } + + // + // Rule 102: labeled_statement ::= default : + // + case 102: { action. consumeStatementDefault(); break; + } + + // + // Rule 103: compound_statement ::= { } + // + case 103: { action. consumeStatementCompoundStatement(false); break; + } + + // + // Rule 104: compound_statement ::= { block_item_list } + // + case 104: { action. consumeStatementCompoundStatement(true); break; + } + + // + // Rule 108: block_item ::= declaration + // + case 108: { action. consumeStatementDeclarationWithDisambiguation(); break; + } + + // + // Rule 109: expression_statement ::= ; + // + case 109: { action. consumeStatementNull(); break; + } + + // + // Rule 110: expression_statement ::= expression_in_statement ; + // + case 110: { action. consumeStatementExpression(); break; + } + + // + // Rule 111: selection_statement ::= if ( expression ) statement + // + case 111: { action. consumeStatementIf(false); break; + } + + // + // Rule 112: selection_statement ::= if ( expression ) statement else statement + // + case 112: { action. consumeStatementIf(true); break; + } + + // + // Rule 113: selection_statement ::= switch ( expression ) statement + // + case 113: { action. consumeStatementSwitch(); break; + } + + // + // Rule 115: expression_opt ::= $Empty + // + case 115: { action. consumeEmpty(); break; + } + + // + // Rule 116: iteration_statement ::= do statement while ( expression ) ; + // + case 116: { action. consumeStatementDoLoop(); break; + } + + // + // Rule 117: iteration_statement ::= while ( expression ) statement + // + case 117: { action. consumeStatementWhileLoop(); break; + } + + // + // Rule 118: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement + // + case 118: { action. consumeStatementForLoop(); break; + } + + // + // Rule 119: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement + // + case 119: { action. consumeStatementForLoop(); break; + } + + // + // Rule 120: jump_statement ::= goto identifier_or_typedefname ; + // + case 120: { action. consumeStatementGoto(); break; + } + + // + // Rule 121: jump_statement ::= continue ; + // + case 121: { action. consumeStatementContinue(); break; + } + + // + // Rule 122: jump_statement ::= break ; + // + case 122: { action. consumeStatementBreak(); break; + } + + // + // Rule 123: jump_statement ::= return ; + // + case 123: { action. consumeStatementReturn(false); break; + } + + // + // Rule 124: jump_statement ::= return expression ; + // + case 124: { action. consumeStatementReturn(true); break; + } + + // + // Rule 125: declaration ::= declaration_specifiers ; + // + case 125: { action. consumeDeclarationSimple(false); break; + } + + // + // Rule 126: declaration ::= declaration_specifiers init_declarator_list ; + // + case 126: { action. consumeDeclarationSimple(true); break; + } + + // + // Rule 127: declaration_specifiers ::= simple_declaration_specifiers + // + case 127: { action. consumeDeclarationSpecifiersSimple(); break; + } + + // + // Rule 128: declaration_specifiers ::= struct_or_union_declaration_specifiers + // + case 128: { action. consumeDeclarationSpecifiersStructUnionEnum(); break; + } + + // + // Rule 129: declaration_specifiers ::= elaborated_declaration_specifiers + // + case 129: { action. consumeDeclarationSpecifiersStructUnionEnum(); break; + } + + // + // Rule 130: declaration_specifiers ::= enum_declaration_specifiers + // + case 130: { action. consumeDeclarationSpecifiersStructUnionEnum(); break; + } + + // + // Rule 131: declaration_specifiers ::= typdef_name_declaration_specifiers + // + case 131: { action. consumeDeclarationSpecifiersTypedefName(); break; + } + + // + // Rule 156: init_declarator ::= complete_declarator = initializer + // + case 156: { action. consumeDeclaratorWithInitializer(true); break; + } + + // + // Rule 158: storage_class_specifier ::= storage_class_specifier_token + // + case 158: { action. consumeDeclSpecToken(); break; + } + + // + // Rule 164: simple_type_specifier ::= simple_type_specifier_token + // + case 164: { action. consumeDeclSpecToken(); break; + } + + // + // Rule 177: typedef_name_in_declspec ::= Completion + // + case 177: { action. consumeDeclSpecToken(); break; + } + + // + // Rule 178: typedef_name_in_declspec ::= identifier + // + case 178: { action. consumeDeclSpecToken(); break; + } + + // + // Rule 181: struct_or_union_specifier ::= struct { struct_declaration_list_opt } + // + case 181: { action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_struct); break; + } + + // + // Rule 182: struct_or_union_specifier ::= union { struct_declaration_list_opt } + // + case 182: { action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_union); break; + } + + // + // Rule 183: struct_or_union_specifier ::= struct identifier_or_typedefname { struct_declaration_list_opt } + // + case 183: { action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_struct); break; + } + + // + // Rule 184: struct_or_union_specifier ::= union identifier_or_typedefname { struct_declaration_list_opt } + // + case 184: { action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_union); break; + } + + // + // Rule 185: elaborated_specifier ::= struct identifier_or_typedefname + // + case 185: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); break; + } + + // + // Rule 186: elaborated_specifier ::= union identifier_or_typedefname + // + case 186: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); break; + } + + // + // Rule 187: elaborated_specifier ::= enum identifier_or_typedefname + // + case 187: { action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); break; + } + + // + // Rule 192: struct_declaration ::= specifier_qualifier_list struct_declarator_list ; + // + case 192: { action. consumeStructDeclaration(true); break; + } + + // + // Rule 193: struct_declaration ::= specifier_qualifier_list ; + // + case 193: { action. consumeStructDeclaration(false); break; + } + + // + // Rule 194: struct_declaration ::= ERROR_TOKEN + // + case 194: { action. consumeDeclarationProblem(); break; + } + + // + // Rule 200: struct_declarator ::= : constant_expression + // + case 200: { action. consumeBitField(false); break; + } + + // + // Rule 201: struct_declarator ::= declarator : constant_expression + // + case 201: { action. consumeBitField(true); break; + } + + // + // Rule 202: enum_specifier ::= enum { enumerator_list_opt comma_opt } + // + case 202: { action. consumeTypeSpecifierEnumeration(false); break; + } + + // + // Rule 203: enum_specifier ::= enum identifier_or_typedefname { enumerator_list_opt comma_opt } + // + case 203: { action. consumeTypeSpecifierEnumeration(true); break; + } + + // + // Rule 208: enumerator ::= identifier_or_typedefname + // + case 208: { action. consumeEnumerator(false); break; + } + + // + // Rule 209: enumerator ::= identifier_or_typedefname = constant_expression + // + case 209: { action. consumeEnumerator(true); break; + } + + // + // Rule 210: type_qualifier ::= type_qualifier_token + // + case 210: { action. consumeDeclSpecToken(); break; + } + + // + // Rule 214: function_specifier ::= inline + // + case 214: { action. consumeDeclSpecToken(); break; + } + + // + // Rule 216: declarator ::= pointer_seq direct_declarator + // + case 216: { action. consumeDeclaratorWithPointer(true); break; + } + + // + // Rule 221: basic_direct_declarator ::= declarator_id_name + // + case 221: { action. consumeDirectDeclaratorIdentifier(); break; + } + + // + // Rule 222: basic_direct_declarator ::= ( declarator ) + // + case 222: { action. consumeDirectDeclaratorBracketed(); break; + } + + // + // Rule 223: declarator_id_name ::= identifier + // + case 223: { action. consumeIdentifierName(); break; + } + + // + // Rule 224: array_direct_declarator ::= basic_direct_declarator array_modifier + // + case 224: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 225: array_direct_declarator ::= array_direct_declarator array_modifier + // + case 225: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 227: function_direct_declarator ::= basic_direct_declarator ( parameter_type_list ) + // + case 227: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; + } + + // + // Rule 228: function_direct_declarator ::= basic_direct_declarator ( ) + // + case 228: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; + } + + // + // Rule 230: function_declarator ::= pointer_seq function_direct_declarator + // + case 230: { action. consumeDeclaratorWithPointer(true); break; + } + + // + // Rule 231: knr_direct_declarator ::= basic_direct_declarator ( identifier_list ) + // + case 231: { action. consumeDirectDeclaratorFunctionDeclaratorKnR(); break; + } + + // + // Rule 233: knr_function_declarator ::= pointer_seq knr_direct_declarator + // + case 233: { action. consumeDeclaratorWithPointer(true); break; + } + + // + // Rule 234: identifier_list ::= identifier + // + case 234: { action. consumeIdentifierKnR(); break; + } + + // + // Rule 235: identifier_list ::= identifier_list , identifier + // + case 235: { action. consumeIdentifierKnR(); break; + } + + // + // Rule 236: array_modifier ::= [ ] + // + case 236: { action. consumeDirectDeclaratorArrayModifier(false); break; + } + + // + // Rule 237: array_modifier ::= [ array_modifier_type_qualifiers ] + // + case 237: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break; + } + + // + // Rule 238: array_modifier ::= [ assignment_expression ] + // + case 238: { action. consumeDirectDeclaratorArrayModifier(true); break; + } + + // + // Rule 239: array_modifier ::= [ array_modifier_type_qualifiers assignment_expression ] + // + case 239: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break; + } + + // + // Rule 240: array_modifier ::= [ static assignment_expression ] + // + case 240: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break; + } + + // + // Rule 241: array_modifier ::= [ static array_modifier_type_qualifiers assignment_expression ] + // + case 241: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; + } + + // + // Rule 242: array_modifier ::= [ array_modifier_type_qualifiers static assignment_expression ] + // + case 242: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; + } + + // + // Rule 243: array_modifier ::= [ * ] + // + case 243: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break; + } + + // + // Rule 244: array_modifier ::= [ array_modifier_type_qualifiers * ] + // + case 244: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break; + } + + // + // Rule 246: pointer_seq ::= * + // + case 246: { action. consumePointer(); break; + } + + // + // Rule 247: pointer_seq ::= pointer_seq * + // + case 247: { action. consumePointer(); break; + } + + // + // Rule 248: pointer_seq ::= * type_qualifier_list + // + case 248: { action. consumePointerTypeQualifierList(); break; + } + + // + // Rule 249: pointer_seq ::= pointer_seq * type_qualifier_list + // + case 249: { action. consumePointerTypeQualifierList(); break; + } + + // + // Rule 252: parameter_type_list ::= parameter_list + // + case 252: { action. consumeEmpty(); break; + } + + // + // Rule 253: parameter_type_list ::= parameter_list , ... + // + case 253: { action. consumePlaceHolder(); break; + } + + // + // Rule 254: parameter_type_list ::= ... + // + case 254: { action. consumePlaceHolder(); break; + } + + // + // Rule 257: parameter_declaration ::= declaration_specifiers complete_parameter_declarator + // + case 257: { action. consumeParameterDeclaration(); break; + } + + // + // Rule 258: parameter_declaration ::= declaration_specifiers + // + case 258: { action. consumeParameterDeclarationWithoutDeclarator(); break; + } + + // + // Rule 261: type_name ::= specifier_qualifier_list + // + case 261: { action. consumeTypeId(false); break; + } + + // + // Rule 262: type_name ::= specifier_qualifier_list abstract_declarator + // + case 262: { action. consumeTypeId(true); break; + } + + // + // Rule 264: abstract_declarator ::= pointer_seq + // + case 264: { action. consumeDeclaratorWithPointer(false); break; + } + + // + // Rule 265: abstract_declarator ::= pointer_seq direct_abstract_declarator + // + case 265: { action. consumeDeclaratorWithPointer(false); break; + } + + // + // Rule 269: basic_direct_abstract_declarator ::= ( abstract_declarator ) + // + case 269: { action. consumeDirectDeclaratorBracketed(); break; + } + + // + // Rule 270: array_direct_abstract_declarator ::= array_modifier + // + case 270: { action. consumeDirectDeclaratorArrayDeclarator(false); break; + } + + // + // Rule 271: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier + // + case 271: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 272: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier + // + case 272: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 273: function_direct_abstract_declarator ::= ( ) + // + case 273: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break; + } + + // + // Rule 274: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( ) + // + case 274: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; + } + + // + // Rule 275: function_direct_abstract_declarator ::= ( parameter_type_list ) + // + case 275: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break; + } + + // + // Rule 276: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( parameter_type_list ) + // + case 276: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; + } + + // + // Rule 277: initializer ::= assignment_expression + // + case 277: { action. consumeInitializer(); break; + } + + // + // Rule 278: initializer ::= { initializer_list comma_opt } + // + case 278: { action. consumeInitializerList(); break; + } + + // + // Rule 283: designated_initializer ::= designation = initializer + // + case 283: { action. consumeInitializerDesignated(); break; + } + + // + // Rule 287: designator_base ::= [ constant_expression ] + // + case 287: { action. consumeDesignatorArray(); break; + } + + // + // Rule 288: designator_base ::= . identifier_or_typedefname + // + case 288: { action. consumeDesignatorField(); break; + } + + // + // Rule 289: designator ::= [ constant_expression ] + // + case 289: { action. consumeDesignatorArray(); break; + } + + // + // Rule 290: designator ::= . identifier_or_typedefname + // + case 290: { action. consumeDesignatorField(); break; + } + + // + // Rule 291: translation_unit ::= external_declaration_list + // + case 291: { action. consumeTranslationUnit(); break; + } + + // + // Rule 292: translation_unit ::= $Empty + // + case 292: { action. consumeTranslationUnit(); break; + } + + // + // Rule 297: external_declaration ::= ; + // + case 297: { action. consumeDeclarationEmpty(); break; + } + + // + // Rule 298: external_declaration ::= ERROR_TOKEN + // + case 298: { action. consumeDeclarationProblem(); break; + } + + // + // Rule 301: function_definition ::= declaration_specifiers function_declarator function_body + // + case 301: { action. consumeFunctionDefinition(true); break; + } + + // + // Rule 302: function_definition ::= function_declarator function_body + // + case 302: { action. consumeFunctionDefinition(false); break; + } + + // + // Rule 303: function_definition ::= declaration_specifiers knr_function_declarator declaration_list compound_statement + // + case 303: { action. consumeFunctionDefinitionKnR(); break; + } + + // + // Rule 304: function_body ::= { } + // + case 304: { action. consumeStatementCompoundStatement(false); break; + } + + // + // Rule 305: function_body ::= { block_item_list } + // + case 305: { action. consumeStatementCompoundStatement(true); break; + } + + // + // Rule 307: no_sizeof_type_name_start ::= ERROR_TOKEN + // + case 307: { action. consumeExpressionProblem(); break; + } + + // + // Rule 308: literal ::= MYTHREAD + // + case 308: { action. consumeKeywordExpression(IUPCASTKeywordExpression.kw_mythread); break; + } + + // + // Rule 309: literal ::= THREADS + // + case 309: { action. consumeKeywordExpression(IUPCASTKeywordExpression.kw_threads); break; + } + + // + // Rule 310: literal ::= UPC_MAX_BLOCKSIZE + // + case 310: { action. consumeKeywordExpression(IUPCASTKeywordExpression.kw_upc_max_block_size); break; + } + + // + // Rule 311: unary_expression ::= upc_localsizeof unary_expression + // + case 311: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_localsizeof); break; + } + + // + // Rule 312: unary_expression ::= upc_blocksizeof unary_expression + // + case 312: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_blocksizeof); break; + } + + // + // Rule 313: unary_expression ::= upc_elemsizeof unary_expression + // + case 313: { action. consumeExpressionUnaryOperator(IUPCASTUnaryExpression.op_upc_elemsizeof); break; + } + + // + // Rule 317: shared_type_qualifier ::= shared + // + case 317: { action. consumeToken(); break; + } + + // + // Rule 318: reference_type_qualifier ::= relaxed + // + case 318: { action. consumeToken(); break; + } + + // + // Rule 319: reference_type_qualifier ::= strict + // + case 319: { action. consumeToken(); break; + } + + // + // Rule 320: layout_qualifier ::= [ constant_expression ] + // + case 320: { action. consumeLayoutQualifier(true, false); break; + } + + // + // Rule 321: layout_qualifier ::= [ * ] + // + case 321: { action. consumeLayoutQualifier(false, true); break; + } + + // + // Rule 322: layout_qualifier ::= [ ] + // + case 322: { action. consumeLayoutQualifier(false, false); break; + } + + // + // Rule 324: synchronization_statement ::= upc_notify expression ; + // + case 324: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, true); break; + } + + // + // Rule 325: synchronization_statement ::= upc_notify ; + // + case 325: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, false); break; + } + + // + // Rule 326: synchronization_statement ::= upc_wait expression ; + // + case 326: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, true); break; + } + + // + // Rule 327: synchronization_statement ::= upc_wait ; + // + case 327: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, false); break; + } + + // + // Rule 328: synchronization_statement ::= upc_barrier expression ; + // + case 328: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, true); break; + } + + // + // Rule 329: synchronization_statement ::= upc_barrier ; + // + case 329: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, false); break; + } + + // + // Rule 330: synchronization_statement ::= upc_fence ; + // + case 330: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_fence, false); break; + } + + // + // Rule 331: iteration_statement ::= upc_forall ( expression ; expression ; expression ; affinity ) statement + // + case 331: { action. consumeStatementUPCForallLoop(true, true, true, true); break; + } + + // + // Rule 332: iteration_statement ::= upc_forall ( expression ; expression ; expression ; ) statement + // + case 332: { action. consumeStatementUPCForallLoop(true, true, true, false); break; + } + + // + // Rule 333: iteration_statement ::= upc_forall ( expression ; expression ; ; affinity ) statement + // + case 333: { action. consumeStatementUPCForallLoop(true, true, false, true); break; + } + + // + // Rule 334: iteration_statement ::= upc_forall ( expression ; expression ; ; ) statement + // + case 334: { action. consumeStatementUPCForallLoop(true, true, false, false); break; + } + + // + // Rule 335: iteration_statement ::= upc_forall ( expression ; ; expression ; affinity ) statement + // + case 335: { action. consumeStatementUPCForallLoop(true, false, true, true); break; + } + + // + // Rule 336: iteration_statement ::= upc_forall ( expression ; ; expression ; ) statement + // + case 336: { action. consumeStatementUPCForallLoop(true, false, true, false); break; + } + + // + // Rule 337: iteration_statement ::= upc_forall ( expression ; ; ; affinity ) statement + // + case 337: { action. consumeStatementUPCForallLoop(true, false, false, true); break; + } + + // + // Rule 338: iteration_statement ::= upc_forall ( expression ; ; ; ) statement + // + case 338: { action. consumeStatementUPCForallLoop(true, false, false, false); break; + } + + // + // Rule 339: iteration_statement ::= upc_forall ( ; expression ; expression ; affinity ) statement + // + case 339: { action. consumeStatementUPCForallLoop(false, true, true, true); break; + } + + // + // Rule 340: iteration_statement ::= upc_forall ( ; expression ; expression ; ) statement + // + case 340: { action. consumeStatementUPCForallLoop(false, true, true, false); break; + } + + // + // Rule 341: iteration_statement ::= upc_forall ( ; expression ; ; affinity ) statement + // + case 341: { action. consumeStatementUPCForallLoop(false, true, false, true); break; + } + + // + // Rule 342: iteration_statement ::= upc_forall ( ; expression ; ; ) statement + // + case 342: { action. consumeStatementUPCForallLoop(false, true, false, false); break; + } + + // + // Rule 343: iteration_statement ::= upc_forall ( ; ; expression ; affinity ) statement + // + case 343: { action. consumeStatementUPCForallLoop(false, false, true, true); break; + } + + // + // Rule 344: iteration_statement ::= upc_forall ( ; ; expression ; ) statement + // + case 344: { action. consumeStatementUPCForallLoop(false, false, true, false); break; + } + + // + // Rule 345: iteration_statement ::= upc_forall ( ; ; ; affinity ) statement + // + case 345: { action. consumeStatementUPCForallLoop(false, false, false, true); break; + } + + // + // Rule 346: iteration_statement ::= upc_forall ( ; ; ; ) statement + // + case 346: { action. consumeStatementUPCForallLoop(false, false, false, false); break; + } + + // + // Rule 347: iteration_statement ::= upc_forall ( declaration expression ; expression ; affinity ) statement + // + case 347: { action. consumeStatementUPCForallLoop(true, true, true, true); break; + } + + // + // Rule 348: iteration_statement ::= upc_forall ( declaration expression ; expression ; ) statement + // + case 348: { action. consumeStatementUPCForallLoop(true, true, true, false); break; + } + + // + // Rule 349: iteration_statement ::= upc_forall ( declaration expression ; ; affinity ) statement + // + case 349: { action. consumeStatementUPCForallLoop(true, true, false, true); break; + } + + // + // Rule 350: iteration_statement ::= upc_forall ( declaration expression ; ; ) statement + // + case 350: { action. consumeStatementUPCForallLoop(true, true, false, false); break; + } + + // + // Rule 351: iteration_statement ::= upc_forall ( declaration ; expression ; affinity ) statement + // + case 351: { action. consumeStatementUPCForallLoop(true, false, true, true); break; + } + + // + // Rule 352: iteration_statement ::= upc_forall ( declaration ; expression ; ) statement + // + case 352: { action. consumeStatementUPCForallLoop(true, false, true, false); break; + } + + // + // Rule 353: iteration_statement ::= upc_forall ( declaration ; ; affinity ) statement + // + case 353: { action. consumeStatementUPCForallLoop(true, false, false, true); break; + } + + // + // Rule 354: iteration_statement ::= upc_forall ( declaration ; ; ) statement + // + case 354: { action. consumeStatementUPCForallLoop(true, false, false, false); break; + } + + // + // Rule 356: affinity ::= continue + // + case 356: { 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/UPCSizeofExpressionParserprs.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParserprs.java new file mode 100644 index 00000000000..06762d0bdf5 --- /dev/null +++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParserprs.java @@ -0,0 +1,1217 @@ +/******************************************************************************* +* Copyright (c) 2006, 2008 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 UPCSizeofExpressionParserprs implements lpg.lpgjavaruntime.ParseTable, UPCSizeofExpressionParsersym { + + 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 + }; + }; + 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,3,1,1,1,4, + 4,3,3,2,2,8,1,0,1,1, + 1,2,2,2,2,2,2,2,2,2, + 1,4,1,3,3,3,1,3,3,1, + 3,3,1,3,3,3,3,1,3,3, + 1,3,1,3,1,3,1,3,1,3, + 1,5,1,3,3,3,3,3,3,3, + 3,3,3,3,1,1,2,1,0,1, + 3,1,1,1,1,1,1,1,1,3, + 3,2,2,4,1,2,1,1,1,2, + 5,7,5,1,0,7,5,9,8,3, + 2,2,2,3,2,4,2,2,2,2, + 2,1,1,1,1,2,1,2,2,2, + 1,2,2,1,2,2,1,2,2,1, + 2,2,1,3,1,3,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 5,5,6,6,2,2,2,1,0,1, + 2,4,2,1,1,1,3,1,1,2, + 3,6,7,1,0,1,3,1,3,1, + 1,1,1,1,1,3,1,1,1,1, + 1,3,1,2,2,1,5,3,1,3, + 5,1,3,1,3,2,4,3,5,4, + 6,6,3,5,1,1,2,3,4,1, + 2,1,3,1,1,3,2,1,1,1, + 1,2,1,2,3,1,1,1,3,1, + 2,2,2,3,4,5,1,5,1,1, + 3,3,4,1,1,2,3,2,3,2, + 1,0,1,2,1,1,1,1,1,2, + 4,3,6,2,4,1,1,1,1,1, + 2,2,2,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,-39,0,0,0, + 0,0,0,0,0,-72,0,0,0,0, + 0,0,0,0,0,0,-2,0,0,0, + 0,-4,-17,-19,-77,0,0,0,0,0, + -126,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-5,0,0,0,0,0,0, + 0,0,0,-6,0,0,0,0,0,0, + 0,0,0,0,0,0,-3,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-20,-21,0,-22, + -23,-24,0,-177,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-172,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-7,0,0,0,0,0,0, + -40,0,0,0,0,0,0,0,0,-25, + -26,-27,-51,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-28,-29,0,-52, + 0,0,0,0,0,0,0,0,-74,0, + 0,0,-75,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-135,-111,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-89,0, + -90,-78,-32,0,0,0,0,-192,0,0, + 0,0,0,0,0,0,-91,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + -8,0,0,0,0,0,0,0,0,0, + -9,0,0,0,0,0,0,0,0,0, + 0,0,0,-118,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-131,0,0,0,0,0, + 0,0,0,-92,0,0,0,0,0,0, + 0,0,0,0,0,-93,0,-30,0,0, + 0,0,0,0,0,0,-112,0,0,0, + 0,0,0,0,0,0,0,-59,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-60,0,0, + 0,0,0,0,0,0,-130,0,0,0, + 0,0,0,0,0,0,0,-61,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-62,0,0, + 0,0,0,0,0,0,-138,0,0,0, + 0,0,0,0,0,0,0,-63,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-64,0,0, + 0,0,0,0,0,0,-153,0,0,0, + 0,0,0,0,0,0,0,-65,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-66,0,0, + 0,0,0,0,0,0,-179,0,0,0, + 0,0,0,0,0,0,0,-67,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-68,0,0, + 0,0,0,0,0,0,-94,0,0,0, + 0,0,0,0,0,0,0,-69,0,0, + 0,0,0,0,0,0,-147,0,0,0, + 0,0,0,0,0,0,0,-151,0,0, + 0,0,0,0,0,0,-95,0,0,0, + 0,0,0,0,0,0,0,-152,0,0, + 0,0,0,0,0,0,-146,0,0,0, + 0,0,0,0,0,0,0,-175,0,0, + 0,0,0,0,0,0,-83,0,0,0, + 0,0,0,0,0,0,-189,0,0,0, + 0,0,0,0,0,-167,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-49,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,-199, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-96,-97, + -33,-158,-191,0,-50,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,0,-125,0,0,0,0,0,0,0, + 0,-98,0,0,0,0,0,0,0,0, + 0,-134,0,-99,-84,0,0,-100,-128,-101, + 0,-57,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-155,-117,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-162, + 0,-41,0,0,0,0,0,0,0,0, + 0,0,-180,0,-196,-86,-36,-159,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-15,0,0,0,0,0, + 0,0,-88,0,0,-37,0,-58,0,0, + 0,0,0,0,0,0,-174,0,0,0, + 0,0,0,0,0,0,0,0,-194,0, + 0,-81,0,0,0,0,-54,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-184,0,0,0,0,0,0,0,-102, + -103,0,0,0,0,0,0,0,0,-55, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-82,-186,-76,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-208, + -108,-70,-183,-71,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-115,-133,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-104,0,0,-190,-79,-166,0,0,-53, + 0,0,0,0,0,0,0,0,-105,0, + 0,-110,-106,-120,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-45,0,0,0,0,0,0,0,0, + -80,0,-10,0,0,0,0,0,0,0, + -210,0,-46,0,0,0,0,0,0,0, + 0,0,0,-47,0,0,0,0,0,0, + 0,0,-85,0,-48,0,0,0,0,0, + 0,0,0,-201,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-107,-38,-122, + -123,-127,0,0,0,0,-87,0,0,0, + 0,-114,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-140,0,0,0, + 0,0,0,-119,0,0,0,0,0,0, + -132,-121,0,0,0,0,-139,0,0,0, + 0,0,0,-154,0,0,0,0,0,0, + 0,0,0,0,0,-124,0,-16,0,0, + 0,0,0,0,-11,0,0,0,0,0, + 0,-12,0,0,0,0,0,0,-13,0, + 0,0,0,0,0,-14,0,0,0,0, + 0,0,-18,-31,-42,0,0,0,0,0, + 0,0,0,-43,0,0,0,0,0,0, + -44,0,0,0,0,0,0,-193,0,0, + -142,-176,-145,-148,-163,-136,0,0,-113,0, + -116,0,0,0,0,0,-129,0,-168,0, + 0,0,-73,0,0,0,0,0,0,0, + 0,0,0,-141,-169,-171,0,0,0,0, + 0,-160,0,0,0,-34,-143,-1,-161,-173, + -204,-165,-156,-181,0,0,0,0,-200,0, + 0,0,0,0,-211,0,0,0,0,0, + 0,0,0,0,0,-109,0,0,0,0, + 0,0,0,0,-182,0,-157,0,-197,0, + 0,0,0,0,0,0,0,0,0,-185, + 0,0,0,0,0,0,0,-137,0,0, + 0,-187,-144,0,0,-170,0,-198,-188,0, + 0,0,0,0,-202,0,0,0,-164,-149, + 0,0,0,0,-150,0,0,0,0,0, + 0,0,-206,0,0,0,0,0,-178,0, + 0,0,0,0,0,0,0,0,0,0, + -203,0,0,-205,-35,-56,0,0,0,0, + 0,0,0,0,0,0,0,-207,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0 + }; + }; + 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[] = { + 85,9,20,20,25,25,28,28,69,69, + 1,1,1,1,2,2,2,3,3,4, + 4,4,4,4,4,4,4,53,53,70, + 70,5,5,5,5,5,5,5,5,5, + 5,6,6,7,7,7,7,8,8,8, + 10,10,10,11,11,11,11,11,12,12, + 12,13,13,14,14,15,15,16,16,17, + 17,18,18,19,19,19,19,19,19,19, + 19,19,19,19,19,96,48,42,86,86, + 73,73,43,97,97,97,97,97,97,97, + 98,98,98,99,99,104,104,105,105,100, + 100,101,101,101,107,107,102,102,102,102, + 103,103,103,103,103,106,106,26,26,26, + 26,26,30,30,30,79,79,74,74,74, + 74,75,75,75,76,76,76,77,77,77, + 78,78,78,108,108,109,109,110,31,33, + 33,33,33,33,54,56,56,56,56,56, + 56,56,56,56,56,56,56,66,66,29, + 29,63,63,63,63,64,64,64,57,57, + 58,58,50,50,50,34,87,87,80,81, + 81,81,65,65,82,82,83,83,67,67, + 21,22,22,22,32,49,49,35,35,35, + 35,38,38,40,36,36,37,41,41,111, + 111,39,112,112,88,88,27,27,27,27, + 27,27,27,27,27,84,51,51,51,51, + 60,60,59,59,59,61,61,52,52,89, + 89,71,71,62,62,62,44,44,44,45, + 46,46,46,47,47,47,47,55,55,72, + 72,72,72,68,90,91,91,92,92,93, + 93,113,113,114,114,115,115,115,115,117, + 117,116,116,116,118,118,85,85,1,1, + 1,5,5,5,21,21,23,23,24,24, + 94,94,94,97,119,119,119,119,119,119, + 119,102,102,102,102,102,102,102,102,102, + 102,102,102,102,102,102,102,102,102,102, + 102,102,102,102,102,120,120,1,14,19, + 15,383,538,43,457,384,982,460,458,462, + 461,521,520,537,522,73,90,230,133,210, + 314,315,353,920,70,38,20,135,132,134, + 158,710,14,19,15,383,538,43,457,384, + 927,460,458,462,461,521,520,537,522,73, + 277,137,271,164,823,14,19,15,383,313, + 141,144,147,150,823,14,19,15,383,312, + 382,1356,1242,1294,1433,1467,1213,786,14,19, + 15,383,538,43,457,384,279,460,458,462, + 461,521,520,537,522,73,90,483,305,280, + 68,223,333,967,710,14,19,15,383,538, + 43,457,384,927,460,458,462,461,521,520, + 537,522,73,277,470,14,19,15,383,538, + 43,457,384,927,460,458,462,461,521,520, + 537,522,73,277,823,14,19,15,383,311, + 382,786,14,19,15,383,41,43,617,279, + 14,296,105,786,14,19,15,383,41,43, + 457,384,280,460,458,1124,1185,166,228,281, + 786,14,19,15,383,41,43,457,384,441, + 460,1128,282,394,14,19,15,383,538,43, + 457,384,1599,460,458,462,461,521,520,537, + 522,73,707,236,340,860,14,19,15,383, + 538,43,457,384,1607,460,458,462,461,521, + 520,537,522,73,747,133,210,314,315,897, + 1666,919,114,141,135,132,134,158,748,14, + 19,15,383,538,43,457,384,803,460,458, + 462,461,521,520,537,522,73,277,137,272, + 164,823,14,19,15,383,40,141,144,147, + 150,786,14,19,15,383,41,39,1356,1242, + 1294,1433,1467,1213,597,14,19,15,383,41, + 43,457,384,283,460,458,462,461,521,520, + 537,522,92,23,322,432,14,19,15,383, + 538,43,457,384,941,460,458,462,461,521, + 520,537,522,73,827,237,143,787,786,14, + 19,15,383,538,43,457,384,982,460,458, + 462,461,521,520,537,522,73,91,786,14, + 19,15,383,538,43,457,384,238,460,458, + 462,461,521,520,537,522,73,84,786,14, + 19,15,383,538,43,457,384,982,460,458, + 462,461,521,520,537,522,73,83,786,14, + 19,15,383,538,43,457,384,240,460,458, + 462,461,521,520,537,522,73,82,786,14, + 19,15,383,538,43,457,384,982,460,458, + 462,461,521,520,537,522,73,81,786,14, + 19,15,383,538,43,457,384,320,460,458, + 462,461,521,520,537,522,73,80,786,14, + 19,15,383,538,43,457,384,982,460,458, + 462,461,521,520,537,522,73,79,786,14, + 19,15,383,538,43,457,384,239,460,458, + 462,461,521,520,537,522,73,78,786,14, + 19,15,383,538,43,457,384,982,460,458, + 462,461,521,520,537,522,73,77,786,14, + 19,15,383,538,43,457,384,241,460,458, + 462,461,521,520,537,522,73,76,786,14, + 19,15,383,538,43,457,384,198,460,458, + 462,461,521,520,537,522,73,75,786,14, + 19,15,383,538,43,457,384,898,460,458, + 462,461,521,520,537,522,73,74,786,14, + 19,15,383,538,43,457,384,241,460,458, + 462,461,521,520,537,522,73,867,786,14, + 19,15,383,538,43,457,384,880,460,458, + 462,461,521,520,537,522,73,1183,786,14, + 19,15,383,41,43,457,384,317,460,458, + 462,461,521,520,537,522,92,786,14,19, + 15,383,41,43,457,384,946,460,458,462, + 461,521,520,537,522,92,1494,1640,1592,285, + 1626,1588,786,14,19,15,383,41,43,457, + 1070,786,14,19,15,383,41,43,457,384, + 209,460,458,462,461,521,520,537,522,92, + 786,14,19,15,383,41,43,457,384,1709, + 460,458,462,461,521,520,537,522,92,287, + 753,141,441,946,1641,786,14,19,15,383, + 41,43,457,1112,786,14,19,15,383,41, + 43,457,384,200,460,458,462,461,521,520, + 537,522,92,786,14,19,15,383,41,43, + 457,384,791,460,458,462,461,521,520,537, + 522,72,510,1262,544,374,1751,201,412,531, + 469,1072,786,14,19,15,383,41,43,457, + 384,22,460,458,462,461,521,520,1369,270, + 250,210,314,315,1502,400,754,215,1643,218, + 1677,220,221,226,1675,1698,263,602,385,268, + 983,259,786,14,19,15,383,41,43,684, + 273,274,270,982,260,880,652,716,935,1725, + 215,1643,218,1677,220,221,226,574,182,263, + 602,385,268,242,1644,823,14,19,15,383, + 33,257,1613,340,1122,1526,716,1328,786,14, + 19,15,383,41,43,457,384,755,460,458, + 462,461,521,1373,133,210,314,315,1754,755, + 256,16,71,136,132,134,158,786,14,19, + 15,383,41,43,457,384,288,460,458,462, + 461,1270,565,133,210,314,315,138,290,164, + 342,415,143,132,134,158,142,145,148,151, + 786,14,19,15,383,41,43,457,384,270, + 460,458,462,1271,128,727,438,216,1643,218, + 1677,220,221,226,1715,1601,265,602,385,268, + 727,6,716,754,716,133,210,314,315,1715, + 391,273,1679,270,146,132,134,158,716,716, + 215,1643,218,1677,220,221,226,1458,228,21, + 263,602,385,268,1649,215,1643,218,1677,220, + 221,226,580,269,275,755,509,983,1328,1649, + 786,14,19,15,383,41,43,457,384,522, + 460,1130,356,376,6,196,198,133,210,314, + 315,1129,1708,1624,1609,181,140,132,134,158, + 197,198,786,14,19,15,383,41,43,457, + 384,439,696,786,14,19,15,383,41,38, + 139,677,164,786,14,19,15,383,41,43, + 457,384,207,907,786,14,19,15,383,41, + 43,457,384,185,947,786,14,19,15,383, + 41,43,457,384,480,1069,216,1643,218,1677, + 220,221,226,1715,133,210,314,315,162,603, + 6,6,634,149,132,134,158,242,549,1637, + 1703,1720,559,14,19,15,383,41,35,215, + 1643,218,1677,220,221,226,270,6,133,210, + 314,315,243,1644,572,316,1639,152,132,134, + 158,944,610,263,602,385,268,559,14,19, + 15,383,41,35,559,14,19,15,383,41, + 35,262,251,210,314,315,646,321,823,14, + 19,15,383,32,244,786,14,19,15,383, + 41,37,786,14,19,15,383,41,36,786, + 14,19,15,383,41,35,786,14,19,15, + 383,41,34,6,6,786,14,19,15,383, + 41,46,357,357,786,14,19,15,383,41, + 45,786,14,19,15,383,41,44,982,195, + 195,6,948,6,6,280,489,1459,1459,531, + 1642,840,1706,464,1295,86,86,531,287,373, + 574,1216,1216,672,14,19,15,383,41,42, + 250,210,314,315,55,957,983,1122,250,210, + 314,315,716,574,1187,1312,680,112,635,169, + 654,982,283,718,716,437,574,437,574,692, + 195,574,1666,255,26,257,1822,276,1595,1501, + 1329,289,1596,195,193,195,604,1501,195,222, + 225,1595,1822,1595,190,840,1595,171,88,912, + 86,1170,1719,675,574,286,306,190,574,190, + 983,938,190,270,1357,1719,1690,1719,508,1702, + 1719,1122,983,576,224,1122,576,574,980,983, + 265,602,385,268,1822,441,1822,1822,184,226, + 531,1822,1314,377,1122,956,1262,255,574,1822, + 183,255,1609,716,1329,1609,1596,202,1733,968, + 1596,250,210,314,315,195,251,210,314,315, + 255,983,1822,1595,983,6,6,1632,227,1596, + 251,210,314,315,437,437,1411,1768,715,191, + 206,1822,1822,206,1822,1822,1822,192,1822,203, + 1739,1822,278,1822,1822,1006,1625,1822,1073,1625, + 1822,1822,1822,231,1822,1822,1822,86,86,1822, + 1822,1822,1822,366,1352,1822,0,317,654,0, + 17,178,0,18,177,0,1,2045,0,1, + 2056,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,0,6,7,8,9, + 10,11,12,0,14,15,16,17,18,19, + 20,21,22,23,24,25,26,27,28,29, + 30,31,32,33,34,35,36,0,38,39, + 40,41,42,43,44,45,46,47,48,49, + 13,51,52,53,0,1,0,3,0,5, + 6,7,8,9,10,11,12,0,0,0, + 0,17,18,19,20,21,6,7,8,9, + 10,11,12,14,15,0,73,17,18,19, + 20,21,38,39,40,41,42,43,44,45, + 46,47,48,49,0,51,52,53,0,55, + 56,0,1,0,3,2,5,6,7,8, + 9,10,11,12,57,58,13,0,17,18, + 19,20,21,6,7,8,9,10,11,12, + 0,1,0,3,17,18,19,20,21,38, + 39,40,41,42,43,44,45,46,47,48, + 49,0,51,52,53,0,55,56,0,1, + 0,3,2,5,6,7,8,9,10,11, + 12,77,78,13,0,17,18,19,20,21, + 6,7,8,9,10,11,12,0,37,57, + 58,17,18,19,20,21,38,39,40,41, + 42,43,44,45,46,47,48,49,0,51, + 52,53,0,55,56,0,1,0,3,0, + 5,6,7,8,9,10,11,12,16,74, + 0,0,17,18,19,20,21,6,7,8, + 9,10,11,12,57,58,0,1,17,18, + 19,20,21,38,39,40,41,42,43,44, + 45,46,47,48,49,0,51,52,53,0, + 55,56,0,1,5,3,0,5,6,7, + 8,9,10,11,12,0,69,57,58,17, + 18,19,20,21,0,0,79,80,81,82, + 83,84,85,86,87,88,0,1,89,3, + 38,39,40,41,42,43,44,45,46,47, + 48,49,0,51,52,53,0,55,56,0, + 1,0,3,57,58,6,7,8,9,10, + 11,12,0,37,75,0,17,18,19,20, + 21,6,7,8,9,10,11,72,64,65, + 66,67,0,0,1,0,3,38,39,40, + 41,42,43,44,45,46,47,48,49,0, + 51,52,53,0,1,2,3,4,5,0, + 1,2,70,71,5,12,54,14,15,16, + 37,0,13,72,0,22,23,24,25,26, + 27,28,29,30,31,32,33,34,35,36, + 16,0,1,2,3,4,5,0,0,2, + 0,69,5,12,4,14,15,16,73,50, + 13,13,59,22,23,24,25,26,27,28, + 29,30,31,32,33,34,35,36,0,0, + 1,2,3,4,5,64,65,66,67,0, + 1,2,0,14,15,16,4,50,0,0, + 59,22,23,24,25,26,27,28,29,30, + 31,32,33,34,35,36,37,0,0,0, + 1,2,0,4,6,7,8,9,10,11, + 12,0,13,0,55,17,18,19,20,21, + 0,0,64,65,66,67,6,7,8,9, + 10,11,54,0,62,63,38,39,40,41, + 42,43,44,45,46,47,48,49,0,1, + 2,3,4,5,0,1,2,60,4,0, + 0,0,14,15,16,0,1,13,3,0, + 22,23,24,25,26,27,28,29,30,31, + 32,33,34,35,36,74,0,1,2,3, + 4,5,0,0,2,2,4,4,37,0, + 14,15,16,70,71,13,13,59,22,23, + 24,25,26,27,28,29,30,31,32,33, + 34,35,36,0,0,1,2,3,4,6, + 7,8,9,10,11,0,37,68,14,15, + 16,0,1,0,3,59,22,23,24,25, + 26,27,28,29,30,31,32,33,34,35, + 36,0,1,2,3,4,0,1,2,0, + 4,0,37,0,5,14,15,16,37,0, + 56,0,0,22,23,24,25,26,27,28, + 29,30,31,32,33,34,35,36,37,0, + 1,2,3,4,0,0,0,0,0,5, + 5,0,69,14,15,16,0,1,2,50, + 13,22,23,24,25,26,27,28,29,30, + 31,32,33,34,35,36,37,0,1,2, + 3,4,0,0,0,1,0,3,5,68, + 0,14,15,16,50,50,14,15,54,22, + 23,24,25,26,27,28,29,30,31,32, + 33,34,35,36,37,0,1,2,3,4, + 0,0,0,1,68,3,0,0,0,14, + 15,16,0,50,14,15,4,22,23,24, + 25,26,27,28,29,30,31,32,33,34, + 35,36,0,1,2,3,4,0,0,0, + 0,0,0,0,0,0,14,15,16,0, + 0,0,0,4,22,23,24,25,26,27, + 28,29,30,31,32,33,34,35,36,0, + 1,2,3,4,62,63,0,0,0,0, + 0,0,0,14,15,16,0,0,0,0, + 0,22,23,24,25,26,27,28,29,30, + 31,32,33,34,35,36,0,0,2,60, + 4,5,6,7,8,9,10,11,12,13, + 13,0,1,17,18,19,20,21,0,0, + 2,2,4,5,6,7,8,9,10,11, + 12,13,13,54,0,17,18,19,20,21, + 0,22,23,0,4,0,50,0,0,6, + 7,8,9,10,11,0,0,0,61,0, + 13,6,7,8,9,10,11,0,50,0, + 0,60,0,6,7,8,9,10,11,0, + 61,0,0,0,5,0,5,5,0,0, + 0,0,0,0,60,76,0,0,0,54, + 0,0,62,63,0,0,0,0,61,0, + 54,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,54,0,0,0,55,0,0, + 59,0,0,0,0,0,0,0,0,0, + 0,0,0,0,75,0,0,0,0,0, + 0,0,0,0,0,0,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, + 1822,599,1563,601,1549,1,2033,2034,2035,2140, + 1401,2141,1983,67,1542,1535,1556,1984,1982,2036, + 1985,1981,1528,1205,631,1832,1833,1834,1835,1403, + 641,2130,2131,2132,504,424,414,267,1988,1993, + 1992,1990,1991,1989,1994,1995,1987,1996,1997,1998, + 553,1186,1125,987,1822,1,1822,1,1822,189, + 1,1,1,1,1,1,1,53,1822,50, + 128,1,1,1,1,1,2033,2034,2035,2140, + 1401,2141,1983,1172,511,1822,1247,1984,1982,2036, + 1985,1981,1,1,1,1,1,1,1,1, + 1,1,1,1,71,1,1,1,1822,189, + 2016,1822,1,266,1,1156,189,1,1,1, + 1,1,1,1,1022,1075,553,129,1,1, + 1,1,1,2033,2034,2035,2140,1401,2141,1983, + 1822,1851,57,1852,1984,1982,2036,1985,1981,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1822,1,1,1,69,189,2016,1822,1, + 219,1,1313,189,1,1,1,1,1,1, + 1,1132,1756,553,130,1,1,1,1,1, + 2033,2034,2035,2140,1401,2141,1983,56,1311,1022, + 1075,1984,1982,2036,1985,1981,1,1,1,1, + 1,1,1,1,1,1,1,1,1822,1, + 1,1,63,189,2016,1822,1,41,1,1822, + 188,1,1,1,1,1,1,1,523,1218, + 55,131,1,1,1,1,1,2033,2034,2035, + 2140,1401,2141,1983,1022,1075,1822,2057,1984,1982, + 2036,1985,1981,1,1,1,1,1,1,1, + 1,1,1,1,1,1822,1,1,1,1, + 188,2016,1822,1,1831,1,54,189,1,1, + 1,1,1,1,1,65,918,1022,1075,1, + 1,1,1,1,58,1822,898,878,858,838, + 818,778,798,758,738,718,1822,2001,1806,2002, + 1,1,1,1,1,1,1,1,1,1, + 1,1,61,1,1,1,1822,189,2016,1822, + 2000,66,1999,1022,1075,2033,2034,2035,2140,1401, + 2141,1983,87,1374,1830,246,1984,1982,2036,1985, + 1981,1,1,1,1,1,1,1280,1435,1424, + 1413,1392,208,1822,2001,68,2002,1988,1993,1992, + 1990,1991,1989,1994,1995,1987,1996,1997,1998,1822, + 1186,1125,987,1,1839,1563,1840,1472,1825,1, + 1816,1155,1360,540,1827,575,698,1542,1535,1556, + 1460,60,553,1280,64,1528,1205,631,1832,1833, + 1834,1835,1403,641,2130,2131,2132,504,424,414, + 523,1822,1839,1563,1840,1514,1825,1,317,1296, + 1822,997,1827,958,1372,1542,1535,1556,1247,1826, + 553,1807,1824,1528,1205,631,1832,1833,1834,1835, + 1403,641,2130,2131,2132,504,424,414,59,1, + 1839,1563,1840,1549,27,1435,1424,1413,1392,1, + 2045,1444,47,1542,1535,1556,1581,1826,252,1822, + 1824,1528,1205,631,1832,1833,1834,1835,1403,641, + 2130,2131,2132,504,424,414,1594,1,127,258, + 2045,1155,1822,1,2033,2034,2035,2140,1401,2141, + 1983,70,553,1822,27,1984,1982,2036,1985,1981, + 1822,1822,1435,1424,1413,1392,2033,2034,2035,2140, + 1401,2141,1188,62,1574,1565,1988,1993,1992,1990, + 1991,1989,1994,1995,1987,1996,1997,1998,1822,1839, + 1563,1840,1549,1825,264,2045,1155,2076,1462,1822, + 1822,186,1542,1535,1556,205,2001,553,2002,1822, + 1528,1205,631,1832,1833,1834,1835,1403,641,2130, + 2131,2132,504,424,414,1218,1822,1839,1563,1840, + 1507,1825,261,264,1296,1296,1,1462,1487,185, + 1542,1535,1556,1360,540,553,553,1824,1528,1205, + 631,1832,1833,1834,1835,1403,641,2130,2131,2132, + 504,424,414,247,1822,1,1,1,1,1, + 1,1,1,1,1,187,1591,1103,1,1, + 1,1822,2001,1822,2002,1824,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1822,1839,1563,1840,1549,1822,2045,1444,1, + 1462,1822,1593,1822,89,1542,1535,1556,1461,1822, + 2129,199,1822,1528,1205,631,1832,1833,1834,1835, + 1403,641,2130,2131,2132,504,424,414,1311,1, + 1839,1563,1840,1549,1822,1822,1822,217,1822,1827, + 1827,1822,608,1542,1535,1556,1,2045,1444,89, + 553,1528,1205,631,1832,1833,1834,1835,1403,641, + 2130,2131,2132,504,424,414,1594,1822,1839,1563, + 1840,1549,52,1,1822,2001,1822,2002,1827,1084, + 1822,1542,1535,1556,1826,1826,1172,511,1655,1528, + 1205,631,1832,1833,1834,1835,1403,641,2130,2131, + 2132,504,424,414,1594,1822,1839,1563,1840,1549, + 51,1822,204,1355,1050,1355,1822,1822,1822,1542, + 1535,1556,49,1826,1172,511,1581,1528,1205,631, + 1832,1833,1834,1835,1403,641,2130,2131,2132,504, + 424,414,1822,1839,1564,1840,1549,1822,1822,1822, + 1822,1822,1822,1822,1822,1822,1542,1535,1556,1, + 1822,1822,1822,1372,1528,1205,631,1832,1833,1834, + 1835,1403,641,2130,2131,2132,504,424,414,1, + 1839,1563,1840,1549,1574,1565,1822,1822,1822,1822, + 1822,1822,1822,1542,1535,1556,1822,1822,1822,28, + 1822,1528,1205,631,1832,1833,1834,1835,1403,641, + 2130,2131,2132,504,424,414,17,1822,1810,2076, + 1810,1810,178,178,178,178,178,178,178,1810, + 978,1,1819,178,178,178,178,178,18,31, + 1813,1636,1813,1813,177,177,177,177,177,177, + 177,1813,1755,484,1,177,177,177,177,177, + 48,1846,1847,245,1581,28,1810,284,1822,2033, + 2034,2035,2140,1401,2141,248,204,1822,1227,1822, + 1031,2033,2034,2035,2140,1401,2141,249,1813,1822, + 1822,2076,1822,2033,2034,2035,2140,1401,2141,1822, + 1071,1822,1822,1822,1831,1822,1825,1829,1822,1822, + 1822,1822,1822,1822,2075,603,1822,1822,1822,1849, + 1822,1822,1574,1565,1822,1822,1822,1822,1239,1822, + 2971,1822,1822,1822,1822,1822,1822,1822,1822,1822, + 1822,1822,1822,1822,1822,1822,1822,1822,1822,1822, + 1822,1822,1822,1310,1822,1822,1822,1828,1822,1822, + 1824,1822,1822,1822,1822,1822,1822,1822,1822,1822, + 1822,1822,1822,1822,1830 + }; + }; + 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, + 476,1,113,41,113,113,113,113,113,113, + 113,113,113,113,113,113,3,324,51,48, + 55,53,61,59,63,62,65,64,10,113, + 324,247,247,451,113,185,185,278,324,113, + 113,113,113,113,113,113,113,113,113,113, + 113,113,113,113,113,113,113,113,113,113, + 113,113,113,113,113,113,113,113,113,185, + 185,45,80,282,104,214,183,182,250,317, + 262,262,100,100,262,100,262,344,136,136, + 48,48,53,53,53,53,51,51,59,55, + 55,62,61,401,64,63,102,78,278,270, + 107,45,367,189,185,414,217,189,380,284, + 380,284,374,380,113,78,270,367,367,45, + 188,104,185,276,344,184,219,45,189,284, + 284,284,284,374,374,376,404,78,367,270, + 113,113,45,189,214,396,395,282,219,185, + 284,314,407,284,284,314,376,446,376,374, + 314,76,449,247,113,403,78,270,45,45, + 185,414,217,276,314,409,314,314,113,247, + 376,80,45,247,113,376,219,72,113,71, + 132,282,314,45,314,185,184,409,113,132, + 248 + }; + }; + 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, + 89,0,75,13,2,61,76,22,23,16, + 4,14,15,62,63,57,58,64,65,66, + 67,70,71,72,73,74,77,78,55,69, + 79,80,81,82,83,85,84,86,87,88, + 68,50,89,54,59,5,0,4,62,63, + 14,15,58,57,64,65,66,67,70,71, + 16,72,73,74,59,50,55,89,77,78, + 68,75,5,54,0,5,55,13,61,22, + 23,16,4,14,15,29,30,24,34,35, + 36,2,25,26,27,28,31,32,33,1, + 3,37,0,59,5,12,6,7,8,9, + 10,11,25,26,27,28,31,32,33,3, + 22,23,16,14,15,29,30,24,34,35, + 36,4,2,1,0,7,12,21,8,20, + 19,18,6,17,9,10,11,61,76,22, + 23,16,14,15,62,63,57,58,64,65, + 66,67,70,71,72,73,74,77,78,69, + 79,80,81,82,83,84,85,86,87,88, + 4,2,13,54,50,5,0,12,59,5, + 22,23,16,4,14,15,29,30,24,34, + 35,36,2,1,3,25,26,27,28,31, + 32,33,0,4,2,13,50,5,17,38, + 6,39,51,18,40,19,41,42,20,7, + 43,44,12,52,21,53,45,46,8,47, + 48,49,9,10,11,60,3,1,0,46, + 38,43,41,42,40,39,44,45,47,48, + 49,68,75,21,18,12,17,20,19,6, + 7,8,9,10,11,54,1,5,50,2, + 13,4,0,17,38,6,39,51,18,40, + 19,41,42,20,7,43,44,12,52,21, + 53,45,46,8,47,48,49,1,3,9, + 10,11,56,55,5,0,5,68,54,59, + 50,75,13,24,25,26,27,28,2,22, + 23,16,4,14,15,29,30,31,32,33, + 34,35,36,3,1,51,52,53,46,38, + 43,41,42,40,39,44,45,47,48,49, + 21,18,12,17,20,19,6,7,8,10, + 9,11,0,1,3,5,55,54,0,17, + 6,18,19,20,7,12,21,8,1,4, + 9,10,11,37,2,5,54,50,75,13, + 68,0,69,13,61,0,75,5,4,1, + 2,68,0,17,38,6,39,51,18,40, + 19,41,42,20,7,43,44,12,52,21, + 53,45,46,8,47,48,49,1,3,9, + 10,11,60,4,0,5,54,55,69,0, + 5,50,24,25,26,27,28,1,3,2, + 22,23,16,4,14,15,29,30,31,32, + 33,34,35,36,0,24,25,26,27,28, + 1,3,2,22,23,16,4,14,15,29, + 30,31,32,33,34,35,36,56,0 + }; + }; + public final static byte asr[] = Asr.asr; + public final int asr(int index) { return asr[index]; } + + public interface Nasb { + public final static byte nasb[] = {0, + 81,8,13,8,13,13,13,13,13,13, + 13,13,13,13,13,13,8,59,8,8, + 8,8,8,8,8,8,8,8,8,13, + 59,19,19,78,60,35,35,51,1,13, + 13,13,13,13,13,13,13,13,13,13, + 13,13,13,13,13,60,13,13,13,13, + 13,13,13,13,13,13,13,13,13,35, + 35,17,13,72,15,50,9,9,43,55, + 44,44,25,25,44,25,44,39,8,8, + 8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,86,52,86, + 12,17,68,16,35,70,34,16,8,86, + 8,86,86,8,13,12,86,68,68,17, + 16,57,35,28,2,8,85,17,16,86, + 74,86,74,25,86,23,21,86,68,57, + 13,13,17,16,27,9,9,72,85,35, + 74,37,65,88,74,37,23,8,8,25, + 37,11,8,25,13,63,12,57,17,17, + 35,70,34,29,37,46,37,37,13,25, + 23,13,17,25,13,23,84,66,13,8, + 46,72,37,17,37,35,35,46,13,31, + 8 + }; + }; + public final static byte nasb[] = Nasb.nasb; + public final int nasb(int index) { return nasb[index]; } + + public interface Nasr { + public final static char nasr[] = {0, + 4,79,78,77,76,75,74,0,27,0, + 68,9,4,0,9,4,20,0,70,0, + 91,0,53,0,29,0,25,9,46,45, + 38,36,0,9,25,0,28,0,63,64, + 65,66,54,30,0,9,38,36,0,25, + 9,46,45,0,94,0,21,0,34,9, + 48,0,93,0,9,69,0,60,0,9, + 26,51,0,58,9,34,0,9,86,0, + 9,85,0,88,26,9,0,9,34,50, + 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, + 85,2,86,9,87,48,64,76,96,97, + 98,69,1,10,11,8,44,55,60,63, + 72,6,7,68,81,82,83,84,12,13, + 93,94,95,100,101,102,3,47,52,56, + 61,62,66,67,74,75,78,79,80,90, + 54,70,73,42,91,107,16,17,89,30, + 4,14,15,18,19,20,21,29,31,22, + 23,24,25,26,92,5,27,28,32,33, + 34,35,36,37,38,39,40,41,108,45, + 46,49,50,51,53,57,58,59,65,71, + 77,88,99,103,104,105,106 + }; + }; + 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, + 0,0,0,115,119,120,121,122,0,123, + 124,125,126,127,128,129,130,131,132,110, + 143,0,0,0,111,136,163,112,135,142, + 0,0,0,154,159,161,0,162,0,0, + 0,0,134,172,173,174,0,114,151,153, + 160,169,0,145,150,0,0,152,164,167, + 168,171,146,147,148,149,158,175,113,116, + 117,118,133,137,138,139,140,141,144,156, + 0,0,157,166,109,0,155,165,170,176, + 177,0,178,179,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0 + }; + }; + public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex; + public final int nonterminalIndex(int index) { return nonterminalIndex[index]; } + + public interface ScopePrefix { + public final static char scopePrefix[] = { + 198,106,45,55,113,133,139,176,12,19, + 73,91,145,150,61,26,69,38,123,213, + 217,38,38,185,38,1,1,1,30,33, + 78,101,33,221,6,127,192,167,192,119, + 155,155,155,155,155,81,81,81 + }; + }; + public final static char scopePrefix[] = ScopePrefix.scopePrefix; + public final int scopePrefix(int index) { return scopePrefix[index]; } + + public interface ScopeSuffix { + public final static char scopeSuffix[] = { + 17,17,4,4,17,17,17,182,17,24, + 4,24,17,17,66,24,4,4,121,24, + 4,42,66,189,51,4,4,4,24,36, + 4,24,104,24,9,130,195,170,206,121, + 157,159,161,163,165,88,83,96 + }; + }; + 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,65,27,27,65,63,63,101,55,47, + 27,41,63,63,27,47,27,27,50,4, + 4,27,27,18,27,94,93,92,45,62, + 27,38,49,2,68,50,6,102,4,50, + 78,77,76,75,74,41,39,41 + }; + }; + public final static char scopeLhs[] = ScopeLhs.scopeLhs; + public final int scopeLhs(int index) { return scopeLhs[index]; } + + public interface ScopeLa { + public final static byte scopeLa[] = { + 55,55,59,59,55,55,55,95,55,50, + 59,50,55,55,25,50,59,59,75,50, + 59,4,25,68,12,59,59,59,50,2, + 59,50,1,50,69,1,50,101,50,75, + 3,51,52,52,46,2,2,2 + }; + }; + public final static byte scopeLa[] = ScopeLa.scopeLa; + public final int scopeLa(int index) { return scopeLa[index]; } + + public interface ScopeStateSet { + public final static byte scopeStateSet[] = { + 36,21,25,25,21,21,21,-1,96,29, + 25,11,21,21,25,29,25,25,5,36, + 36,25,25,70,25,19,1,3,29,31, + 25,11,13,36,97,5,42,-1,36,5, + 22,22,22,22,22,11,11,11 + }; + }; + public final static byte scopeStateSet[] = ScopeStateSet.scopeStateSet; + public final int scopeStateSet(int index) { return scopeStateSet[index]; } + + public interface ScopeRhs { + public final static char scopeRhs[] = {0, + 150,13,0,110,0,197,116,0,31,150, + 0,160,179,116,37,0,112,0,166,116, + 2,152,0,111,0,166,116,2,0,169, + 2,0,158,116,0,172,0,191,116,13, + 0,9,110,0,126,12,191,116,13,0, + 69,132,110,0,126,191,116,12,13,0, + 191,116,12,13,0,132,110,0,126,12, + 13,0,126,191,116,13,0,126,13,0, + 145,0,2,0,165,111,0,2,111,0, + 166,116,2,145,0,2,0,164,111,0, + 156,2,0,159,0,160,189,116,37,136, + 51,0,160,189,116,37,51,0,141,0, + 113,0,194,116,141,0,116,141,0,155, + 113,0,164,116,37,136,53,0,164,116, + 37,136,52,0,164,116,37,53,0,164, + 116,37,52,0,186,0,149,0,148,0, + 147,0,146,0,145,0,204,94,0,77, + 2,114,111,113,0,204,132,155,2,98, + 0,53,0,0,155,78,124,0,29,131, + 0,178,2,0,111,120,0,160,179,116, + 37,132,178,2,0,111,3,0,118,0, + 112,0,193,2,111,0,155,13,111,0, + 155,2,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, + 1592,0,927,0,1642,1719,1639,1637,1624,0, + 1411,1262,1310,1444,1295,1155,1122,0,1401,0, + 1213,574,357,0,1677,1643,602,385,1262,1666, + 1155,1122,1296,1459,0,1528,1205,631,504,424, + 414,1514,1507,1472,1613,1218,1132,1280,1247,1360, + 540,523,1075,1022,1435,1424,1413,1392,1581,1574, + 1565,1172,511,1556,1549,1542,1535,1403,641,1084, + 1050,1031,997,978,958,938,675,1103,654,575, + 553,918,898,878,858,838,818,798,778,758, + 738,718,357,698,437,608,464,484,391,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,192,116,180,36,35,34,24,30,29, + 15,14,4,16,23,22,111,2,115,114, + 118,117,120,119,122,121,124,123,112,54, + 2,76,61,2,13,178,155,141,116,15, + 14,63,62,4,67,66,65,64,57,58, + 16,71,70,73,72,78,77,74,88,87, + 86,84,85,83,82,81,80,79,69,178, + 193,155,132,116,13,2,153,152,181,10, + 182,183,53,52,184,51,185,186,1,3, + 114,114,117,117,117,117,115,115,119,118, + 118,121,120,155,123,122,132,37,158,4, + 12,126,116,4,169,116,2,13,136,37, + 136,37,37,136,68,116,4,116,116,126, + 191,167,166,133,116,168,116,150,4,37, + 116,37,116,116,37,179,116,37,116,167, + 191,12,126,4,2,143,145,116,54,166, + 116,164,141,165,116,164,189,136,190,116, + 160,54,197,61,13,198,116,167,126,126, + 156,116,2,158,164,116,164,160,69,54, + 189,69,150,61,13,179,116,194,68,156, + 2,116,160,150,160,166,195,54,68,158, + 54 + }; + }; + public final static char inSymb[] = InSymb.inSymb; + public final int inSymb(int index) { return inSymb[index]; } + + public interface Name { + public final static String name[] = { + "", + "[", + "(", + "{", + ".", + "->", + "++", + "--", + "&", + "*", + "+", + "-", + "~", + "!", + "/", + "%", + ">>", + "<<", + "<", + ">", + "<=", + ">=", + "==", + "!=", + "^", + "|", + "&&", + "||", + "?", + ":", + "...", + "=", + "*=", + "/=", + "%=", + "+=", + "-=", + ">>=", + "<<=", + "&=", + "^=", + "|=", + ",", + "$empty", + "auto", + "break", + "case", + "char", + "const", + "continue", + "default", + "do", + "double", + "else", + "enum", + "extern", + "float", + "for", + "goto", + "if", + "inline", + "int", + "long", + "register", + "restrict", + "return", + "short", + "signed", + "sizeof", + "static", + "struct", + "switch", + "typedef", + "union", + "unsigned", + "void", + "volatile", + "while", + "_Bool", + "_Complex", + "_Imaginary", + "integer", + "floating", + "charconst", + "stringlit", + "identifier", + "Completion", + "EndOfCompletion", + "Invalid", + "RightBracket", + "RightParen", + "RightBrace", + "SemiColon", + "MYTHREAD", + "THREADS", + "UPC_MAX_BLOCKSIZE", + "relaxed", + "shared", + "strict", + "upc_barrier", + "upc_localsizeof", + "upc_blocksizeof", + "upc_elemsizeof", + "upc_notify", + "upc_fence", + "upc_wait", + "upc_forall", + "ERROR_TOKEN", + "EOF_TOKEN", + "no_sizeof_type_name_start", + "]", + ")", + "}", + ";", + "expression", + "postfix_expression", + "member_name", + "type_name", + "initializer_list", + "unary_expression", + "cast_expression", + "multiplicative_expression", + "additive_expression", + "shift_expression", + "relational_expression", + "equality_expression", + "AND_expression", + "exclusive_OR_expression", + "inclusive_OR_expression", + "logical_AND_expression", + "logical_OR_expression", + "conditional_expression", + "assignment_expression", + "expression_list_actual", + "constant_expression", + "identifier_or_typedefname", + "declaration_specifiers", + "simple_declaration_specifiers", + "struct_or_union_declaration_sp" + + "ecifiers", + "elaborated_declaration_specifi" + + "ers", + "enum_declaration_specifiers", + "typdef_name_declaration_specif" + + "iers", + "no_type_declaration_specifier", + "type_qualifier", + "no_type_declaration_specifiers", + "simple_type_specifier", + "struct_or_union_specifier", + "elaborated_specifier", + "enum_specifier", + "typedef_name_in_declspec", + "initializer", + "declarator", + "struct_declaration_list", + "struct_declaration", + "specifier_qualifier_list", + "struct_declarator_list", + "complete_struct_declarator", + "enumerator_list", + "enumerator", + "direct_declarator", + "pointer_seq", + "array_direct_declarator", + "basic_direct_declarator", + "array_modifier", + "parameter_type_list", + "identifier_list", + "array_modifier_type_qualifiers", + "type_qualifier_list", + "parameter_list", + "parameter_declaration", + "complete_parameter_declarator", + "abstract_declarator", + "direct_abstract_declarator", + "basic_direct_abstract_declarat" + + "or", + "array_direct_abstract_declarat" + + "or", + "designated_initializer", + "designation", + "designator_list", + "designator", + "layout_qualifier" + }; + }; + public final static String name[] = Name.name; + public final String name(int index) { return name[index]; } + + public final static int + ERROR_SYMBOL = 56, + SCOPE_UBOUND = 47, + SCOPE_SIZE = 48, + 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 = 211, + NT_OFFSET = 107, + LA_STATE_OFFSET = 2178, + MAX_LA = 2, + NUM_RULES = 356, + NUM_NONTERMINALS = 120, + NUM_SYMBOLS = 227, + SEGMENT_SIZE = 8192, + START_STATE = 1638, + IDENTIFIER_SYMBOL = 0, + EOFT_SYMBOL = 89, + EOLT_SYMBOL = 89, + ACCEPT_ACTION = 1806, + ERROR_ACTION = 1822; + + 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/UPCSizeofExpressionParsersym.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParsersym.java new file mode 100644 index 00000000000..62f3c15c294 --- /dev/null +++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCSizeofExpressionParsersym.java @@ -0,0 +1,238 @@ +/******************************************************************************* +* Copyright (c) 2006, 2008 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 UPCSizeofExpressionParsersym { + public final static int + TK_auto = 17, + TK_break = 90, + TK_case = 91, + TK_char = 38, + TK_const = 6, + TK_continue = 92, + TK_default = 93, + TK_do = 94, + TK_double = 39, + TK_else = 95, + TK_enum = 51, + TK_extern = 18, + TK_float = 40, + TK_for = 96, + TK_goto = 97, + TK_if = 98, + TK_inline = 19, + TK_int = 41, + TK_long = 42, + TK_register = 20, + TK_restrict = 7, + TK_return = 99, + TK_short = 43, + TK_signed = 44, + TK_sizeof = 24, + TK_static = 12, + TK_struct = 52, + TK_switch = 100, + TK_typedef = 21, + TK_union = 53, + TK_unsigned = 45, + TK_void = 46, + TK_volatile = 8, + TK_while = 101, + TK__Bool = 47, + TK__Complex = 48, + TK__Imaginary = 49, + TK_integer = 25, + TK_floating = 26, + TK_charconst = 27, + TK_stringlit = 28, + TK_identifier = 1, + TK_Completion = 3, + TK_EndOfCompletion = 5, + TK_Invalid = 102, + TK_LeftBracket = 13, + TK_LeftParen = 2, + TK_LeftBrace = 37, + TK_Dot = 61, + TK_Arrow = 76, + TK_PlusPlus = 22, + TK_MinusMinus = 23, + TK_And = 16, + TK_Star = 4, + TK_Plus = 14, + TK_Minus = 15, + TK_Tilde = 29, + TK_Bang = 30, + TK_Slash = 62, + TK_Percent = 63, + TK_RightShift = 57, + TK_LeftShift = 58, + TK_LT = 64, + TK_GT = 65, + TK_LE = 66, + TK_GE = 67, + TK_EQ = 70, + TK_NE = 71, + TK_Caret = 72, + TK_Or = 73, + TK_AndAnd = 74, + TK_OrOr = 77, + TK_Question = 78, + TK_Colon = 68, + TK_DotDotDot = 60, + TK_Assign = 69, + TK_StarAssign = 79, + TK_SlashAssign = 80, + TK_PercentAssign = 81, + TK_PlusAssign = 82, + TK_MinusAssign = 83, + TK_RightShiftAssign = 84, + TK_LeftShiftAssign = 85, + TK_AndAssign = 86, + TK_CaretAssign = 87, + TK_OrAssign = 88, + TK_Comma = 54, + TK_RightBracket = 59, + TK_RightParen = 50, + TK_RightBrace = 55, + TK_SemiColon = 75, + TK_MYTHREAD = 31, + TK_THREADS = 32, + TK_UPC_MAX_BLOCKSIZE = 33, + TK_relaxed = 9, + TK_shared = 10, + TK_strict = 11, + TK_upc_barrier = 103, + TK_upc_localsizeof = 34, + TK_upc_blocksizeof = 35, + TK_upc_elemsizeof = 36, + TK_upc_notify = 104, + TK_upc_fence = 105, + TK_upc_wait = 106, + TK_upc_forall = 107, + TK_ERROR_TOKEN = 56, + TK_EOF_TOKEN = 89; + + public final static String orderedTerminalSymbols[] = { + "", + "identifier", + "LeftParen", + "Completion", + "Star", + "EndOfCompletion", + "const", + "restrict", + "volatile", + "relaxed", + "shared", + "strict", + "static", + "LeftBracket", + "Plus", + "Minus", + "And", + "auto", + "extern", + "inline", + "register", + "typedef", + "PlusPlus", + "MinusMinus", + "sizeof", + "integer", + "floating", + "charconst", + "stringlit", + "Tilde", + "Bang", + "MYTHREAD", + "THREADS", + "UPC_MAX_BLOCKSIZE", + "upc_localsizeof", + "upc_blocksizeof", + "upc_elemsizeof", + "LeftBrace", + "char", + "double", + "float", + "int", + "long", + "short", + "signed", + "unsigned", + "void", + "_Bool", + "_Complex", + "_Imaginary", + "RightParen", + "enum", + "struct", + "union", + "Comma", + "RightBrace", + "ERROR_TOKEN", + "RightShift", + "LeftShift", + "RightBracket", + "DotDotDot", + "Dot", + "Slash", + "Percent", + "LT", + "GT", + "LE", + "GE", + "Colon", + "Assign", + "EQ", + "NE", + "Caret", + "Or", + "AndAnd", + "SemiColon", + "Arrow", + "OrOr", + "Question", + "StarAssign", + "SlashAssign", + "PercentAssign", + "PlusAssign", + "MinusAssign", + "RightShiftAssign", + "LeftShiftAssign", + "AndAssign", + "CaretAssign", + "OrAssign", + "EOF_TOKEN", + "break", + "case", + "continue", + "default", + "do", + "else", + "for", + "goto", + "if", + "return", + "switch", + "while", + "Invalid", + "upc_barrier", + "upc_notify", + "upc_fence", + "upc_wait", + "upc_forall" + }; + + public final static boolean isValidForParser = true; +}