From 170e654b4796bad1453ae85a427b97317d67a69a Mon Sep 17 00:00:00 2001 From: Jonah Graham Date: Tue, 20 Nov 2018 16:20:42 +0000 Subject: Bug 540373: Cleanup: Format & Remove trailing whitespace This was done by selecting all projects in Eclipse then Source -> Clean Up... -> choosing: - Format source code - Remove trailing white spaces on all lines and completing the wizard Change-Id: I63685372c6bcc67719bcf145123bcb72e5b00394 --- .../parser/xlc/tests/VectorExtensionsTest.java | 284 +- .../core/parser/xlc/tests/XlcExtensionsTest.java | 243 +- .../parser/xlc/tests/XlcExtensionsTestSuite.java | 10 +- .../cdt/core/parser/xlc/tests/XlcTestBase.java | 22 +- .../xlc/tests/base/XlcCompletionHangingTest.java | 36 +- .../xlc/tests/base/XlcLRCPPImplicitNameTests.java | 4 +- .../parser/xlc/tests/base/XlcLRCPPSpecTest.java | 4 +- .../core/parser/xlc/tests/base/XlcLRCPPTests.java | 7 +- .../parser/xlc/tests/base/XlcLRCSpecTests.java | 4 +- .../parser/xlc/tests/base/XlcLRCommentTests.java | 15 +- .../xlc/tests/base/XlcLRCompleteParser2Tests.java | 4 +- .../xlc/tests/base/XlcLRCompletionBasicTest.java | 4 +- .../xlc/tests/base/XlcLRCompletionParseTest.java | 4 +- .../xlc/tests/base/XlcLRDOMLocationMacroTests.java | 4 +- .../xlc/tests/base/XlcLRDOMLocationTests.java | 4 +- .../base/XlcLRDOMPreprocessorInformationTest.java | 4 +- .../xlc/tests/base/XlcLRDigraphTrigraphTests.java | 4 +- .../base/XlcLRGCCCompleteParseExtensionsTest.java | 4 +- .../core/parser/xlc/tests/base/XlcLRGCCTests.java | 4 +- .../xlc/tests/base/XlcLRImageLocationTests.java | 4 +- .../xlc/tests/base/XlcLRInactiveCodeTests.java | 4 +- .../core/parser/xlc/tests/base/XlcLRKnRTests.java | 4 +- .../xlc/tests/base/XlcLRNodeSelectorTest.java | 4 +- .../xlc/tests/base/XlcLRParserTestSuite.java | 71 +- .../xlc/tests/base/XlcLRQuickParser2Tests.java | 4 +- .../xlc/tests/base/XlcLRSelectionParseTest.java | 6 +- .../parser/xlc/tests/base/XlcLRSemanticsTests.java | 4 +- .../parser/xlc/tests/base/XlcLRTaskParserTest.java | 4 +- .../parser/xlc/tests/base/XlcLRTemplateTests.java | 4 +- .../cdt/core/parser/xlc/tests/base/XlcLRTests.java | 6 +- .../parser/xlc/tests/base/XlcLRUtilOldTests.java | 4 +- .../core/parser/xlc/tests/base/XlcLRUtilTests.java | 4 +- .../xlc/tests/suite/AutomatedIntegrationSuite.java | 11 +- .../cdt/core/lrparser/xlc/XlcCLanguage.java | 28 +- .../cdt/core/lrparser/xlc/XlcCPPLanguage.java | 46 +- .../xlc/XlcCPPScannerExtensionConfiguration.java | 15 +- .../cdt/core/lrparser/xlc/XlcCPPTokenMap.java | 458 +- .../xlc/XlcCScannerExtensionConfiguration.java | 14 +- .../cdt/core/lrparser/xlc/XlcCTokenMap.java | 349 +- .../eclipse/cdt/core/lrparser/xlc/XlcKeywords.java | 76 +- .../xlc/action/XlcCBuildASTParserAction.java | 26 +- .../xlc/action/XlcCPPBuildASTParserAction.java | 65 +- .../lrparser/xlc/activator/XlcParserPlugin.java | 2 - .../xlc/ast/IXlcCASTVectorTypeSpecifier.java | 8 +- .../xlc/ast/IXlcCPPASTModifiedArrayModifier.java | 23 +- .../xlc/ast/IXlcCPPASTVectorTypeSpecifier.java | 6 +- .../core/lrparser/xlc/ast/IXlcCPPNodeFactory.java | 6 +- .../xlc/preferences/XlcLanguagePreferences.java | 51 +- .../cdt/core/lrparser/xlc/preferences/XlcPref.java | 17 +- .../core/lrparser/xlc/ast/XlcCNodeFactory.java | 2 +- .../xlc/ast/XlcCPPASTModifiedArrayModifier.java | 96 +- .../xlc/ast/XlcCPPASTVectorTypeSpecifier.java | 2 +- .../core/lrparser/xlc/ast/XlcCPPNodeFactory.java | 10 +- .../internal/core/lrparser/xlc/c/XlcCParser.java | 3173 +++++----- .../core/lrparser/xlc/c/XlcCParserprs.java | 3229 ++++------ .../core/lrparser/xlc/c/XlcCParsersym.java | 251 +- .../core/lrparser/xlc/cpp/XlcCPPParser.java | 5357 +++++++++------- .../core/lrparser/xlc/cpp/XlcCPPParserprs.java | 6371 ++++++-------------- .../core/lrparser/xlc/cpp/XlcCPPParsersym.java | 319 +- .../lrparser/xlc/ui/preferences/PrefCheckbox.java | 13 +- .../xlc/ui/preferences/PreferenceMessages.java | 34 +- .../XlcLanguageOptionsPreferencePage.java | 49 +- .../xlc/tests/TestCommandOptionNotRecognized.java | 10 +- .../errorparsers/xlc/tests/TestCompatibility.java | 10 +- .../cdt/errorparsers/xlc/tests/TestError_1.java | 18 +- .../xlc/tests/TestInformationalMessage_1.java | 18 +- .../xlc/tests/TestInformationalMessage_2.java | 12 +- .../xlc/tests/TestInformationalMessage_3.java | 10 +- .../TestLinkerCommandOptionNotRecognized.java | 10 +- .../xlc/tests/TestLinkerDuplicateSymbol.java | 14 +- .../xlc/tests/TestLinkerErrorWhileReading.java | 14 +- .../cdt/errorparsers/xlc/tests/TestLinkerInfo.java | 14 +- .../xlc/tests/TestLinkerSevereError.java | 14 +- .../xlc/tests/TestLinkerUndefinedSymbol.java | 14 +- .../errorparsers/xlc/tests/TestRedeclaration.java | 17 +- .../errorparsers/xlc/tests/TestRedefinition.java | 15 +- .../errorparsers/xlc/tests/TestSevereError_1.java | 17 +- .../errorparsers/xlc/tests/TestSevereError_2.java | 17 +- .../errorparsers/xlc/tests/TestSevereError_3.java | 19 +- .../errorparsers/xlc/tests/TestSevereError_4.java | 22 +- .../errorparsers/xlc/tests/TestSevereError_5.java | 18 +- .../xlc/tests/TestUnrecoverableError_1.java | 13 +- .../xlc/tests/TestUnrecoverableError_2.java | 11 +- .../xlc/tests/TestUnrecoverableError_3.java | 12 +- .../cdt/errorparsers/xlc/tests/TestWarning_1.java | 15 +- .../cdt/errorparsers/xlc/tests/TestsPlugin.java | 5 +- .../xlc/tests/XlcErrorParserTester.java | 23 +- .../eclipse/cdt/errorparsers/xlc/Activator.java | 4 +- .../cdt/make/xlc/core/activator/Activator.java | 5 +- .../AbstractXLCBuildOutputParser.java | 12 +- .../PerFileXLCScannerInfoCollector.java | 1247 ++-- .../scannerconfig/XLCBuildOutputParserUtility.java | 829 ++- .../scannerconfig/XLCPerFileBuildOutputParser.java | 244 +- .../XLCPerProjectBuildOutputParser.java | 218 +- .../core/scannerconfig/XlCSpecsConsoleParser.java | 56 +- .../core/scannerconfig/XlCSpecsRunSIProvider.java | 12 +- .../xlc/core/scannerconfig/util/XLCCommandDSC.java | 12 +- .../xlc/core/XlcBuiltinSpecsDetector.java | 29 +- .../aix/AixConfigurationEnvironmentSupplier.java | 28 +- .../managedbuilder/xlc/aix/AixPathResolver.java | 4 +- .../xlc/ui/XLCProjectMacroSupplier.java | 47 +- .../xlc/ui/preferences/PreferenceConstants.java | 12 +- .../xlc/ui/preferences/PreferenceInitializer.java | 2 +- .../ui/preferences/XLCompilerPreferencePage.java | 37 +- .../HiddenOptionApplicabilityCalculator.java | 12 +- .../ui/properties/XLCApplicabilityCalculator.java | 97 +- .../xlc/ui/properties/XLCompilerPropertyPage.java | 5 +- .../ui/properties/XLCv8ApplicabiltyCalculator.java | 33 +- .../properties/XLCv9ApplicabilityCalculator.java | 33 +- .../xlc/ui/variables/DynamicVariableResolver.java | 6 +- .../xlc/ui/wizards/XLCSettingsWizardPage.java | 21 +- .../xlc/ui/wizards/XLCSettingsWizardRunnable.java | 14 +- .../cdt/managedbuilder/xlupc/ui/Activator.java | 3 - .../cdt/managedbuilder/xlupc/ui/Messages.java | 3 +- .../xlupc/ui/wizards/UpcProjectWizard.java | 40 +- .../ui/wizards/XLUpcSettingsWizardRunnable.java | 9 +- 116 files changed, 10769 insertions(+), 13562 deletions(-) (limited to 'xlc') diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/VectorExtensionsTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/VectorExtensionsTest.java index cabf940057c..63d91e07771 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/VectorExtensionsTest.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/VectorExtensionsTest.java @@ -24,183 +24,123 @@ import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration; import org.eclipse.cdt.core.dom.ast.IASTStatement; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; - public class VectorExtensionsTest extends XlcTestBase { public VectorExtensionsTest() { } - + public VectorExtensionsTest(String name) { super(name); } - - - - public void testVector1() { - String code = - "int test() { \n" + - " vector unsigned int a = {1,2,3,4}; \n" + - " vector unsigned int b = {2,4,6,8}; \n" + - " vector unsigned int c = a + b; \n" + - " int e = b > a; \n" + - " int f = a[2]; \n" + - " vector unsigned int d = ++a; \n" + - "}\n"; - - parse(code, getCLanguage(), true); - parse(code, getCPPLanguage(), true); - } - - public void testVectorDeclarations() { - String code = - "vector unsigned char a; \n" + - "vector signed char b; \n" + - "vector bool char c; \n" + - "vector unsigned short d; \n" + - "vector unsigned short int e; \n" + - "vector signed short f; \n" + - "vector signed short int g; \n" + - "vector bool short h; \n" + - "vector bool short int i; \n" + - "vector unsigned int j; \n" + - "vector unsigned long k; \n" + - "vector unsigned long int l; \n" + - "vector signed int m; \n" + - "vector signed long n; \n" + - "vector signed long int o; \n" + - "vector bool int p; \n" + - "vector bool long q; \n" + - "vector bool long int r; \n" + - "vector float s; \n" + - "vector pixel t; \n" + - "__vector __pixel u; \n"; - - parse(code, getCLanguage(), true); - parse(code, getCPPLanguage(), true); - } - - // these are only treated as keywords inside a vector declaration - public void testReservedWords() { - String code = - "int pixel; " + - "int bool; "; - - parse(code, getCLanguage(), true); - parse(code, getCPPLanguage(), true); - } - - - public void testVectorLiterals() { - String code = - "int test() {" + - " (vector unsigned int)(10); " + - " (vector unsigned int)(14, 82, 73, 700); " + - " (vector pixel)(14, 82, 73, 700); " + - " (vector bool int)(10); " + - "}"; - - parse(code, getCLanguage(), true); - parse(code, getCPPLanguage(), true); - } - - public void testVectorInitializers() { - String code = - "int test() {" + - " vector unsigned int v3 = {1,2,3,4}; " + - "}"; - - parse(code, getCLanguage(), true); - parse(code, getCPPLanguage(), true); - } - - - public void testVectorTypedefs() { - String code = - "int test() {" + - " typedef vector pixel vint16; " + - " vint16 v1;" + - "}"; - - parse(code, getCLanguage(), true); - parse(code, getCPPLanguage(), true); - } - - public void testVectorCompoundLiterals() { - String code = - "int test() {" + - " (vector unsigned int){10}; " + - " (vector unsigned int){14, 82, 73, 700}; " + - " (vector pixel){14, 82, 73, 700}; " + - " (vector bool int){10}; " + - "}"; - - parse(code, getCLanguage(), true); - parse(code, getCPPLanguage(), true); - } - - public void testVectorAlignof() { - String code = - "int test() {" + - " vector unsigned int v1 = (vector unsigned int)(10); \n" + - " vector unsigned int *pv1 = &v1; \n" + - " __alignof__(v1); \n" + - " __alignof__(&v1); \n" + - " __alignof__(*pv1); \n" + - " __alignof__(pv1); \n" + - " __alignof__(vector signed char); \n" + - "}"; - - parse(code, getCLanguage(), true); - parse(code, getCPPLanguage(), true); - } - - public void testVectorTypeof() { - String code = - "int test() {" + - " vector unsigned int v1 = (vector unsigned int)(10); \n" + - " vector unsigned int *pv1 = &v1; \n" + - " __typeof__(v1); \n" + - " __typeof__(&v1); \n" + - " __typeof__(*pv1); \n" + - " __typeof__(pv1); \n" + - " __typeof__(vector signed char); \n" + - "}"; - - parse(code, getCLanguage(), true); - parse(code, getCPPLanguage(), true); - } - - public void _testOverloads() { - String code = - "void foo(int); \n" + - "void foo(vector unsigned int); \n" + - "void foo(vector pixel) \n" + - "int test() { \n" + - " int x; \n" + - " vector unsigned int y; \n" + - " vector pixel z; \n" + - " foo(x); \n" + - " foo(y); \n" + - " foo(z); \n" + - "} \n"; - - IASTTranslationUnit tu = parse(code, getCPPLanguage(), true); - - - IASTDeclaration[] decls = tu.getDeclarations(); - IASTName foo1 = ((IASTSimpleDeclaration)decls[0]).getDeclarators()[0].getName(); - IASTName foo2 = ((IASTSimpleDeclaration)decls[1]).getDeclarators()[0].getName(); - IASTName foo3 = ((IASTSimpleDeclaration)decls[2]).getDeclarators()[0].getName(); - - IASTFunctionDefinition func = (IASTFunctionDefinition) decls[4]; - IASTStatement[] stats = ((IASTCompoundStatement)func.getBody()).getStatements(); - - IASTName fooCall1 = ((IASTIdExpression)((IASTFunctionCallExpression)((IASTExpressionStatement)stats[3]).getExpression()).getFunctionNameExpression()).getName(); - IASTName fooCall2 = ((IASTIdExpression)((IASTFunctionCallExpression)((IASTExpressionStatement)stats[4]).getExpression()).getFunctionNameExpression()).getName(); - IASTName fooCall3 = ((IASTIdExpression)((IASTFunctionCallExpression)((IASTExpressionStatement)stats[5]).getExpression()).getFunctionNameExpression()).getName(); - - assertSame(foo1.resolveBinding(), fooCall1.resolveBinding()); - assertSame(foo2.resolveBinding(), fooCall2.resolveBinding()); - assertSame(foo3.resolveBinding(), fooCall3.resolveBinding()); - } + + public void testVector1() { + String code = "int test() { \n" + " vector unsigned int a = {1,2,3,4}; \n" + + " vector unsigned int b = {2,4,6,8}; \n" + " vector unsigned int c = a + b; \n" + + " int e = b > a; \n" + " int f = a[2]; \n" + + " vector unsigned int d = ++a; \n" + "}\n"; + + parse(code, getCLanguage(), true); + parse(code, getCPPLanguage(), true); + } + + public void testVectorDeclarations() { + String code = "vector unsigned char a; \n" + "vector signed char b; \n" + "vector bool char c; \n" + + "vector unsigned short d; \n" + "vector unsigned short int e; \n" + + "vector signed short f; \n" + "vector signed short int g; \n" + "vector bool short h; \n" + + "vector bool short int i; \n" + "vector unsigned int j; \n" + "vector unsigned long k; \n" + + "vector unsigned long int l; \n" + "vector signed int m; \n" + "vector signed long n; \n" + + "vector signed long int o; \n" + "vector bool int p; \n" + "vector bool long q; \n" + + "vector bool long int r; \n" + "vector float s; \n" + "vector pixel t; \n" + + "__vector __pixel u; \n"; + + parse(code, getCLanguage(), true); + parse(code, getCPPLanguage(), true); + } + + // these are only treated as keywords inside a vector declaration + public void testReservedWords() { + String code = "int pixel; " + "int bool; "; + + parse(code, getCLanguage(), true); + parse(code, getCPPLanguage(), true); + } + + public void testVectorLiterals() { + String code = "int test() {" + " (vector unsigned int)(10); " + + " (vector unsigned int)(14, 82, 73, 700); " + " (vector pixel)(14, 82, 73, 700); " + + " (vector bool int)(10); " + "}"; + + parse(code, getCLanguage(), true); + parse(code, getCPPLanguage(), true); + } + + public void testVectorInitializers() { + String code = "int test() {" + " vector unsigned int v3 = {1,2,3,4}; " + "}"; + + parse(code, getCLanguage(), true); + parse(code, getCPPLanguage(), true); + } + + public void testVectorTypedefs() { + String code = "int test() {" + " typedef vector pixel vint16; " + " vint16 v1;" + "}"; + + parse(code, getCLanguage(), true); + parse(code, getCPPLanguage(), true); + } + + public void testVectorCompoundLiterals() { + String code = "int test() {" + " (vector unsigned int){10}; " + + " (vector unsigned int){14, 82, 73, 700}; " + " (vector pixel){14, 82, 73, 700}; " + + " (vector bool int){10}; " + "}"; + + parse(code, getCLanguage(), true); + parse(code, getCPPLanguage(), true); + } + + public void testVectorAlignof() { + String code = "int test() {" + " vector unsigned int v1 = (vector unsigned int)(10); \n" + + " vector unsigned int *pv1 = &v1; \n" + " __alignof__(v1); \n" + " __alignof__(&v1); \n" + + " __alignof__(*pv1); \n" + " __alignof__(pv1); \n" + " __alignof__(vector signed char); \n" + + "}"; + + parse(code, getCLanguage(), true); + parse(code, getCPPLanguage(), true); + } + + public void testVectorTypeof() { + String code = "int test() {" + " vector unsigned int v1 = (vector unsigned int)(10); \n" + + " vector unsigned int *pv1 = &v1; \n" + " __typeof__(v1); \n" + " __typeof__(&v1); \n" + + " __typeof__(*pv1); \n" + " __typeof__(pv1); \n" + " __typeof__(vector signed char); \n" + + "}"; + + parse(code, getCLanguage(), true); + parse(code, getCPPLanguage(), true); + } + + public void _testOverloads() { + String code = "void foo(int); \n" + "void foo(vector unsigned int); \n" + "void foo(vector pixel) \n" + + "int test() { \n" + " int x; \n" + " vector unsigned int y; \n" + " vector pixel z; \n" + + " foo(x); \n" + " foo(y); \n" + " foo(z); \n" + "} \n"; + + IASTTranslationUnit tu = parse(code, getCPPLanguage(), true); + + IASTDeclaration[] decls = tu.getDeclarations(); + IASTName foo1 = ((IASTSimpleDeclaration) decls[0]).getDeclarators()[0].getName(); + IASTName foo2 = ((IASTSimpleDeclaration) decls[1]).getDeclarators()[0].getName(); + IASTName foo3 = ((IASTSimpleDeclaration) decls[2]).getDeclarators()[0].getName(); + + IASTFunctionDefinition func = (IASTFunctionDefinition) decls[4]; + IASTStatement[] stats = ((IASTCompoundStatement) func.getBody()).getStatements(); + + IASTName fooCall1 = ((IASTIdExpression) ((IASTFunctionCallExpression) ((IASTExpressionStatement) stats[3]) + .getExpression()).getFunctionNameExpression()).getName(); + IASTName fooCall2 = ((IASTIdExpression) ((IASTFunctionCallExpression) ((IASTExpressionStatement) stats[4]) + .getExpression()).getFunctionNameExpression()).getName(); + IASTName fooCall3 = ((IASTIdExpression) ((IASTFunctionCallExpression) ((IASTExpressionStatement) stats[5]) + .getExpression()).getFunctionNameExpression()).getName(); + + assertSame(foo1.resolveBinding(), fooCall1.resolveBinding()); + assertSame(foo2.resolveBinding(), fooCall2.resolveBinding()); + assertSame(foo3.resolveBinding(), fooCall3.resolveBinding()); + } } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTest.java index 2db13e11da3..59e08e4958c 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTest.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTest.java @@ -16,286 +16,201 @@ package org.eclipse.cdt.core.parser.xlc.tests; import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcLanguagePreferences; import org.eclipse.cdt.core.lrparser.xlc.preferences.XlcPref; - public class XlcExtensionsTest extends XlcTestBase { public XlcExtensionsTest() { } - + public XlcExtensionsTest(String name) { super(name); } - + public void testHexadecimalFloatingPointLiterals() throws Exception { - String code = - "int test() { \n"+ - " 0x0A2B.0FDp+2f; \n"+ - " 0X12D.p-44F; \n"+ - " 0xBACP+2L; \n"+ - "}\n"; + String code = "int test() { \n" + " 0x0A2B.0FDp+2f; \n" + " 0X12D.p-44F; \n" + + " 0xBACP+2L; \n" + "}\n"; parse(code, getCLanguage(), true); parse(code, getCPPLanguage(), true); } - + public void testFuncPredefinedIdentifier() { - String code = - "void test() { \n" + - " __func__; \n" + - " } \n"; + String code = "void test() { \n" + " __func__; \n" + " } \n"; parse(code, getCLanguage(), true); parse(code, getCPPLanguage(), true); } - + public void testStringConcatenation() { - String code = - "void test() { \n" + - " \"hello \" \"there\"; \n" + - " \"hello \" L\"there\"; \n" + - " } \n"; + String code = "void test() { \n" + " \"hello \" \"there\"; \n" + " \"hello \" L\"there\"; \n" + + " } \n"; parse(code, getCLanguage(), true); parse(code, getCPPLanguage(), true); } - + public void testLongLong() { - String code = - "void test() { \n" + - " long long x; \n" + - " } \n"; + String code = "void test() { \n" + " long long x; \n" + " } \n"; parse(code, getCLanguage(), true); parse(code, getCPPLanguage(), true); } - + public void testComplex() { - String code = - "void test() { \n" + - " float _Complex x; \n" + - " double _Complex y; \n" + - " long double _Complex z; \n" + - " } \n"; + String code = "void test() { \n" + " float _Complex x; \n" + " double _Complex y; \n" + + " long double _Complex z; \n" + " } \n"; parse(code, getCLanguage(), true); parse(code, getCPPLanguage(), true); } - + public void testBool() { - String code = - "_Bool f(int a, int b) { \n" + - " return a==b; \n" + - " } \n"; + String code = "_Bool f(int a, int b) { \n" + " return a==b; \n" + " } \n"; parse(code, getCLanguage(), true); } - + public void testTrailingCommaInEnum() { - String code = - "void test() { \n" + - " enum grain { oats, wheat, barley, corn, rice, }; \n" + - " } \n"; + String code = "void test() { \n" + " enum grain { oats, wheat, barley, corn, rice, }; \n" + + " } \n"; parse(code, getCLanguage(), true); parse(code, getCPPLanguage(), true); } - public void testNonLValueArraySubscript() { - String code = - "struct trio{int a[3];}; \n" + - "struct trio f(); \n" + - "foo (int index) \n" + - "{ \n" + - " return f().a[index]; \n" + - "} \n"; + String code = "struct trio{int a[3];}; \n" + "struct trio f(); \n" + "foo (int index) \n" + + "{ \n" + " return f().a[index]; \n" + "} \n"; parse(code, getCLanguage(), true); } - + public void testStaticArrayIndices() { - String code = - "void test() { \n" + - " void foo1(int arr [static 10]); \n" + - " int i = 10; \n" + - " void foo2(int arr [static const i]); \n" + - " } \n"; + String code = "void test() { \n" + " void foo1(int arr [static 10]); \n" + + " int i = 10; \n" + " void foo2(int arr [static const i]); \n" + + " } \n"; parse(code, getCLanguage(), true); } - + public void testFunctionLikeMacrosVariableArguments() { - String code = - "#define debug(...) fprintf(stderr, __VA_ARGS__) \n" + - "int test() { \n" + - " debug(\"flag\"); \n" + - " } \n"; + String code = "#define debug(...) fprintf(stderr, __VA_ARGS__) \n" + "int test() { \n" + + " debug(\"flag\"); \n" + " } \n"; parse(code, getCLanguage(), false); } - + public void testFunctionLikeMacrosEmptyArgument() { - String code = - "#define SUM(a,b,c) a + b + c \n" + - "int test() { \n" + - " SUM(1,,3); \n" + - " } \n"; + String code = "#define SUM(a,b,c) a + b + c \n" + "int test() { \n" + " SUM(1,,3); \n" + " } \n"; parse(code, getCLanguage(), true); } - + public void testPredefinedMacroNamesC() { - String code = - "void test() { \n" + - " __DATE__; \n" + - " __FILE__; \n" + - " __LINE__; \n" + - " __STDC_HOSTED__; \n" + - " __STDC_VERSION__; \n" + - " __TIME__; \n" + - "} \n"; + String code = "void test() { \n" + " __DATE__; \n" + " __FILE__; \n" + + " __LINE__; \n" + " __STDC_HOSTED__; \n" + " __STDC_VERSION__; \n" + + " __TIME__; \n" + "} \n"; parse(code, getCLanguage(), true); } - + public void testPredefinedMacroNamesCpp() { - String code = - "void test() { \n" + - " __DATE__; \n" + - " __FILE__; \n" + - " __LINE__; \n" + - " __TIME__; \n" + - // " __cplusplus; \n" + - "} \n"; + String code = "void test() { \n" + " __DATE__; \n" + " __FILE__; \n" + + " __LINE__; \n" + " __TIME__; \n" + + // " __cplusplus; \n" + + "} \n"; parse(code, getCPPLanguage(), true); } - - + public void testCompoundLiterals() { - String code = - "void test() { \n" + - " drawline((struct point){6,7}); \n" + - " } \n"; + String code = "void test() { \n" + " drawline((struct point){6,7}); \n" + " } \n"; parse(code, getCLanguage(), false); } - - public void testPragma() { - String code = - "void test() { \n" + - " _Pragma ( \"pack(full)\" ) \n" + - " } \n"; + String code = "void test() { \n" + " _Pragma ( \"pack(full)\" ) \n" + " } \n"; parse(code, getCLanguage(), true); } - - + public void testStandardPragmas() { - String code = - "#pragma STDC FP_CONTRACT ON \n" + - "#pragma STDC FENV_ACCESS OFF \n" + - "#pragma STDC CX_LIMITED_RANGE DEFAULT \n"; + String code = "#pragma STDC FP_CONTRACT ON \n" + "#pragma STDC FENV_ACCESS OFF \n" + + "#pragma STDC CX_LIMITED_RANGE DEFAULT \n"; parse(code, getCLanguage(), true); } - + public void testLineDirective() { - String code = - "#define LINE200 200 \n" + - "#line 100 \n" + - "#line LINE200 \n"; + String code = "#define LINE200 200 \n" + "#line 100 \n" + "#line LINE200 \n"; parse(code, getCLanguage(), true); } - - + /** * https://bugs.eclipse.org/bugs/show_bug.cgi?id=228826 * http://publib.boulder.ibm.com/infocenter/comphelp/v101v121/index.jsp?topic=/com.ibm.xlcpp101.aix.doc/language_ref/restrict_type_qualifier.html - * + * * TODO Need a properties page so that things like this can be configured by the user. */ public void testRestrictC() { - String code = - "void foo(int n, int * restrict a, int * __restrict b, int * __restrict__ c) {} "; + String code = "void foo(int n, int * restrict a, int * __restrict b, int * __restrict__ c) {} "; parse(code, getCLanguage(), true); } - + public void testRestrictCPPOn() { - String code = - "void foo(int n, int * restrict a, int * __restrict b, int * __restrict__ c) {} "; + String code = "void foo(int n, int * restrict a, int * __restrict b, int * __restrict__ c) {} "; parse(code, getCPPLanguage(), true); } + public void testRestrictCPPOff() { XlcLanguagePreferences.setWorkspacePreference(XlcPref.SUPPORT_RESTRICT_IN_CPP, String.valueOf(false)); - String code = - "void restrict(); \n " + - "void foo(int n, int * __restrict b, int * __restrict__ c) {} "; + String code = "void restrict(); \n " + "void foo(int n, int * __restrict b, int * __restrict__ c) {} "; parse(code, getCPPLanguage(), true); } - - - + public void testUTFLiterals() { - String code = - "void test() { \n " + - " u\"ucs characters \\u1234 and \\u8180 \"; \n " + - " U\"ucs characters \\u1234 and \\u8180 \"; \n " + - " U\"concatenation \\u1234 \" u\"is allowed \\u8180 \"; \n " + - " u'\\u1234'; \n " + - " U'\\u1234'; \n " + - "}"; + String code = "void test() { \n " + " u\"ucs characters \\u1234 and \\u8180 \"; \n " + + " U\"ucs characters \\u1234 and \\u8180 \"; \n " + + " U\"concatenation \\u1234 \" u\"is allowed \\u8180 \"; \n " + " u'\\u1234'; \n " + + " U'\\u1234'; \n " + "}"; parse(code, getCLanguage(), true); parse(code, getCPPLanguage(), true); } - - + public void testFloatingPointTypes() { - String code = - " _Decimal32 x = 22.2df; \n " + - " _Decimal64 y = 33.3dd; \n " + - " _Decimal128 z = 33.3dl; \n "; + String code = " _Decimal32 x = 22.2df; \n " + " _Decimal64 y = 33.3dd; \n " + " _Decimal128 z = 33.3dl; \n "; parse(code, getCLanguage(), true); parse(code, getCPPLanguage(), true); } - + public void testVariableLengthArrays() { - String code = - "double maximum1(int n, int m, double a[n][m]);\n" + - "double maximum2(int n, int m, double a[*][*]);\n" + - "double maximum3(int n, int m, double a[ ][*]);\n" + - "double maximum4(int n, int m, double a[ ][m]);\n"; - + String code = "double maximum1(int n, int m, double a[n][m]);\n" + + "double maximum2(int n, int m, double a[*][*]);\n" + + "double maximum3(int n, int m, double a[ ][*]);\n" + + "double maximum4(int n, int m, double a[ ][m]);\n"; + parse(code, getCLanguage(), true); parse(code, getCPPLanguage(), true); // xlc supports this in C++ } - + public void testV11Attributes() { - String code = - "#define __inline__ __inline__ __attribute__((gnu_inline)) \n" + - - "static int w() __attribute__ ((weakref (\"y\")));\n" + - /* is equivalent to... */ - "static int x() __attribute__ ((weak, weakref, alias (\"y\")));\n" + - /* and to... */ - "static int y() __attribute__ ((weakref));\n" + - "static int z() __attribute__ ((alias (\"y\"))); \n" + - - "int foo() __attribute__((gnu_inline)); \n" + - "static inline __attribute__((gnu_inline)) int ins (int *a){ \n" + - " (*a)++; \n" + - "} \n" + - "inline __attribute__((gnu_inline)) int inc (int *a){ \n" + - " (*a)++; \n" + - "} "; + String code = "#define __inline__ __inline__ __attribute__((gnu_inline)) \n" + + + "static int w() __attribute__ ((weakref (\"y\")));\n" + + /* is equivalent to... */ + "static int x() __attribute__ ((weak, weakref, alias (\"y\")));\n" + + /* and to... */ + "static int y() __attribute__ ((weakref));\n" + "static int z() __attribute__ ((alias (\"y\"))); \n" + + + "int foo() __attribute__((gnu_inline)); \n" + + "static inline __attribute__((gnu_inline)) int ins (int *a){ \n" + " (*a)++; \n" + "} \n" + + "inline __attribute__((gnu_inline)) int inc (int *a){ \n" + " (*a)++; \n" + "} "; parse(code, getCLanguage(), true); parse(code, getCPPLanguage(), true); diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTestSuite.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTestSuite.java index c00b93049a8..42a42ae5268 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTestSuite.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTestSuite.java @@ -19,9 +19,11 @@ import junit.framework.TestSuite; public class XlcExtensionsTestSuite extends TestSuite { public static Test suite() { - return new TestSuite() {{ - addTestSuite(VectorExtensionsTest.class); - addTestSuite(XlcExtensionsTest.class); - }}; + return new TestSuite() { + { + addTestSuite(VectorExtensionsTest.class); + addTestSuite(XlcExtensionsTest.class); + } + }; } } \ No newline at end of file diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcTestBase.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcTestBase.java index af38de28c15..c4d3cf3c419 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcTestBase.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcTestBase.java @@ -25,11 +25,11 @@ public class XlcTestBase extends TestCase { public XlcTestBase() { } - + public XlcTestBase(String name) { super(name); } - + protected IASTTranslationUnit parse(String code, ILanguage language, boolean checkBindings) { ParseHelper.Options options = new ParseHelper.Options(); options.setCheckSyntaxProblems(true); @@ -37,13 +37,13 @@ public class XlcTestBase extends TestCase { options.setCheckBindings(checkBindings); return ParseHelper.parse(code, language, options); } - - protected XlcCLanguage getCLanguage() { - return XlcCLanguage.getDefault(); - } - - protected XlcCPPLanguage getCPPLanguage() { - return XlcCPPLanguage.getDefault(); - } - + + protected XlcCLanguage getCLanguage() { + return XlcCLanguage.getDefault(); + } + + protected XlcCPPLanguage getCPPLanguage() { + return XlcCPPLanguage.getDefault(); + } + } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcCompletionHangingTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcCompletionHangingTest.java index 09c6e264a45..fcabbf988a7 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcCompletionHangingTest.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcCompletionHangingTest.java @@ -7,7 +7,7 @@ * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 - * + * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ @@ -19,32 +19,32 @@ import org.eclipse.cdt.core.lrparser.tests.LRCompletionHangingTest; import org.eclipse.cdt.core.lrparser.xlc.XlcCLanguage; import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage; -public class XlcCompletionHangingTest extends LRCompletionHangingTest{ +public class XlcCompletionHangingTest extends LRCompletionHangingTest { - public static TestSuite suite() { return new TestSuite(XlcCompletionHangingTest.class); } - - + //TODO ??? overwrite some failed test cases - public void testCompletionTemplateClassForCPP() throws Exception {} - public void testCompletionGnuCPP() throws Exception {} - - - protected XlcCLanguage getCLanguage() { - return XlcCLanguage.getDefault(); - } - + public void testCompletionTemplateClassForCPP() throws Exception { + } + + public void testCompletionGnuCPP() throws Exception { + } + + protected XlcCLanguage getCLanguage() { + return XlcCLanguage.getDefault(); + } + protected XlcCPPLanguage getCPPLanguage() { - return XlcCPPLanguage.getDefault(); + return XlcCPPLanguage.getDefault(); } - + public void testCompletionXlc() throws Exception { - String code = - " __static_assert" + CONTENT_ASIST_CURSOR +"(a>" + CONTENT_ASIST_CURSOR +"b, \"no 64-bit support\"); \n"+ - " vector " + CONTENT_ASIST_CURSOR +"unsigned " + CONTENT_ASIST_CURSOR +"int d = ++a; \n"; + String code = " __static_assert" + CONTENT_ASIST_CURSOR + "(a>" + CONTENT_ASIST_CURSOR + + "b, \"no 64-bit support\"); \n" + " vector " + CONTENT_ASIST_CURSOR + "unsigned " + + CONTENT_ASIST_CURSOR + "int d = ++a; \n"; runTestCase(code, getCPPLanguage()); } } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPImplicitNameTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPImplicitNameTests.java index 1202c907f4a..2d6050baa6c 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPImplicitNameTests.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPImplicitNameTests.java @@ -24,11 +24,11 @@ public class XlcLRCPPImplicitNameTests extends LRCPPImplicitNameTests { public static TestSuite suite() { return suite(XlcLRCPPImplicitNameTests.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPSpecTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPSpecTest.java index 814db43d48a..1900fca8e28 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPSpecTest.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPSpecTest.java @@ -24,11 +24,11 @@ public class XlcLRCPPSpecTest extends LRCPPSpecTest { public static TestSuite suite() { return suite(XlcLRCPPSpecTest.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPTests.java index 8da81d45da2..b76de18c521 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPTests.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCPPTests.java @@ -25,17 +25,18 @@ public class XlcLRCPPTests extends LRCPPTests { public static TestSuite suite() { return suite(XlcLRCPPTests.class); } + //CDT_70_FIX_FROM_50-#9 public void testStaticAssertions_294730() throws Exception { - String code= getAboveComment(); + String code = getAboveComment(); code = code.replaceAll("static_assert", "__static_assert"); parseAndCheckBindings(code, ParserLanguage.CPP); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCSpecTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCSpecTests.java index 1d0dac14b36..8607ef23f23 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCSpecTests.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCSpecTests.java @@ -24,11 +24,11 @@ public class XlcLRCSpecTests extends LRCSpecTests { public static TestSuite suite() { return suite(XlcLRCSpecTests.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCommentTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCommentTests.java index 5a359aeaa15..172863181bf 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCommentTests.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCommentTests.java @@ -21,16 +21,15 @@ import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage; import org.eclipse.cdt.core.model.ILanguage; public class XlcLRCommentTests extends LRCommentTests { - - + public static TestSuite suite() { - return suite(XlcLRCommentTests.class); - } - + return suite(XlcLRCommentTests.class); + } + protected ILanguage getCLanguage() { - return XlcCLanguage.getDefault(); - } - + return XlcCLanguage.getDefault(); + } + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompleteParser2Tests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompleteParser2Tests.java index 0a2e5969859..fbbda23e66a 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompleteParser2Tests.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompleteParser2Tests.java @@ -25,11 +25,11 @@ public class XlcLRCompleteParser2Tests extends LRCompleteParser2Tests { public static TestSuite suite() { return suite(XlcLRCompleteParser2Tests.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionBasicTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionBasicTest.java index 6cd1a7ffe51..394a9baf277 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionBasicTest.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionBasicTest.java @@ -24,11 +24,11 @@ public class XlcLRCompletionBasicTest extends LRCompletionBasicTest { public static TestSuite suite() { return suite(XlcLRCompletionBasicTest.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionParseTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionParseTest.java index e96f13bf06a..fd5ed160751 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionParseTest.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRCompletionParseTest.java @@ -24,11 +24,11 @@ public class XlcLRCompletionParseTest extends LRCompletionParseTest { public static TestSuite suite() { return new TestSuite(XlcLRCompletionParseTest.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationMacroTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationMacroTests.java index 20e28cca007..8e2d936df6f 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationMacroTests.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationMacroTests.java @@ -24,11 +24,11 @@ public class XlcLRDOMLocationMacroTests extends LRDOMLocationMacroTests { public static TestSuite suite() { return suite(XlcLRDOMLocationMacroTests.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationTests.java index 08dac57e6ca..b2108ca084a 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationTests.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMLocationTests.java @@ -24,11 +24,11 @@ public class XlcLRDOMLocationTests extends LRDOMLocationTests { public static TestSuite suite() { return suite(XlcLRDOMLocationTests.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMPreprocessorInformationTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMPreprocessorInformationTest.java index 7dce686dbc1..d4b2a04abb6 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMPreprocessorInformationTest.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDOMPreprocessorInformationTest.java @@ -24,11 +24,11 @@ public class XlcLRDOMPreprocessorInformationTest extends LRDOMPreprocessorInform public static TestSuite suite() { return suite(XlcLRDOMPreprocessorInformationTest.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDigraphTrigraphTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDigraphTrigraphTests.java index f7d90e9eb89..eaa4da889c3 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDigraphTrigraphTests.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRDigraphTrigraphTests.java @@ -25,11 +25,11 @@ public class XlcLRDigraphTrigraphTests extends LRDigraphTrigraphTests { public static TestSuite suite() { return new TestSuite(XlcLRDigraphTrigraphTests.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCCompleteParseExtensionsTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCCompleteParseExtensionsTest.java index c036eac6a53..187580d9871 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCCompleteParseExtensionsTest.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCCompleteParseExtensionsTest.java @@ -24,11 +24,11 @@ public class XlcLRGCCCompleteParseExtensionsTest extends LRGCCCompleteParseExten public static TestSuite suite() { return suite(XlcLRGCCCompleteParseExtensionsTest.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCTests.java index 5297c7b93fb..967aaa79114 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCTests.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRGCCTests.java @@ -24,11 +24,11 @@ public class XlcLRGCCTests extends LRGCCTests { public static TestSuite suite() { return suite(XlcLRGCCTests.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRImageLocationTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRImageLocationTests.java index 1ee0030f6c5..0e9c557d9ce 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRImageLocationTests.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRImageLocationTests.java @@ -24,11 +24,11 @@ public class XlcLRImageLocationTests extends LRImageLocationTests { public static TestSuite suite() { return suite(XlcLRImageLocationTests.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRInactiveCodeTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRInactiveCodeTests.java index e050e796f6d..342e7dc17c1 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRInactiveCodeTests.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRInactiveCodeTests.java @@ -24,11 +24,11 @@ public class XlcLRInactiveCodeTests extends LRInactiveCodeTests { public static TestSuite suite() { return suite(XlcLRInactiveCodeTests.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRKnRTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRKnRTests.java index 31bb9d8e2e1..d9a34967ffc 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRKnRTests.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRKnRTests.java @@ -24,11 +24,11 @@ public class XlcLRKnRTests extends LRKnRTests { public static TestSuite suite() { return suite(XlcLRKnRTests.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRNodeSelectorTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRNodeSelectorTest.java index 021ed9671b4..54f859a83a4 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRNodeSelectorTest.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRNodeSelectorTest.java @@ -24,11 +24,11 @@ public class XlcLRNodeSelectorTest extends LRNodeSelectorTest { public static TestSuite suite() { return suite(XlcLRNodeSelectorTest.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRParserTestSuite.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRParserTestSuite.java index 7e8c9a8d923..4db01c58b36 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRParserTestSuite.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRParserTestSuite.java @@ -13,13 +13,11 @@ *******************************************************************************/ package org.eclipse.cdt.core.parser.xlc.tests.base; - - import junit.framework.Test; import junit.framework.TestSuite; public class XlcLRParserTestSuite extends TestSuite { - + // TODO: the following test are not being reused // // DOMGCCSelectionParseExtensionsTest @@ -28,39 +26,40 @@ public class XlcLRParserTestSuite extends TestSuite { // QuickParser2Tests // // and perhaps others - + public static Test suite() { - return new TestSuite() {{ - - addTest(XlcLRCommentTests.suite()); - addTest(XlcLRCompleteParser2Tests.suite()); - addTest(XlcLRCompletionBasicTest.suite()); - addTest(XlcLRCompletionParseTest.suite()); - addTest(XlcLRCPPSpecTest.suite()); - addTest(XlcLRCPPTests.suite()); - addTest(XlcLRCSpecTests.suite()); // a couple of failures - addTest(XlcLRDigraphTrigraphTests.suite()); - addTest(XlcLRDOMLocationMacroTests.suite()); - addTest(XlcLRDOMLocationTests.suite()); - addTest(XlcLRDOMPreprocessorInformationTest.suite()); - addTest(XlcLRGCCTests.suite()); - addTest(XlcLRGCCCompleteParseExtensionsTest.suite()); - addTest(XlcLRImageLocationTests.suite()); - addTest(XlcLRKnRTests.suite()); // mostly fail due to ambiguities - addTest(XlcLRNodeSelectorTest.suite()); - addTest(XlcLRQuickParser2Tests.suite()); - addTest(XlcLRSelectionParseTest.suite()); // this one still has a lot of failing tests though - addTest(XlcLRSemanticsTests.suite()); - addTest(XlcLRTaskParserTest.suite()); - addTest(XlcLRTemplateTests.suite()); - addTest(XlcLRTests.suite()); // has some tests that do fail - addTest(XlcLRUtilOldTests.suite()); - addTest(XlcLRUtilTests.suite()); - addTest(XlcCompletionHangingTest.suite()); - addTest(XlcLRCPPImplicitNameTests.suite()); - //addTest(LRInactiveCodeTests.suite()); + return new TestSuite() { + { - }}; - } -} + addTest(XlcLRCommentTests.suite()); + addTest(XlcLRCompleteParser2Tests.suite()); + addTest(XlcLRCompletionBasicTest.suite()); + addTest(XlcLRCompletionParseTest.suite()); + addTest(XlcLRCPPSpecTest.suite()); + addTest(XlcLRCPPTests.suite()); + addTest(XlcLRCSpecTests.suite()); // a couple of failures + addTest(XlcLRDigraphTrigraphTests.suite()); + addTest(XlcLRDOMLocationMacroTests.suite()); + addTest(XlcLRDOMLocationTests.suite()); + addTest(XlcLRDOMPreprocessorInformationTest.suite()); + addTest(XlcLRGCCTests.suite()); + addTest(XlcLRGCCCompleteParseExtensionsTest.suite()); + addTest(XlcLRImageLocationTests.suite()); + addTest(XlcLRKnRTests.suite()); // mostly fail due to ambiguities + addTest(XlcLRNodeSelectorTest.suite()); + addTest(XlcLRQuickParser2Tests.suite()); + addTest(XlcLRSelectionParseTest.suite()); // this one still has a lot of failing tests though + addTest(XlcLRSemanticsTests.suite()); + addTest(XlcLRTaskParserTest.suite()); + addTest(XlcLRTemplateTests.suite()); + addTest(XlcLRTests.suite()); // has some tests that do fail + addTest(XlcLRUtilOldTests.suite()); + addTest(XlcLRUtilTests.suite()); + addTest(XlcCompletionHangingTest.suite()); + addTest(XlcLRCPPImplicitNameTests.suite()); + //addTest(LRInactiveCodeTests.suite()); + } + }; + } +} diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRQuickParser2Tests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRQuickParser2Tests.java index 2b0bc037d2c..860a2b43dc8 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRQuickParser2Tests.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRQuickParser2Tests.java @@ -24,11 +24,11 @@ public class XlcLRQuickParser2Tests extends LRQuickParser2Tests { public static TestSuite suite() { return new TestSuite(XlcLRQuickParser2Tests.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSelectionParseTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSelectionParseTest.java index fcf72512f62..0fac0baf0b8 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSelectionParseTest.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSelectionParseTest.java @@ -21,7 +21,7 @@ import org.eclipse.cdt.core.lrparser.xlc.XlcCPPLanguage; import org.eclipse.cdt.core.model.ILanguage; public class XlcLRSelectionParseTest extends LRSelectionParseTest { - + public XlcLRSelectionParseTest() { } @@ -32,11 +32,11 @@ public class XlcLRSelectionParseTest extends LRSelectionParseTest { public static TestSuite suite() { return new TestSuite(XlcLRSelectionParseTest.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSemanticsTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSemanticsTests.java index 60150ce85e0..8b59776a0cc 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSemanticsTests.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRSemanticsTests.java @@ -24,11 +24,11 @@ public class XlcLRSemanticsTests extends LRSemanticsTests { public static TestSuite suite() { return suite(XlcLRSemanticsTests.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTaskParserTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTaskParserTest.java index 2d291f21f84..d2e602b5741 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTaskParserTest.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTaskParserTest.java @@ -24,11 +24,11 @@ public class XlcLRTaskParserTest extends LRTaskParserTest { public static TestSuite suite() { return suite(XlcLRTaskParserTest.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTemplateTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTemplateTests.java index c2f7e260dc4..fa2c1c18089 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTemplateTests.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTemplateTests.java @@ -24,11 +24,11 @@ public class XlcLRTemplateTests extends LRTemplateTests { public static TestSuite suite() { return suite(XlcLRTemplateTests.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTests.java index d755b1cd750..4eb9418e20f 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTests.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRTests.java @@ -26,15 +26,15 @@ public class XlcLRTests extends LRTests { super(name); // TODO Auto-generated constructor stub } - + public static TestSuite suite() { return suite(XlcLRTests.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilOldTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilOldTests.java index e7ed83f8bc6..895eb9da8a4 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilOldTests.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilOldTests.java @@ -24,11 +24,11 @@ public class XlcLRUtilOldTests extends LRUtilOldTests { public static TestSuite suite() { return suite(XlcLRUtilOldTests.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilTests.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilTests.java index b0d9892e5e8..5026cd26895 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilTests.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/base/XlcLRUtilTests.java @@ -24,11 +24,11 @@ public class XlcLRUtilTests extends LRUtilTests { public static TestSuite suite() { return suite(XlcLRUtilTests.class); } - + protected ILanguage getCLanguage() { return XlcCLanguage.getDefault(); } - + protected ILanguage getCPPLanguage() { return XlcCPPLanguage.getDefault(); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/suite/AutomatedIntegrationSuite.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/suite/AutomatedIntegrationSuite.java index 3a3d517e251..280a4f4dde6 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/suite/AutomatedIntegrationSuite.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/suite/AutomatedIntegrationSuite.java @@ -13,7 +13,6 @@ *******************************************************************************/ package org.eclipse.cdt.core.parser.xlc.tests.suite; - import junit.framework.Test; import junit.framework.TestSuite; @@ -23,9 +22,11 @@ import org.eclipse.cdt.core.parser.xlc.tests.base.XlcLRParserTestSuite; public class AutomatedIntegrationSuite extends TestSuite { public static Test suite() { - return new TestSuite() {{ - addTest(XlcExtensionsTestSuite.suite()); - addTest(XlcLRParserTestSuite.suite()); - }}; + return new TestSuite() { + { + addTest(XlcExtensionsTestSuite.suite()); + addTest(XlcLRParserTestSuite.suite()); + } + }; } } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCLanguage.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCLanguage.java index 6d08023e11f..62573bcccc1 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCLanguage.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCLanguage.java @@ -30,45 +30,45 @@ import org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParser; import org.eclipse.core.resources.IProject; /** - * + * * @author Mike Kucera */ public class XlcCLanguage extends GCCLanguage { - public static final String ID = "org.eclipse.cdt.core.lrparser.xlc.c"; //$NON-NLS-1$ + public static final String ID = "org.eclipse.cdt.core.lrparser.xlc.c"; //$NON-NLS-1$ private static XlcCLanguage DEFAULT = new XlcCLanguage(); - + public static XlcCLanguage getDefault() { return DEFAULT; } - + @Override - protected IParser getParser(IScanner scanner, IIndex index, Map properties) { + protected IParser getParser(IScanner scanner, IIndex index, Map properties) { IProject project = getProject(properties); - boolean supportVectors = getPref(XlcPref.SUPPORT_VECTOR_TYPES, project); + boolean supportVectors = getPref(XlcPref.SUPPORT_VECTOR_TYPES, project); boolean supportDecimals = getPref(XlcPref.SUPPORT_DECIMAL_FLOATING_POINT_TYPES, project); - - return new XlcCParser(scanner, new XlcCTokenMap(supportVectors, supportDecimals), getBuiltinBindingsProvider(), index, properties); + + return new XlcCParser(scanner, new XlcCTokenMap(supportVectors, supportDecimals), getBuiltinBindingsProvider(), + index, properties); } - + public String getId() { return ID; } - + @Override protected IScannerExtensionConfiguration getScannerExtensionConfiguration() { return XlcCScannerExtensionConfiguration.getInstance(); } - @SuppressWarnings("rawtypes") @Override public Object getAdapter(Class adapter) { - if(ICLanguageKeywords.class.equals(adapter)) + if (ICLanguageKeywords.class.equals(adapter)) return XlcKeywords.ALL_C_KEYWORDS; - + return super.getAdapter(adapter); } - + } \ No newline at end of file diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPLanguage.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPLanguage.java index 4bd28533394..3504a824e2e 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPLanguage.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPLanguage.java @@ -33,70 +33,66 @@ import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.Path; /** - * + * * @author Mike Kucera */ public class XlcCPPLanguage extends GPPLanguage { - public static final String ID = "org.eclipse.cdt.core.lrparser.xlc.cpp"; //$NON-NLS-1$ + public static final String ID = "org.eclipse.cdt.core.lrparser.xlc.cpp"; //$NON-NLS-1$ private static XlcCPPLanguage DEFAULT = new XlcCPPLanguage(); - + public static XlcCPPLanguage getDefault() { return DEFAULT; } - - static IProject getProject(Map properties) { + static IProject getProject(Map properties) { String path = properties.get(LRParserProperties.TRANSLATION_UNIT_PATH); IFile[] file = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation(new Path(path)); - + IProject project = null; - if(file != null && file.length > 0) { + if (file != null && file.length > 0) { project = file[0].getProject(); } - + return project; } - - + static boolean getPref(XlcPref key, IProject project) { return Boolean.valueOf(XlcLanguagePreferences.get(key, project)); } - - + @Override - protected IParser getParser(IScanner scanner, IIndex index, Map properties) { + protected IParser getParser(IScanner scanner, IIndex index, Map properties) { IProject project = getProject(properties); - boolean supportVectors = getPref(XlcPref.SUPPORT_VECTOR_TYPES, project); + boolean supportVectors = getPref(XlcPref.SUPPORT_VECTOR_TYPES, project); boolean supportDecimals = getPref(XlcPref.SUPPORT_DECIMAL_FLOATING_POINT_TYPES, project); - boolean supportComplex = getPref(XlcPref.SUPPORT_COMPLEX_IN_CPP, project); + boolean supportComplex = getPref(XlcPref.SUPPORT_COMPLEX_IN_CPP, project); boolean supportRestrict = getPref(XlcPref.SUPPORT_RESTRICT_IN_CPP, project); boolean supportStaticAssert = getPref(XlcPref.SUPPORT_STATIC_ASSERT, project); - IDOMTokenMap tokenMap = new XlcCPPTokenMap(supportVectors, supportDecimals, supportComplex, supportRestrict, supportStaticAssert); - + IDOMTokenMap tokenMap = new XlcCPPTokenMap(supportVectors, supportDecimals, supportComplex, supportRestrict, + supportStaticAssert); + XlcCPPParser parser = new XlcCPPParser(scanner, tokenMap, getBuiltinBindingsProvider(), index, properties); return parser; } - - + public String getId() { return ID; } - + @Override protected IScannerExtensionConfiguration getScannerExtensionConfiguration() { return XlcCPPScannerExtensionConfiguration.getInstance(); } - - + @SuppressWarnings("rawtypes") @Override public Object getAdapter(Class adapter) { - if(ICLanguageKeywords.class.equals(adapter)) + if (ICLanguageKeywords.class.equals(adapter)) return XlcKeywords.ALL_CPP_KEYWORDS; - + return super.getAdapter(adapter); } - + } \ No newline at end of file diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPScannerExtensionConfiguration.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPScannerExtensionConfiguration.java index 5ac1600eba8..632f5f4f1af 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPScannerExtensionConfiguration.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPScannerExtensionConfiguration.java @@ -13,18 +13,17 @@ *******************************************************************************/ package org.eclipse.cdt.core.lrparser.xlc; - import org.eclipse.cdt.core.dom.parser.cpp.GPPScannerExtensionConfiguration; public class XlcCPPScannerExtensionConfiguration extends GPPScannerExtensionConfiguration { private static XlcCPPScannerExtensionConfiguration instance; - - - private XlcCPPScannerExtensionConfiguration() {} - + + private XlcCPPScannerExtensionConfiguration() { + } + public static synchronized XlcCPPScannerExtensionConfiguration getInstance() { - if(instance == null) + if (instance == null) instance = new XlcCPPScannerExtensionConfiguration(); return instance; } @@ -36,6 +35,6 @@ public class XlcCPPScannerExtensionConfiguration extends GPPScannerExtensionConf @Override public char[] supportAdditionalNumericLiteralSuffixes() { - return "dflij".toCharArray(); //$NON-NLS-1$ - } + return "dflij".toCharArray(); //$NON-NLS-1$ + } } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPTokenMap.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPTokenMap.java index 57ddc607c41..fae72b3c1a2 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPTokenMap.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPTokenMap.java @@ -23,180 +23,316 @@ import org.eclipse.cdt.core.parser.IToken; /** * Maps tokens types returned by CPreprocessor to token types * expected by the C++ parser. - * + * * @author Mike Kucera */ public class XlcCPPTokenMap implements IDOMTokenMap { private final XlcKeywords keywordMap; - - public XlcCPPTokenMap(boolean supportVectors, boolean supportDecimalFloatingPoint, boolean supportComplex, boolean supportRestrict, boolean supportStaticAssert) { - keywordMap = XlcKeywords.createCPP(supportVectors, supportDecimalFloatingPoint, supportComplex, supportRestrict, supportStaticAssert); + + public XlcCPPTokenMap(boolean supportVectors, boolean supportDecimalFloatingPoint, boolean supportComplex, + boolean supportRestrict, boolean supportStaticAssert) { + keywordMap = XlcKeywords.createCPP(supportVectors, supportDecimalFloatingPoint, supportComplex, supportRestrict, + supportStaticAssert); } - - + public int getEOFTokenKind() { return TK_EOF_TOKEN; } - + public int getEOCTokenKind() { return TK_EndOfCompletion; } - + public int mapKind(IToken token) { - - switch(token.getType()) { - case t__Complex : - case tIDENTIFIER : - Integer keywordKind = keywordMap.getTokenKind(token.getCharImage()); - return keywordKind == null ? TK_identifier : keywordKind; - - case tINTEGER : return TK_integer; - case tCOLONCOLON : return TK_ColonColon; - case tCOLON : return TK_Colon; - case tSEMI : return TK_SemiColon; - case tCOMMA : return TK_Comma; - case tQUESTION : return TK_Question; - case tLPAREN : return TK_LeftParen; - case tRPAREN : return TK_RightParen; - case tLBRACKET : return TK_LeftBracket; - case tRBRACKET : return TK_RightBracket; - case tLBRACE : return TK_LeftBrace; - case tRBRACE : return TK_RightBrace; - case tPLUSASSIGN : return TK_PlusAssign; - case tINCR : return TK_PlusPlus; - case tPLUS : return TK_Plus; - case tMINUSASSIGN : return TK_MinusAssign; - case tDECR : return TK_MinusMinus; - case tARROWSTAR : return TK_ArrowStar; - case tARROW : return TK_Arrow; - case tMINUS : return TK_Minus; - case tSTARASSIGN : return TK_StarAssign; - case tSTAR : return TK_Star; - case tMODASSIGN : return TK_PercentAssign; - case tMOD : return TK_Percent; - case tXORASSIGN : return TK_CaretAssign; - case tXOR : return TK_Caret; - case tAMPERASSIGN : return TK_AndAssign; - case tAND : return TK_AndAnd; - case tAMPER : return TK_And; - case tBITORASSIGN : return TK_OrAssign; - case tOR : return TK_OrOr; - case tBITOR : return TK_Or; - case tBITCOMPLEMENT: return TK_Tilde; - case tNOTEQUAL : return TK_NE; - case tNOT : return TK_Bang; - case tEQUAL : return TK_EQ; - case tASSIGN : return TK_Assign; - case tUNKNOWN_CHAR : return TK_Invalid; - case tSHIFTL : return TK_LeftShift; - case tLTEQUAL : return TK_LE; - case tLT : return TK_LT; - case tSHIFTRASSIGN : return TK_RightShiftAssign; - case tSHIFTR : return TK_RightShift; - case tGTEQUAL : return TK_GE; - case tGT : return TK_GT; - case tSHIFTLASSIGN : return TK_LeftShiftAssign; - case tELLIPSIS : return TK_DotDotDot; - case tDOTSTAR : return TK_DotStar; - case tDOT : return TK_Dot; - case tDIVASSIGN : return TK_SlashAssign; - case tDIV : return TK_Slash; - - case t_asm : return TK_asm; - case t_auto : return TK_auto; - case t_bool : return TK_bool; - case t_break : return TK_break; - case t_case : return TK_case; - case t_catch : return TK_catch; - case t_char : return TK_char; - case t_class : return TK_class; - case t_const : return TK_const; - case t_const_cast : return TK_const_cast; - case t_continue : return TK_continue; - case t_default : return TK_default; - case t_delete : return TK_delete; - case t_do : return TK_do; - case t_double : return TK_double; - case t_dynamic_cast: return TK_dynamic_cast; - case t_else : return TK_else; - case t_enum : return TK_enum; - case t_explicit : return TK_explicit; - case t_export : return TK_export; - case t_extern : return TK_extern; - case t_false : return TK_false; - case t_float : return TK_float; - case t_for : return TK_for; - case t_friend : return TK_friend; - case t_goto : return TK_goto; - case t_if : return TK_if; - case t_inline : return TK_inline; - case t_int : return TK_int; - case t_long : return TK_long; - case t_mutable : return TK_mutable; - case t_namespace : return TK_namespace; - case t_new : return TK_new; - case t_operator : return TK_operator; - case t_private : return TK_private; - case t_protected : return TK_protected; - case t_public : return TK_public; - case t_register : return TK_register; - case t_reinterpret_cast : return TK_reinterpret_cast; - case t_return : return TK_return; - case t_short : return TK_short; - case t_sizeof : return TK_sizeof; - case t_static : return TK_static; - case t_static_cast : return TK_static_cast; - case t_signed : return TK_signed; - case t_struct : return TK_struct; - case t_switch : return TK_switch; - case t_template : return TK_template; - case t_this : return TK_this; - case t_throw : return TK_throw; - case t_true : return TK_true; - case t_try : return TK_try; - case t_typedef : return TK_typedef; - case t_typeid : return TK_typeid; - case t_typename : return TK_typename; - case t_union : return TK_union; - case t_unsigned : return TK_unsigned; - case t_using : return TK_using; - case t_virtual : return TK_virtual; - case t_void : return TK_void; - case t_volatile : return TK_volatile; - case t_wchar_t : return TK_wchar_t; - case t_while : return TK_while; - - case tFLOATINGPT : return TK_floating; - case tSTRING : return TK_stringlit; - case tLSTRING : return TK_stringlit; - case tUTF16STRING : return TK_stringlit; - case tUTF32STRING : return TK_stringlit; - case tUTF16CHAR : return TK_charconst; - case tUTF32CHAR : return TK_charconst; - case tCHAR : return TK_charconst; - case tLCHAR : return TK_charconst; - case tCOMPLETION : return TK_Completion; - case tEOC : return TK_EndOfCompletion; - case tEND_OF_INPUT : return TK_EOF_TOKEN; - - case IGCCToken.t_typeof : return TK_typeof; - case IGCCToken.t___alignof__ : return TK___alignof__; - case IGCCToken.tMAX : return TK_MAX; - case IGCCToken.tMIN : return TK_MIN; - case IGCCToken.t__attribute__ : return TK___attribute__; - case IGCCToken.t__declspec : return TK___declspec; - - // GNU supports these but they are not in the C++ spec - - case t__Imaginary : return TK__Imaginary; - case t_restrict : return TK_restrict; - case tPOUND : return TK_Invalid; - - default: - assert false : "token not recognized: " + token.getType(); //$NON-NLS-1$ - return TK_Invalid; + + switch (token.getType()) { + case t__Complex: + case tIDENTIFIER: + Integer keywordKind = keywordMap.getTokenKind(token.getCharImage()); + return keywordKind == null ? TK_identifier : keywordKind; + + case tINTEGER: + return TK_integer; + case tCOLONCOLON: + return TK_ColonColon; + case tCOLON: + return TK_Colon; + case tSEMI: + return TK_SemiColon; + case tCOMMA: + return TK_Comma; + case tQUESTION: + return TK_Question; + case tLPAREN: + return TK_LeftParen; + case tRPAREN: + return TK_RightParen; + case tLBRACKET: + return TK_LeftBracket; + case tRBRACKET: + return TK_RightBracket; + case tLBRACE: + return TK_LeftBrace; + case tRBRACE: + return TK_RightBrace; + case tPLUSASSIGN: + return TK_PlusAssign; + case tINCR: + return TK_PlusPlus; + case tPLUS: + return TK_Plus; + case tMINUSASSIGN: + return TK_MinusAssign; + case tDECR: + return TK_MinusMinus; + case tARROWSTAR: + return TK_ArrowStar; + case tARROW: + return TK_Arrow; + case tMINUS: + return TK_Minus; + case tSTARASSIGN: + return TK_StarAssign; + case tSTAR: + return TK_Star; + case tMODASSIGN: + return TK_PercentAssign; + case tMOD: + return TK_Percent; + case tXORASSIGN: + return TK_CaretAssign; + case tXOR: + return TK_Caret; + case tAMPERASSIGN: + return TK_AndAssign; + case tAND: + return TK_AndAnd; + case tAMPER: + return TK_And; + case tBITORASSIGN: + return TK_OrAssign; + case tOR: + return TK_OrOr; + case tBITOR: + return TK_Or; + case tBITCOMPLEMENT: + return TK_Tilde; + case tNOTEQUAL: + return TK_NE; + case tNOT: + return TK_Bang; + case tEQUAL: + return TK_EQ; + case tASSIGN: + return TK_Assign; + case tUNKNOWN_CHAR: + return TK_Invalid; + case tSHIFTL: + return TK_LeftShift; + case tLTEQUAL: + return TK_LE; + case tLT: + return TK_LT; + case tSHIFTRASSIGN: + return TK_RightShiftAssign; + case tSHIFTR: + return TK_RightShift; + case tGTEQUAL: + return TK_GE; + case tGT: + return TK_GT; + case tSHIFTLASSIGN: + return TK_LeftShiftAssign; + case tELLIPSIS: + return TK_DotDotDot; + case tDOTSTAR: + return TK_DotStar; + case tDOT: + return TK_Dot; + case tDIVASSIGN: + return TK_SlashAssign; + case tDIV: + return TK_Slash; + + case t_asm: + return TK_asm; + case t_auto: + return TK_auto; + case t_bool: + return TK_bool; + case t_break: + return TK_break; + case t_case: + return TK_case; + case t_catch: + return TK_catch; + case t_char: + return TK_char; + case t_class: + return TK_class; + case t_const: + return TK_const; + case t_const_cast: + return TK_const_cast; + case t_continue: + return TK_continue; + case t_default: + return TK_default; + case t_delete: + return TK_delete; + case t_do: + return TK_do; + case t_double: + return TK_double; + case t_dynamic_cast: + return TK_dynamic_cast; + case t_else: + return TK_else; + case t_enum: + return TK_enum; + case t_explicit: + return TK_explicit; + case t_export: + return TK_export; + case t_extern: + return TK_extern; + case t_false: + return TK_false; + case t_float: + return TK_float; + case t_for: + return TK_for; + case t_friend: + return TK_friend; + case t_goto: + return TK_goto; + case t_if: + return TK_if; + case t_inline: + return TK_inline; + case t_int: + return TK_int; + case t_long: + return TK_long; + case t_mutable: + return TK_mutable; + case t_namespace: + return TK_namespace; + case t_new: + return TK_new; + case t_operator: + return TK_operator; + case t_private: + return TK_private; + case t_protected: + return TK_protected; + case t_public: + return TK_public; + case t_register: + return TK_register; + case t_reinterpret_cast: + return TK_reinterpret_cast; + case t_return: + return TK_return; + case t_short: + return TK_short; + case t_sizeof: + return TK_sizeof; + case t_static: + return TK_static; + case t_static_cast: + return TK_static_cast; + case t_signed: + return TK_signed; + case t_struct: + return TK_struct; + case t_switch: + return TK_switch; + case t_template: + return TK_template; + case t_this: + return TK_this; + case t_throw: + return TK_throw; + case t_true: + return TK_true; + case t_try: + return TK_try; + case t_typedef: + return TK_typedef; + case t_typeid: + return TK_typeid; + case t_typename: + return TK_typename; + case t_union: + return TK_union; + case t_unsigned: + return TK_unsigned; + case t_using: + return TK_using; + case t_virtual: + return TK_virtual; + case t_void: + return TK_void; + case t_volatile: + return TK_volatile; + case t_wchar_t: + return TK_wchar_t; + case t_while: + return TK_while; + + case tFLOATINGPT: + return TK_floating; + case tSTRING: + return TK_stringlit; + case tLSTRING: + return TK_stringlit; + case tUTF16STRING: + return TK_stringlit; + case tUTF32STRING: + return TK_stringlit; + case tUTF16CHAR: + return TK_charconst; + case tUTF32CHAR: + return TK_charconst; + case tCHAR: + return TK_charconst; + case tLCHAR: + return TK_charconst; + case tCOMPLETION: + return TK_Completion; + case tEOC: + return TK_EndOfCompletion; + case tEND_OF_INPUT: + return TK_EOF_TOKEN; + + case IGCCToken.t_typeof: + return TK_typeof; + case IGCCToken.t___alignof__: + return TK___alignof__; + case IGCCToken.tMAX: + return TK_MAX; + case IGCCToken.tMIN: + return TK_MIN; + case IGCCToken.t__attribute__: + return TK___attribute__; + case IGCCToken.t__declspec: + return TK___declspec; + + // GNU supports these but they are not in the C++ spec + + case t__Imaginary: + return TK__Imaginary; + case t_restrict: + return TK_restrict; + case tPOUND: + return TK_Invalid; + + default: + assert false : "token not recognized: " + token.getType(); //$NON-NLS-1$ + return TK_Invalid; } } - + } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCScannerExtensionConfiguration.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCScannerExtensionConfiguration.java index e8a4472a32c..64e6d9974b8 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCScannerExtensionConfiguration.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCScannerExtensionConfiguration.java @@ -18,12 +18,12 @@ import org.eclipse.cdt.core.dom.parser.c.GCCScannerExtensionConfiguration; public class XlcCScannerExtensionConfiguration extends GCCScannerExtensionConfiguration { private static XlcCScannerExtensionConfiguration instance; - - - private XlcCScannerExtensionConfiguration() {} - + + private XlcCScannerExtensionConfiguration() { + } + public static synchronized XlcCScannerExtensionConfiguration getInstance() { - if(instance == null) + if (instance == null) instance = new XlcCScannerExtensionConfiguration(); return instance; } @@ -35,6 +35,6 @@ public class XlcCScannerExtensionConfiguration extends GCCScannerExtensionConfig @Override public char[] supportAdditionalNumericLiteralSuffixes() { - return "dflij".toCharArray(); //$NON-NLS-1$ - } + return "dflij".toCharArray(); //$NON-NLS-1$ + } } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCTokenMap.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCTokenMap.java index 80012d1654c..9179ee616ee 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCTokenMap.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCTokenMap.java @@ -23,146 +23,247 @@ import org.eclipse.cdt.core.parser.IToken; /** * Maps tokens types returned by CPreprocessor to token types * expected by the C99 parser. - * + * * @author Mike Kucera */ public final class XlcCTokenMap implements IDOMTokenMap { private final XlcKeywords keywordMap; - + public XlcCTokenMap(boolean supportVectors, boolean supportDecimalFloatingPoint) { keywordMap = XlcKeywords.createC(supportVectors, supportDecimalFloatingPoint); } - - + public int getEOFTokenKind() { return TK_EOF_TOKEN; } - + public int getEOCTokenKind() { return TK_EndOfCompletion; } - + public int mapKind(IToken token) { - - switch(token.getType()) { - case tIDENTIFIER : - Integer keywordKind = keywordMap.getTokenKind(token.getCharImage()); - return keywordKind == null ? TK_identifier : keywordKind; - - case tINTEGER : return TK_integer; - case tCOLON : return TK_Colon; - case tSEMI : return TK_SemiColon; - case tCOMMA : return TK_Comma; - case tQUESTION : return TK_Question; - case tLPAREN : return TK_LeftParen; - case tRPAREN : return TK_RightParen; - case tLBRACKET : return TK_LeftBracket; - case tRBRACKET : return TK_RightBracket; - case tLBRACE : return TK_LeftBrace; - case tRBRACE : return TK_RightBrace; - case tPLUSASSIGN : return TK_PlusAssign; - case tINCR : return TK_PlusPlus; - case tPLUS : return TK_Plus; - case tMINUSASSIGN : return TK_MinusAssign; - case tDECR : return TK_MinusMinus; - case tARROW : return TK_Arrow; - case tMINUS : return TK_Minus; - case tSTARASSIGN : return TK_StarAssign; - case tSTAR : return TK_Star; - case tMODASSIGN : return TK_PercentAssign; - case tMOD : return TK_Percent; - case tXORASSIGN : return TK_CaretAssign; - case tXOR : return TK_Caret; - case tAMPERASSIGN : return TK_AndAssign; - case tAND : return TK_AndAnd; - case tAMPER : return TK_And; - case tBITORASSIGN : return TK_OrAssign; - case tOR : return TK_OrOr; - case tBITOR : return TK_Or; - case tBITCOMPLEMENT: return TK_Tilde; - case tNOTEQUAL : return TK_NE; - case tNOT : return TK_Bang; - case tEQUAL : return TK_EQ; - case tASSIGN : return TK_Assign; - case tUNKNOWN_CHAR : return TK_Invalid; - case tSHIFTL : return TK_LeftShift; - case tLTEQUAL : return TK_LE; - case tLT : return TK_LT; - case tSHIFTRASSIGN : return TK_RightShiftAssign; - case tSHIFTR : return TK_RightShift; - case tGTEQUAL : return TK_GE; - case tGT : return TK_GT; - case tSHIFTLASSIGN : return TK_LeftShiftAssign; - case tELLIPSIS : return TK_DotDotDot; - case tDOT : return TK_Dot; - case tDIVASSIGN : return TK_SlashAssign; - case tDIV : return TK_Slash; - - case t_auto : return TK_auto; - case t_break : return TK_break; - case t_case : return TK_case; - case t_char : return TK_char; - case t_const : return TK_const; - case t_continue : return TK_continue; - case t_default : return TK_default; - case t_do : return TK_do; - case t_double : return TK_double; - case t_else : return TK_else; - case t_enum : return TK_enum; - case t_extern : return TK_extern; - case t_float : return TK_float; - case t_for : return TK_for; - case t_goto : return TK_goto; - case t_if : return TK_if; - case t_inline : return TK_inline; - case t_int : return TK_int; - case t_long : return TK_long; - case t_register : return TK_register; - case t_return : return TK_return; - case t_short : return TK_short; - case t_sizeof : return TK_sizeof; - case t_static : return TK_static; - case t_signed : return TK_signed; - case t_struct : return TK_struct; - case t_switch : return TK_switch; - case t_typedef : return TK_typedef; - case t_union : return TK_union; - case t_unsigned : return TK_unsigned; - case t_void : return TK_void; - case t_volatile : return TK_volatile; - case t_while : return TK_while; - case tFLOATINGPT : return TK_floating; - case tSTRING : return TK_stringlit; - case tLSTRING : return TK_stringlit; - case tUTF16STRING : return TK_stringlit; - case tUTF32STRING : return TK_stringlit; - case tCHAR : return TK_charconst; - case tLCHAR : return TK_charconst; - case tUTF16CHAR : return TK_charconst; - case tUTF32CHAR : return TK_charconst; - case t__Bool : return TK__Bool; - case t__Complex : return TK__Complex; - case t__Imaginary : return TK__Imaginary; - case t_restrict : return TK_restrict; - case tCOMPLETION : return TK_Completion; - case tEOC : return TK_EndOfCompletion; - case tEND_OF_INPUT : return TK_EOF_TOKEN; - - case IGCCToken.t_typeof : return TK_typeof; - case IGCCToken.t___alignof__ : return TK___alignof__; - case IGCCToken.tMAX : return TK_MAX; - case IGCCToken.tMIN : return TK_MIN; - case IGCCToken.t__attribute__ : return TK___attribute__; - case IGCCToken.t__declspec : return TK___declspec; - - case t_asm: return TK_asm; - - - default: - assert false : "token not recognized by the XLC parser: " + token.getType(); //$NON-NLS-1$ - return TK_Invalid; + switch (token.getType()) { + case tIDENTIFIER: + Integer keywordKind = keywordMap.getTokenKind(token.getCharImage()); + return keywordKind == null ? TK_identifier : keywordKind; + + case tINTEGER: + return TK_integer; + case tCOLON: + return TK_Colon; + case tSEMI: + return TK_SemiColon; + case tCOMMA: + return TK_Comma; + case tQUESTION: + return TK_Question; + case tLPAREN: + return TK_LeftParen; + case tRPAREN: + return TK_RightParen; + case tLBRACKET: + return TK_LeftBracket; + case tRBRACKET: + return TK_RightBracket; + case tLBRACE: + return TK_LeftBrace; + case tRBRACE: + return TK_RightBrace; + case tPLUSASSIGN: + return TK_PlusAssign; + case tINCR: + return TK_PlusPlus; + case tPLUS: + return TK_Plus; + case tMINUSASSIGN: + return TK_MinusAssign; + case tDECR: + return TK_MinusMinus; + case tARROW: + return TK_Arrow; + case tMINUS: + return TK_Minus; + case tSTARASSIGN: + return TK_StarAssign; + case tSTAR: + return TK_Star; + case tMODASSIGN: + return TK_PercentAssign; + case tMOD: + return TK_Percent; + case tXORASSIGN: + return TK_CaretAssign; + case tXOR: + return TK_Caret; + case tAMPERASSIGN: + return TK_AndAssign; + case tAND: + return TK_AndAnd; + case tAMPER: + return TK_And; + case tBITORASSIGN: + return TK_OrAssign; + case tOR: + return TK_OrOr; + case tBITOR: + return TK_Or; + case tBITCOMPLEMENT: + return TK_Tilde; + case tNOTEQUAL: + return TK_NE; + case tNOT: + return TK_Bang; + case tEQUAL: + return TK_EQ; + case tASSIGN: + return TK_Assign; + case tUNKNOWN_CHAR: + return TK_Invalid; + case tSHIFTL: + return TK_LeftShift; + case tLTEQUAL: + return TK_LE; + case tLT: + return TK_LT; + case tSHIFTRASSIGN: + return TK_RightShiftAssign; + case tSHIFTR: + return TK_RightShift; + case tGTEQUAL: + return TK_GE; + case tGT: + return TK_GT; + case tSHIFTLASSIGN: + return TK_LeftShiftAssign; + case tELLIPSIS: + return TK_DotDotDot; + case tDOT: + return TK_Dot; + case tDIVASSIGN: + return TK_SlashAssign; + case tDIV: + return TK_Slash; + + case t_auto: + return TK_auto; + case t_break: + return TK_break; + case t_case: + return TK_case; + case t_char: + return TK_char; + case t_const: + return TK_const; + case t_continue: + return TK_continue; + case t_default: + return TK_default; + case t_do: + return TK_do; + case t_double: + return TK_double; + case t_else: + return TK_else; + case t_enum: + return TK_enum; + case t_extern: + return TK_extern; + case t_float: + return TK_float; + case t_for: + return TK_for; + case t_goto: + return TK_goto; + case t_if: + return TK_if; + case t_inline: + return TK_inline; + case t_int: + return TK_int; + case t_long: + return TK_long; + case t_register: + return TK_register; + case t_return: + return TK_return; + case t_short: + return TK_short; + case t_sizeof: + return TK_sizeof; + case t_static: + return TK_static; + case t_signed: + return TK_signed; + case t_struct: + return TK_struct; + case t_switch: + return TK_switch; + case t_typedef: + return TK_typedef; + case t_union: + return TK_union; + case t_unsigned: + return TK_unsigned; + case t_void: + return TK_void; + case t_volatile: + return TK_volatile; + case t_while: + return TK_while; + case tFLOATINGPT: + return TK_floating; + case tSTRING: + return TK_stringlit; + case tLSTRING: + return TK_stringlit; + case tUTF16STRING: + return TK_stringlit; + case tUTF32STRING: + return TK_stringlit; + case tCHAR: + return TK_charconst; + case tLCHAR: + return TK_charconst; + case tUTF16CHAR: + return TK_charconst; + case tUTF32CHAR: + return TK_charconst; + case t__Bool: + return TK__Bool; + case t__Complex: + return TK__Complex; + case t__Imaginary: + return TK__Imaginary; + case t_restrict: + return TK_restrict; + case tCOMPLETION: + return TK_Completion; + case tEOC: + return TK_EndOfCompletion; + case tEND_OF_INPUT: + return TK_EOF_TOKEN; + + case IGCCToken.t_typeof: + return TK_typeof; + case IGCCToken.t___alignof__: + return TK___alignof__; + case IGCCToken.tMAX: + return TK_MAX; + case IGCCToken.tMIN: + return TK_MIN; + case IGCCToken.t__attribute__: + return TK___attribute__; + case IGCCToken.t__declspec: + return TK___declspec; + + case t_asm: + return TK_asm; + + default: + assert false : "token not recognized by the XLC parser: " + token.getType(); //$NON-NLS-1$ + return TK_Invalid; } } } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java index 5ce477b5e21..b8227279d18 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java @@ -26,102 +26,98 @@ import org.eclipse.cdt.internal.core.lrparser.xlc.c.XlcCParsersym; import org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym; public class XlcKeywords extends CLanguageKeywords { - + public static final XlcKeywords ALL_C_KEYWORDS = createC(true, true); public static final XlcKeywords ALL_CPP_KEYWORDS = createCPP(true, true, true, true, true); - - + private final CharArrayMap map = new CharArrayMap(); private final ParserLanguage language; private String[] allKeywords = null; - - + public static XlcKeywords createC(boolean supportVectors, boolean supportDecimalFloatingPoint) { XlcKeywords keywords = new XlcKeywords(ParserLanguage.C); CharArrayMap map = keywords.map; - if(supportVectors) { - map.put("vector".toCharArray(), XlcCParsersym.TK_vector); + if (supportVectors) { + map.put("vector".toCharArray(), XlcCParsersym.TK_vector); map.put("__vector".toCharArray(), XlcCParsersym.TK_vector); - map.put("pixel".toCharArray(), XlcCParsersym.TK_pixel); - map.put("__pixel".toCharArray(), XlcCParsersym.TK_pixel); - map.put("bool".toCharArray(), XlcCParsersym.TK_bool); + map.put("pixel".toCharArray(), XlcCParsersym.TK_pixel); + map.put("__pixel".toCharArray(), XlcCParsersym.TK_pixel); + map.put("bool".toCharArray(), XlcCParsersym.TK_bool); } - if(supportDecimalFloatingPoint) { - map.put("_Decimal32".toCharArray(), XlcCParsersym.TK__Decimal32); - map.put("_Decimal64".toCharArray(), XlcCParsersym.TK__Decimal64); + if (supportDecimalFloatingPoint) { + map.put("_Decimal32".toCharArray(), XlcCParsersym.TK__Decimal32); + map.put("_Decimal64".toCharArray(), XlcCParsersym.TK__Decimal64); map.put("_Decimal128".toCharArray(), XlcCParsersym.TK__Decimal128); } return keywords; } - - public static XlcKeywords createCPP(boolean supportVectors, boolean supportDecimalFloatingPoint, boolean supportComplex, boolean supportRestrict, boolean supportStaticAssert) { + + public static XlcKeywords createCPP(boolean supportVectors, boolean supportDecimalFloatingPoint, + boolean supportComplex, boolean supportRestrict, boolean supportStaticAssert) { XlcKeywords keywords = new XlcKeywords(ParserLanguage.CPP); CharArrayMap map = keywords.map; - if(supportVectors) { - map.put("vector".toCharArray(), XlcCPPParsersym.TK_vector); + if (supportVectors) { + map.put("vector".toCharArray(), XlcCPPParsersym.TK_vector); map.put("__vector".toCharArray(), XlcCPPParsersym.TK_vector); - map.put("pixel".toCharArray(), XlcCPPParsersym.TK_pixel); - map.put("__pixel".toCharArray(), XlcCPPParsersym.TK_pixel); + map.put("pixel".toCharArray(), XlcCPPParsersym.TK_pixel); + map.put("__pixel".toCharArray(), XlcCPPParsersym.TK_pixel); } - if(supportDecimalFloatingPoint) { - map.put("_Decimal32".toCharArray(), XlcCPPParsersym.TK__Decimal32); - map.put("_Decimal64".toCharArray(), XlcCPPParsersym.TK__Decimal64); + if (supportDecimalFloatingPoint) { + map.put("_Decimal32".toCharArray(), XlcCPPParsersym.TK__Decimal32); + map.put("_Decimal64".toCharArray(), XlcCPPParsersym.TK__Decimal64); map.put("_Decimal128".toCharArray(), XlcCPPParsersym.TK__Decimal128); } - if(supportComplex) { + if (supportComplex) { map.put("_Complex".toCharArray(), XlcCPPParsersym.TK__Complex); } - if(supportRestrict) { + if (supportRestrict) { map.put("restrict".toCharArray(), XlcCPPParsersym.TK_restrict); map.put("__restrict".toCharArray(), XlcCPPParsersym.TK_restrict); map.put("__restrict__".toCharArray(), XlcCPPParsersym.TK_restrict); } - - if(supportStaticAssert) { + + if (supportStaticAssert) { map.put("__static_assert".toCharArray(), XlcCPPParsersym.TK___static_assert); } - + return keywords; } - private XlcKeywords(ParserLanguage language) { super(language, getConfig(language)); this.language = language; } - + private static IScannerExtensionConfiguration getConfig(ParserLanguage lang) { - return lang.isCPP() - ? XlcCPPScannerExtensionConfiguration.getInstance() + return lang.isCPP() ? XlcCPPScannerExtensionConfiguration.getInstance() : XlcCScannerExtensionConfiguration.getInstance(); } - + /** - * Returns the LPG token kind for additional keywords defined by + * Returns the LPG token kind for additional keywords defined by * the XLC extensions, null otherwise. */ public Integer getTokenKind(char[] keyword) { return map.get(keyword); } - + @Override public synchronized String[] getKeywords() { - if(allKeywords == null) { + if (allKeywords == null) { ICLanguageKeywords base = new CLanguageKeywords(language, getConfig(language)); String[] baseKeywords = base.getKeywords(); - + List keywords = new ArrayList(); keywords.addAll(Arrays.asList(baseKeywords)); - - for(char[] keyword : map.keys()) { + + for (char[] keyword : map.keys()) { keywords.add(String.valueOf(keyword)); } - + allKeywords = keywords.toArray(new String[keywords.size()]); } return allKeywords; } - } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCBuildASTParserAction.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCBuildASTParserAction.java index 835d675ce2c..19304d79492 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCBuildASTParserAction.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCBuildASTParserAction.java @@ -27,9 +27,7 @@ public class XlcCBuildASTParserAction extends GCCBuildASTParserAction { private IXlcCNodeFactory nodeFactory; - - public XlcCBuildASTParserAction(ITokenStream parser, - ScopedStack astStack, IXlcCNodeFactory nodeFactory, + public XlcCBuildASTParserAction(ITokenStream parser, ScopedStack astStack, IXlcCNodeFactory nodeFactory, ISecondaryParserFactory parserFactory) { super(parser, astStack, nodeFactory, parserFactory); this.nodeFactory = nodeFactory; @@ -37,30 +35,30 @@ public class XlcCBuildASTParserAction extends GCCBuildASTParserAction { /* * vector_type - * ::= sqlist_op 'vector' vector_type_specifier all_specifier_qualifier_list + * ::= sqlist_op 'vector' vector_type_specifier all_specifier_qualifier_list */ public void consumeVectorTypeSpecifier() { IXlcCASTVectorTypeSpecifier declSpec = nodeFactory.newVectorTypeSpecifier(); - - for(Object specifier : astStack.closeScope()) { - if(specifier instanceof IToken) { - switch(((IToken)specifier).getKind()) { - case XlcCParsersym.TK_pixel : + + for (Object specifier : astStack.closeScope()) { + if (specifier instanceof IToken) { + switch (((IToken) specifier).getKind()) { + case XlcCParsersym.TK_pixel: declSpec.setPixel(true); continue; - case XlcCParsersym.TK_bool : + case XlcCParsersym.TK_bool: declSpec.setBool(true); continue; - case XlcCParsersym.TK_vector : + case XlcCParsersym.TK_vector: continue; } } - + setSpecifier(declSpec, specifier); } - + setOffsetAndLength(declSpec); astStack.push(declSpec); } - + } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCPPBuildASTParserAction.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCPPBuildASTParserAction.java index df9aa5fcc69..195ad3abf62 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCPPBuildASTParserAction.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCPPBuildASTParserAction.java @@ -34,9 +34,7 @@ public class XlcCPPBuildASTParserAction extends GPPBuildASTParserAction { private IXlcCPPNodeFactory nodeFactory; private final ITokenMap tokenMap; - - public XlcCPPBuildASTParserAction(ITokenStream parser, - ScopedStack astStack, IXlcCPPNodeFactory nodeFactory, + public XlcCPPBuildASTParserAction(ITokenStream parser, ScopedStack astStack, IXlcCPPNodeFactory nodeFactory, ICPPSecondaryParserFactory parserFactory) { super(parser, astStack, nodeFactory, parserFactory); this.nodeFactory = nodeFactory; @@ -45,67 +43,72 @@ public class XlcCPPBuildASTParserAction extends GPPBuildASTParserAction { /* * vector_type - * ::= sqlist_op 'vector' vector_type_specifier all_specifier_qualifier_list + * ::= sqlist_op 'vector' vector_type_specifier all_specifier_qualifier_list */ public void consumeVectorTypeSpecifier() { IXlcCPPASTVectorTypeSpecifier declSpec = nodeFactory.newVectorTypeSpecifier(); - - for(Object specifier : astStack.closeScope()) { - if(specifier instanceof IToken) { - switch(tokenMap.mapKind(((IToken)specifier).getKind())) { - case XlcCPPParsersym.TK_pixel : + + for (Object specifier : astStack.closeScope()) { + if (specifier instanceof IToken) { + switch (tokenMap.mapKind(((IToken) specifier).getKind())) { + case XlcCPPParsersym.TK_pixel: declSpec.setPixel(true); continue; - case XlcCPPParsersym.TK_vector : + case XlcCPPParsersym.TK_vector: continue; } } - + setSpecifier(declSpec, specifier); } - + setOffsetAndLength(declSpec); astStack.push(declSpec); } - - - public void consumeDirectDeclaratorModifiedArrayModifier(boolean isStatic, - boolean isVarSized, boolean hasTypeQualifierList, boolean hasAssignmentExpr) { + + public void consumeDirectDeclaratorModifiedArrayModifier(boolean isStatic, boolean isVarSized, + boolean hasTypeQualifierList, boolean hasAssignmentExpr) { assert isStatic || isVarSized || hasTypeQualifierList; - + IXlcCPPASTModifiedArrayModifier arrayModifier = nodeFactory.newModifiedArrayModifier(null); - + // consume all the stuff between the square brackets into an array modifier arrayModifier.setStatic(isStatic); arrayModifier.setVariableSized(isVarSized); - - if(hasAssignmentExpr) - arrayModifier.setConstantExpression((IASTExpression)astStack.pop()); - - if(hasTypeQualifierList) + + if (hasAssignmentExpr) + arrayModifier.setConstantExpression((IASTExpression) astStack.pop()); + + if (hasTypeQualifierList) collectArrayModifierTypeQualifiers(arrayModifier); setOffsetAndLength(arrayModifier); astStack.push(arrayModifier); } - + private void collectArrayModifierTypeQualifiers(IXlcCPPASTModifiedArrayModifier arrayModifier) { - for(Object o : astStack.closeScope()) { - switch(tokenMap.mapKind(((IToken)o).getKind())) { - case XlcCPPParsersym.TK_const: arrayModifier.setConst(true); break; - case XlcCPPParsersym.TK_restrict: arrayModifier.setRestrict(true); break; - case XlcCPPParsersym.TK_volatile: arrayModifier.setVolatile(true); break; + for (Object o : astStack.closeScope()) { + switch (tokenMap.mapKind(((IToken) o).getKind())) { + case XlcCPPParsersym.TK_const: + arrayModifier.setConst(true); + break; + case XlcCPPParsersym.TK_restrict: + arrayModifier.setRestrict(true); + break; + case XlcCPPParsersym.TK_volatile: + arrayModifier.setVolatile(true); + break; } } } - + /** * staticAssertDeclaration ::= '__static_assert' '(' expression ',' literal ')' ';' */ public void consumeCPPASTStaticAssertDeclaration() { ICPPASTLiteralExpression message = (ICPPASTLiteralExpression) astStack.pop(); IASTExpression condition = (IASTExpression) astStack.pop(); - + ICPPASTStaticAssertDeclaration assertDeclaration = nodeFactory.newStaticAssertion(condition, message); setOffsetAndLength(assertDeclaration); astStack.push(assertDeclaration); diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/activator/XlcParserPlugin.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/activator/XlcParserPlugin.java index 833e816fbbc..171ba54c8bd 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/activator/XlcParserPlugin.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/activator/XlcParserPlugin.java @@ -18,7 +18,5 @@ import org.eclipse.core.runtime.Plugin; public class XlcParserPlugin extends Plugin { public static final String PLUGIN_ID = "org.eclipse.cdt.core.lrparser.xlc"; - - } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCASTVectorTypeSpecifier.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCASTVectorTypeSpecifier.java index fd4a76ca262..68a96369df1 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCASTVectorTypeSpecifier.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCASTVectorTypeSpecifier.java @@ -18,11 +18,11 @@ import org.eclipse.cdt.core.dom.ast.c.ICASTDeclSpecifier; public interface IXlcCASTVectorTypeSpecifier extends ICASTDeclSpecifier { public boolean isPixel(); - + public void setPixel(boolean isPixel); - + public boolean isBool(); - + public void setBool(boolean isBool); - + } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTModifiedArrayModifier.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTModifiedArrayModifier.java index 724773ea16c..f2e19a0a5fa 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTModifiedArrayModifier.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTModifiedArrayModifier.java @@ -20,39 +20,38 @@ import org.eclipse.cdt.core.dom.ast.IASTArrayModifier; * */ public interface IXlcCPPASTModifiedArrayModifier extends IASTArrayModifier { - /** * Is the const modifier used? - * + * * @return boolean */ public boolean isConst(); /** * Is the static modifier used? - * + * * @return boolean */ public boolean isStatic(); /** * Is the restrict modifier used? - * + * * @return boolean */ public boolean isRestrict(); /** * Is the volatile modifier used? - * + * * @return boolean */ public boolean isVolatile(); /** * Set true/false that the const modifier is used. - * + * * @param value * boolean */ @@ -60,7 +59,7 @@ public interface IXlcCPPASTModifiedArrayModifier extends IASTArrayModifier { /** * Set true/false that the volatile modifier is used. - * + * * @param value * boolean */ @@ -68,7 +67,7 @@ public interface IXlcCPPASTModifiedArrayModifier extends IASTArrayModifier { /** * Set true/false that the restrict modifier is used. - * + * * @param value * boolean */ @@ -76,7 +75,7 @@ public interface IXlcCPPASTModifiedArrayModifier extends IASTArrayModifier { /** * Set true/false that the static modifier is used. - * + * * @param value * boolean */ @@ -84,19 +83,19 @@ public interface IXlcCPPASTModifiedArrayModifier extends IASTArrayModifier { /** * Is the array variable sized? ( used ... ) - * + * * @return boolean */ public boolean isVariableSized(); /** * Set the array to be variable sized dependent upon value. - * + * * @param value * boolean */ public void setVariableSized(boolean value); - + /** */ public IXlcCPPASTModifiedArrayModifier copy(); diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTVectorTypeSpecifier.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTVectorTypeSpecifier.java index df660ec071d..50cd9becaf0 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTVectorTypeSpecifier.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPASTVectorTypeSpecifier.java @@ -7,7 +7,7 @@ * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 - * + * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ @@ -18,7 +18,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTDeclSpecifier; public interface IXlcCPPASTVectorTypeSpecifier extends ICPPASTDeclSpecifier { public boolean isPixel(); - + public void setPixel(boolean isPixel); - + } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPNodeFactory.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPNodeFactory.java index 998e64e1379..538fbbb32e8 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPNodeFactory.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPNodeFactory.java @@ -7,7 +7,7 @@ * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 - * + * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ @@ -17,8 +17,8 @@ import org.eclipse.cdt.core.dom.ast.IASTExpression; import org.eclipse.cdt.core.dom.ast.cpp.ICPPNodeFactory; public interface IXlcCPPNodeFactory extends ICPPNodeFactory { - + public IXlcCPPASTVectorTypeSpecifier newVectorTypeSpecifier(); - + public IXlcCPPASTModifiedArrayModifier newModifiedArrayModifier(IASTExpression expr); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcLanguagePreferences.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcLanguagePreferences.java index 1956ff74ad1..6e7c610ad11 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcLanguagePreferences.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcLanguagePreferences.java @@ -24,35 +24,30 @@ import org.osgi.service.prefs.Preferences; /** * TODO trigger the indexer? - * + * * @author Mike Kucera */ -public class XlcLanguagePreferences { +public class XlcLanguagePreferences { private static final String QUALIFIER = XlcParserPlugin.PLUGIN_ID; private static final String XLC_PREFERENCES_NODE = "xlc.preferences"; - static void initializeDefaultPreferences() { Preferences defaultNode = getDefaultPreferences(); - - for(XlcPref p : XlcPref.values()) { + + for (XlcPref p : XlcPref.values()) { defaultNode.put(p.toString(), p.getDefaultValue()); } } - - - + public static void setProjectPreference(XlcPref key, String value, IProject project) { getProjectPreferences(project).put(key.toString(), value); } - + public static void setWorkspacePreference(XlcPref key, String value) { getWorkspacePreferences().put(key.toString(), value); } - - - + public static String getProjectPreference(XlcPref key, IProject project) { return getProjectPreferences(project).get(key.toString(), null); } @@ -60,15 +55,14 @@ public class XlcLanguagePreferences { public static String getWorkspacePreference(XlcPref key) { return getWorkspacePreferences().get(key.toString(), null); } - + public static String getDefaultPreference(XlcPref key) { return getDefaultPreferences().get(key.toString(), null); } - /** * Returns the preference for the given key. - * + * * @param project If null then just the workspace and default preferences will be checked. */ public static String get(XlcPref key, IProject project) { @@ -76,31 +70,22 @@ public class XlcLanguagePreferences { } private static Preferences[] getPreferences(IProject project) { - if(project == null) { - return new Preferences[] { - getWorkspacePreferences(), - getDefaultPreferences() - }; - } - else { - return new Preferences[] { - getProjectPreferences(project), - getWorkspacePreferences(), - getDefaultPreferences() - }; + if (project == null) { + return new Preferences[] { getWorkspacePreferences(), getDefaultPreferences() }; + } else { + return new Preferences[] { getProjectPreferences(project), getWorkspacePreferences(), + getDefaultPreferences() }; } } - - - + private static Preferences getDefaultPreferences() { return getPreferences(DefaultScope.INSTANCE); } - + private static Preferences getWorkspacePreferences() { return getPreferences(InstanceScope.INSTANCE); } - + private static Preferences getProjectPreferences(IProject project) { return getPreferences(new ProjectScope(project)); } @@ -109,6 +94,4 @@ public class XlcLanguagePreferences { return scope.getNode(QUALIFIER).node(XLC_PREFERENCES_NODE); } - - } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcPref.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcPref.java index ccf1c582ae2..194532c185d 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcPref.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcPref.java @@ -13,27 +13,18 @@ *******************************************************************************/ package org.eclipse.cdt.core.lrparser.xlc.preferences; - public enum XlcPref { - - SUPPORT_VECTOR_TYPES("true"), - SUPPORT_DECIMAL_FLOATING_POINT_TYPES("true"), - SUPPORT_COMPLEX_IN_CPP("true"), - SUPPORT_RESTRICT_IN_CPP("true"), - SUPPORT_STATIC_ASSERT("true"); + SUPPORT_VECTOR_TYPES("true"), SUPPORT_DECIMAL_FLOATING_POINT_TYPES("true"), SUPPORT_COMPLEX_IN_CPP("true"), + SUPPORT_RESTRICT_IN_CPP("true"), SUPPORT_STATIC_ASSERT("true"); - private final String defaultVal; - + private XlcPref(String defaultVal) { this.defaultVal = defaultVal; } - + public String getDefaultValue() { return defaultVal; } } - - - diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCNodeFactory.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCNodeFactory.java index d7023e1d74a..3da0095254c 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCNodeFactory.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCNodeFactory.java @@ -21,7 +21,7 @@ import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory; public class XlcCNodeFactory extends CNodeFactory implements IXlcCNodeFactory { private static final XlcCNodeFactory DEFAULT_INSTANCE = new XlcCNodeFactory(); - + public static XlcCNodeFactory getDefault() { return DEFAULT_INSTANCE; } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTModifiedArrayModifier.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTModifiedArrayModifier.java index 34b5a7e36f0..f6857b5f59f 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTModifiedArrayModifier.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTModifiedArrayModifier.java @@ -21,10 +21,10 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTArrayModifier; public class XlcCPPASTModifiedArrayModifier extends CPPASTArrayModifier implements IXlcCPPASTModifiedArrayModifier { private boolean isVolatile; - private boolean isRestrict; - private boolean isStatic; - private boolean isConst; - private boolean varSized; + private boolean isRestrict; + private boolean isStatic; + private boolean isConst; + private boolean varSized; public XlcCPPASTModifiedArrayModifier() { } @@ -49,50 +49,50 @@ public class XlcCPPASTModifiedArrayModifier extends CPPASTArrayModifier implemen copy.varSized = varSized; return copy(copy, style); } - + public boolean isConst() { - return isConst; - } - - public boolean isStatic() { - return isStatic; - } - - public boolean isRestrict() { - return isRestrict; - } - - public boolean isVolatile() { - return isVolatile; - } - - public void setConst(boolean value) { - assertNotFrozen(); - this.isConst = value; - } - - public void setVolatile(boolean value) { - assertNotFrozen(); - this.isVolatile = value; - } - - public void setRestrict(boolean value) { - assertNotFrozen(); - this.isRestrict = value; - } - - public void setStatic(boolean value) { - assertNotFrozen(); - this.isStatic = value; - } - - public boolean isVariableSized() { - return varSized; - } - - public void setVariableSized(boolean value) { - assertNotFrozen(); - varSized = value; - } + return isConst; + } + + public boolean isStatic() { + return isStatic; + } + + public boolean isRestrict() { + return isRestrict; + } + + public boolean isVolatile() { + return isVolatile; + } + + public void setConst(boolean value) { + assertNotFrozen(); + this.isConst = value; + } + + public void setVolatile(boolean value) { + assertNotFrozen(); + this.isVolatile = value; + } + + public void setRestrict(boolean value) { + assertNotFrozen(); + this.isRestrict = value; + } + + public void setStatic(boolean value) { + assertNotFrozen(); + this.isStatic = value; + } + + public boolean isVariableSized() { + return varSized; + } + + public void setVariableSized(boolean value) { + assertNotFrozen(); + varSized = value; + } } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTVectorTypeSpecifier.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTVectorTypeSpecifier.java index 438d5e63ef9..3da2bbc8393 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTVectorTypeSpecifier.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPASTVectorTypeSpecifier.java @@ -44,5 +44,5 @@ public class XlcCPPASTVectorTypeSpecifier extends CPPASTSimpleDeclSpecifier impl public void setPixel(boolean isPixel) { this.isPixel = isPixel; } - + } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPNodeFactory.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPNodeFactory.java index 3f998f42463..0be792d68ae 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPNodeFactory.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPNodeFactory.java @@ -21,17 +21,17 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory; @SuppressWarnings("restriction") public class XlcCPPNodeFactory extends CPPNodeFactory implements IXlcCPPNodeFactory { - -private static final XlcCPPNodeFactory DEFAULT_INSTANCE = new XlcCPPNodeFactory(); - + + private static final XlcCPPNodeFactory DEFAULT_INSTANCE = new XlcCPPNodeFactory(); + public static XlcCPPNodeFactory getDefault() { return DEFAULT_INSTANCE; } - + public IXlcCPPASTVectorTypeSpecifier newVectorTypeSpecifier() { return new XlcCPPASTVectorTypeSpecifier(); } - + public IXlcCPPASTModifiedArrayModifier newModifiedArrayModifier(IASTExpression expr) { return new XlcCPPASTModifiedArrayModifier(expr); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParser.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParser.java index 856ac8b1635..5676192e0cd 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParser.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParser.java @@ -38,1405 +38,1808 @@ import org.eclipse.cdt.core.dom.lrparser.action.gnu.GCCSecondaryParserFactory; import org.eclipse.cdt.core.lrparser.xlc.action.XlcCBuildASTParserAction; import org.eclipse.cdt.internal.core.lrparser.xlc.ast.XlcCNodeFactory; -public class XlcCParser extends PrsStream implements RuleAction, ITokenStream, - ITokenCollector, IParser< IASTTranslationUnit > - +public class XlcCParser extends PrsStream + implements RuleAction, ITokenStream, ITokenCollector, IParser + { - private static ParseTable prs = new XlcCParserprs(); - private FixedBacktrackingParser btParser; - - public FixedBacktrackingParser getParser() { return btParser; } - private void setResult(Object object) { btParser.setSym1(object); } - public Object getRhsSym(int i) { return btParser.getSym(i); } - - public int getRhsTokenIndex(int i) { return btParser.getToken(i); } - public IToken getRhsIToken(int i) { return super.getIToken(getRhsTokenIndex(i)); } - - public int getRhsFirstTokenIndex(int i) { return btParser.getFirstToken(i); } - public IToken getRhsFirstIToken(int i) { return super.getIToken(getRhsFirstTokenIndex(i)); } - - public int getRhsLastTokenIndex(int i) { return btParser.getLastToken(i); } - public IToken getRhsLastIToken(int i) { return super.getIToken(getRhsLastTokenIndex(i)); } - - public int getLeftSpan() { return btParser.getFirstToken(); } - public IToken getLeftIToken() { return super.getIToken(getLeftSpan()); } - - public int getRightSpan() { return btParser.getLastToken(); } - public IToken getRightIToken() { return super.getIToken(getRightSpan()); } - - public int getRhsErrorTokenIndex(int i) - { - int index = btParser.getToken(i); - IToken err = super.getIToken(index); - return (err instanceof ErrorToken ? index : 0); - } - public ErrorToken getRhsErrorIToken(int i) - { - int index = btParser.getToken(i); - IToken err = super.getIToken(index); - return (ErrorToken) (err instanceof ErrorToken ? err : null); - } - - public XlcCParser(LexStream lexStream) - { - super(lexStream); - - try - { - super.remapTerminalSymbols(orderedTerminalSymbols(), XlcCParserprs.EOFT_SYMBOL); - } - catch(NullExportedSymbolsException e) { - } - catch(NullTerminalSymbolsException e) { - } - catch(UnimplementedTerminalsException e) - { - java.util.ArrayList unimplemented_symbols = e.getSymbols(); - System.out.println("The Lexer will not scan the following token(s):"); - for (int i = 0; i < unimplemented_symbols.size(); i++) - { - Integer id = (Integer) unimplemented_symbols.get(i); - System.out.println(" " + XlcCParsersym.orderedTerminalSymbols[id.intValue()]); - } - System.out.println(); - } - catch(UndefinedEofSymbolException e) - { - throw new Error(new UndefinedEofSymbolException - ("The Lexer does not implement the Eof symbol " + - XlcCParsersym.orderedTerminalSymbols[XlcCParserprs.EOFT_SYMBOL])); - } - } - - public String[] orderedTerminalSymbols() { return XlcCParsersym.orderedTerminalSymbols; } - public String getTokenKindName(int kind) { return XlcCParsersym.orderedTerminalSymbols[kind]; } - public int getEOFTokenKind() { return XlcCParserprs.EOFT_SYMBOL; } - public PrsStream getParseStream() { return (PrsStream) this; } - - // - // Report error message for given error_token. - // - public final void reportErrorTokenMessage(int error_token, String msg) - { - int firsttok = super.getFirstErrorToken(error_token), - lasttok = super.getLastErrorToken(error_token); - String location = super.getFileName() + ':' + - (firsttok > lasttok - ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok)) - : (super.getLine(error_token) + ":" + - super.getColumn(error_token) + ":" + - super.getEndLine(error_token) + ":" + - super.getEndColumn(error_token))) - + ": "; - super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE), location, msg); - } - - public void parser() - { - parser(null, 0); - } - - public void parser(Monitor monitor) - { - parser(monitor, 0); - } - - public void parser(int error_repair_count) - { - parser(null, error_repair_count); - } - - public void parser(Monitor monitor, int error_repair_count) - { - try - { - btParser = new FixedBacktrackingParser(monitor, (TokenStream) this, prs, (RuleAction) this); - } - catch (NotBacktrackParseTableException e) - { - throw new Error(new NotBacktrackParseTableException - ("Regenerate XlcCParserprs.java with -BACKTRACK option")); - } - catch (BadParseSymFileException e) - { - throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- XlcCParsersym.java")); - } - - try - { - btParser.parse(error_repair_count); - } - catch (BadParseException e) - { - reset(e.error_token); // point to error token - DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs); - diagnoseParser.diagnose(e.error_token); - } - } - - -private XlcCBuildASTParserAction action; -private IASTCompletionNode compNode; - - -public XlcCParser(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map properties) { - initActions(properties); - action.initializeTranslationUnit(scanner, builtinBindingsProvider, index); - CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap); -} + private static ParseTable prs = new XlcCParserprs(); + private FixedBacktrackingParser btParser; -private void initActions(Map properties) { - ScopedStack astStack = new ScopedStack(); - - action = new XlcCBuildASTParserAction (this, astStack, XlcCNodeFactory.getDefault() , GCCSecondaryParserFactory.getDefault() ); - action.setParserProperties(properties); - - + public FixedBacktrackingParser getParser() { + return btParser; + } - gnuAction = new GNUBuildASTParserAction (this, astStack, XlcCNodeFactory.getDefault() ); - gnuAction.setParserProperties(properties); + 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 void addToken(IToken token) { - token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called? - super.addToken(token); -} + public IToken getRhsIToken(int i) { + return super.getIToken(getRhsTokenIndex(i)); + } + public int getRhsFirstTokenIndex(int i) { + return btParser.getFirstToken(i); + } -public IASTTranslationUnit parse() { - // this has to be done, or... kaboom! - setStreamLength(getSize()); - - final int errorRepairCount = -1; // -1 means full error handling - parser(null, errorRepairCount); // do the actual parse - super.resetTokenStream(); // allow tokens to be garbage collected + public IToken getRhsFirstIToken(int i) { + return super.getIToken(getRhsFirstTokenIndex(i)); + } - compNode = action.getASTCompletionNode(); // the completion node may be null - return ( IASTTranslationUnit ) action.getParseResult(); -} + public int getRhsLastTokenIndex(int i) { + return btParser.getLastToken(i); + } + public IToken getRhsLastIToken(int i) { + return super.getIToken(getRhsLastTokenIndex(i)); + } -public IASTCompletionNode getCompletionNode() { - return compNode; -} + public int getLeftSpan() { + return btParser.getFirstToken(); + } -// uncomment this method to use with backtracking parser -public List getRuleTokens() { - return getTokens().subList(getLeftSpan(), getRightSpan() + 1); -} + public IToken getLeftIToken() { + return super.getIToken(getLeftSpan()); + } -public String[] getOrderedTerminalSymbols() { - return XlcCParsersym.orderedTerminalSymbols; -} + public int getRightSpan() { + return btParser.getLastToken(); + } -@SuppressWarnings("nls") -public String getName() { - return "XlcCParser"; -} + 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); + } -private GNUBuildASTParserAction gnuAction; - - public void ruleAction(int ruleNumber) - { - switch (ruleNumber) - { - - // - // Rule 1: ::= $Empty - // - case 1: { action. openASTScope(); break; - } - - // - // Rule 2: ::= $Empty - // - case 2: { action. consumeEmpty(); break; - } - - // - // Rule 13: literal ::= integer - // - case 13: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant); break; - } - - // - // Rule 14: literal ::= floating - // - case 14: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant); break; - } - - // - // Rule 15: literal ::= charconst - // - case 15: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant); break; - } - - // - // Rule 16: literal ::= stringlit - // - case 16: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal); break; - } - - // - // Rule 18: primary_expression ::= primary_expression_id - // - case 18: { action. consumeExpressionID(); break; - } - - // - // Rule 19: primary_expression ::= ( expression ) - // - case 19: { action. consumeExpressionBracketed(); break; - } - - // - // Rule 22: postfix_expression ::= postfix_expression [ expression ] - // - case 22: { action. consumeExpressionArraySubscript(); break; - } - - // - // Rule 23: postfix_expression ::= postfix_expression ( expression_list_opt ) - // - case 23: { action. consumeExpressionFunctionCall(); break; - } - - // - // Rule 24: postfix_expression ::= postfix_expression . member_name - // - case 24: { action. consumeExpressionFieldReference(false); break; - } - - // - // Rule 25: postfix_expression ::= postfix_expression -> member_name - // - case 25: { action. consumeExpressionFieldReference(true); break; - } - - // - // Rule 26: postfix_expression ::= postfix_expression ++ - // - case 26: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); break; - } - - // - // Rule 27: postfix_expression ::= postfix_expression -- - // - case 27: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); break; - } - - // - // Rule 28: postfix_expression ::= ( type_id ) initializer_list - // - case 28: { action. consumeExpressionTypeIdInitializer(); break; - } - - // - // Rule 33: unary_expression ::= ++ unary_expression - // - case 33: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); break; - } - - // - // Rule 34: unary_expression ::= -- unary_expression - // - case 34: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); break; - } - - // - // Rule 35: unary_expression ::= & cast_expression - // - case 35: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); break; - } - - // - // Rule 36: unary_expression ::= * cast_expression - // - case 36: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); break; - } - - // - // Rule 37: unary_expression ::= + cast_expression - // - case 37: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); break; - } - - // - // Rule 38: unary_expression ::= - cast_expression - // - case 38: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); break; - } - - // - // Rule 39: unary_expression ::= ~ cast_expression - // - case 39: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); break; - } - - // - // Rule 40: unary_expression ::= ! cast_expression - // - case 40: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); break; - } - - // - // Rule 41: unary_expression ::= sizeof unary_expression - // - case 41: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); break; - } - - // - // Rule 42: unary_expression ::= sizeof ( type_id ) - // - case 42: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof); break; - } - - // - // Rule 44: cast_expression ::= ( type_id ) cast_expression - // - case 44: { action. consumeExpressionCast(IASTCastExpression.op_cast); break; - } - - // - // Rule 46: multiplicative_expression ::= multiplicative_expression * cast_expression - // - case 46: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply); break; - } - - // - // Rule 47: multiplicative_expression ::= multiplicative_expression / cast_expression - // - case 47: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide); break; - } - - // - // Rule 48: multiplicative_expression ::= multiplicative_expression % cast_expression - // - case 48: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo); break; - } - - // - // Rule 50: additive_expression ::= additive_expression + multiplicative_expression - // - case 50: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus); break; - } - - // - // Rule 51: additive_expression ::= additive_expression - multiplicative_expression - // - case 51: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus); break; - } - - // - // Rule 53: shift_expression ::= shift_expression << additive_expression - // - case 53: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft); break; - } - - // - // Rule 54: shift_expression ::= shift_expression >> additive_expression - // - case 54: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight); break; - } - - // - // Rule 56: relational_expression ::= relational_expression < shift_expression - // - case 56: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan); break; - } - - // - // Rule 57: relational_expression ::= relational_expression > shift_expression - // - case 57: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan); break; - } - - // - // Rule 58: relational_expression ::= relational_expression <= shift_expression - // - case 58: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual); break; - } - - // - // Rule 59: relational_expression ::= relational_expression >= shift_expression - // - case 59: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual); break; - } - - // - // Rule 61: equality_expression ::= equality_expression == relational_expression - // - case 61: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals); break; - } - - // - // Rule 62: equality_expression ::= equality_expression != relational_expression - // - case 62: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals); break; - } - - // - // Rule 64: and_expression ::= and_expression & equality_expression - // - case 64: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd); break; - } - - // - // Rule 66: exclusive_or_expression ::= exclusive_or_expression ^ and_expression - // - case 66: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor); break; - } - - // - // Rule 68: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression - // - case 68: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr); break; - } - - // - // Rule 70: logical_and_expression ::= logical_and_expression && inclusive_or_expression - // - case 70: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd); break; - } - - // - // Rule 72: logical_or_expression ::= logical_or_expression || logical_and_expression - // - case 72: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr); break; - } - - // - // Rule 74: conditional_expression ::= logical_or_expression ? expression : assignment_expression - // - case 74: { action. consumeExpressionConditional(); break; - } - - // - // Rule 76: assignment_expression ::= unary_expression = assignment_expression - // - case 76: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break; - } - - // - // Rule 77: assignment_expression ::= unary_expression *= assignment_expression - // - case 77: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign); break; - } - - // - // Rule 78: assignment_expression ::= unary_expression /= assignment_expression - // - case 78: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign); break; - } - - // - // Rule 79: assignment_expression ::= unary_expression %= assignment_expression - // - case 79: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign); break; - } - - // - // Rule 80: assignment_expression ::= unary_expression += assignment_expression - // - case 80: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign); break; - } - - // - // Rule 81: assignment_expression ::= unary_expression -= assignment_expression - // - case 81: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign); break; - } - - // - // Rule 82: assignment_expression ::= unary_expression <<= assignment_expression - // - case 82: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign); break; - } - - // - // Rule 83: assignment_expression ::= unary_expression >>= assignment_expression - // - case 83: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign); break; - } - - // - // Rule 84: assignment_expression ::= unary_expression &= assignment_expression - // - case 84: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign); break; - } - - // - // Rule 85: assignment_expression ::= unary_expression ^= assignment_expression - // - case 85: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign); break; - } - - // - // Rule 86: assignment_expression ::= unary_expression |= assignment_expression - // - case 86: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign); break; - } - - // - // Rule 89: expression_list ::= expression_list_actual - // - case 89: { action. consumeExpressionList(); break; - } - - // - // Rule 91: expression_list_opt ::= $Empty - // - case 91: { action. consumeEmpty(); break; - } - - // - // Rule 101: statement ::= ERROR_TOKEN - // - case 101: { action. consumeStatementProblem(); break; - } - - // - // Rule 102: labeled_statement ::= identifier_token : statement - // - case 102: { action. consumeStatementLabeled(); break; - } - - // - // Rule 103: labeled_statement ::= case constant_expression : statement - // - case 103: { action. consumeStatementCase(); break; - } - - // - // Rule 104: labeled_statement ::= default : statement - // - case 104: { action. consumeStatementDefault(); break; - } - - // - // Rule 105: compound_statement ::= { } - // - case 105: { action. consumeStatementCompoundStatement(false); break; - } - - // - // Rule 106: compound_statement ::= { block_item_list } - // - case 106: { action. consumeStatementCompoundStatement(true); break; - } - - // - // Rule 110: block_item ::= declaration - // - case 110: { action. consumeStatementDeclarationWithDisambiguation(); break; - } - - // - // Rule 111: expression_statement ::= ; - // - case 111: { action. consumeStatementNull(); break; - } - - // - // Rule 112: expression_statement ::= expression_in_statement ; - // - case 112: { action. consumeStatementExpression(); break; - } - - // - // Rule 113: selection_statement ::= if ( expression ) statement - // - case 113: { action. consumeStatementIf(false); break; - } - - // - // Rule 114: selection_statement ::= if ( expression ) statement else statement - // - case 114: { action. consumeStatementIf(true); break; - } - - // - // Rule 115: selection_statement ::= switch ( expression ) statement - // - case 115: { action. consumeStatementSwitch(); break; - } - - // - // Rule 117: expression_opt ::= $Empty - // - case 117: { action. consumeEmpty(); break; - } - - // - // Rule 118: iteration_statement ::= do statement while ( expression ) ; - // - case 118: { action. consumeStatementDoLoop(true); break; - } - - // - // Rule 119: iteration_statement ::= do statement - // - case 119: { action. consumeStatementDoLoop(false); break; - } - - // - // Rule 120: iteration_statement ::= while ( expression ) statement - // - case 120: { action. consumeStatementWhileLoop(); break; - } - - // - // Rule 121: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement - // - case 121: { action. consumeStatementForLoop(); break; - } - - // - // Rule 122: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement - // - case 122: { action. consumeStatementForLoop(); break; - } - - // - // Rule 123: jump_statement ::= goto identifier_token ; - // - case 123: { action. consumeStatementGoto(); break; - } - - // - // Rule 124: jump_statement ::= continue ; - // - case 124: { action. consumeStatementContinue(); break; - } - - // - // Rule 125: jump_statement ::= break ; - // - case 125: { action. consumeStatementBreak(); break; - } - - // - // Rule 126: jump_statement ::= return ; - // - case 126: { action. consumeStatementReturn(false); break; - } - - // - // Rule 127: jump_statement ::= return expression ; - // - case 127: { action. consumeStatementReturn(true); break; - } - - // - // Rule 128: declaration ::= declaration_specifiers ; - // - case 128: { action. consumeDeclarationSimple(false); break; - } - - // - // Rule 129: declaration ::= declaration_specifiers init_declarator_list ; - // - case 129: { action. consumeDeclarationSimple(true); break; - } - - // - // Rule 130: declaration_specifiers ::= simple_declaration_specifiers - // - case 130: { action. consumeDeclarationSpecifiersSimple(); break; - } - - // - // Rule 131: declaration_specifiers ::= struct_or_union_declaration_specifiers - // - case 131: { action. consumeDeclarationSpecifiersStructUnionEnum(); break; - } - - // - // Rule 132: declaration_specifiers ::= elaborated_declaration_specifiers - // - case 132: { action. consumeDeclarationSpecifiersStructUnionEnum(); break; - } - - // - // Rule 133: declaration_specifiers ::= enum_declaration_specifiers - // - case 133: { action. consumeDeclarationSpecifiersStructUnionEnum(); break; - } - - // - // Rule 134: declaration_specifiers ::= typdef_name_declaration_specifiers - // - case 134: { action. consumeDeclarationSpecifiersTypedefName(); break; - } - - // - // Rule 159: init_declarator ::= complete_declarator = initializer - // - case 159: { action. consumeDeclaratorWithInitializer(true); break; - } - - // - // Rule 161: storage_class_specifier ::= storage_class_specifier_token - // - case 161: { action. consumeToken(); break; - } - - // - // Rule 167: simple_type_specifier ::= simple_type_specifier_token - // - case 167: { action. consumeToken(); break; - } - - // - // Rule 180: type_name_specifier ::= identifier_token - // - case 180: { action. consumeToken(); break; - } - - // - // Rule 181: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { struct_declaration_list_opt } - // - case 181: { action. consumeTypeSpecifierComposite(false); break; - } - - // - // Rule 182: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook identifier_token struct_or_union_specifier_suffix_hook { struct_declaration_list_opt } - // - case 182: { action. consumeTypeSpecifierComposite(true); break; - } - - // - // Rule 187: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token - // - case 187: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); break; - } - - // - // Rule 188: elaborated_specifier ::= union elaborated_specifier_hook identifier_token - // - case 188: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); break; - } - - // - // Rule 189: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token - // - case 189: { action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); break; - } - - // - // Rule 195: struct_declaration ::= specifier_qualifier_list struct_declarator_list ; - // - case 195: { action. consumeStructDeclaration(true); break; - } - - // - // Rule 196: struct_declaration ::= specifier_qualifier_list ; - // - case 196: { action. consumeStructDeclaration(false); break; - } - - // - // Rule 197: struct_declaration ::= ERROR_TOKEN - // - case 197: { action. consumeDeclarationProblem(); break; - } - - // - // Rule 203: struct_declarator ::= : constant_expression - // - case 203: { action. consumeBitField(false); break; - } - - // - // Rule 204: struct_declarator ::= declarator : constant_expression - // - case 204: { action. consumeBitField(true); break; - } - - // - // Rule 205: enum_specifier ::= enum enum_specifier_hook { enumerator_list_opt comma_opt } - // - case 205: { action. consumeTypeSpecifierEnumeration(false); break; - } - - // - // Rule 206: enum_specifier ::= enum enum_specifier_hook identifier_token { enumerator_list_opt comma_opt } - // - case 206: { action. consumeTypeSpecifierEnumeration(true); break; - } - - // - // Rule 212: enumerator ::= identifier_token - // - case 212: { action. consumeEnumerator(false); break; - } - - // - // Rule 213: enumerator ::= identifier_token = constant_expression - // - case 213: { action. consumeEnumerator(true); break; - } - - // - // Rule 214: type_qualifier ::= type_qualifier_token - // - case 214: { action. consumeToken(); break; - } - - // - // Rule 218: function_specifier ::= inline - // - case 218: { action. consumeToken(); break; - } - - // - // Rule 220: declarator ::= pointer_seq direct_declarator - // - case 220: { action. consumeDeclaratorWithPointer(true); break; - } - - // - // Rule 225: basic_direct_declarator ::= declarator_id_name - // - case 225: { action. consumeDirectDeclaratorIdentifier(); break; - } - - // - // Rule 226: basic_direct_declarator ::= ( declarator ) - // - case 226: { action. consumeDirectDeclaratorBracketed(); break; - } - - // - // Rule 227: declarator_id_name ::= identifier - // - case 227: { action. consumeIdentifierName(); break; - } - - // - // Rule 228: array_direct_declarator ::= basic_direct_declarator array_modifier - // - case 228: { action. consumeDirectDeclaratorArrayDeclarator(true); break; - } - - // - // Rule 229: array_direct_declarator ::= array_direct_declarator array_modifier - // - case 229: { action. consumeDirectDeclaratorArrayDeclarator(true); break; - } - - // - // Rule 231: function_direct_declarator ::= basic_direct_declarator ( parameter_type_list ) - // - case 231: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; - } - - // - // Rule 232: function_direct_declarator ::= basic_direct_declarator ( ) - // - case 232: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; - } - - // - // Rule 234: function_declarator ::= pointer_seq function_direct_declarator - // - case 234: { action. consumeDeclaratorWithPointer(true); break; - } - - // - // Rule 235: knr_direct_declarator ::= basic_direct_declarator ( identifier_list ) - // - case 235: { action. consumeDirectDeclaratorFunctionDeclaratorKnR(); break; - } - - // - // Rule 237: knr_function_declarator ::= pointer_seq knr_direct_declarator - // - case 237: { action. consumeDeclaratorWithPointer(true); break; - } - - // - // Rule 238: identifier_list ::= identifier - // - case 238: { action. consumeIdentifierKnR(); break; - } - - // - // Rule 239: identifier_list ::= identifier_list , identifier - // - case 239: { action. consumeIdentifierKnR(); break; - } - - // - // Rule 240: array_modifier ::= [ ] - // - case 240: { action. consumeDirectDeclaratorArrayModifier(false); break; - } - - // - // Rule 241: array_modifier ::= [ array_modifier_type_qualifiers ] - // - case 241: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break; - } - - // - // Rule 242: array_modifier ::= [ assignment_expression ] - // - case 242: { action. consumeDirectDeclaratorArrayModifier(true); break; - } - - // - // Rule 243: array_modifier ::= [ array_modifier_type_qualifiers assignment_expression ] - // - case 243: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break; - } - - // - // Rule 244: array_modifier ::= [ static assignment_expression ] - // - case 244: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break; - } - - // - // Rule 245: array_modifier ::= [ static array_modifier_type_qualifiers assignment_expression ] - // - case 245: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; - } - - // - // Rule 246: array_modifier ::= [ array_modifier_type_qualifiers static assignment_expression ] - // - case 246: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; - } - - // - // Rule 247: array_modifier ::= [ * ] - // - case 247: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break; - } - - // - // Rule 248: array_modifier ::= [ array_modifier_type_qualifiers * ] - // - case 248: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break; - } - - // - // Rule 250: pointer_seq ::= pointer_hook * pointer_hook - // - case 250: { action. consumePointer(); break; - } - - // - // Rule 251: pointer_seq ::= pointer_seq pointer_hook * pointer_hook - // - case 251: { action. consumePointer(); break; - } - - // - // Rule 252: pointer_seq ::= pointer_hook * pointer_hook type_qualifier_list - // - case 252: { action. consumePointerTypeQualifierList(); break; - } - - // - // Rule 253: pointer_seq ::= pointer_seq pointer_hook * pointer_hook type_qualifier_list - // - case 253: { action. consumePointerTypeQualifierList(); break; - } - - // - // Rule 257: parameter_type_list ::= parameter_list - // - case 257: { action. consumeEmpty(); break; - } - - // - // Rule 258: parameter_type_list ::= parameter_list , ... - // - case 258: { action. consumePlaceHolder(); break; - } - - // - // Rule 259: parameter_type_list ::= ... - // - case 259: { action. consumePlaceHolder(); break; - } - - // - // Rule 262: parameter_declaration ::= declaration_specifiers complete_parameter_declarator - // - case 262: { action. consumeParameterDeclaration(); break; - } - - // - // Rule 263: parameter_declaration ::= declaration_specifiers - // - case 263: { action. consumeParameterDeclarationWithoutDeclarator(); break; - } - - // - // Rule 266: type_id ::= specifier_qualifier_list - // - case 266: { action. consumeTypeId(false); break; - } - - // - // Rule 267: type_id ::= specifier_qualifier_list abstract_declarator - // - case 267: { action. consumeTypeId(true); break; - } - - // - // Rule 269: abstract_declarator ::= pointer_seq - // - case 269: { action. consumeDeclaratorWithPointer(false); break; - } - - // - // Rule 270: abstract_declarator ::= pointer_seq direct_abstract_declarator - // - case 270: { action. consumeDeclaratorWithPointer(true); break; - } - - // - // Rule 274: basic_direct_abstract_declarator ::= ( abstract_declarator ) - // - case 274: { action. consumeDirectDeclaratorBracketed(); break; - } - - // - // Rule 275: array_direct_abstract_declarator ::= array_modifier - // - case 275: { action. consumeDirectDeclaratorArrayDeclarator(false); break; - } - - // - // Rule 276: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier - // - case 276: { action. consumeDirectDeclaratorArrayDeclarator(true); break; - } - - // - // Rule 277: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier - // - case 277: { action. consumeDirectDeclaratorArrayDeclarator(true); break; - } - - // - // Rule 278: function_direct_abstract_declarator ::= ( ) - // - case 278: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break; - } - - // - // Rule 279: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( ) - // - case 279: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; - } - - // - // Rule 280: function_direct_abstract_declarator ::= ( parameter_type_list ) - // - case 280: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break; - } - - // - // Rule 281: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( parameter_type_list ) - // - case 281: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; - } - - // - // Rule 282: initializer ::= assignment_expression - // - case 282: { action. consumeInitializer(); break; - } - - // - // Rule 283: initializer ::= initializer_list - // - case 283: { action. consumeInitializer(); break; - } - - // - // Rule 284: initializer_list ::= start_initializer_list { initializer_seq comma_opt } end_initializer_list - // - case 284: { action. consumeInitializerList(); break; - } - - // - // Rule 285: initializer_list ::= { } - // - case 285: { action. consumeInitializerList(); break; - } - - // - // Rule 286: start_initializer_list ::= $Empty - // - case 286: { action. initializerListStart(); break; - } - - // - // Rule 287: end_initializer_list ::= $Empty - // - case 287: { action. initializerListEnd(); break; - } - - // - // Rule 292: designated_initializer ::= designation = initializer - // - case 292: { action. consumeInitializerDesignated(); break; - } - - // - // Rule 296: designator_base ::= [ constant_expression ] - // - case 296: { action. consumeDesignatorArray(); break; - } - - // - // Rule 297: designator_base ::= . identifier_token - // - case 297: { action. consumeDesignatorField(); break; - } - - // - // Rule 298: designator ::= [ constant_expression ] - // - case 298: { action. consumeDesignatorArray(); break; - } - - // - // Rule 299: designator ::= . identifier_token - // - case 299: { action. consumeDesignatorField(); break; - } - - // - // Rule 300: translation_unit ::= external_declaration_list - // - case 300: { action. consumeTranslationUnit(); break; - } - - // - // Rule 301: translation_unit ::= $Empty - // - case 301: { action. consumeTranslationUnit(); break; - } - - // - // Rule 306: external_declaration ::= ; - // - case 306: { action. consumeDeclarationEmpty(); break; - } - - // - // Rule 307: external_declaration ::= ERROR_TOKEN - // - case 307: { action. consumeDeclarationProblem(); break; - } - - // - // Rule 311: function_definition ::= function_declarator function_body - // - case 311: { action. consumeFunctionDefinition(false); break; - } - - // - // Rule 312: function_definition ::= declaration_specifiers knr_function_declarator declaration_list compound_statement - // - case 312: { action. consumeFunctionDefinitionKnR(); break; - } - - // - // Rule 313: normal_function_definition ::= declaration_specifiers function_declarator function_body - // - case 313: { action. consumeFunctionDefinition(true); break; - } - - // - // Rule 314: function_body ::= { } - // - case 314: { action. consumeStatementCompoundStatement(false); break; - } - - // - // Rule 315: function_body ::= { block_item_list } - // - case 315: { action. consumeStatementCompoundStatement(true); break; - } - - // - // Rule 332: attribute_parameter ::= assignment_expression - // - case 332: { action. consumeIgnore(); break; - } - - // - // Rule 343: extended_asm_declaration ::= asm volatile_opt ( extended_asm_param_seq ) ; - // - case 343: { gnuAction.consumeDeclarationASM(); break; - } - - // - // Rule 354: unary_expression ::= __alignof__ unary_expression - // - case 354: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_alignOf); break; - } - - // - // Rule 355: unary_expression ::= __alignof__ ( type_id ) - // - case 355: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_alignof); break; - } - - // - // Rule 356: unary_expression ::= typeof unary_expression - // - case 356: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break; - } - - // - // Rule 357: unary_expression ::= typeof ( type_id ) - // - case 357: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break; - } - - // - // Rule 358: relational_expression ::= relational_expression >? shift_expression - // - case 358: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_max); break; - } - - // - // Rule 359: relational_expression ::= relational_expression : assignment_expression - // - case 360: { action. consumeExpressionConditional(); break; - } - - // - // Rule 361: primary_expression ::= ( compound_statement ) - // - case 361: { gnuAction.consumeCompoundStatementExpression(); break; - } - - // - // Rule 362: labeled_statement ::= case case_range_expression : statement - // - case 362: { action. consumeStatementCase(); break; - } - - // - // Rule 363: case_range_expression ::= constant_expression ... constant_expression - // - case 363: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break; - } - - // - // Rule 367: typeof_type_specifier ::= typeof unary_expression - // - case 367: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break; - } - - // - // Rule 368: typeof_type_specifier ::= typeof ( type_id ) - // - case 368: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break; - } - - // - // Rule 369: declaration_specifiers ::= typeof_declaration_specifiers - // - case 369: { action. consumeDeclarationSpecifiersTypeof(); break; - } - - // - // Rule 385: field_name_designator ::= identifier_token : - // - case 385: { action. consumeDesignatorFieldGCC(); break; - } - - // - // Rule 386: array_range_designator ::= [ constant_expression ... constant_expression ] - // - case 386: { action. consumeDesignatorArrayRange(); break; - } - - // - // Rule 387: designated_initializer ::= field_name_designator initializer - // - case 387: { action. consumeInitializerDesignated(); break; - } - - // - // Rule 388: block_item ::= normal_function_definition - // - case 388: { action. consumeStatementDeclaration(); break; - } - - // - // Rule 392: type_id ::= vector_type - // - case 392: { action. consumeTypeId(false); break; - } - - // - // Rule 393: type_id ::= vector_type abstract_declarator - // - case 393: { action. consumeTypeId(true); break; - } - - // - // Rule 394: vector_declaration ::= vector_type init_declarator_list ; - // - case 394: { action. consumeDeclarationSimple(true); break; - } - - // - // Rule 395: vector_type ::= no_type_declaration_specifiers_opt vector vector_type_specifier all_specifier_qualifier_list_opt - // - case 395: { action. consumeVectorTypeSpecifier(); break; - } - - // - // Rule 396: vector_type_specifier ::= vector_type_specifier_token - // - case 396: { action. consumeToken(); break; - } - - // - // Rule 418: declarator_id_name ::= pixel - // - case 418: { action. consumeIdentifierName(); break; - } - - // - // Rule 419: declarator_id_name ::= vector - // - case 419: { action. consumeIdentifierName(); break; - } - - // - // Rule 420: declarator_id_name ::= bool - // - case 420: { action. consumeIdentifierName(); break; - } - - - default: - break; - } - return; - } -} + public ErrorToken getRhsErrorIToken(int i) { + int index = btParser.getToken(i); + IToken err = super.getIToken(index); + return (ErrorToken) (err instanceof ErrorToken ? err : null); + } + + public XlcCParser(LexStream lexStream) { + super(lexStream); + + try { + super.remapTerminalSymbols(orderedTerminalSymbols(), XlcCParserprs.EOFT_SYMBOL); + } catch (NullExportedSymbolsException e) { + } catch (NullTerminalSymbolsException e) { + } catch (UnimplementedTerminalsException e) { + java.util.ArrayList unimplemented_symbols = e.getSymbols(); + System.out.println("The Lexer will not scan the following token(s):"); + for (int i = 0; i < unimplemented_symbols.size(); i++) { + Integer id = (Integer) unimplemented_symbols.get(i); + System.out.println(" " + XlcCParsersym.orderedTerminalSymbols[id.intValue()]); + } + System.out.println(); + } catch (UndefinedEofSymbolException e) { + throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol " + + XlcCParsersym.orderedTerminalSymbols[XlcCParserprs.EOFT_SYMBOL])); + } + } + + public String[] orderedTerminalSymbols() { + return XlcCParsersym.orderedTerminalSymbols; + } + + public String getTokenKindName(int kind) { + return XlcCParsersym.orderedTerminalSymbols[kind]; + } + + public int getEOFTokenKind() { + return XlcCParserprs.EOFT_SYMBOL; + } + + public PrsStream getParseStream() { + return (PrsStream) this; + } + + // + // Report error message for given error_token. + // + public final void reportErrorTokenMessage(int error_token, String msg) { + int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token); + String location = super.getFileName() + ':' + + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok)) + : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":" + + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token))) + + ": "; + super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE), + location, msg); + } + + public void parser() { + parser(null, 0); + } + + public void parser(Monitor monitor) { + parser(monitor, 0); + } + + public void parser(int error_repair_count) { + parser(null, error_repair_count); + } + + public void parser(Monitor monitor, int error_repair_count) { + try { + btParser = new FixedBacktrackingParser(monitor, (TokenStream) this, prs, (RuleAction) this); + } catch (NotBacktrackParseTableException e) { + throw new Error( + new NotBacktrackParseTableException("Regenerate XlcCParserprs.java with -BACKTRACK option")); + } catch (BadParseSymFileException e) { + throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- XlcCParsersym.java")); + } + + try { + btParser.parse(error_repair_count); + } catch (BadParseException e) { + reset(e.error_token); // point to error token + DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs); + diagnoseParser.diagnose(e.error_token); + } + } + + private XlcCBuildASTParserAction action; + private IASTCompletionNode compNode; + + public XlcCParser(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvider builtinBindingsProvider, + IIndex index, Map properties) { + initActions(properties); + action.initializeTranslationUnit(scanner, builtinBindingsProvider, index); + CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap); + } + + private void initActions(Map properties) { + ScopedStack astStack = new ScopedStack(); + + action = new XlcCBuildASTParserAction(this, astStack, XlcCNodeFactory.getDefault(), + GCCSecondaryParserFactory.getDefault()); + action.setParserProperties(properties); + + gnuAction = new GNUBuildASTParserAction(this, astStack, XlcCNodeFactory.getDefault()); + gnuAction.setParserProperties(properties); + + } + + public void addToken(IToken token) { + token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called? + super.addToken(token); + } + + public IASTTranslationUnit parse() { + // this has to be done, or... kaboom! + setStreamLength(getSize()); + + final int errorRepairCount = -1; // -1 means full error handling + parser(null, errorRepairCount); // do the actual parse + super.resetTokenStream(); // allow tokens to be garbage collected + + compNode = action.getASTCompletionNode(); // the completion node may be null + return (IASTTranslationUnit) action.getParseResult(); + } + + public IASTCompletionNode getCompletionNode() { + return compNode; + } + + // uncomment this method to use with backtracking parser + public List getRuleTokens() { + return getTokens().subList(getLeftSpan(), getRightSpan() + 1); + } + + public String[] getOrderedTerminalSymbols() { + return XlcCParsersym.orderedTerminalSymbols; + } + + @SuppressWarnings("nls") + public String getName() { + return "XlcCParser"; + } + + private GNUBuildASTParserAction gnuAction; + + public void ruleAction(int ruleNumber) { + switch (ruleNumber) { + + // + // Rule 1: ::= $Empty + // + case 1: { + action.openASTScope(); + break; + } + + // + // Rule 2: ::= $Empty + // + case 2: { + action.consumeEmpty(); + break; + } + + // + // Rule 13: literal ::= integer + // + case 13: { + action.consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant); + break; + } + + // + // Rule 14: literal ::= floating + // + case 14: { + action.consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant); + break; + } + + // + // Rule 15: literal ::= charconst + // + case 15: { + action.consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant); + break; + } + + // + // Rule 16: literal ::= stringlit + // + case 16: { + action.consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal); + break; + } + + // + // Rule 18: primary_expression ::= primary_expression_id + // + case 18: { + action.consumeExpressionID(); + break; + } + + // + // Rule 19: primary_expression ::= ( expression ) + // + case 19: { + action.consumeExpressionBracketed(); + break; + } + + // + // Rule 22: postfix_expression ::= postfix_expression [ expression ] + // + case 22: { + action.consumeExpressionArraySubscript(); + break; + } + + // + // Rule 23: postfix_expression ::= postfix_expression ( expression_list_opt ) + // + case 23: { + action.consumeExpressionFunctionCall(); + break; + } + + // + // Rule 24: postfix_expression ::= postfix_expression . member_name + // + case 24: { + action.consumeExpressionFieldReference(false); + break; + } + + // + // Rule 25: postfix_expression ::= postfix_expression -> member_name + // + case 25: { + action.consumeExpressionFieldReference(true); + break; + } + + // + // Rule 26: postfix_expression ::= postfix_expression ++ + // + case 26: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); + break; + } + + // + // Rule 27: postfix_expression ::= postfix_expression -- + // + case 27: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); + break; + } + + // + // Rule 28: postfix_expression ::= ( type_id ) initializer_list + // + case 28: { + action.consumeExpressionTypeIdInitializer(); + break; + } + + // + // Rule 33: unary_expression ::= ++ unary_expression + // + case 33: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); + break; + } + + // + // Rule 34: unary_expression ::= -- unary_expression + // + case 34: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); + break; + } + + // + // Rule 35: unary_expression ::= & cast_expression + // + case 35: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); + break; + } + + // + // Rule 36: unary_expression ::= * cast_expression + // + case 36: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); + break; + } + + // + // Rule 37: unary_expression ::= + cast_expression + // + case 37: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); + break; + } + + // + // Rule 38: unary_expression ::= - cast_expression + // + case 38: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); + break; + } + + // + // Rule 39: unary_expression ::= ~ cast_expression + // + case 39: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); + break; + } + + // + // Rule 40: unary_expression ::= ! cast_expression + // + case 40: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); + break; + } + + // + // Rule 41: unary_expression ::= sizeof unary_expression + // + case 41: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); + break; + } + + // + // Rule 42: unary_expression ::= sizeof ( type_id ) + // + case 42: { + action.consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof); + break; + } + + // + // Rule 44: cast_expression ::= ( type_id ) cast_expression + // + case 44: { + action.consumeExpressionCast(IASTCastExpression.op_cast); + break; + } + + // + // Rule 46: multiplicative_expression ::= multiplicative_expression * cast_expression + // + case 46: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply); + break; + } + + // + // Rule 47: multiplicative_expression ::= multiplicative_expression / cast_expression + // + case 47: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide); + break; + } + + // + // Rule 48: multiplicative_expression ::= multiplicative_expression % cast_expression + // + case 48: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo); + break; + } + + // + // Rule 50: additive_expression ::= additive_expression + multiplicative_expression + // + case 50: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus); + break; + } + + // + // Rule 51: additive_expression ::= additive_expression - multiplicative_expression + // + case 51: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus); + break; + } + + // + // Rule 53: shift_expression ::= shift_expression << additive_expression + // + case 53: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft); + break; + } + + // + // Rule 54: shift_expression ::= shift_expression >> additive_expression + // + case 54: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight); + break; + } + + // + // Rule 56: relational_expression ::= relational_expression < shift_expression + // + case 56: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan); + break; + } + + // + // Rule 57: relational_expression ::= relational_expression > shift_expression + // + case 57: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan); + break; + } + + // + // Rule 58: relational_expression ::= relational_expression <= shift_expression + // + case 58: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual); + break; + } + + // + // Rule 59: relational_expression ::= relational_expression >= shift_expression + // + case 59: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual); + break; + } + + // + // Rule 61: equality_expression ::= equality_expression == relational_expression + // + case 61: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals); + break; + } + + // + // Rule 62: equality_expression ::= equality_expression != relational_expression + // + case 62: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals); + break; + } + + // + // Rule 64: and_expression ::= and_expression & equality_expression + // + case 64: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd); + break; + } + + // + // Rule 66: exclusive_or_expression ::= exclusive_or_expression ^ and_expression + // + case 66: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor); + break; + } + + // + // Rule 68: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression + // + case 68: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr); + break; + } + + // + // Rule 70: logical_and_expression ::= logical_and_expression && inclusive_or_expression + // + case 70: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd); + break; + } + + // + // Rule 72: logical_or_expression ::= logical_or_expression || logical_and_expression + // + case 72: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr); + break; + } + + // + // Rule 74: conditional_expression ::= logical_or_expression ? expression : assignment_expression + // + case 74: { + action.consumeExpressionConditional(); + break; + } + + // + // Rule 76: assignment_expression ::= unary_expression = assignment_expression + // + case 76: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); + break; + } + + // + // Rule 77: assignment_expression ::= unary_expression *= assignment_expression + // + case 77: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign); + break; + } + + // + // Rule 78: assignment_expression ::= unary_expression /= assignment_expression + // + case 78: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign); + break; + } + + // + // Rule 79: assignment_expression ::= unary_expression %= assignment_expression + // + case 79: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign); + break; + } + + // + // Rule 80: assignment_expression ::= unary_expression += assignment_expression + // + case 80: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign); + break; + } + + // + // Rule 81: assignment_expression ::= unary_expression -= assignment_expression + // + case 81: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign); + break; + } + + // + // Rule 82: assignment_expression ::= unary_expression <<= assignment_expression + // + case 82: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign); + break; + } + + // + // Rule 83: assignment_expression ::= unary_expression >>= assignment_expression + // + case 83: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign); + break; + } + + // + // Rule 84: assignment_expression ::= unary_expression &= assignment_expression + // + case 84: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign); + break; + } + + // + // Rule 85: assignment_expression ::= unary_expression ^= assignment_expression + // + case 85: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign); + break; + } + + // + // Rule 86: assignment_expression ::= unary_expression |= assignment_expression + // + case 86: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign); + break; + } + + // + // Rule 89: expression_list ::= expression_list_actual + // + case 89: { + action.consumeExpressionList(); + break; + } + + // + // Rule 91: expression_list_opt ::= $Empty + // + case 91: { + action.consumeEmpty(); + break; + } + + // + // Rule 101: statement ::= ERROR_TOKEN + // + case 101: { + action.consumeStatementProblem(); + break; + } + + // + // Rule 102: labeled_statement ::= identifier_token : statement + // + case 102: { + action.consumeStatementLabeled(); + break; + } + + // + // Rule 103: labeled_statement ::= case constant_expression : statement + // + case 103: { + action.consumeStatementCase(); + break; + } + + // + // Rule 104: labeled_statement ::= default : statement + // + case 104: { + action.consumeStatementDefault(); + break; + } + + // + // Rule 105: compound_statement ::= { } + // + case 105: { + action.consumeStatementCompoundStatement(false); + break; + } + + // + // Rule 106: compound_statement ::= { block_item_list } + // + case 106: { + action.consumeStatementCompoundStatement(true); + break; + } + + // + // Rule 110: block_item ::= declaration + // + case 110: { + action.consumeStatementDeclarationWithDisambiguation(); + break; + } + + // + // Rule 111: expression_statement ::= ; + // + case 111: { + action.consumeStatementNull(); + break; + } + + // + // Rule 112: expression_statement ::= expression_in_statement ; + // + case 112: { + action.consumeStatementExpression(); + break; + } + + // + // Rule 113: selection_statement ::= if ( expression ) statement + // + case 113: { + action.consumeStatementIf(false); + break; + } + + // + // Rule 114: selection_statement ::= if ( expression ) statement else statement + // + case 114: { + action.consumeStatementIf(true); + break; + } + + // + // Rule 115: selection_statement ::= switch ( expression ) statement + // + case 115: { + action.consumeStatementSwitch(); + break; + } + + // + // Rule 117: expression_opt ::= $Empty + // + case 117: { + action.consumeEmpty(); + break; + } + + // + // Rule 118: iteration_statement ::= do statement while ( expression ) ; + // + case 118: { + action.consumeStatementDoLoop(true); + break; + } + + // + // Rule 119: iteration_statement ::= do statement + // + case 119: { + action.consumeStatementDoLoop(false); + break; + } + + // + // Rule 120: iteration_statement ::= while ( expression ) statement + // + case 120: { + action.consumeStatementWhileLoop(); + break; + } + + // + // Rule 121: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement + // + case 121: { + action.consumeStatementForLoop(); + break; + } + + // + // Rule 122: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement + // + case 122: { + action.consumeStatementForLoop(); + break; + } + + // + // Rule 123: jump_statement ::= goto identifier_token ; + // + case 123: { + action.consumeStatementGoto(); + break; + } + + // + // Rule 124: jump_statement ::= continue ; + // + case 124: { + action.consumeStatementContinue(); + break; + } + + // + // Rule 125: jump_statement ::= break ; + // + case 125: { + action.consumeStatementBreak(); + break; + } + + // + // Rule 126: jump_statement ::= return ; + // + case 126: { + action.consumeStatementReturn(false); + break; + } + + // + // Rule 127: jump_statement ::= return expression ; + // + case 127: { + action.consumeStatementReturn(true); + break; + } + // + // Rule 128: declaration ::= declaration_specifiers ; + // + case 128: { + action.consumeDeclarationSimple(false); + break; + } + + // + // Rule 129: declaration ::= declaration_specifiers init_declarator_list ; + // + case 129: { + action.consumeDeclarationSimple(true); + break; + } + + // + // Rule 130: declaration_specifiers ::= simple_declaration_specifiers + // + case 130: { + action.consumeDeclarationSpecifiersSimple(); + break; + } + + // + // Rule 131: declaration_specifiers ::= struct_or_union_declaration_specifiers + // + case 131: { + action.consumeDeclarationSpecifiersStructUnionEnum(); + break; + } + + // + // Rule 132: declaration_specifiers ::= elaborated_declaration_specifiers + // + case 132: { + action.consumeDeclarationSpecifiersStructUnionEnum(); + break; + } + + // + // Rule 133: declaration_specifiers ::= enum_declaration_specifiers + // + case 133: { + action.consumeDeclarationSpecifiersStructUnionEnum(); + break; + } + + // + // Rule 134: declaration_specifiers ::= typdef_name_declaration_specifiers + // + case 134: { + action.consumeDeclarationSpecifiersTypedefName(); + break; + } + + // + // Rule 159: init_declarator ::= complete_declarator = initializer + // + case 159: { + action.consumeDeclaratorWithInitializer(true); + break; + } + + // + // Rule 161: storage_class_specifier ::= storage_class_specifier_token + // + case 161: { + action.consumeToken(); + break; + } + + // + // Rule 167: simple_type_specifier ::= simple_type_specifier_token + // + case 167: { + action.consumeToken(); + break; + } + + // + // Rule 180: type_name_specifier ::= identifier_token + // + case 180: { + action.consumeToken(); + break; + } + + // + // Rule 181: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { struct_declaration_list_opt } + // + case 181: { + action.consumeTypeSpecifierComposite(false); + break; + } + + // + // Rule 182: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook identifier_token struct_or_union_specifier_suffix_hook { struct_declaration_list_opt } + // + case 182: { + action.consumeTypeSpecifierComposite(true); + break; + } + + // + // Rule 187: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token + // + case 187: { + action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); + break; + } + + // + // Rule 188: elaborated_specifier ::= union elaborated_specifier_hook identifier_token + // + case 188: { + action.consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); + break; + } + + // + // Rule 189: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token + // + case 189: { + action.consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); + break; + } + + // + // Rule 195: struct_declaration ::= specifier_qualifier_list struct_declarator_list ; + // + case 195: { + action.consumeStructDeclaration(true); + break; + } + + // + // Rule 196: struct_declaration ::= specifier_qualifier_list ; + // + case 196: { + action.consumeStructDeclaration(false); + break; + } + + // + // Rule 197: struct_declaration ::= ERROR_TOKEN + // + case 197: { + action.consumeDeclarationProblem(); + break; + } + + // + // Rule 203: struct_declarator ::= : constant_expression + // + case 203: { + action.consumeBitField(false); + break; + } + + // + // Rule 204: struct_declarator ::= declarator : constant_expression + // + case 204: { + action.consumeBitField(true); + break; + } + + // + // Rule 205: enum_specifier ::= enum enum_specifier_hook { enumerator_list_opt comma_opt } + // + case 205: { + action.consumeTypeSpecifierEnumeration(false); + break; + } + + // + // Rule 206: enum_specifier ::= enum enum_specifier_hook identifier_token { enumerator_list_opt comma_opt } + // + case 206: { + action.consumeTypeSpecifierEnumeration(true); + break; + } + + // + // Rule 212: enumerator ::= identifier_token + // + case 212: { + action.consumeEnumerator(false); + break; + } + + // + // Rule 213: enumerator ::= identifier_token = constant_expression + // + case 213: { + action.consumeEnumerator(true); + break; + } + + // + // Rule 214: type_qualifier ::= type_qualifier_token + // + case 214: { + action.consumeToken(); + break; + } + + // + // Rule 218: function_specifier ::= inline + // + case 218: { + action.consumeToken(); + break; + } + + // + // Rule 220: declarator ::= pointer_seq direct_declarator + // + case 220: { + action.consumeDeclaratorWithPointer(true); + break; + } + + // + // Rule 225: basic_direct_declarator ::= declarator_id_name + // + case 225: { + action.consumeDirectDeclaratorIdentifier(); + break; + } + + // + // Rule 226: basic_direct_declarator ::= ( declarator ) + // + case 226: { + action.consumeDirectDeclaratorBracketed(); + break; + } + + // + // Rule 227: declarator_id_name ::= identifier + // + case 227: { + action.consumeIdentifierName(); + break; + } + + // + // Rule 228: array_direct_declarator ::= basic_direct_declarator array_modifier + // + case 228: { + action.consumeDirectDeclaratorArrayDeclarator(true); + break; + } + + // + // Rule 229: array_direct_declarator ::= array_direct_declarator array_modifier + // + case 229: { + action.consumeDirectDeclaratorArrayDeclarator(true); + break; + } + + // + // Rule 231: function_direct_declarator ::= basic_direct_declarator ( parameter_type_list ) + // + case 231: { + action.consumeDirectDeclaratorFunctionDeclarator(true, true); + break; + } + + // + // Rule 232: function_direct_declarator ::= basic_direct_declarator ( ) + // + case 232: { + action.consumeDirectDeclaratorFunctionDeclarator(true, false); + break; + } + + // + // Rule 234: function_declarator ::= pointer_seq function_direct_declarator + // + case 234: { + action.consumeDeclaratorWithPointer(true); + break; + } + + // + // Rule 235: knr_direct_declarator ::= basic_direct_declarator ( identifier_list ) + // + case 235: { + action.consumeDirectDeclaratorFunctionDeclaratorKnR(); + break; + } + + // + // Rule 237: knr_function_declarator ::= pointer_seq knr_direct_declarator + // + case 237: { + action.consumeDeclaratorWithPointer(true); + break; + } + + // + // Rule 238: identifier_list ::= identifier + // + case 238: { + action.consumeIdentifierKnR(); + break; + } + + // + // Rule 239: identifier_list ::= identifier_list , identifier + // + case 239: { + action.consumeIdentifierKnR(); + break; + } + + // + // Rule 240: array_modifier ::= [ ] + // + case 240: { + action.consumeDirectDeclaratorArrayModifier(false); + break; + } + + // + // Rule 241: array_modifier ::= [ array_modifier_type_qualifiers ] + // + case 241: { + action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); + break; + } + + // + // Rule 242: array_modifier ::= [ assignment_expression ] + // + case 242: { + action.consumeDirectDeclaratorArrayModifier(true); + break; + } + + // + // Rule 243: array_modifier ::= [ array_modifier_type_qualifiers assignment_expression ] + // + case 243: { + action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); + break; + } + + // + // Rule 244: array_modifier ::= [ static assignment_expression ] + // + case 244: { + action.consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); + break; + } + + // + // Rule 245: array_modifier ::= [ static array_modifier_type_qualifiers assignment_expression ] + // + case 245: { + action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); + break; + } + + // + // Rule 246: array_modifier ::= [ array_modifier_type_qualifiers static assignment_expression ] + // + case 246: { + action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); + break; + } + + // + // Rule 247: array_modifier ::= [ * ] + // + case 247: { + action.consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); + break; + } + + // + // Rule 248: array_modifier ::= [ array_modifier_type_qualifiers * ] + // + case 248: { + action.consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); + break; + } + + // + // Rule 250: pointer_seq ::= pointer_hook * pointer_hook + // + case 250: { + action.consumePointer(); + break; + } + + // + // Rule 251: pointer_seq ::= pointer_seq pointer_hook * pointer_hook + // + case 251: { + action.consumePointer(); + break; + } + + // + // Rule 252: pointer_seq ::= pointer_hook * pointer_hook type_qualifier_list + // + case 252: { + action.consumePointerTypeQualifierList(); + break; + } + + // + // Rule 253: pointer_seq ::= pointer_seq pointer_hook * pointer_hook type_qualifier_list + // + case 253: { + action.consumePointerTypeQualifierList(); + break; + } + + // + // Rule 257: parameter_type_list ::= parameter_list + // + case 257: { + action.consumeEmpty(); + break; + } + + // + // Rule 258: parameter_type_list ::= parameter_list , ... + // + case 258: { + action.consumePlaceHolder(); + break; + } + + // + // Rule 259: parameter_type_list ::= ... + // + case 259: { + action.consumePlaceHolder(); + break; + } + + // + // Rule 262: parameter_declaration ::= declaration_specifiers complete_parameter_declarator + // + case 262: { + action.consumeParameterDeclaration(); + break; + } + + // + // Rule 263: parameter_declaration ::= declaration_specifiers + // + case 263: { + action.consumeParameterDeclarationWithoutDeclarator(); + break; + } + + // + // Rule 266: type_id ::= specifier_qualifier_list + // + case 266: { + action.consumeTypeId(false); + break; + } + + // + // Rule 267: type_id ::= specifier_qualifier_list abstract_declarator + // + case 267: { + action.consumeTypeId(true); + break; + } + + // + // Rule 269: abstract_declarator ::= pointer_seq + // + case 269: { + action.consumeDeclaratorWithPointer(false); + break; + } + + // + // Rule 270: abstract_declarator ::= pointer_seq direct_abstract_declarator + // + case 270: { + action.consumeDeclaratorWithPointer(true); + break; + } + + // + // Rule 274: basic_direct_abstract_declarator ::= ( abstract_declarator ) + // + case 274: { + action.consumeDirectDeclaratorBracketed(); + break; + } + + // + // Rule 275: array_direct_abstract_declarator ::= array_modifier + // + case 275: { + action.consumeDirectDeclaratorArrayDeclarator(false); + break; + } + + // + // Rule 276: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier + // + case 276: { + action.consumeDirectDeclaratorArrayDeclarator(true); + break; + } + + // + // Rule 277: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier + // + case 277: { + action.consumeDirectDeclaratorArrayDeclarator(true); + break; + } + + // + // Rule 278: function_direct_abstract_declarator ::= ( ) + // + case 278: { + action.consumeDirectDeclaratorFunctionDeclarator(false, false); + break; + } + + // + // Rule 279: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( ) + // + case 279: { + action.consumeDirectDeclaratorFunctionDeclarator(true, false); + break; + } + + // + // Rule 280: function_direct_abstract_declarator ::= ( parameter_type_list ) + // + case 280: { + action.consumeDirectDeclaratorFunctionDeclarator(false, true); + break; + } + + // + // Rule 281: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( parameter_type_list ) + // + case 281: { + action.consumeDirectDeclaratorFunctionDeclarator(true, true); + break; + } + + // + // Rule 282: initializer ::= assignment_expression + // + case 282: { + action.consumeInitializer(); + break; + } + + // + // Rule 283: initializer ::= initializer_list + // + case 283: { + action.consumeInitializer(); + break; + } + + // + // Rule 284: initializer_list ::= start_initializer_list { initializer_seq comma_opt } end_initializer_list + // + case 284: { + action.consumeInitializerList(); + break; + } + + // + // Rule 285: initializer_list ::= { } + // + case 285: { + action.consumeInitializerList(); + break; + } + + // + // Rule 286: start_initializer_list ::= $Empty + // + case 286: { + action.initializerListStart(); + break; + } + + // + // Rule 287: end_initializer_list ::= $Empty + // + case 287: { + action.initializerListEnd(); + break; + } + + // + // Rule 292: designated_initializer ::= designation = initializer + // + case 292: { + action.consumeInitializerDesignated(); + break; + } + + // + // Rule 296: designator_base ::= [ constant_expression ] + // + case 296: { + action.consumeDesignatorArray(); + break; + } + + // + // Rule 297: designator_base ::= . identifier_token + // + case 297: { + action.consumeDesignatorField(); + break; + } + + // + // Rule 298: designator ::= [ constant_expression ] + // + case 298: { + action.consumeDesignatorArray(); + break; + } + + // + // Rule 299: designator ::= . identifier_token + // + case 299: { + action.consumeDesignatorField(); + break; + } + + // + // Rule 300: translation_unit ::= external_declaration_list + // + case 300: { + action.consumeTranslationUnit(); + break; + } + + // + // Rule 301: translation_unit ::= $Empty + // + case 301: { + action.consumeTranslationUnit(); + break; + } + + // + // Rule 306: external_declaration ::= ; + // + case 306: { + action.consumeDeclarationEmpty(); + break; + } + + // + // Rule 307: external_declaration ::= ERROR_TOKEN + // + case 307: { + action.consumeDeclarationProblem(); + break; + } + + // + // Rule 311: function_definition ::= function_declarator function_body + // + case 311: { + action.consumeFunctionDefinition(false); + break; + } + + // + // Rule 312: function_definition ::= declaration_specifiers knr_function_declarator declaration_list compound_statement + // + case 312: { + action.consumeFunctionDefinitionKnR(); + break; + } + + // + // Rule 313: normal_function_definition ::= declaration_specifiers function_declarator function_body + // + case 313: { + action.consumeFunctionDefinition(true); + break; + } + + // + // Rule 314: function_body ::= { } + // + case 314: { + action.consumeStatementCompoundStatement(false); + break; + } + + // + // Rule 315: function_body ::= { block_item_list } + // + case 315: { + action.consumeStatementCompoundStatement(true); + break; + } + + // + // Rule 332: attribute_parameter ::= assignment_expression + // + case 332: { + action.consumeIgnore(); + break; + } + + // + // Rule 343: extended_asm_declaration ::= asm volatile_opt ( extended_asm_param_seq ) ; + // + case 343: { + gnuAction.consumeDeclarationASM(); + break; + } + + // + // Rule 354: unary_expression ::= __alignof__ unary_expression + // + case 354: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_alignOf); + break; + } + + // + // Rule 355: unary_expression ::= __alignof__ ( type_id ) + // + case 355: { + action.consumeExpressionTypeId(IASTTypeIdExpression.op_alignof); + break; + } + + // + // Rule 356: unary_expression ::= typeof unary_expression + // + case 356: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); + break; + } + + // + // Rule 357: unary_expression ::= typeof ( type_id ) + // + case 357: { + action.consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); + break; + } + + // + // Rule 358: relational_expression ::= relational_expression >? shift_expression + // + case 358: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_max); + break; + } + + // + // Rule 359: relational_expression ::= relational_expression : assignment_expression + // + case 360: { + action.consumeExpressionConditional(); + break; + } + + // + // Rule 361: primary_expression ::= ( compound_statement ) + // + case 361: { + gnuAction.consumeCompoundStatementExpression(); + break; + } + + // + // Rule 362: labeled_statement ::= case case_range_expression : statement + // + case 362: { + action.consumeStatementCase(); + break; + } + + // + // Rule 363: case_range_expression ::= constant_expression ... constant_expression + // + case 363: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); + break; + } + + // + // Rule 367: typeof_type_specifier ::= typeof unary_expression + // + case 367: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); + break; + } + + // + // Rule 368: typeof_type_specifier ::= typeof ( type_id ) + // + case 368: { + action.consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); + break; + } + + // + // Rule 369: declaration_specifiers ::= typeof_declaration_specifiers + // + case 369: { + action.consumeDeclarationSpecifiersTypeof(); + break; + } + + // + // Rule 385: field_name_designator ::= identifier_token : + // + case 385: { + action.consumeDesignatorFieldGCC(); + break; + } + + // + // Rule 386: array_range_designator ::= [ constant_expression ... constant_expression ] + // + case 386: { + action.consumeDesignatorArrayRange(); + break; + } + + // + // Rule 387: designated_initializer ::= field_name_designator initializer + // + case 387: { + action.consumeInitializerDesignated(); + break; + } + + // + // Rule 388: block_item ::= normal_function_definition + // + case 388: { + action.consumeStatementDeclaration(); + break; + } + + // + // Rule 392: type_id ::= vector_type + // + case 392: { + action.consumeTypeId(false); + break; + } + + // + // Rule 393: type_id ::= vector_type abstract_declarator + // + case 393: { + action.consumeTypeId(true); + break; + } + + // + // Rule 394: vector_declaration ::= vector_type init_declarator_list ; + // + case 394: { + action.consumeDeclarationSimple(true); + break; + } + + // + // Rule 395: vector_type ::= no_type_declaration_specifiers_opt vector vector_type_specifier all_specifier_qualifier_list_opt + // + case 395: { + action.consumeVectorTypeSpecifier(); + break; + } + + // + // Rule 396: vector_type_specifier ::= vector_type_specifier_token + // + case 396: { + action.consumeToken(); + break; + } + + // + // Rule 418: declarator_id_name ::= pixel + // + case 418: { + action.consumeIdentifierName(); + break; + } + + // + // Rule 419: declarator_id_name ::= vector + // + case 419: { + action.consumeIdentifierName(); + break; + } + + // + // Rule 420: declarator_id_name ::= bool + // + case 420: { + action.consumeIdentifierName(); + break; + } + + default: + break; + } + return; + } +} diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParserprs.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParserprs.java index 1608857eff1..2b3cdd11a3c 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParserprs.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/c/XlcCParserprs.java @@ -18,2156 +18,1081 @@ package org.eclipse.cdt.internal.core.lrparser.xlc.c; public class XlcCParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCParsersym { - public interface IsKeyword { - public final static byte isKeyword[] = {0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0 - }; - }; - public final static byte isKeyword[] = IsKeyword.isKeyword; - public final boolean isKeyword(int index) { return isKeyword[index] != 0; } - - public interface BaseCheck { - public final static short baseCheck[] = {0, - 0,0,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,3,1, - 1,4,4,3,3,2,2,4,1,0, - 1,1,2,2,2,2,2,2,2,2, - 2,4,1,4,1,3,3,3,1,3, - 3,1,3,3,1,3,3,3,3,1, - 3,3,1,3,1,3,1,3,1,3, - 1,3,1,5,1,3,3,3,3,3, - 3,3,3,3,3,3,1,1,2,1, - 0,1,3,1,1,1,1,1,1,1, - 1,3,4,3,2,4,1,2,1,1, - 1,2,5,7,5,1,0,7,2,5, - 9,8,3,2,2,2,3,2,4,2, - 2,2,2,2,1,1,1,1,2,1, - 2,2,2,1,2,2,1,2,2,1, - 2,2,1,2,2,1,3,1,3,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 6,8,0,0,1,1,3,3,3,0, - 1,0,1,2,4,2,1,1,1,3, - 1,1,2,3,7,8,0,1,0,1, - 3,1,3,1,1,1,1,1,1,3, - 1,1,1,1,1,3,1,2,2,1, - 5,3,1,3,5,1,3,1,3,2, - 4,3,5,4,6,6,3,5,1,3, - 4,5,6,0,1,2,1,3,1,1, - 3,2,1,1,1,1,2,1,2,3, - 1,1,1,3,1,2,2,2,3,4, - 5,1,1,7,3,0,0,1,1,3, - 3,4,1,1,2,3,2,3,2,1, - 0,1,2,1,1,1,1,1,2,1, - 3,6,4,2,4,1,1,1,1,2, - 6,3,1,3,1,4,0,1,1,1, - 3,1,0,4,3,1,2,1,3,4, - 4,4,6,1,0,1,3,1,3,0, - 1,4,5,2,4,2,4,3,3,5, - 3,4,3,1,2,2,2,4,2,1, - 1,2,2,3,2,2,3,1,1,1, - 1,1,1,1,2,5,3,1,1,1, - 1,1,2,4,5,1,1,1,1,1, - 1,1,1,1,1,1,1,1,2,1, - 0,1,0,1,1,1,1,1,1,1, - -115,0,-2,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-8,0, - 0,0,0,0,0,-66,-94,0,0,-54, - 0,0,0,-33,0,-252,0,0,0,0, - 0,-89,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-35, - 0,0,0,0,0,0,-49,0,0,0, - -87,-12,0,0,0,0,0,0,0,-70, - 0,0,0,0,0,0,0,0,0,-128, - -11,0,0,0,0,0,0,0,0,-14, - -43,-6,0,0,-52,0,-352,-266,0,0, - 0,0,0,0,-15,0,0,0,0,-3, - 0,0,0,-16,-67,0,0,0,0,0, - 0,0,0,0,-365,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-145, - 0,0,0,0,0,-55,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -236,0,0,0,0,0,0,0,0,0, - 0,0,0,-27,0,0,-56,0,-158,0, - 0,0,0,0,0,0,0,-51,0,0, - 0,0,0,0,0,0,0,0,0,-50, - -4,0,0,0,0,0,0,0,0,-233, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-178,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-185,0,-117,0,-28,-232,0, - -29,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-309, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-39,0,0, - 0,0,0,0,-40,0,0,0,0,-30, - 0,0,0,0,0,0,0,-71,0,0, - 0,0,0,0,0,0,-258,-173,0,0, - 0,0,0,0,0,0,0,-359,0,0, - 0,0,0,0,0,0,-31,0,-95,-121, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-126,0,0, - 0,0,0,0,0,0,-5,-270,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-262,0,0,0,-279,-116,0, - 0,0,-118,0,-361,0,0,0,0,0, - 0,0,0,-339,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -234,0,0,0,0,0,0,0,0,-36, - -42,0,0,0,0,0,0,0,-45,0, - 0,0,0,0,0,-122,0,0,-260,0, - 0,0,-375,0,0,0,0,0,0,0, - 0,-327,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-46,0, - 0,0,-86,0,0,0,0,0,0,0, - 0,-48,0,0,-324,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-254,0,-53,0,0,0,0,0,0, - -93,0,0,-65,0,0,0,0,0,-80, - 0,0,0,0,0,0,0,0,-44,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-58,0,0,0,0,-177,0,0,-151, - 0,0,0,0,0,0,0,0,0,0, - -130,0,-124,0,0,0,0,0,0,-59, - 0,0,0,0,0,0,-60,0,0,0, - 0,0,0,0,0,0,0,-261,0,-97, - 0,0,0,0,0,0,0,0,0,0, - -127,-119,0,0,0,-155,0,0,0,-63, - 0,0,0,-79,0,0,0,0,0,-271, - 0,-18,-81,-99,0,0,-101,0,0,0, - 0,0,0,0,0,-82,-163,0,0,0, - 0,0,0,0,0,-96,-323,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-193,0,0,-231,0,0,0,0,0, - 0,0,0,-142,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-100,0, - 0,0,-68,0,-188,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-196,-195,0,-102,0,0,0,0,0, - 0,-189,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-110,-153,-272, - 0,0,-69,0,0,0,0,0,0,0, - 0,0,0,-201,0,0,0,0,0,0, - 0,0,-152,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-273,0, - -38,0,0,-283,0,0,0,0,0,0, - 0,0,0,-123,0,0,0,-217,0,-200, - 0,0,0,0,0,0,-129,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-144,-131,0,0,0,0,0,0, - 0,0,0,0,-348,0,0,-132,-23,-275, - -357,-146,0,0,0,0,0,0,0,0, - 0,0,0,0,-347,0,-133,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-10, - -202,0,0,0,0,0,-134,-111,0,0, - 0,0,-57,0,0,0,0,0,-34,0, - -328,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -218,0,-135,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-165,0,0,-229, - 0,-112,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-287,0,0, - -199,0,0,0,-154,0,0,-334,-172,0, - 0,0,0,0,0,0,0,0,-355,0, - -203,0,0,0,0,0,0,0,0,0, - -374,0,0,0,0,0,0,0,-136,0, - 0,0,0,0,0,-259,-137,0,0,0, - 0,0,-204,0,0,0,0,0,0,0, - 0,0,-161,-326,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-138,-205,0, - 0,0,0,0,0,0,0,0,-175,-240, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-139,-206,0,0,0,0,0, - 0,0,0,-237,0,0,0,0,0,0, - 0,0,-166,0,0,0,0,0,0,-140, - -207,0,0,0,0,0,0,0,0,-257, - 0,0,-241,0,0,0,0,0,-168,0, - 0,0,0,0,0,-143,-208,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-176,0,0,0,0,0, - 0,-147,-209,0,0,0,0,0,0,0, - 0,-265,0,0,-311,0,0,0,0,0, - -180,0,0,0,0,0,0,-148,-210,0, - 0,0,0,0,0,0,0,-335,0,0, - -338,0,0,0,0,0,-181,0,0,0, - 0,0,0,-156,-211,0,0,0,0,0, - 0,0,0,-157,0,-362,0,0,0,0, - 0,0,-182,0,0,0,0,0,0,-159, - -212,0,0,0,0,0,0,0,0,-354, - 0,0,-340,0,0,0,0,0,-183,0, - 0,0,0,0,0,-160,-213,0,0,0, - 0,0,0,0,0,-184,0,0,-194,0, - 0,0,0,0,-349,0,0,0,0,0, - 0,-269,0,0,0,-61,0,-358,0,-162, - 0,0,0,0,0,0,0,0,0,0, - -164,-280,0,-167,0,0,0,0,0,0, - -198,-367,0,0,0,0,0,0,0,-169, - 0,0,0,0,0,0,-377,0,0,0, - -179,0,0,0,0,-190,0,-230,0,-191, - 0,0,0,0,0,0,0,-381,0,0, - 0,0,0,0,0,0,0,0,0,0, - -285,0,0,0,0,0,0,0,0,-376, - -197,-239,0,0,0,0,0,0,-235,0, - 0,0,0,0,0,-244,-286,0,0,0, - 0,0,0,0,0,-385,0,-248,-249,0, - 0,0,0,0,-263,0,0,0,0,0, - 0,-264,-317,0,0,0,0,0,0,0, - 0,-253,-120,0,0,0,0,0,0,0, - -281,0,0,0,0,0,0,-325,0,0, - 0,0,0,0,0,0,-289,-290,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-291,-292,-336,0,-293,0,0,0, - 0,0,0,-388,-294,-295,0,0,0,0, - 0,0,-255,0,0,0,0,0,0,-296, - -337,0,0,0,0,0,0,0,0,-297, - 0,0,-298,0,0,0,0,0,-299,0, - 0,0,0,0,0,-300,-350,0,0,0, - 0,0,0,0,0,-256,-243,0,0,0, - 0,0,0,0,-301,0,0,0,0,0, - 0,-363,0,0,0,0,0,0,0,0, - -302,-303,0,-304,0,0,0,0,0,0, - 0,0,0,0,0,0,-305,-306,-371,0, - -307,0,0,0,0,0,0,-277,-308,-313, - 0,0,0,0,0,0,-284,0,0,0, - 0,0,0,-378,0,0,0,0,0,0, - 0,0,-351,-360,0,0,0,0,0,0, - 0,-312,0,0,0,0,0,0,-364,-369, - -384,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-64,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-251,0,0,0,0,0,0,0,-314, - 0,0,0,0,-92,-76,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-78, - -315,0,-320,0,0,0,0,0,0,0, - 0,0,-330,-331,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-98,0,0,0,0,-245,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-333,0,0,0,-9,0,0,-356, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-103,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-238,0,0, - 0,0,0,0,0,-368,0,0,0,0, - -13,-379,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-387,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-274,0,0,0,0,0, - 0,0,0,0,0,-322,0,0,0,0, - 0,0,0,0,0,0,0,0,-72,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-246,0,0,0,0,0,0, - 0,0,0,0,0,0,-83,0,0,0, - -187,0,0,0,0,0,0,0,0,0, - -370,0,0,-7,0,0,0,0,0,0, - 0,0,0,0,0,-267,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-310,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-150, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-219,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-88,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-91,0,0,0, - 0,0,0,0,0,0,0,0,0,-17, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-84,0, - 0,0,-346,-1,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-247,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-250,0,0,0,-288,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-278,0, - 0,0,0,0,-343,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-62,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-104,0, - 0,0,0,-316,0,0,-171,0,0,0, - 0,0,0,-318,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -141,0,0,0,0,0,0,0,0,0, - 0,0,0,-342,0,0,0,0,0,0, - 0,0,0,-329,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-344,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-345,0,0,0,0,0,0, - 0,-382,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-386,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-25,0,0,0,-389, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-220,0,0, - 0,0,0,0,0,0,0,-113,0,0, - 0,0,0,0,0,0,0,0,0,-221, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-222,0,0,0, - 0,0,0,0,0,-276,0,0,0,0, - 0,0,0,0,0,0,0,0,-19,0, - 0,0,-332,0,0,0,0,0,0,0, - 0,0,0,-22,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-24,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -32,0,0,0,0,0,0,0,0,0, - 0,0,0,-149,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-223,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-224,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -225,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-226,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-227,0,0,0,0,0,0,0, - 0,-26,0,0,0,0,0,0,-228,0, - 0,0,0,0,0,0,0,-242,0,0, - -20,0,0,0,0,-105,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-106,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-107,0,0,0,0,0,0, - 0,0,0,0,-108,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-109,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-282, - 0,0,0,0,0,-125,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-41,0,0,0, - -47,0,0,0,0,0,0,0,0,0, - 0,0,0,-114,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-73,0, - 0,0,0,0,0,0,0,0,0,-74, - 0,0,0,0,0,0,0,0,-75,0, - 0,0,0,0,0,0,0,-90,-170,0, - 0,0,0,-186,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-214,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-215,0,0,0,0,0,0,0, - 0,0,-268,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-216,0,0,0, - 0,0,0,0,0,-319,-321,0,0,0, - -21,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-77,0,0,0,0,0, - 0,0,0,-174,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-192,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-37,0,0, - 0,0,-85,0,0,0,0,0,0,0, - -353,0,0,0,0,0,-372,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -341,-366,0,0,0,0,0,0,0,0, - -373,0,-380,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -383,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0 - }; - }; - public final static short baseCheck[] = BaseCheck.baseCheck; - public final int baseCheck(int index) { return baseCheck[index]; } - public final static short rhs[] = baseCheck; - public final int rhs(int index) { return rhs[index]; }; - - public interface BaseAction { - public final static char baseAction[] = { - 127,2,128,54,54,18,18,59,59,25, - 25,1,1,3,3,3,3,4,4,4, - 5,6,6,6,6,6,6,6,6,98, - 98,108,7,7,7,7,7,7,7,7, - 7,7,7,8,8,13,13,13,13,14, - 14,14,15,15,15,16,16,16,16,16, - 17,17,17,19,19,20,20,21,21,22, - 22,23,23,24,24,28,28,28,28,28, - 28,28,28,28,28,28,28,43,33,26, - 129,129,109,109,64,44,44,44,44,44, - 44,44,45,45,45,30,30,110,110,89, - 89,46,46,47,47,47,82,82,48,48, - 48,48,48,49,49,49,49,49,61,61, - 29,29,29,29,29,50,50,50,73,73, - 91,91,91,91,92,92,92,93,93,93, - 94,94,94,95,95,95,90,90,83,83, - 84,51,53,53,53,53,53,67,68,68, - 68,68,68,68,68,68,68,68,68,68, - 77,74,74,130,131,78,78,75,75,75, - 99,111,111,112,112,100,100,100,60,132, - 132,113,101,101,101,76,76,133,114,114, - 115,115,102,102,31,32,32,32,52,56, - 56,37,37,37,37,34,34,35,38,38, - 39,36,36,103,103,40,135,135,134,134, - 58,58,58,58,58,58,58,58,58,116, - 65,65,65,65,41,96,96,86,86,86, - 87,87,79,79,136,136,66,66,88,88, - 88,69,69,69,70,71,71,71,72,72, - 72,72,85,85,55,55,57,138,137,137, - 137,137,117,139,140,140,141,141,142,142, - 127,127,143,143,118,118,118,118,144,144, - 119,119,119,80,120,120,9,9,9,27, - 27,10,10,145,145,121,121,121,122,122, - 146,146,123,123,11,11,147,147,124,124, - 124,124,12,62,148,148,149,149,125,125, - 125,104,104,104,7,7,7,7,16,16, - 24,4,45,150,97,97,97,81,81,29, - 61,50,84,84,84,113,113,113,133,130, - 131,41,99,141,141,151,152,117,89,68, - 68,68,66,66,63,42,106,107,107,107, - 107,107,107,107,107,107,126,126,154,154, - 153,153,105,105,61,1,1,1,35,35, - 35,359,1770,452,17,21,18,1054,1247,45, - 371,316,317,318,1264,1297,1278,1363,1327,334, - 1447,1439,1504,1478,1530,75,1506,790,2619,92, - 1323,2144,136,214,2517,20,790,17,21,18, - 1054,367,2306,20,232,17,21,18,1054,1247, - 45,138,135,137,161,1264,1297,1278,1363,1327, - 668,1447,1439,1504,1478,1530,75,483,140,167, - 282,1506,626,2661,1339,144,147,150,153,1062, - 2625,20,364,17,21,18,1054,43,40,232, - 503,689,2231,2470,2889,2904,2918,283,2951,1556, - 396,626,1310,180,2796,1696,511,846,503,3207, - 1766,371,316,317,318,610,320,316,317,318, - 337,255,214,335,685,2544,20,159,17,21, - 18,1054,356,136,214,750,767,225,233,255, - 214,725,225,230,219,718,222,224,323,1734, - 1452,180,138,135,137,161,1560,324,1734,371, - 316,317,318,2033,1076,320,316,317,318,140, - 167,1364,1523,2095,396,1339,144,147,150,153, - 1062,136,214,364,828,346,1321,816,188,1523, - 1731,1153,311,2231,2470,2889,2904,2918,1636,2951, - 138,135,137,161,1341,492,1194,511,3427,960, - 1182,38,951,2177,111,87,322,140,167,96, - 1697,313,1153,1339,144,147,150,153,1062,336, - 285,364,1463,1816,95,97,98,99,100,1584, - 180,2231,2470,2889,2904,2918,88,2951,371,316, - 317,318,769,1998,1936,511,816,31,957,2625, - 20,999,17,21,18,1054,43,45,439,314, - 136,214,1264,1297,1278,1363,1327,295,1447,1984, - 2436,20,834,17,21,18,1054,1247,45,138, - 135,137,161,1264,1297,1278,1363,1327,521,1447, - 1439,1504,1478,1530,75,406,140,167,282,28, - 1002,1556,1712,144,147,150,153,1062,2625,20, - 364,17,21,18,1054,43,39,1364,1356,1835, - 2231,2470,2889,2904,2918,283,2951,1556,927,20, - 834,17,21,18,1054,1247,45,1017,1997,1696, - 668,1264,1297,1278,1363,1327,229,1447,1439,1504, - 1478,1530,75,228,25,288,282,334,2725,20, - 1401,17,21,18,1054,1247,45,893,1019,1320, - 659,1264,1297,1278,1363,1327,181,1447,1439,1504, - 1478,1530,75,283,1704,1556,1240,289,1506,1182, - 2893,1102,128,816,31,2463,20,987,17,21, - 18,1054,1247,45,1181,2049,279,1621,1264,1297, - 1278,1363,1327,290,1447,1439,1504,1478,1530,75, - 210,2625,20,282,17,21,18,1054,43,45, - 684,48,814,1842,1264,1297,1278,1363,1327,684, - 1447,1439,1504,2001,1076,291,1191,261,105,1166, - 283,659,1556,2490,20,394,17,21,18,1054, - 1247,45,503,337,129,347,1264,1297,1278,1363, - 1327,343,1447,1439,1504,1478,1530,75,198,1217, - 387,282,925,617,20,510,17,21,18,1054, - 1247,45,771,255,214,1364,1264,1297,1278,1363, - 1327,24,1447,1439,1504,1478,1530,75,283,1446, - 1556,1041,2825,20,1039,17,21,18,1054,1247, - 45,217,1731,421,1269,1264,1297,1278,1363,1327, - 1483,1447,1439,1504,1478,1530,75,240,292,38, - 332,3268,226,2034,555,294,111,87,876,194, - 1377,96,816,187,205,825,384,702,1419,3323, - 1,1731,421,631,1463,109,95,97,98,99, - 100,1010,20,1131,17,21,18,1054,43,36, - 1394,1129,110,370,414,111,87,816,189,1377, - 96,725,225,230,219,718,222,224,1356,1835, - 1269,388,631,1463,109,95,97,98,99,100, - 107,788,1615,264,1153,275,816,1543,342,315, - 182,110,370,414,919,247,268,1162,1135,273, - 1969,990,590,1060,38,330,2627,38,90,748, - 388,319,316,317,318,265,1095,2625,20,108, - 17,21,18,1054,43,45,1119,1704,2113,576, - 1264,1297,1278,1363,1327,242,1447,1439,1504,1478, - 1530,94,288,1731,421,2625,20,349,17,21, - 18,1054,43,45,38,28,591,1556,1264,1297, - 1278,1363,1327,262,1447,1439,1982,111,87,1348, - 210,1377,96,2571,20,1080,17,21,18,1054, - 354,1829,1087,1842,631,1463,109,95,97,98, - 99,100,788,2625,20,912,17,21,18,1054, - 1247,45,587,110,370,414,1264,1297,1278,1363, - 1327,1699,1447,1439,1504,1478,1530,75,1269,1191, - 1988,92,388,2598,20,1670,17,21,18,1054, - 41,107,450,276,721,20,361,17,21,18, - 1054,1247,45,893,125,1153,22,1264,1297,1278, - 1363,1327,1224,1447,1439,1504,1478,1530,75,1989, - 277,446,1398,3207,145,1731,421,1828,126,88, - 320,316,317,318,691,28,1490,1556,2625,20, - 788,17,21,18,1054,43,45,507,241,111, - 87,1264,1877,1377,96,725,225,230,219,718, - 222,224,1766,1400,1684,570,631,1463,109,95, - 97,98,99,100,28,1364,1556,3413,47,1048, - 1997,805,893,106,2218,110,370,414,319,316, - 317,318,1282,312,244,2825,20,635,17,21, - 18,1054,1247,45,388,631,1716,128,1264,1297, - 1278,1363,1327,108,1447,1439,1504,1478,1530,75, - 446,586,3211,332,309,370,414,405,1269,319, - 316,317,318,1594,182,28,28,1556,1556,1381, - 180,1187,320,316,317,318,674,1221,371,316, - 317,318,256,214,725,225,922,219,718,222, - 909,2625,20,1387,17,21,18,1054,43,45, - 136,214,256,214,1264,1878,3408,893,1017,2082, - 2625,20,1269,17,21,18,1054,43,45,139, - 135,137,161,1264,1297,1278,1363,1327,788,1965, - 19,503,128,156,861,1191,141,167,788,38, - 869,1028,1010,145,148,151,154,1062,331,1257, - 365,2625,20,521,17,21,18,1054,1247,45, - 124,50,255,214,1264,1297,1278,1363,1327,830, - 1447,1439,1504,1478,1530,75,893,1239,2276,86, - 256,214,243,2625,20,969,17,21,18,1054, - 1247,45,245,1191,816,1835,1264,1297,1278,1363, - 1327,196,1447,1439,1504,1478,1530,75,1176,2625, - 20,85,17,21,18,1054,1247,45,112,555, - 1191,528,1264,1297,1278,1363,1327,1321,1447,1439, - 1504,1478,1530,75,419,2625,20,84,17,21, - 18,1054,1247,45,38,127,700,1791,1264,1297, - 1278,1363,1327,797,1447,1439,1504,1478,1530,75, - 554,2625,20,83,17,21,18,1054,1247,45, - 38,1852,3347,1191,1264,1297,1278,1363,1327,482, - 1447,1439,1504,1478,1530,75,1745,2625,20,82, - 17,21,18,1054,1247,45,211,339,123,284, - 1264,1297,1278,1363,1327,1269,1447,1439,1504,1478, - 1530,75,1289,2625,20,81,17,21,18,1054, - 1247,45,1125,231,892,1191,1264,1297,1278,1363, - 1327,1269,1447,1439,1504,1478,1530,75,1927,2625, - 20,80,17,21,18,1054,1247,45,788,1060, - 3441,1786,1264,1297,1278,1363,1327,1269,1447,1439, - 1504,1478,1530,75,1219,2625,20,79,17,21, - 18,1054,1247,45,1403,1180,816,297,1264,1297, - 1278,1363,1327,1269,1447,1439,1504,1478,1530,75, - 1598,2625,20,78,17,21,18,1054,1247,45, - 1364,1219,246,1191,1264,1297,1278,1363,1327,1269, - 1447,1439,1504,1478,1530,75,1663,2625,20,77, - 17,21,18,1054,1247,45,1269,2265,3442,1269, - 1264,1297,1278,1363,1327,2685,1447,1439,1504,1478, - 1530,75,1584,180,1280,76,1107,23,1364,1718, - 1357,371,316,317,318,320,316,317,318,206, - 195,1453,2625,20,1687,17,21,18,1054,1247, - 45,1269,1191,136,214,1264,1297,1278,1363,1327, - 1928,1447,1439,1504,1478,1530,75,816,299,352, - 93,1391,139,135,137,161,1505,3453,2625,20, - 2333,17,21,18,1054,43,45,1431,1191,141, - 167,1264,1297,1278,1363,1981,145,148,151,154, - 1062,2625,20,365,17,21,18,1054,1247,45, - 1330,1290,73,118,1264,1297,1278,1363,1327,1759, - 1447,1439,1504,1478,1530,75,1710,2625,20,1408, - 17,21,18,1054,1247,45,788,235,1819,456, - 1264,1297,1278,1363,1327,752,1447,1439,1504,1478, - 1530,75,1725,2625,20,1618,17,21,18,1054, - 43,45,1269,38,296,1153,1264,1297,1278,1363, - 1327,2398,1447,1439,1504,1478,1530,94,2625,20, - 321,17,21,18,1054,43,45,1458,1490,88, - 298,1264,1297,1278,1363,1327,1152,1447,1439,1504, - 1478,1530,94,1807,1865,2625,20,1395,17,21, - 18,1054,1247,45,788,1552,191,363,1264,1297, - 1278,1363,1327,1269,1447,1439,1504,1478,1530,75, - 845,2625,20,360,17,21,18,1054,1247,45, - 923,341,213,1140,1264,1297,1278,1363,1327,1329, - 1447,1439,1504,1478,1530,75,1368,2625,20,74, - 17,21,18,1054,43,45,1269,38,386,1153, - 1264,1297,1278,1363,1327,1347,1447,1439,1504,1478, - 1530,94,2625,20,340,17,21,18,1054,43, - 45,1556,1498,88,1104,1264,1297,1278,1363,1327, - 2042,1447,1439,1504,1478,1530,94,1943,1944,2625, - 20,1294,17,21,18,1054,43,45,1269,1570, - 1723,203,1264,1297,1278,1363,1327,1269,1447,1439, - 1504,1478,1530,94,2625,20,274,17,21,18, - 1054,43,45,1999,1874,353,1800,1264,1297,1278, - 1363,1327,1269,1447,1439,1504,1478,1530,94,2000, - 1824,2625,20,3781,17,21,18,1054,43,45, - 2674,3781,3781,204,1264,1297,1278,1363,1327,1597, - 1447,1439,1504,1478,1530,94,3781,3781,320,316, - 317,318,446,3781,3346,3781,3781,3781,1826,3781, - 1269,319,316,317,318,2679,2652,20,3781,17, - 21,18,1054,34,371,316,317,318,2707,1221, - 874,1269,421,1820,3781,1904,725,225,922,219, - 718,222,224,408,1269,3781,136,214,3781,2734, - 3781,326,319,316,317,318,88,3781,3408,198, - 1178,3781,280,1382,1692,138,135,137,161,38, - 2069,1153,2838,319,316,317,318,725,225,230, - 220,718,222,224,1155,156,861,3781,2964,3781, - 3224,3269,869,1269,3781,88,1328,446,3781,3207, - 1269,275,2090,3781,3781,521,319,316,317,318, - 3781,1281,270,1162,1135,273,1744,3781,281,3781, - 3781,406,396,3781,1221,319,316,317,318,3781, - 3781,725,225,230,219,718,222,224,446,3781, - 3207,408,3781,2069,3781,3781,1269,319,316,317, - 318,2238,1269,3408,3781,3781,3781,1489,3781,3781, - 371,316,317,318,1778,1221,1269,3781,395,2410, - 2773,3781,725,225,230,219,718,222,224,3781, - 156,861,136,214,2800,2371,20,860,17,21, - 18,1054,43,44,3408,1750,846,3781,3207,3781, - 3781,143,135,137,161,319,316,317,318,2625, - 20,3781,17,21,18,1054,43,38,142,167, - 3781,156,861,527,38,3781,1153,3781,869,3781, - 725,225,230,219,718,222,224,446,3781,3207, - 28,2867,1556,2579,3781,3781,319,316,317,318, - 88,906,2033,3207,508,3781,522,2111,3781,278, - 319,316,317,318,1221,3781,1142,3781,2684,3781, - 3781,725,225,230,219,718,222,224,527,306, - 3781,3781,3781,797,278,725,225,230,219,718, - 222,224,2244,3408,1153,3781,631,3421,3781,275, - 725,225,230,219,718,222,224,2033,3781,199, - 268,1162,1135,273,3781,305,370,414,88,3781, - 157,861,954,3781,275,116,3781,3781,1705,2008, - 2752,3781,3781,3781,310,268,1162,1135,273,371, - 316,317,318,2625,20,3781,17,21,18,1054, - 43,45,3421,3781,2008,3781,1893,709,3781,3781, - 3781,136,214,3781,200,3781,319,316,317,318, - 3781,3781,303,304,1673,3781,3781,709,3781,3781, - 138,135,137,161,2069,3781,319,316,317,318, - 2852,725,225,230,220,718,222,224,1155,371, - 316,317,318,2964,2069,3781,3781,3781,3781,3781, - 3781,725,225,1608,220,718,222,1582,1155,1600, - 3781,136,214,709,430,3781,522,3781,320,316, - 317,318,319,316,317,318,406,396,3781,3781, - 146,135,137,161,3781,1655,1731,1153,3781,306, - 2069,3781,3781,797,3781,3781,409,725,225,1608, - 220,718,222,224,1155,3781,631,3781,3781,3781, - 111,87,1716,1731,1153,96,1010,20,3781,17, - 21,18,1054,43,36,305,370,414,1463,104, - 95,97,98,99,100,3781,3781,111,87,1501, - 3781,659,96,3781,310,38,3781,1153,319,316, - 317,318,3781,3781,3781,1463,102,95,97,98, - 99,100,3781,3781,3781,709,2069,3781,987,3781, - 248,88,3781,3781,319,316,317,318,2226,444, - 1050,659,302,304,1777,1731,1153,1094,3781,659, - 3781,423,2069,3781,1838,1731,1153,3781,3781,767, - 225,234,3781,3781,2876,3781,1155,2334,987,111, - 87,3781,3781,3781,96,3781,198,3781,260,111, - 87,502,3781,659,96,2124,1761,1463,362,95, - 97,98,99,100,1899,1731,1153,1463,103,95, - 97,98,99,100,1555,3781,659,1446,3781,3781, - 987,3781,3781,319,316,317,318,3781,260,111, - 87,3781,3781,3781,96,1575,1761,1960,1731,1153, - 3781,2069,3781,987,3781,3781,3781,1463,120,95, - 97,98,99,100,3781,1050,3781,193,3781,3781, - 3781,3781,111,87,2021,1731,1153,96,747,879, - 260,3781,2082,1731,1153,3781,3781,1575,1761,2123, - 1463,115,95,97,98,99,100,3781,3781,111, - 87,3781,3781,260,96,3781,3781,111,87,3781, - 2124,1761,96,2143,1731,1153,3781,1463,2050,95, - 97,98,99,100,3781,1463,114,95,97,98, - 99,100,3781,3781,3781,1809,1324,3781,111,87, - 2204,1731,1153,96,3781,319,316,317,318,3781, - 3781,3781,3781,3781,3781,3781,1463,122,95,97, - 98,99,100,2069,3781,111,87,3781,2625,20, - 96,17,21,18,1054,43,45,1050,2696,3781, - 3274,1894,3781,1463,121,95,97,98,99,100, - 2625,20,3781,17,21,18,1054,43,45,3781, - 3781,2605,3781,1264,1297,1278,1897,2625,20,3781, - 17,21,18,1054,43,45,1251,3781,3781,3781, - 1264,1297,1278,1905,3781,319,316,317,318,2862, - 3781,3781,3781,444,3781,659,275,3781,371,316, - 317,318,3781,2069,2893,3781,3781,268,1162,1135, - 273,3781,3781,371,316,317,318,1155,2903,3781, - 136,214,987,3781,3781,3781,393,371,316,317, - 318,3781,3781,3781,275,136,214,3781,3781,149, - 135,137,161,3781,3781,270,1162,1135,273,136, - 214,2934,3781,3781,152,135,137,161,3781,3781, - 371,316,317,318,2944,3781,3781,3781,155,135, - 137,161,260,371,316,317,318,3781,3781,2180, - 1761,3781,136,214,2625,20,3781,17,21,18, - 1054,43,45,3781,3781,136,214,1264,1297,1906, - 3781,366,135,137,161,2625,20,3781,17,21, - 18,1054,43,45,139,135,137,161,1264,1297, - 1920,2625,20,3781,17,21,18,1054,43,45, - 3781,3781,3781,3781,1264,1297,1930,2625,20,3781, - 17,21,18,1054,43,45,3781,3781,3781,3781, - 1264,1297,1933,2625,20,3781,17,21,18,1054, - 43,45,476,3781,3207,3781,1264,1297,1939,2625, - 20,3781,17,21,18,1054,43,45,890,3781, - 421,557,1264,1297,1946,3781,874,3781,421,3781, - 319,316,317,318,3781,3781,725,225,230,219, - 718,222,224,874,88,421,3781,1282,1333,3781, - 3781,116,88,3781,3781,198,1178,3781,954,1382, - 631,3781,3781,3781,874,3781,421,3781,2838,88, - 3781,3781,198,1178,3781,874,1382,421,3781,2372, - 370,414,3781,3781,3781,2838,3224,3781,3781,874, - 88,421,1601,198,1178,3781,3781,1382,3781,3781, - 1595,88,3781,3224,198,1178,2838,3781,1382,1627, - 874,3781,421,3781,3781,88,1748,2838,198,1178, - 607,3781,1382,3781,3224,320,316,317,318,3781, - 1653,2838,3781,3781,3781,3224,88,3781,3781,198, - 1178,1679,3781,1382,3781,3781,3781,1324,3781,3224, - 3781,1324,2838,3781,3781,1696,319,316,317,318, - 319,316,317,318,2769,3781,3274,3781,3781,3781, - 3224,3781,3781,3781,2069,3781,2173,3781,2069,2625, - 20,3781,17,21,18,1054,43,37,1050,3781, - 2625,20,1050,17,21,18,1054,43,36,2625, - 20,3781,17,21,18,1054,43,35,1255,1804, - 570,3781,2437,3781,1324,3781,2457,3781,320,316, - 317,318,275,319,316,317,318,3781,3781,3781, - 3781,3781,3781,268,1162,1135,273,1282,3781,2625, - 20,2069,17,21,18,1054,43,48,3781,3781, - 631,3781,267,2625,20,1050,17,21,18,1054, - 43,47,3781,1324,3781,3781,3781,3781,3781,308, - 370,414,319,316,317,318,3781,2625,20,2876, - 17,21,18,1054,43,46,1324,1238,3781,659, - 2069,1038,3781,3781,3781,319,316,317,318,3781, - 319,316,317,318,1050,2652,20,3781,17,21, - 18,1054,33,2069,1744,3781,198,3781,1333,3781, - 3781,3781,3781,319,316,317,318,1050,2123,2798, - 20,3781,17,21,18,1054,1861,3781,3781,3781, - 3781,2069,3781,3781,3781,3781,3781,1446,1550,3781, - 3781,2503,1263,1682,3781,1592,3781,319,316,317, - 318,1814,319,316,317,318,3781,1870,3781,3781, - 319,316,317,318,3781,2499,319,316,317,318, - 3176,2244,2244,1153,1153,3781,3781,193,3451,3781, - 982,1873,3781,2244,3471,1153,3781,3781,1275,879, - 320,316,317,318,3781,3781,3781,88,88,3781, - 3781,1926,3781,3781,116,116,3781,3781,3781,88, - 320,316,317,318,3781,3781,116,3781,3781,3781, - 3781,3781,3781,3781,3781,3781,3781,3781,3781,3781, - 3781,3781,3781,3781,3781,3781,3781,3781,3781,3781, - 3781,3781,3781,3781,3781,3781,3781,3781,3781,3781, - 3781,3781,3781,1742,2232,3781,3781,3781,3781,3781, - 3781,3781,3781,3781,3781,2246,3781,0,1,540, - 0,1,520,0,1,535,0,1,544,0, - 678,413,0,520,130,0,535,130,0,544, - 130,0,520,131,0,535,131,0,544,131, - 0,520,132,0,535,132,0,544,132,0, - 544,186,0,535,186,0,520,186,0,186, - 190,0,544,185,0,535,185,0,520,185, - 0,185,190,0,520,133,0,535,133,0, - 544,133,0,520,134,0,535,134,0,544, - 134,0,417,420,0,416,419,0,415,418, - 0,11,227,0,520,369,0,535,369,0, - 544,369,0,4197,412,0,224,236,0,3789, - 1,0,544,381,0,535,381,0,520,381, - 0,1042,32,0,1853,32,0,520,411,0, - 535,411,0,544,411,0,4180,411,0,4178, - 411,0,544,254,0,535,254,0,520,254, - 0,4197,413,0,1,4019,0,224,237,0, - 520,407,0,535,407,0,544,407,0,3999, - 407,0,3998,407,0,3997,407,0,3996,407, - 0,3947,407,0,3946,407,0,3945,407,0, - 3944,407,0,3943,407,0,520,410,0,535, - 410,0,544,410,0,4180,410,0,4178,410, - 0,180,20,0,8,10,0,2010,119,0, - 1,4201,0,1,4200,0,1,4199,0,1, - 4008,0,367,356,0,368,357,0,113,2742, - 0 - }; - }; - public final static char baseAction[] = BaseAction.baseAction; - public final int baseAction(int index) { return baseAction[index]; } - public final static char lhs[] = baseAction; - public final int lhs(int index) { return lhs[index]; }; - - public interface TermCheck { - public final static byte termCheck[] = {0, - 0,1,2,3,4,5,6,7,8,9, - 10,11,12,13,14,15,16,17,18,19, - 20,21,22,23,24,25,26,27,28,29, - 30,31,32,33,34,35,36,0,38,39, - 40,41,42,43,44,45,0,0,48,0, - 50,51,52,53,54,55,56,57,58,59, - 60,61,62,63,64,65,66,67,68,69, - 70,71,0,1,2,3,4,5,6,7, - 8,9,10,11,12,13,14,15,16,17, - 18,19,20,21,22,23,24,25,26,27, - 28,29,30,31,32,33,34,35,36,0, - 38,39,40,41,42,43,44,45,72,73, - 48,74,50,51,52,53,54,55,56,57, - 58,59,60,61,62,63,64,65,66,67, - 68,69,70,71,0,1,2,3,4,5, - 6,7,8,9,10,11,12,13,14,15, - 16,17,18,19,20,21,22,23,24,25, - 26,27,28,29,30,31,32,33,34,35, - 36,0,38,39,40,41,42,43,44,45, - 0,10,48,0,50,51,52,53,54,55, - 56,57,58,59,60,61,62,63,64,65, - 66,67,68,69,70,71,0,1,2,3, - 4,5,6,7,8,9,10,11,12,13, - 14,15,16,17,18,19,20,21,22,23, - 24,25,26,27,28,29,30,31,32,33, - 34,35,36,0,38,39,40,41,42,43, - 44,45,72,73,48,0,50,51,52,53, - 54,55,56,57,58,59,60,61,62,63, - 64,65,66,67,68,69,70,0,1,2, - 3,4,5,6,7,8,9,10,11,12, - 13,14,15,16,17,18,19,20,21,22, - 23,24,25,26,27,28,29,30,31,32, - 33,34,35,36,0,38,39,40,41,42, - 43,44,45,0,1,48,0,50,51,52, - 53,54,55,56,57,58,59,60,61,62, - 63,64,65,66,67,68,69,70,0,1, - 2,3,4,5,28,7,8,9,10,11, - 12,13,14,15,16,17,0,19,20,21, - 22,23,24,25,26,27,28,29,30,0, - 32,33,34,35,36,0,1,39,40,41, - 42,43,44,45,0,0,1,0,1,2, - 3,4,5,55,7,8,9,10,0,61, - 62,63,64,65,66,67,68,69,70,0, - 1,2,3,4,5,6,7,8,9,10, - 11,12,37,0,37,0,1,2,3,4, - 5,0,7,8,9,0,27,28,29,30, - 31,32,33,34,35,36,0,38,39,40, - 41,42,43,44,45,0,1,2,3,4, - 5,0,0,2,55,3,4,6,84,85, - 61,62,63,64,65,66,67,68,69,70, - 19,0,0,2,49,87,0,0,1,2, - 3,4,5,6,7,8,9,10,11,12, - 0,39,40,41,42,43,44,45,47,27, - 28,29,89,104,27,28,29,30,31,32, - 33,34,35,36,89,38,39,40,41,42, - 43,44,45,0,0,104,0,37,2,3, - 4,5,55,7,8,9,0,11,61,62, - 63,64,65,66,67,68,69,70,0,1, - 74,27,28,29,6,0,0,1,10,0, - 89,13,14,15,16,17,7,8,9,93, - 94,95,96,97,98,99,100,101,102,0, - 1,104,27,28,29,37,0,1,2,3, - 4,5,6,37,46,0,10,11,12,13, - 14,15,16,17,0,19,20,21,22,23, - 24,25,26,18,91,92,30,13,14,71, - 72,73,74,75,76,77,78,79,80,81, - 82,83,84,85,86,87,88,0,90,91, - 92,93,94,95,96,97,98,99,100,101, - 102,0,1,0,0,1,19,6,0,6, - 0,10,2,5,13,14,15,16,17,0, - 10,0,1,2,3,4,5,6,0,1, - 2,3,4,5,31,7,8,9,37,103, - 0,1,2,3,4,5,6,46,0,46, - 10,11,12,13,14,15,16,17,37,19, - 20,21,22,23,24,25,26,46,47,0, - 30,0,71,72,73,74,75,76,77,78, - 79,80,81,82,83,84,85,86,87,88, - 0,90,91,92,93,94,95,96,97,98, - 99,100,101,102,0,1,37,0,18,0, - 6,2,0,6,10,0,0,13,14,15, - 16,17,6,0,0,1,2,3,4,5, - 6,7,8,9,10,0,27,2,3,4, - 5,37,18,103,75,74,11,0,1,0, - 46,27,28,29,30,31,32,33,34,35, - 36,37,46,47,0,0,1,2,3,4, - 5,47,7,8,9,71,72,73,74,75, - 76,77,78,79,80,81,82,83,84,85, - 86,87,88,0,90,91,92,93,94,95, - 96,97,98,99,100,101,102,0,1,0, - 103,18,0,6,49,6,7,10,6,0, - 13,14,15,16,17,0,1,2,3,4, - 5,0,7,8,9,86,72,73,0,1, - 31,10,0,31,37,0,0,1,2,3, - 4,5,6,46,16,17,10,11,12,13, - 14,15,16,17,18,19,20,21,22,23, - 24,25,26,0,49,37,0,1,71,72, - 73,74,75,76,77,78,79,80,81,82, - 83,84,85,86,87,88,0,90,91,92, - 93,94,95,96,97,98,99,100,101,102, - 0,1,0,75,72,73,6,71,0,1, - 10,0,1,13,14,15,16,17,90,0, - 1,2,3,4,5,6,0,1,0,10, - 11,12,13,14,15,16,17,37,19,20, - 21,22,23,24,25,26,46,0,0,2, - 3,4,5,0,7,8,9,0,11,2, - 3,4,5,0,7,8,9,19,11,0, - 1,71,72,73,74,75,76,77,78,79, - 80,81,82,83,84,85,86,87,88,0, - 90,91,92,93,94,95,96,97,98,99, - 100,101,102,0,0,2,3,4,5,6, - 7,8,9,0,11,12,0,89,2,3, - 4,5,103,7,8,9,37,11,0,1, - 27,28,29,30,0,32,33,34,35,36, - 0,38,39,40,41,42,43,44,45,0, - 46,0,1,2,3,4,5,6,55,19, - 0,27,28,29,61,62,63,64,65,66, - 67,68,69,70,71,0,0,2,3,4, - 5,6,7,8,9,0,11,12,37,0, - 0,0,2,3,4,5,0,6,47,86, - 0,11,27,28,29,30,6,32,33,34, - 35,36,0,38,39,40,41,42,43,44, - 45,72,73,27,28,29,0,37,0,1, - 55,31,6,7,8,9,61,62,63,64, - 65,66,67,68,69,70,71,0,0,2, - 3,4,5,6,7,8,9,31,11,12, - 0,1,71,15,0,75,0,7,8,9, - 10,7,46,88,27,28,29,30,0,32, - 33,34,35,36,6,38,39,40,41,42, - 43,44,45,27,28,29,0,37,0,0, - 74,2,55,0,6,7,8,9,61,62, - 63,64,65,66,67,68,69,70,71,0, - 1,2,3,4,5,47,7,8,9,31, - 11,12,0,0,2,3,4,5,0,0, - 7,8,9,11,46,6,27,28,29,30, - 18,32,33,34,35,36,0,0,39,40, - 41,42,43,44,45,0,0,2,3,4, - 5,15,74,0,55,18,11,0,0,6, - 61,62,63,64,65,66,67,68,69,70, - 0,88,2,3,4,5,0,7,8,9, - 0,11,12,0,0,2,3,4,5,0, - 72,73,0,1,11,49,7,27,28,29, - 30,18,32,33,34,35,36,18,89,39, - 40,41,42,43,44,45,0,0,2,3, - 4,5,103,6,71,55,46,11,0,72, - 73,61,62,63,64,65,66,67,68,69, - 70,0,0,2,3,4,5,0,7,8, - 9,0,11,12,78,79,80,81,82,83, - 13,14,78,79,80,81,82,83,27,28, - 29,30,0,32,33,34,35,36,6,0, - 39,40,41,42,43,44,45,0,71,0, - 0,49,13,14,0,0,55,7,8,9, - 10,6,61,62,63,64,65,66,67,68, - 69,70,0,1,2,3,4,5,6,47, - 0,49,10,11,12,13,14,15,16,17, - 18,19,20,21,22,23,24,25,26,0, - 46,0,47,31,0,0,7,8,9,0, - 38,7,8,9,10,0,7,8,9,0, - 48,2,50,51,52,53,54,0,56,57, - 58,59,60,0,87,2,3,4,5,89, - 7,8,9,0,11,12,0,0,1,0, - 7,8,9,7,8,9,7,8,9,0, - 27,28,29,30,0,32,33,34,35,36, - 6,0,39,40,41,42,43,44,45,78, - 79,80,81,82,83,0,1,0,55,84, - 85,6,0,89,61,62,63,64,65,66, - 67,68,69,70,0,1,2,3,4,5, - 6,47,0,1,10,11,12,13,14,15, - 16,17,18,19,20,21,22,23,24,25, - 26,0,47,0,0,31,0,1,7,8, - 9,0,38,10,0,0,0,2,7,8, - 9,6,48,0,50,51,52,53,54,0, - 56,57,58,59,60,0,1,2,3,4, - 5,6,0,1,0,10,11,12,13,14, - 15,16,17,18,19,20,21,22,23,24, - 25,26,47,0,0,49,31,0,0,46, - 7,8,9,38,7,8,9,48,0,76, - 77,0,18,48,6,50,51,52,53,54, - 46,56,57,58,59,60,0,1,2,3, - 4,5,6,0,0,0,10,11,12,13, - 14,15,16,17,18,19,20,21,22,23, - 24,25,26,0,46,47,0,31,0,0, - 7,8,9,0,38,0,10,0,0,0, - 7,8,9,0,48,6,50,51,52,53, - 54,46,56,57,58,59,60,0,1,2, - 3,4,5,6,0,0,0,10,11,12, - 13,14,15,16,17,18,19,20,21,22, - 23,24,25,26,0,46,47,49,31,0, - 0,0,0,0,10,38,7,8,9,7, - 8,9,76,77,0,48,0,50,51,52, - 53,54,0,56,57,58,59,60,0,1, - 2,3,4,5,6,0,0,0,10,11, - 12,13,14,15,16,17,18,19,20,21, - 22,23,24,25,26,0,0,0,105,31, - 0,0,7,8,9,0,38,0,0,0, - 76,77,0,0,18,18,48,74,50,51, - 52,53,54,18,56,57,58,59,60,0, - 1,2,3,4,5,6,0,0,0,10, - 11,12,13,14,15,16,17,18,19,20, - 21,22,23,24,25,26,18,0,0,0, - 31,49,49,0,0,0,0,38,0,0, - 0,0,0,0,0,18,18,48,0,50, - 51,52,53,54,18,56,57,58,59,60, - 0,1,2,3,4,5,6,0,0,0, - 10,11,12,13,14,15,16,17,18,19, - 20,21,22,23,24,25,26,49,49,0, - 49,31,49,49,0,0,0,0,38,0, - 0,0,0,0,0,0,0,18,48,0, - 50,51,52,53,54,18,56,57,58,59, - 60,0,1,2,3,4,5,6,0,0, - 0,10,11,12,13,14,15,16,17,18, - 19,20,21,22,23,24,25,26,49,49, - 0,0,31,0,0,0,0,0,0,38, - 0,0,0,0,0,0,0,0,0,48, - 0,50,51,52,53,54,0,56,57,58, - 59,60,0,1,2,3,4,5,6,0, - 0,0,10,11,12,13,14,15,16,17, - 18,19,20,21,22,23,24,25,26,0, - 0,0,0,31,0,0,0,0,0,0, - 38,0,0,0,0,0,0,0,0,0, - 48,0,50,51,52,53,54,0,56,57, - 58,59,60,0,1,2,3,4,5,6, - 0,0,0,10,11,12,13,14,15,16, - 17,18,19,20,21,22,23,24,25,26, - 0,0,0,0,31,0,0,0,0,0, - 0,38,0,0,7,8,9,0,0,6, - 0,48,0,50,51,52,53,54,0,56, - 57,58,59,60,27,28,29,30,0,32, - 33,34,35,36,31,0,39,40,41,42, - 43,44,45,0,0,0,0,0,0,0, - 47,0,55,0,0,0,0,0,61,62, - 63,64,65,66,67,0,1,2,3,4, - 5,0,0,0,0,10,11,12,13,14, - 15,16,17,18,19,20,21,22,23,24, - 25,26,0,1,2,3,4,5,6,7, - 8,9,10,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,27, - 28,29,30,31,32,33,34,35,36,37, - 0,1,2,3,4,5,0,0,0,47, - 10,11,12,13,14,15,16,17,18,19, - 20,21,22,23,24,25,26,0,1,2, - 3,4,5,6,7,8,9,10,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,27,28,29,30,31,32, - 33,34,35,36,37,0,1,2,3,4, - 5,0,0,0,47,10,11,12,13,14, - 15,16,17,18,19,20,21,22,23,24, - 25,26,0,1,2,3,4,5,0,0, - 0,0,10,11,12,13,14,15,16,17, - 18,19,20,21,22,23,24,25,26,0, - 1,2,3,4,5,0,0,0,0,10, - 11,12,13,14,15,16,17,18,19,20, - 21,22,23,24,25,26,0,1,2,3, - 4,5,0,0,0,0,10,11,12,13, - 14,15,16,17,0,19,20,21,22,23, - 24,25,26,0,1,2,3,4,5,0, - 0,0,0,10,11,12,13,14,15,16, - 17,0,19,20,21,22,23,24,25,26, - 0,1,2,3,4,5,0,0,0,0, - 10,11,12,13,14,15,16,17,0,19, - 20,21,22,23,24,25,26,0,1,2, - 3,4,5,0,0,0,0,10,11,12, - 13,14,15,16,17,0,19,20,21,22, - 23,24,25,26,0,1,2,3,4,5, - 0,0,0,0,10,11,12,13,14,15, - 16,17,0,19,20,21,22,23,24,25, - 26,0,1,2,3,4,5,0,0,0, - 0,10,11,12,13,14,15,16,17,0, - 19,20,21,22,23,24,25,26,0,0, - 0,3,4,0,0,7,8,9,0,0, - 6,0,0,0,0,0,1,0,0,0, - 0,6,0,0,0,27,28,29,30,0, - 32,33,34,35,36,31,0,39,40,41, - 42,43,44,45,0,1,2,3,4,5, - 46,0,37,0,10,11,12,13,14,15, - 16,17,47,19,20,21,22,23,24,25, - 26,0,0,0,3,4,0,0,7,8, - 9,0,0,0,0,0,0,0,0,1, - 0,0,0,0,6,0,0,0,27,28, - 29,30,0,32,33,34,35,36,0,0, - 39,40,41,42,43,44,45,0,1,2, - 3,4,5,0,0,37,0,10,11,12, - 13,14,15,16,17,47,19,20,21,22, - 23,24,25,26,0,1,2,3,4,5, - 0,0,0,0,10,11,12,13,14,15, - 16,17,0,19,20,21,22,23,24,25, - 26,0,0,0,0,0,0,0,7,8, - 9,0,0,0,0,0,0,1,7,8, - 9,0,6,0,0,0,0,0,27,28, - 29,30,0,32,33,34,35,36,27,28, - 29,30,0,32,33,34,35,36,0,7, - 8,9,0,37,0,0,0,0,0,7, - 8,9,0,47,0,0,0,0,0,27, - 28,29,30,0,32,33,34,35,36,27, - 28,29,30,0,32,33,34,35,36,0, - 7,8,9,0,0,0,0,0,0,0, - 7,8,9,0,0,0,0,0,0,0, - 27,28,29,30,0,32,33,34,35,36, - 27,28,29,30,0,32,33,34,35,36, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 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, - 3781,1,6262,6206,6203,6205,1802,3538,1,1, - 1,6261,1,1,1,1,1,1,819,1, - 1,1,1,1,1,1,1,1,1,1, - 1,3790,1,1,1,1,1,1,3882,1, - 1,1,1,1,1,1,55,158,1644,287, - 1179,1077,1405,1720,609,1,1634,1046,1686,1203, - 1660,1,1,1,1,1,1,1,1,1, - 1,3788,8,3754,3754,3754,3754,3754,3754,3754, - 3754,3754,3754,3754,3754,3754,3754,3754,3754,3754, - 3754,3754,3754,3754,3754,3754,3754,3754,3754,3754, - 3754,3754,3754,3754,3754,3754,3754,3754,3754,3781, - 3754,3754,3754,3754,3754,3754,3754,3754,1238,1361, - 3754,462,3754,3754,3754,3754,3754,3754,3754,3754, - 3754,3754,3754,3754,3754,3754,3754,3754,3754,3754, - 3754,3754,3754,3754,3781,1,6262,6206,6203,6205, - 1802,3538,1,1,1,6261,1,1,1,1, - 1,1,819,1,1,1,1,1,1,1, - 1,1,1,1,1,3790,1,1,1,1, - 1,3781,3882,1,1,1,1,1,1,1, - 359,2196,1644,3781,1179,1077,1405,1720,609,1, - 1634,1046,1686,1203,1660,1,1,1,1,1, - 1,1,1,1,1,3788,3781,1,6262,6206, - 6203,6205,3791,3538,1,1,1,6261,1,1, - 1,1,1,1,819,1,1,1,1,1, - 1,1,1,1,1,1,1,3790,1,1, - 1,1,1,3781,3882,1,1,1,1,1, - 1,1,1238,1361,1644,3781,1179,1077,1405,1720, - 609,1,1634,1046,1686,1203,1660,1,1,1, - 1,1,1,1,1,1,1,3781,1,6262, - 6206,6203,6205,3791,3538,1,1,1,6261,1, - 1,1,1,1,1,819,1,1,1,1, - 1,1,1,1,1,1,1,1,3790,1, - 1,1,1,1,3781,3882,1,1,1,1, - 1,1,1,3781,480,1644,345,1179,1077,1405, - 1720,609,1,1634,1046,1686,1203,1660,1,1, - 1,1,1,1,1,1,1,1,3781,3135, - 3792,4196,4198,3691,4125,544,520,535,3250,3793, - 3389,3239,2289,3259,3365,2096,3781,3797,1183,3794, - 3795,3796,738,500,1133,3996,3998,3997,3945,3781, - 3946,3944,3999,3947,3943,3781,618,3950,3954,3952, - 3953,3951,3956,3957,63,223,491,269,2346,4008, - 4199,4201,4200,3955,544,520,535,254,69,3949, - 3958,3959,3960,4170,4171,4172,1279,3351,3081,3781, - 1,1,1,1,1,3791,3538,1,1,1, - 1,1,913,1,913,1,3062,4008,4199,4201, - 4200,3781,3547,3541,3544,3781,1,1,1,1, - 3790,1,1,1,1,1,3781,4088,1,1, - 1,1,1,1,1,1,3062,4008,4199,4201, - 4200,3781,3781,1956,1,4178,4180,3787,2867,2850, - 1,1,1,1,1,1,1,1,1,1, - 1913,1,3781,3694,2634,679,43,3781,1,1, - 1,1,1,3791,3538,1,1,1,1,1, - 221,4183,4179,4185,4186,4184,4181,4182,3786,3996, - 3998,3997,4040,301,1,1,1,1,3790,1, - 1,1,1,1,1843,4088,1,1,1,1, - 1,1,1,73,250,3537,186,913,3589,3589, - 3589,3589,1,3580,3586,3583,3781,3589,1,1, - 1,1,1,1,1,1,1,1,1,4198, - 1687,1,1,1,4198,249,271,818,4198,183, - 4040,4198,4198,4198,4198,4198,544,520,535,1661, - 1635,1609,1583,1557,1505,1531,1479,1453,1421,3781, - 525,300,3996,3998,3997,4198,1,3135,3792,4196, - 4198,4197,3785,913,4198,3781,1001,3793,545,3239, - 2289,3259,3365,2096,52,3797,1183,3794,3795,3796, - 738,500,1133,630,851,640,788,2828,2423,4198, - 4198,4198,4198,4198,4198,4198,4198,4198,4198,4198, - 4198,4198,4198,4198,4198,4198,4198,350,4198,4198, - 4198,4198,4198,4198,4198,4198,4198,4198,4198,4198, - 4198,1,4197,3781,3781,944,1063,4197,3781,3791, - 3781,4197,1741,487,4197,4197,4197,4197,4197,3781, - 1801,1,2346,4008,4199,4201,4200,263,254,3062, - 4008,4199,4201,4200,3790,544,520,535,4197,3784, - 3781,3135,3792,4196,4198,4197,3785,4197,3781,2317, - 2556,3793,545,3239,2289,3259,3365,2096,913,3797, - 1183,3794,3795,3796,738,500,1133,263,263,293, - 1817,212,4197,4197,4197,4197,4197,4197,4197,4197, - 4197,4197,4197,4197,4197,4197,4197,4197,4197,4197, - 230,4197,4197,4197,4197,4197,4197,4197,4197,4197, - 4197,4197,4197,4197,1,4196,2024,3781,233,327, - 4196,4109,3781,3785,4196,3781,3781,4196,4196,4196, - 4196,4196,3787,3781,357,368,368,368,368,368, - 3775,368,368,368,3775,3781,4110,3792,4196,4198, - 4197,4196,5629,3784,1757,1868,3793,417,3622,67, - 4196,368,368,368,368,3775,368,368,368,368, - 368,368,456,3786,358,1,3062,4008,4199,4201, - 4200,3775,3547,3541,3544,4196,4196,4196,4196,4196, - 4196,4196,4196,4196,4196,4196,4196,4196,4196,4196, - 4196,4196,4196,1,4196,4196,4196,4196,4196,4196, - 4196,4196,4196,4196,4196,4196,4196,1,3793,1, - 3784,819,1,3793,1947,117,3538,3793,3791,3781, - 3793,3793,3793,3793,3793,1,3062,4008,4199,4201, - 4200,3781,3547,3541,3544,1380,1238,1361,32,3661, - 117,3374,59,3790,3793,3781,1,3135,5192,4986, - 4780,4883,29,3793,3807,3808,3250,5089,545,3239, - 2289,3259,3365,2096,5629,3797,1183,3794,3795,3796, - 738,500,1133,3781,1947,3664,416,3625,3793,3793, - 3793,3793,3793,3793,3793,3793,3793,3793,3793,3793, - 3793,3793,3793,3793,3793,3793,3781,3793,3793,3793, - 3793,3793,3793,3793,3793,3793,3793,3793,3793,3793, - 1,3792,3781,823,1238,1361,3792,29,415,3628, - 3792,11,3631,3792,3792,3792,3792,3792,676,3781, - 3135,3792,4196,4198,4197,3785,3781,446,1,3250, - 3793,545,3239,2289,3259,3365,2096,3792,3797,1183, - 3794,3795,3796,738,500,1133,3792,185,3781,3601, - 3601,3601,3601,3781,3592,3598,3595,207,3601,6251, - 6251,6251,6251,3781,544,520,535,1030,6251,351, - 1234,3792,3792,3792,3792,3792,3792,3792,3792,3792, - 3792,3792,3792,3792,3792,3792,3792,3792,3792,272, - 3792,3792,3792,3792,3792,3792,3792,3792,3792,3792, - 3792,3792,3792,3781,348,1,1,1,1,192, - 1,1,1,68,1,1,378,4039,6259,6259, - 6259,6259,3784,544,520,535,913,6259,338,1549, - 1,1,1,1,251,1,1,1,1,1, - 3781,3978,1,1,1,1,1,1,1,58, - 1003,1,2346,3769,3766,3760,3763,3787,1,1063, - 3781,1,1,1,1,1,1,1,1,1, - 1,1,1,1,192,3781,3781,1,1,1, - 1,191,1,1,1,71,1,1,913,3781, - 3781,1,3792,4196,4198,4197,252,3649,3786,1380, - 3781,3793,1,1,1,1,3791,1,1,1, - 1,1,3781,3978,1,1,1,1,1,1, - 1,1238,1361,3996,3998,3997,236,1972,3781,3078, - 1,3790,224,3646,3646,3646,1,1,1,1, - 1,1,1,1,1,1,191,3781,65,1, - 1,1,1,192,1,1,1,224,1,1, - 269,2321,3788,1768,1,1646,253,544,520,535, - 254,3538,224,1105,1,1,1,1,3781,1, - 1,1,1,1,3787,3978,1,1,1,1, - 1,1,1,3996,3998,3997,3781,913,237,3781, - 224,2017,1,72,224,3697,3697,3697,1,1, - 1,1,1,1,1,1,1,1,192,1, - 3062,730,681,604,3550,3786,3547,3541,3544,224, - 3793,454,3781,254,3792,4196,4198,4197,57,3781, - 544,520,535,3793,224,3785,3996,3998,3997,3945, - 1064,3946,3944,3999,3947,3943,66,3781,3950,3954, - 3952,3953,3951,3956,3957,209,3781,3792,4196,4198, - 4197,1768,224,3781,3955,1409,3793,56,3781,3789, - 3949,3958,3959,3960,4170,4171,4172,1279,3351,3081, - 3781,1105,3792,4196,4198,3643,60,544,520,535, - 257,3793,454,3781,62,3792,4196,4198,4197,1, - 1238,1361,3781,1957,3793,2525,3538,3996,3998,3997, - 3945,1067,3946,3944,3999,3947,3943,819,2051,3950, - 3954,3952,3953,3951,3956,3957,208,286,1464,1464, - 1464,1464,3784,1114,3788,3955,798,1464,3781,1238, - 1361,3949,3958,3959,3960,4170,4171,4172,1279,3351, - 3081,3781,3781,3792,4196,4198,3691,54,544,520, - 535,3781,3793,454,3069,3053,3037,3021,3005,2984, - 2828,2423,3069,3053,3037,3021,3005,2984,3996,3998, - 3997,3945,3781,3946,3944,3999,3947,3943,3787,53, - 3950,3954,3952,3953,3951,3956,3957,70,1114,3781, - 1,2552,2828,2423,89,1,3955,3547,3541,3544, - 254,3787,3949,3958,3959,3960,4170,4171,4172,1279, - 3351,3081,3781,1,6262,6206,6203,6205,3791,3786, - 3781,770,1,6261,1,1,1,1,1,1, - 819,1,1,1,1,1,1,1,1,160, - 1732,61,3786,3790,1,64,544,520,535,379, - 3882,3547,3541,3544,254,3781,544,520,535,3781, - 1644,4020,1179,1077,1405,1720,609,3781,1634,1046, - 1686,1203,1660,3781,679,3792,4196,4198,4197,4040, - 544,520,535,382,3793,454,381,3781,2149,373, - 544,520,535,3652,3658,3655,544,520,535,3781, - 3996,3998,3997,3945,1,3946,3944,3999,3947,3943, - 91,3781,3950,3954,3952,3953,3951,3956,3957,3069, - 3053,3037,3021,3005,2984,3781,447,3781,3955,2867, - 2850,3787,3781,4040,3949,3958,3959,3960,4170,4171, - 4172,1279,3351,3081,3781,1,6262,6206,6203,6205, - 3791,91,3781,2304,1,6261,1,1,1,1, - 1,1,819,1,1,1,1,1,1,1, - 1,372,3786,49,3781,3790,325,942,544,520, - 535,184,3882,3337,3781,3781,1,1086,544,520, - 535,3787,1644,30,1179,1077,1405,1720,609,119, - 1634,1046,1686,1203,1660,3781,1,6262,6206,6203, - 6205,3791,3781,2585,208,1,6261,1,1,1, - 1,1,1,819,1,1,1,1,1,1, - 1,1,3786,254,3781,2,3790,374,3781,3810, - 3682,3688,3685,3882,544,520,535,3757,3781,3313, - 3299,3781,1514,1644,3787,1179,1077,1405,1720,609, - 5628,1634,1046,1686,1203,1660,3781,1,6262,6206, - 6203,6205,3791,3781,3781,30,1,6261,1,1, - 1,1,1,1,819,1,1,1,1,1, - 1,1,1,380,2009,3786,51,3790,3781,3781, - 544,520,535,201,3882,3781,3337,3781,3781,3781, - 544,520,535,113,1644,3787,1179,1077,1405,1720, - 609,758,1634,1046,1686,1203,1660,3781,1,6262, - 6206,6203,6205,3791,3781,3781,3781,1,6261,1, - 1,1,1,1,1,819,1,1,1,1, - 1,1,1,1,50,1295,3786,2624,3790,375, - 3781,3781,376,3781,3337,3882,544,520,535,544, - 520,535,3313,3299,3781,1644,3781,1179,1077,1405, - 1720,609,3781,1634,1046,1686,1203,1660,3781,1, - 6262,6206,6203,6205,3791,3781,3781,3781,1,6261, - 1,1,1,1,1,1,819,1,1,1, - 1,1,1,1,1,377,230,3781,3778,3790, - 3781,3781,544,520,535,368,3882,3781,3781,3781, - 3313,3299,3781,3781,234,1540,1644,883,1179,1077, - 1405,1720,609,5629,1634,1046,1686,1203,1660,3781, - 1,6262,6206,6203,6205,3791,3781,3781,357,1, - 6261,1,1,1,1,1,1,819,1,1, - 1,1,1,1,1,1,5629,355,42,3781, - 3790,1895,1921,3781,3781,3781,3781,3882,202,3781, - 3781,1,3781,1,1,5629,5629,1644,3781,1179, - 1077,1405,1720,609,5629,1634,1046,1686,1203,1660, - 3781,1,6262,6206,6203,6205,3791,3781,3781,3781, - 1,6261,1,1,1,1,1,1,819,1, - 1,1,1,1,1,1,1,1999,4166,190, - 4198,3790,4197,4196,3781,3781,3781,382,3882,1, - 1,3781,3781,3781,3781,3781,3781,207,1644,3781, - 1179,1077,1405,1720,609,378,1634,1046,1686,1203, - 1660,3781,1,6262,6206,6203,6205,3791,3781,3781, - 3781,1,6261,1,1,1,1,1,1,819, - 1,1,1,1,1,1,1,1,3793,3792, - 3781,3781,3790,3781,3781,3781,3781,3781,3781,3882, - 3781,3781,3781,3781,3781,3781,3781,3781,3781,1644, - 3781,1179,1077,1405,1720,609,3781,1634,1046,1686, - 1203,1660,3781,1,6262,6206,6203,6205,3791,3781, - 3781,3781,1,6261,1,1,1,1,1,1, - 819,1,1,1,1,1,1,1,1,3781, - 3781,3781,3781,3790,3781,3781,3781,3781,3781,3781, - 3882,3781,3781,3781,3781,3781,3781,3781,3781,3781, - 1644,3781,1179,1077,1405,1720,609,3781,1634,1046, - 1686,1203,1660,3781,1,6262,6206,6203,6205,3791, - 3781,3781,3781,1,6261,1,1,1,1,1, - 1,819,1,1,1,1,1,1,1,1, - 3781,3781,3781,3781,3790,3781,3781,130,3781,3781, - 3781,3882,3781,1,3559,3553,3556,3781,3781,117, - 3781,1644,3781,1179,1077,1405,1720,609,3781,1634, - 1046,1686,1203,1660,3996,3998,3997,3945,3781,3946, - 3944,3999,3947,3943,117,3781,3950,3954,3952,3953, - 3951,3956,3957,3781,3781,3781,3781,3781,3781,3781, - 117,3781,3955,3781,3781,3781,3781,3781,3949,3958, - 3959,3960,4170,4171,4172,3781,3135,3792,4196,4198, - 4197,3781,3781,3781,3781,3250,3793,545,3239,2289, - 3259,3365,2096,5629,3797,1183,3794,3795,3796,738, - 500,1133,20,3751,180,180,180,180,3751,180, - 180,180,3751,3781,3781,3781,3781,3781,3781,3781, - 3781,3781,3781,3781,3781,3781,3781,3781,3781,180, - 180,180,180,3751,180,180,180,180,180,3751, - 3781,3135,3792,4196,4198,4197,3781,3781,3781,3751, - 3250,3793,545,3239,2289,3259,3365,2096,5629,3797, - 1183,3794,3795,3796,738,500,1133,356,367,367, - 367,367,367,3772,367,367,367,3772,3781,3781, - 3781,3781,3781,3781,3781,3781,3781,3781,3781,3781, - 3781,3781,3781,3781,367,367,367,367,3772,367, - 367,367,367,367,367,1,3135,5192,4986,4780, - 4883,3781,3781,3781,3772,3250,5089,545,3239,2289, - 3259,3365,2096,5629,3797,1183,3794,3795,3796,738, - 500,1133,383,3135,3792,4196,4198,4197,3781,3781, - 3781,3781,3250,3793,545,3239,2289,3259,3365,2096, - 5629,3797,1183,3794,3795,3796,738,500,1133,3781, - 3135,3792,4196,4198,4197,3781,3781,3781,3781,3250, - 3793,545,3239,2289,3259,3365,2096,5629,3797,1183, - 3794,3795,3796,738,500,1133,3781,2110,3792,4196, - 4198,4197,3781,3781,3781,3781,3250,3793,545,3239, - 2289,3259,3365,2096,3781,3797,1183,3794,3795,3796, - 738,500,1133,3781,3086,3792,4196,4198,4197,3781, - 3781,3781,3781,3250,3793,545,3239,2289,3259,3365, - 2096,3781,3797,1183,3794,3795,3796,738,500,1133, - 3781,3103,3792,4196,4198,4197,3781,3781,3781,3781, - 3250,3793,545,3239,2289,3259,3365,2096,3781,3797, - 1183,3794,3795,3796,738,500,1133,3781,3124,3792, - 4196,4198,4197,3781,3781,3781,3781,3250,3793,545, - 3239,2289,3259,3365,2096,3781,3797,1183,3794,3795, - 3796,738,500,1133,3781,3135,3792,4196,4198,4197, - 3781,3781,3781,3781,3250,3793,545,3239,2289,3259, - 3365,2096,3781,3797,1183,3794,3795,3796,738,500, - 1133,3781,3149,3792,4196,4198,4197,3781,3781,3781, - 3781,3250,3793,545,3239,2289,3259,3365,2096,3781, - 3797,1183,3794,3795,3796,738,500,1133,411,3781, - 3781,3679,3676,3781,3781,3673,3667,3670,3781,3781, - 3791,3781,3781,3781,3781,1,2321,3781,3781,3781, - 3781,392,3781,3781,3781,3996,3998,3997,3945,3781, - 3946,3944,3999,3947,3943,3790,3781,4183,4179,4185, - 4186,4184,4181,4182,1,3135,3792,4196,4198,4197, - 2331,3781,913,3781,3250,3793,545,3239,2289,3259, - 3365,2096,392,3797,1183,3794,3795,3796,738,500, - 1133,410,3781,3781,3748,3745,3781,3781,3742,3736, - 3739,3781,3781,3781,3781,3781,3781,3781,1,2321, - 3781,3781,3781,3781,266,3781,3781,3781,3996,3998, - 3997,3945,3781,3946,3944,3999,3947,3943,3781,3781, - 4183,4179,4185,4186,4184,4181,4182,3781,3170,3792, - 4196,4198,4197,3781,3781,913,3781,3250,3793,545, - 3239,2289,3259,3365,2096,266,3797,1183,3794,3795, - 3796,738,500,1133,333,3135,3792,4196,4198,4197, - 3781,3781,3781,3781,3250,3793,545,3239,2289,3259, - 3365,2096,3781,3797,1183,3794,3795,3796,738,500, - 1133,131,3781,3781,3781,3781,3781,3781,3568,3562, - 3565,132,3781,3781,3781,3781,1,2321,3577,3571, - 3574,3781,3787,3781,3781,3781,3781,3781,3996,3998, - 3997,3945,3781,3946,3944,3999,3947,3943,3996,3998, - 3997,3945,133,3946,3944,3999,3947,3943,3781,3610, - 3604,3607,134,913,3781,3781,3781,3781,3781,3619, - 3613,3616,3781,3786,3781,3781,3781,3781,3781,3996, - 3998,3997,3945,3781,3946,3944,3999,3947,3943,3996, - 3998,3997,3945,369,3946,3944,3999,3947,3943,3781, - 3640,3634,3637,407,3781,3781,3781,3781,3781,3781, - 3706,3700,3703,3781,3781,3781,3781,3781,3781,3781, - 3996,3998,3997,3945,3781,3946,3944,3999,3947,3943, - 3718,3712,3715,3727,3781,3724,3730,3709,3721,3733 - }; - }; - 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, - 751,1,165,350,348,568,751,166,350,350, - 831,141,668,166,166,166,79,658,79,658, - 658,79,658,79,355,350,339,339,339,339, - 166,79,33,570,9,521,227,350,105,104, - 355,230,141,570,521,194,355,263,597,539, - 416,704,53,136,658,662,659,662,136,662, - 658,350,358,403,417,711,33,33,33,33, - 33,33,33,33,33,33,33,615,297,528, - 420,527,350,227,227,235,711,350,120,570, - 350,679,540,3,704,703,417,267,426,141, - 466,358,403,713,615,615,615,615,615,417, - 417,417,411,411,555,539,662,662,273,33, - 9,522,791,53,227,143,260,747,481,239, - 492,497,495,505,499,508,507,510,509,511, - 713,463,141,630,570,348,194,263,679,679, - 539,31,522,522,662,166,166,18,166,166, - 522,102,33,102,348,112,476,292,141,267, - 426,466,466,403,403,417,406,570,112,417, - 417,417,417,417,78,355,708,111,475,525, - 301,33,540,417,33,260,666,417,747,260, - 238,235,33,33,33,33,33,33,33,33, - 33,33,33,33,33,33,33,33,33,33, - 33,33,33,33,33,33,33,33,33,33, - 33,33,55,33,112,463,118,350,536,522, - 522,553,33,538,33,33,18,102,607,18, - 350,3,417,272,417,417,426,463,91,426, - 466,471,610,471,403,747,708,355,570,713, - 360,360,360,120,141,411,417,794,711,33, - 305,615,539,417,33,33,260,239,495,495, - 492,492,499,499,497,497,497,497,497,497, - 507,505,509,508,102,102,510,666,118,31, - 522,417,166,417,417,18,33,18,355,112, - 426,93,471,463,33,662,747,403,794,406, - 417,713,417,260,260,33,33,471,186,522, - 31,18,33,18,18,350,272,463,521,33, - 517,93,518,463,403,417,364,463,116,233, - 168,662,33,102,14,273,522,417,538,93, - 33,518,518,297,120,532,662,33,417,273, - 522,18,518,33,260,18,417,260,18 - }; - }; - public final static char asb[] = Asb.asb; - public final int asb(int index) { return asb[index]; } - - public interface Asr { - public final static byte asr[] = {0, - 104,0,6,46,47,2,27,0,6,49, - 47,19,0,74,37,75,0,51,53,18, - 58,60,54,48,56,57,52,50,59,38, - 31,6,1,21,22,23,2,11,3,5, - 4,16,17,15,10,13,14,24,25,20, - 26,12,19,0,20,21,22,23,19,2, - 11,1,16,17,15,10,13,14,24,25, - 12,26,5,3,4,49,0,18,37,46, - 47,36,33,30,32,35,27,29,28,34, - 31,6,10,2,3,5,4,1,7,9, - 8,49,0,1,49,74,31,8,9,7, - 37,47,6,46,0,6,71,37,75,1, - 21,22,23,19,16,17,15,10,13,14, - 24,25,20,26,12,2,11,3,5,4, - 18,0,27,29,16,17,15,10,13,14, - 24,25,20,26,12,2,11,3,5,4, - 21,22,23,19,28,1,0,74,1,21, - 22,23,19,16,17,15,10,13,14,24, - 25,20,26,12,18,2,11,3,5,4, - 37,75,0,55,68,33,40,34,41,42, - 35,29,43,44,30,69,36,70,45,61, - 28,62,63,64,2,11,12,27,39,32, - 5,3,4,65,66,67,8,9,7,6, - 46,31,74,0,27,29,28,30,16,17, - 15,10,13,14,24,25,20,26,12,1, - 2,11,3,5,4,21,22,23,19,103, - 6,0,6,74,46,31,18,8,9,7, - 0,46,20,21,22,23,11,1,16,17, - 15,10,13,14,24,25,12,26,5,3, - 4,47,6,2,19,0,49,89,103,71, - 75,90,16,17,37,15,13,14,76,77, - 72,73,78,79,80,81,84,85,86,87, - 88,91,92,74,93,94,95,96,97,98, - 99,100,101,102,46,82,83,47,32,27, - 33,34,35,29,30,36,28,31,6,2, - 1,5,3,4,8,9,7,10,0,49, - 89,103,71,35,30,36,34,33,32,15, - 13,14,76,77,72,73,78,79,80,81, - 84,85,86,87,88,91,92,74,93,94, - 95,96,97,98,99,100,101,102,82,83, - 18,31,27,29,28,46,2,3,5,4, - 10,8,9,7,37,1,47,6,0,6, - 49,46,47,1,0,32,39,27,55,68, - 33,40,34,41,42,35,29,43,44,30, - 69,36,70,45,61,28,62,63,64,2, - 11,12,8,9,7,5,3,4,65,66, - 67,38,6,71,0,2,11,5,3,4, - 6,71,46,0,37,6,46,47,1,0, - 74,93,94,95,96,97,99,98,100,101, - 102,10,76,77,13,14,73,72,78,79, - 80,81,82,83,84,85,15,86,87,88, - 89,103,47,71,91,92,49,8,9,7, - 46,31,6,0,103,31,46,47,6,49, - 0,103,6,89,0,47,104,105,71,51, - 53,18,58,60,54,48,56,57,52,50, - 59,38,6,31,21,22,23,19,16,17, - 15,13,14,24,25,20,26,10,1,12, - 2,11,68,69,70,61,55,62,63,64, - 65,66,67,36,33,30,32,35,27,29, - 28,34,7,9,8,5,3,40,4,44, - 45,39,43,41,42,0,49,89,0,6, - 46,71,74,0,20,21,22,23,19,1, - 16,17,15,10,13,14,24,25,26,32, - 39,27,55,68,33,40,34,41,42,35, - 29,43,44,30,69,36,70,45,61,28, - 62,63,64,12,65,66,67,18,8,9, - 7,11,3,5,4,2,0,49,46,31, - 61,55,62,63,64,65,66,67,37,10, - 5,40,44,45,39,43,41,42,36,33, - 30,32,35,27,29,28,34,3,4,7, - 9,8,1,47,6,2,0,10,1,37, - 47,6,32,39,55,68,33,40,34,41, - 42,35,43,44,30,69,36,70,45,61, - 62,63,64,2,11,12,8,9,7,5, - 3,4,65,66,67,89,27,29,28,0, - 104,32,39,27,55,68,33,40,34,41, - 42,35,29,43,44,30,69,36,70,45, - 61,28,62,63,64,11,1,12,8,9, - 5,3,4,65,66,67,31,6,38,7, - 2,10,0,10,32,39,27,55,68,33, - 40,34,41,42,35,29,43,44,30,69, - 36,70,45,61,28,62,63,64,2,11, - 12,3,4,65,66,67,89,7,9,8, - 5,0 - }; - }; - public final static byte asr[] = Asr.asr; - public final int asr(int index) { return asr[index]; } - - public interface Nasb { - public final static char nasb[] = {0, - 181,34,38,94,103,23,163,34,149,117, - 34,19,132,34,34,34,133,122,133,122, - 122,133,122,133,188,107,34,34,34,34, - 34,133,63,126,15,104,122,106,58,58, - 188,34,19,94,104,34,188,34,17,49, - 161,35,34,8,42,8,42,8,8,8, - 42,177,34,42,161,160,63,63,63,63, - 63,63,63,63,63,63,63,137,34,161, - 34,34,149,42,122,77,160,120,12,205, - 175,33,81,10,65,34,161,122,94,34, - 94,34,122,93,137,137,137,137,137,161, - 161,161,171,171,1,49,56,56,96,140, - 15,104,34,15,42,62,79,21,34,78, - 34,34,34,34,34,34,34,34,34,34, - 195,94,34,111,26,103,34,34,133,33, - 88,102,104,104,8,34,34,44,34,34, - 104,34,99,34,103,161,34,161,34,42, - 191,94,8,122,94,161,169,26,34,161, - 161,161,161,161,155,188,158,58,58,34, - 34,63,81,161,63,79,34,161,21,79, - 78,124,63,63,63,63,63,63,63,63, - 63,63,63,63,63,63,63,63,63,63, - 63,63,63,63,63,63,63,63,63,63, - 63,63,52,63,161,50,94,149,34,104, - 104,199,140,34,140,140,44,34,34,44, - 118,10,161,63,161,161,94,50,103,73, - 8,68,34,34,94,21,168,188,126,93, - 155,155,155,154,155,145,161,186,160,63, - 34,137,88,161,63,63,79,78,34,34, - 34,34,34,34,34,34,34,34,34,34, - 34,34,34,34,34,34,34,34,61,202, - 104,161,34,161,161,44,63,44,188,161, - 191,149,68,50,63,8,21,124,186,143, - 161,93,161,79,79,63,63,68,70,104, - 202,44,140,44,44,119,63,50,104,63, - 34,106,122,50,124,161,155,50,60,34, - 12,8,63,34,40,202,104,161,34,149, - 63,122,42,135,12,79,8,63,161,202, - 104,44,42,63,79,44,161,79,44 - }; - }; - public final static char nasb[] = Nasb.nasb; - public final int nasb(int index) { return nasb[index]; } - - public interface Nasr { - public final static char nasr[] = {0, - 73,97,94,93,78,92,91,1,0,122, - 0,6,57,0,104,0,106,0,120,0, - 96,0,34,2,103,97,95,94,93,78, - 92,91,73,0,147,18,0,148,0,142, - 0,9,0,1,43,2,44,0,2,59, - 0,2,33,128,0,108,0,58,0,117, - 57,2,6,0,18,124,0,98,0,1, - 151,0,2,60,100,0,2,6,54,0, - 29,2,42,1,43,110,0,43,1,42, - 89,59,29,2,0,2,129,0,6,150, - 0,33,2,25,0,9,38,34,2,0, - 2,42,29,61,30,0,40,2,36,34, - 38,27,0,31,0,78,74,75,76,77, - 81,67,50,0,138,0,60,42,30,2, - 33,0,34,38,71,70,27,0,2,34, - 38,27,0,6,57,55,0,70,71,2, - 18,0,2,29,42,118,0,18,34,38, - 70,71,2,0,38,40,27,34,36,0, - 143,2,29,42,0,2,29,27,65,0, - 112,2,60,0,134,2,29,0,42,29, - 61,2,82,0,29,2,42,144,0 - }; - }; - public final static char nasr[] = Nasr.nasr; - public final int nasr(int index) { return nasr[index]; } - - public interface TerminalIndex { - public final static char terminalIndex[] = {0, - 2,87,101,102,100,89,99,97,98,9, - 88,95,10,11,8,6,7,3,86,70, - 83,84,85,12,13,96,50,78,66,71, - 94,46,57,62,65,74,1,107,49,58, - 63,64,68,69,76,42,92,79,29,47, - 48,51,52,53,54,59,60,61,67,73, - 77,80,81,82,103,104,105,56,72,75, - 93,16,17,31,4,14,15,18,19,20, - 21,43,44,22,23,24,25,26,30,5, - 27,28,32,33,34,35,36,37,38,39, - 40,41,91,108,55,90,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, - 113,0,0,0,0,115,119,120,197,0, - 0,0,121,122,123,124,125,110,126,127, - 128,129,130,0,112,0,198,131,140,136, - 148,0,114,171,0,174,168,170,0,172, - 0,207,132,135,0,0,0,0,0,147, - 0,0,0,109,118,158,0,173,111,162, - 139,0,0,134,169,117,150,0,185,186, - 187,0,149,151,152,153,154,159,182,0, - 205,0,155,156,157,175,181,184,138,141, - 142,143,144,145,146,180,204,0,0,161, - 165,167,176,202,0,208,0,116,133,137, - 0,160,164,0,166,179,189,194,0,196, - 0,199,0,201,0,209,0,0,0,0, - 0,163,0,177,178,183,188,0,190,191, - 0,192,193,195,0,0,200,0,0,203, - 206,0,0,210,0 - }; - }; - public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex; - public final int nonterminalIndex(int index) { return nonterminalIndex[index]; } - - public interface ScopePrefix { - public final static char scopePrefix[] = { - 221,275,348,239,328,144,170,176,303,118, - 377,399,356,20,127,160,186,206,86,283, - 338,8,54,54,78,82,94,100,132,182, - 254,319,94,435,442,446,373,395,408,422, - 408,362,34,46,75,27,27,136,139,191, - 139,216,139,264,269,272,325,450,14,69, - 106,112,152,258,106,419,429,429,1,27, - 152,293,229,386,229,293,39,39,60,252, - 60,60,60,60,60,323,417,39,39,64, - 165,194,165,194,194 - }; - }; - public final static char scopePrefix[] = ScopePrefix.scopePrefix; - public final int scopePrefix(int index) { return scopePrefix[index]; } - - public interface ScopeSuffix { - public final static char scopeSuffix[] = { - 98,98,335,98,335,150,25,25,98,124, - 383,405,343,25,58,150,25,58,91,288, - 343,12,58,58,58,58,98,104,58,25, - 12,12,98,58,58,25,335,335,335,426, - 412,366,37,37,58,25,25,58,142,25, - 201,58,219,267,267,267,12,58,17,72, - 109,115,167,261,17,72,432,439,4,30, - 155,288,246,389,232,296,44,52,62,12, - 309,311,313,315,317,12,12,41,49,66, - 167,203,155,196,211 - }; - }; - public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix; - public final int scopeSuffix(int index) { return scopeSuffix[index]; } - - public interface ScopeLhs { - public final static char scopeLhs[] = { - 76,74,48,76,48,65,58,58,74,55, - 48,47,48,152,72,65,58,36,10,74, - 48,63,81,7,7,121,120,80,72,58, - 100,61,30,7,6,6,48,47,47,24, - 47,48,113,84,4,142,141,70,88,58, - 103,34,56,75,75,75,49,4,63,45, - 80,117,65,100,61,45,8,6,42,152, - 65,74,76,48,76,74,113,84,97,100, - 95,94,93,92,91,61,46,113,84,150, - 65,36,65,40,36 - }; - }; - public final static char scopeLhs[] = ScopeLhs.scopeLhs; - public final int scopeLhs(int index) { return scopeLhs[index]; } - - public interface ScopeLa { - public final static byte scopeLa[] = { - 71,71,47,71,47,27,103,103,71,71, - 47,105,31,103,47,27,103,47,47,18, - 31,31,47,47,47,47,71,18,47,103, - 31,31,71,47,47,103,47,47,47,49, - 47,31,8,8,47,103,103,47,1,103, - 2,47,2,2,2,2,31,47,2,49, - 2,74,10,2,2,49,47,47,5,89, - 10,18,18,48,2,2,2,2,12,31, - 2,68,69,69,61,31,31,2,2,89, - 10,1,10,1,1 - }; - }; - public final static byte scopeLa[] = ScopeLa.scopeLa; - public final int scopeLa(int index) { return scopeLa[index]; } - - public interface ScopeStateSet { - public final static char scopeStateSet[] = { - 142,142,38,142,38,218,54,54,142,17, - 38,38,38,3,58,218,54,149,168,142, - 38,238,142,66,66,14,139,241,58,54, - 8,238,30,66,66,66,38,38,38,102, - 38,38,5,162,66,1,3,58,60,54, - 227,149,155,142,142,142,38,66,238,38, - 241,136,218,8,238,38,73,66,231,3, - 218,142,142,38,142,142,5,162,144,8, - 144,144,144,144,144,238,38,5,162,12, - 218,149,218,151,149 - }; - }; - public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet; - public final int scopeStateSet(int index) { return scopeStateSet[index]; } - - public interface ScopeRhs { - public final static char scopeRhs[] = {0, - 212,109,0,100,208,0,0,197,109,149, - 0,112,0,109,149,0,141,112,0,171, - 89,171,37,0,109,0,171,37,0,30, - 134,109,0,208,134,0,198,0,134,0, - 165,198,0,165,0,163,134,0,158,198, - 0,158,0,173,1,12,0,110,0,180, - 0,205,0,171,0,30,134,0,257,51, - 0,29,135,0,137,1,0,173,1,26, - 0,253,1,229,0,252,1,1,8,0, - 110,110,0,217,109,18,0,111,0,210, - 109,136,0,196,0,109,136,0,176,196, - 0,246,109,0,31,157,0,205,244,109, - 18,164,0,111,0,0,193,109,1,177, - 0,193,109,1,0,195,1,0,172,109, - 0,185,0,109,148,10,148,172,0,180, - 0,148,172,0,9,0,0,180,0,109, - 148,10,148,0,148,0,9,0,0,135, - 30,223,109,37,0,135,223,109,30,37, - 0,135,30,37,0,135,223,109,37,0, - 135,37,0,141,0,2,0,177,110,0, - 174,0,2,110,0,193,109,1,141,0, - 2,0,175,110,0,163,1,0,168,0, - 205,221,109,18,108,240,68,0,240,68, - 0,113,3,0,0,0,111,0,205,221, - 109,18,240,68,0,3,0,0,0,111, - 0,167,0,239,109,167,0,109,167,0, - 163,112,0,206,68,0,113,0,206,70, - 0,206,69,0,218,109,18,238,108,237, - 185,0,238,108,237,185,0,3,0,0, - 111,0,237,185,0,113,0,3,0,0, - 111,0,218,109,18,237,185,0,154,0, - 153,0,152,0,151,0,150,0,197,109, - 136,0,136,0,140,59,0,189,132,189, - 168,1,56,0,110,135,0,189,168,1, - 56,0,112,0,110,135,0,189,132,189, - 132,189,1,56,0,189,132,189,1,56, - 0,189,1,56,0,112,0,112,0,110, - 135,0,140,1,48,0,140,1,48,151, - 54,0,110,112,0,151,54,0,79,2, - 114,110,112,0,140,1,60,0,151,125, - 140,1,58,0,55,135,0,140,1,58, - 0,110,135,55,135,0,150,0,171,51, - 0,140,92,130,0,29,131,0,173,1, - 0,110,120,0,173,1,20,0,110,118, - 0,236,1,113,0,140,37,113,0,140, - 1,0 - }; - }; - public final static char scopeRhs[] = ScopeRhs.scopeRhs; - public final int scopeRhs(int index) { return scopeRhs[index]; } - - public interface ScopeState { - public final static char scopeState[] = {0, - 555,0,834,0,2331,2276,0,3347,879,2627, - 0,1077,0,456,447,0,883,825,758,1281, - 700,1280,2265,1219,1180,1060,674,462,0,3170, - 1263,3149,3135,3124,3103,3086,2110,2800,2773,2742, - 2734,2707,2674,2634,2624,1224,2552,2525,1102,609, - 990,951,0,1162,1135,725,718,2123,2876,2346, - 2321,987,3224,2838,0,3389,3365,2096,1183,1133, - 545,454,2556,2265,851,679,1105,1768,1380,3069, - 3053,3037,3021,3005,2984,2867,2850,2828,2423,1361, - 1238,3337,3313,3299,1001,3259,3250,3239,2289,738, - 500,2051,2024,883,1999,1972,825,1947,1295,1921, - 1895,1868,1843,1817,1791,1732,942,1687,1661,1635, - 1609,1583,1557,1531,1505,1479,1453,1421,1194,1153, - 1077,788,421,462,913,758,700,0,521,492, - 0,1712,1339,659,570,421,522,0,2605,522, - 2503,2123,2457,2437,2331,527,2276,2346,987,1221, - 3062,2082,2218,2317,1320,2177,0,3471,3451,3427, - 2331,3421,527,2503,2123,2276,2876,1712,2082,2218, - 659,3374,3269,2410,2964,570,3176,421,2196,2144, - 2095,2457,2437,3413,2499,2317,2069,2605,1716,1333, - 576,1221,3408,1339,2951,2918,1279,2904,3351,3081, - 2889,1062,2470,2231,1320,2177,522,2684,3346,2579, - 3323,3274,3211,3207,2796,0,2082,1320,522,0, - 3170,3149,3135,3124,3103,3086,2110,3078,1263,3268, - 1224,1102,990,951,2334,2504,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,234,7,149,136,109,250,255,109,109, - 212,210,198,8,9,7,199,185,200,70, - 69,201,68,202,109,1,4,5,3,2, - 141,204,12,180,1,197,163,134,145,141, - 109,191,210,242,197,147,109,143,5,18, - 1,1,1,237,134,206,134,206,240,206, - 134,172,148,134,163,1,12,26,20,25, - 24,14,13,10,15,17,16,1,113,256, - 19,211,46,134,163,37,1,172,74,109, - 172,213,109,1,254,2,19,108,18,108, - 18,148,10,109,1,1,1,1,1,137, - 173,140,149,167,109,18,90,75,1,37, - 49,125,1,46,134,30,135,109,114,10, - 120,122,121,124,123,127,126,129,128,130, - 109,18,164,251,109,136,147,143,180,261, - 217,59,50,52,57,56,48,54,60,58, - 150,53,51,108,136,252,229,1,238,134, - 109,18,109,10,148,193,136,109,194,173, - 173,173,173,173,125,109,1,178,177,216, - 108,12,109,236,109,140,10,2,109,135, - 223,203,102,101,100,98,99,97,96,95, - 94,93,74,77,76,10,72,73,14,13, - 85,84,83,82,81,80,79,78,86,15, - 88,87,92,91,241,109,18,109,6,140, - 108,1,1,151,1,1,49,257,171,49, - 109,46,125,1,19,2,18,218,167,219, - 109,221,108,222,148,109,1,109,180,46, - 125,125,125,125,125,172,195,109,1,46, - 114,1,217,2,223,30,135,10,121,121, - 120,120,123,123,122,122,122,122,122,122, - 126,124,128,127,235,140,129,46,109,168, - 189,140,48,140,140,49,89,49,109,253, - 109,109,221,205,74,46,109,203,109,172, - 193,109,173,135,135,49,49,244,109,189, - 132,125,1,125,125,172,46,218,239,49, - 163,134,208,205,203,193,125,205,46,246, - 258,75,37,108,247,132,189,140,151,46, - 49,208,134,166,74,171,75,37,189,132, - 125,105,134,89,171,125,189,171,125 - }; - }; - public final static char inSymb[] = InSymb.inSymb; - public final int inSymb(int index) { return inSymb[index]; } - - public interface Name { - public final static String name[] = { - "", - "[", - "(", - "{", - ".", - "->", - "++", - "--", - "&", - "*", - "+", - "-", - "~", - "!", - "/", - "%", - ">>", - "<<", - "<", - ">", - "<=", - ">=", - "==", - "!=", - "^", - "|", - "&&", - "||", - "?", - ":", - "...", - "=", - "*=", - "/=", - "%=", - "+=", - "-=", - ">>=", - "<<=", - "&=", - "^=", - "|=", - ",", - ">?", - "", "++", "--", "&", "*", "+", "-", "~", "!", + "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "...", "=", + "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", ">?", " - +public class XlcCPPParser extends PrsStream + implements RuleAction, ITokenStream, ITokenCollector, IParser + { - private static ParseTable prs = new XlcCPPParserprs(); - private FixedBacktrackingParser btParser; - - public FixedBacktrackingParser getParser() { return btParser; } - private void setResult(Object object) { btParser.setSym1(object); } - public Object getRhsSym(int i) { return btParser.getSym(i); } - - public int getRhsTokenIndex(int i) { return btParser.getToken(i); } - public IToken getRhsIToken(int i) { return super.getIToken(getRhsTokenIndex(i)); } - - public int getRhsFirstTokenIndex(int i) { return btParser.getFirstToken(i); } - public IToken getRhsFirstIToken(int i) { return super.getIToken(getRhsFirstTokenIndex(i)); } - - public int getRhsLastTokenIndex(int i) { return btParser.getLastToken(i); } - public IToken getRhsLastIToken(int i) { return super.getIToken(getRhsLastTokenIndex(i)); } - - public int getLeftSpan() { return btParser.getFirstToken(); } - public IToken getLeftIToken() { return super.getIToken(getLeftSpan()); } - - public int getRightSpan() { return btParser.getLastToken(); } - public IToken getRightIToken() { return super.getIToken(getRightSpan()); } - - public int getRhsErrorTokenIndex(int i) - { - int index = btParser.getToken(i); - IToken err = super.getIToken(index); - return (err instanceof ErrorToken ? index : 0); - } - public ErrorToken getRhsErrorIToken(int i) - { - int index = btParser.getToken(i); - IToken err = super.getIToken(index); - return (ErrorToken) (err instanceof ErrorToken ? err : null); - } - - public XlcCPPParser(LexStream lexStream) - { - super(lexStream); - - try - { - super.remapTerminalSymbols(orderedTerminalSymbols(), XlcCPPParserprs.EOFT_SYMBOL); - } - catch(NullExportedSymbolsException e) { - } - catch(NullTerminalSymbolsException e) { - } - catch(UnimplementedTerminalsException e) - { - java.util.ArrayList unimplemented_symbols = e.getSymbols(); - System.out.println("The Lexer will not scan the following token(s):"); - for (int i = 0; i < unimplemented_symbols.size(); i++) - { - Integer id = (Integer) unimplemented_symbols.get(i); - System.out.println(" " + XlcCPPParsersym.orderedTerminalSymbols[id.intValue()]); - } - System.out.println(); - } - catch(UndefinedEofSymbolException e) - { - throw new Error(new UndefinedEofSymbolException - ("The Lexer does not implement the Eof symbol " + - XlcCPPParsersym.orderedTerminalSymbols[XlcCPPParserprs.EOFT_SYMBOL])); - } - } - - public String[] orderedTerminalSymbols() { return XlcCPPParsersym.orderedTerminalSymbols; } - public String getTokenKindName(int kind) { return XlcCPPParsersym.orderedTerminalSymbols[kind]; } - public int getEOFTokenKind() { return XlcCPPParserprs.EOFT_SYMBOL; } - public PrsStream getParseStream() { return (PrsStream) this; } - - // - // Report error message for given error_token. - // - public final void reportErrorTokenMessage(int error_token, String msg) - { - int firsttok = super.getFirstErrorToken(error_token), - lasttok = super.getLastErrorToken(error_token); - String location = super.getFileName() + ':' + - (firsttok > lasttok - ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok)) - : (super.getLine(error_token) + ":" + - super.getColumn(error_token) + ":" + - super.getEndLine(error_token) + ":" + - super.getEndColumn(error_token))) - + ": "; - super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE), location, msg); - } - - public void parser() - { - parser(null, 0); - } - - public void parser(Monitor monitor) - { - parser(monitor, 0); - } - - public void parser(int error_repair_count) - { - parser(null, error_repair_count); - } - - public void parser(Monitor monitor, int error_repair_count) - { - try - { - btParser = new FixedBacktrackingParser(monitor, (TokenStream) this, prs, (RuleAction) this); - } - catch (NotBacktrackParseTableException e) - { - throw new Error(new NotBacktrackParseTableException - ("Regenerate XlcCPPParserprs.java with -BACKTRACK option")); - } - catch (BadParseSymFileException e) - { - throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- XlcCPPParsersym.java")); - } - - try - { - btParser.parse(error_repair_count); - } - catch (BadParseException e) - { - reset(e.error_token); // point to error token - DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs); - diagnoseParser.diagnose(e.error_token); - } - } - - -private XlcCPPBuildASTParserAction action; -private IASTCompletionNode compNode; - - -public XlcCPPParser(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map properties) { - initActions(properties); - action.initializeTranslationUnit(scanner, builtinBindingsProvider, index); - CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap); -} + private static ParseTable prs = new XlcCPPParserprs(); + private FixedBacktrackingParser btParser; -private void initActions(Map properties) { - ScopedStack astStack = new ScopedStack(); - - action = new XlcCPPBuildASTParserAction (this, astStack, XlcCPPNodeFactory.getDefault() , GPPSecondaryParserFactory.getDefault() ); - action.setParserProperties(properties); - - + public FixedBacktrackingParser getParser() { + return btParser; + } - gnuAction = new GNUBuildASTParserAction (this, astStack, XlcCPPNodeFactory.getDefault() ); - gnuAction.setParserProperties(properties); + 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 void addToken(IToken token) { - token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called? - super.addToken(token); -} + public IToken getRhsIToken(int i) { + return super.getIToken(getRhsTokenIndex(i)); + } + public int getRhsFirstTokenIndex(int i) { + return btParser.getFirstToken(i); + } -public IASTTranslationUnit parse() { - // this has to be done, or... kaboom! - setStreamLength(getSize()); - - final int errorRepairCount = -1; // -1 means full error handling - parser(null, errorRepairCount); // do the actual parse - super.resetTokenStream(); // allow tokens to be garbage collected + public IToken getRhsFirstIToken(int i) { + return super.getIToken(getRhsFirstTokenIndex(i)); + } - compNode = action.getASTCompletionNode(); // the completion node may be null - return ( IASTTranslationUnit ) action.getParseResult(); -} + public int getRhsLastTokenIndex(int i) { + return btParser.getLastToken(i); + } + public IToken getRhsLastIToken(int i) { + return super.getIToken(getRhsLastTokenIndex(i)); + } -public IASTCompletionNode getCompletionNode() { - return compNode; -} + public int getLeftSpan() { + return btParser.getFirstToken(); + } -// uncomment this method to use with backtracking parser -public List getRuleTokens() { - return getTokens().subList(getLeftSpan(), getRightSpan() + 1); -} + public IToken getLeftIToken() { + return super.getIToken(getLeftSpan()); + } -public String[] getOrderedTerminalSymbols() { - return XlcCPPParsersym.orderedTerminalSymbols; -} + public int getRightSpan() { + return btParser.getLastToken(); + } -@SuppressWarnings("nls") -public String getName() { - return "XlcCPPParser"; -} + 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); + } -private GNUBuildASTParserAction gnuAction; - - public void ruleAction(int ruleNumber) - { - switch (ruleNumber) - { - - // - // Rule 1: ::= $Empty - // - case 1: { action. openASTScope(); break; - } - - // - // Rule 2: ::= $Empty - // - case 2: { action. consumeEmpty(); break; - } - - // - // Rule 13: translation_unit ::= declaration_seq_opt - // - case 13: { action. consumeTranslationUnit(); break; - } - - // - // Rule 16: literal ::= integer - // - case 16: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_integer_constant); break; - } - - // - // Rule 17: literal ::= floating - // - case 17: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_float_constant); break; - } - - // - // Rule 18: literal ::= charconst - // - case 18: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_char_constant); break; - } - - // - // Rule 19: literal ::= stringlit - // - case 19: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_string_literal); break; - } - - // - // Rule 20: literal ::= true - // - case 20: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_true); break; - } - - // - // Rule 21: literal ::= false - // - case 21: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_false); break; - } - - // - // Rule 22: literal ::= this - // - case 22: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_this); break; - } - - // - // Rule 24: primary_expression ::= ( expression ) - // - case 24: { action. consumeExpressionBracketed(); break; - } - - // - // Rule 26: id_expression ::= qualified_or_unqualified_name - // - case 26: { action. consumeExpressionName(); break; - } - - // - // Rule 33: unqualified_id_name ::= ~ identifier_token - // - case 33: { action. consumeDestructorName(); break; - } - - // - // Rule 34: unqualified_id_name ::= ~ template_id_name - // - case 34: { action. consumeDestructorNameTemplateId(); break; - } - - // - // Rule 35: identifier_name ::= identifier_token - // - case 35: { action. consumeIdentifierName(); break; - } - - // - // Rule 36: template_opt ::= template - // - case 36: { action. consumePlaceHolder(); break; - } - - // - // Rule 37: template_opt ::= $Empty - // - case 37: { action. consumeEmpty(); break; - } - - // - // Rule 38: dcolon_opt ::= :: - // - case 38: { action. consumeToken(); break; - } - - // - // Rule 39: dcolon_opt ::= $Empty - // - case 39: { action. consumeEmpty(); break; - } - - // - // Rule 40: qualified_id_name ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name - // - case 40: { action. consumeQualifiedId(true); break; - } - - // - // Rule 41: qualified_id_name ::= :: unqualified_id_name - // - case 41: { action. consumeGlobalQualifiedId(); break; - } - - // - // Rule 42: nested_name_specifier ::= class_or_namespace_name :: nested_name_specifier_with_template - // - case 42: { action. consumeNestedNameSpecifier(true); break; - } - - // - // Rule 43: nested_name_specifier ::= class_or_namespace_name :: - // - case 43: { action. consumeNestedNameSpecifier(false); break; - } - - // - // Rule 44: nested_name_specifier_with_template ::= class_or_namespace_name_with_template :: nested_name_specifier_with_template - // - case 44: { action. consumeNestedNameSpecifier(true); break; - } - - // - // Rule 45: nested_name_specifier_with_template ::= class_or_namespace_name_with_template :: - // - case 45: { action. consumeNestedNameSpecifier(false); break; - } - - // - // Rule 46: class_or_namespace_name_with_template ::= template_opt class_or_namespace_name - // - case 46: { action. consumeNameWithTemplateKeyword(); break; - } - - // - // Rule 48: nested_name_specifier_opt ::= $Empty - // - case 48: { action. consumeNestedNameSpecifierEmpty(); break; - } - - // - // Rule 51: postfix_expression ::= postfix_expression [ expression ] - // - case 51: { action. consumeExpressionArraySubscript(); break; - } - - // - // Rule 52: postfix_expression ::= postfix_expression ( expression_list_opt ) - // - case 52: { action. consumeExpressionFunctionCall(); break; - } - - // - // Rule 53: postfix_expression ::= simple_type_specifier ( expression_list_opt ) - // - case 53: { action. consumeExpressionSimpleTypeConstructor(); break; - } - - // - // Rule 54: postfix_expression ::= typename dcolon_opt nested_name_specifier identifier_name ( expression_list_opt ) - // - case 54: { action. consumeExpressionTypeName(); break; - } - - // - // Rule 55: postfix_expression ::= typename dcolon_opt nested_name_specifier template_opt template_id_name ( expression_list_opt ) - // - case 55: { action. consumeExpressionTypeName(); break; - } - - // - // Rule 56: postfix_expression ::= postfix_expression . qualified_or_unqualified_name - // - case 56: { action. consumeExpressionFieldReference(false, false); break; - } - - // - // Rule 57: postfix_expression ::= postfix_expression -> qualified_or_unqualified_name - // - case 57: { action. consumeExpressionFieldReference(true, false); break; - } - - // - // Rule 58: postfix_expression ::= postfix_expression . template qualified_or_unqualified_name - // - case 58: { action. consumeExpressionFieldReference(false, true); break; - } - - // - // Rule 59: postfix_expression ::= postfix_expression -> template qualified_or_unqualified_name - // - case 59: { action. consumeExpressionFieldReference(true, true); break; - } - - // - // Rule 60: postfix_expression ::= postfix_expression . pseudo_destructor_name - // - case 60: { action. consumeExpressionFieldReference(false, false); break; - } - - // - // Rule 61: postfix_expression ::= postfix_expression -> pseudo_destructor_name - // - case 61: { action. consumeExpressionFieldReference(true, false); break; - } - - // - // Rule 62: postfix_expression ::= postfix_expression ++ - // - case 62: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); break; - } - - // - // Rule 63: postfix_expression ::= postfix_expression -- - // - case 63: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); break; - } - - // - // Rule 64: postfix_expression ::= dynamic_cast < type_id > ( expression ) - // - case 64: { action. consumeExpressionCast(ICPPASTCastExpression.op_dynamic_cast); break; - } - - // - // Rule 65: postfix_expression ::= static_cast < type_id > ( expression ) - // - case 65: { action. consumeExpressionCast(ICPPASTCastExpression.op_static_cast); break; - } - - // - // Rule 66: postfix_expression ::= reinterpret_cast < type_id > ( expression ) - // - case 66: { action. consumeExpressionCast(ICPPASTCastExpression.op_reinterpret_cast); break; - } - - // - // Rule 67: postfix_expression ::= const_cast < type_id > ( expression ) - // - case 67: { action. consumeExpressionCast(ICPPASTCastExpression.op_const_cast); break; - } - - // - // Rule 68: postfix_expression ::= typeid ( expression ) - // - case 68: { action. consumeExpressionUnaryOperator(ICPPASTUnaryExpression.op_typeid); break; - } - - // - // Rule 69: postfix_expression ::= typeid ( type_id ) - // - case 69: { action. consumeExpressionTypeId(ICPPASTTypeIdExpression.op_typeid); break; - } - - // - // Rule 70: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt type_name :: destructor_type_name - // - case 70: { action. consumePsudoDestructorName(true); break; - } - - // - // Rule 71: pseudo_destructor_name ::= dcolon_opt nested_name_specifier template template_id_name :: destructor_type_name - // - case 71: { action. consumePsudoDestructorName(true); break; - } - - // - // Rule 72: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt destructor_type_name - // - case 72: { action. consumePsudoDestructorName(false); break; - } - - // - // Rule 73: destructor_type_name ::= ~ identifier_token - // - case 73: { action. consumeDestructorName(); break; - } - - // - // Rule 74: destructor_type_name ::= ~ template_id_name - // - case 74: { action. consumeDestructorNameTemplateId(); break; - } - - // - // Rule 78: unary_expression ::= ++ cast_expression - // - case 78: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); break; - } - - // - // Rule 79: unary_expression ::= -- cast_expression - // - case 79: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); break; - } - - // - // Rule 80: unary_expression ::= & cast_expression - // - case 80: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); break; - } - - // - // Rule 81: unary_expression ::= * cast_expression - // - case 81: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); break; - } - - // - // Rule 82: unary_expression ::= + cast_expression - // - case 82: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); break; - } - - // - // Rule 83: unary_expression ::= - cast_expression - // - case 83: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); break; - } - - // - // Rule 84: unary_expression ::= ~ cast_expression - // - case 84: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); break; - } - - // - // Rule 85: unary_expression ::= ! cast_expression - // - case 85: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); break; - } - - // - // Rule 86: unary_expression ::= sizeof unary_expression - // - case 86: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); break; - } - - // - // Rule 87: unary_expression ::= sizeof ( type_id ) - // - case 87: { action. consumeExpressionTypeId(ICPPASTTypeIdExpression.op_sizeof); break; - } - - // - // Rule 88: new_expression ::= dcolon_opt new new_placement_opt new_type_id new_array_expressions_opt new_initializer_opt - // - case 88: { action. consumeExpressionNew(true); break; - } - - // - // Rule 89: new_expression ::= dcolon_opt new new_placement_opt ( type_id ) new_array_expressions_opt new_initializer_opt - // - case 89: { action. consumeExpressionNew(false); break; - } - - // - // Rule 91: new_placement_opt ::= $Empty - // - case 91: { action. consumeEmpty(); break; - } - - // - // Rule 92: new_type_id ::= type_specifier_seq - // - case 92: { action. consumeTypeId(false); break; - } - - // - // Rule 93: new_type_id ::= type_specifier_seq new_declarator - // - case 93: { action. consumeTypeId(true); break; - } - - // - // Rule 94: new_declarator ::= new_pointer_operators - // - case 94: { action. consumeNewDeclarator(); break; - } - - // - // Rule 101: new_initializer ::= ( expression_list_opt ) - // - case 101: { action. consumeNewInitializer(); break; - } - - // - // Rule 103: new_initializer_opt ::= $Empty - // - case 103: { action. consumeEmpty(); break; - } - - // - // Rule 104: delete_expression ::= dcolon_opt delete cast_expression - // - case 104: { action. consumeExpressionDelete(false); break; - } - - // - // Rule 105: delete_expression ::= dcolon_opt delete [ ] cast_expression - // - case 105: { action. consumeExpressionDelete(true); break; - } - - // - // Rule 107: cast_expression ::= ( type_id ) cast_expression - // - case 107: { action. consumeExpressionCast(ICPPASTCastExpression.op_cast); break; - } - - // - // Rule 109: pm_expression ::= pm_expression .* cast_expression - // - case 109: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmdot); break; - } - - // - // Rule 110: pm_expression ::= pm_expression ->* cast_expression - // - case 110: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmarrow); break; - } - - // - // Rule 112: multiplicative_expression ::= multiplicative_expression * pm_expression - // - case 112: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiply); break; - } - - // - // Rule 113: multiplicative_expression ::= multiplicative_expression / pm_expression - // - case 113: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divide); break; - } - - // - // Rule 114: multiplicative_expression ::= multiplicative_expression % pm_expression - // - case 114: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_modulo); break; - } - - // - // Rule 116: additive_expression ::= additive_expression + multiplicative_expression - // - case 116: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plus); break; - } - - // - // Rule 117: additive_expression ::= additive_expression - multiplicative_expression - // - case 117: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minus); break; - } - - // - // Rule 119: shift_expression ::= shift_expression << additive_expression - // - case 119: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeft); break; - } - - // - // Rule 120: shift_expression ::= shift_expression >> additive_expression - // - case 120: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRight); break; - } - - // - // Rule 122: relational_expression ::= relational_expression < shift_expression - // - case 122: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan); break; - } - - // - // Rule 123: relational_expression ::= relational_expression > shift_expression - // - case 123: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan); break; - } - - // - // Rule 124: relational_expression ::= relational_expression <= shift_expression - // - case 124: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual); break; - } - - // - // Rule 125: relational_expression ::= relational_expression >= shift_expression - // - case 125: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual); break; - } - - // - // Rule 127: equality_expression ::= equality_expression == relational_expression - // - case 127: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals); break; - } - - // - // Rule 128: equality_expression ::= equality_expression != relational_expression - // - case 128: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals); break; - } - - // - // Rule 130: and_expression ::= and_expression & equality_expression - // - case 130: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd); break; - } - - // - // Rule 132: exclusive_or_expression ::= exclusive_or_expression ^ and_expression - // - case 132: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor); break; - } - - // - // Rule 134: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression - // - case 134: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr); break; - } - - // - // Rule 136: logical_and_expression ::= logical_and_expression && inclusive_or_expression - // - case 136: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd); break; - } - - // - // Rule 138: logical_or_expression ::= logical_or_expression || logical_and_expression - // - case 138: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr); break; - } - - // - // Rule 140: conditional_expression ::= logical_or_expression ? expression : assignment_expression - // - case 140: { action. consumeExpressionConditional(); break; - } - - // - // Rule 142: relational_expression_inTemplate ::= relational_expression_inTemplate < shift_expression - // - case 142: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan); break; - } - - // - // Rule 143: relational_expression_inTemplate ::= ( relational_expression_inTemplate > shift_expression ) - // - case 143: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan); break; - } - - // - // Rule 144: relational_expression_inTemplate ::= relational_expression_inTemplate <= shift_expression - // - case 144: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual); break; - } - - // - // Rule 145: relational_expression_inTemplate ::= relational_expression_inTemplate >= shift_expression - // - case 145: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual); break; - } - - // - // Rule 147: equality_expression_inTemplate ::= equality_expression_inTemplate == relational_expression_inTemplate - // - case 147: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals); break; - } - - // - // Rule 148: equality_expression_inTemplate ::= equality_expression_inTemplate != relational_expression_inTemplate - // - case 148: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals); break; - } - - // - // Rule 150: and_expression_inTemplate ::= and_expression_inTemplate & equality_expression_inTemplate - // - case 150: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd); break; - } - - // - // Rule 152: exclusive_or_expression_inTemplate ::= exclusive_or_expression_inTemplate ^ and_expression_inTemplate - // - case 152: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor); break; - } - - // - // Rule 154: inclusive_or_expression_inTemplate ::= inclusive_or_expression_inTemplate | exclusive_or_expression_inTemplate - // - case 154: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr); break; - } - - // - // Rule 156: logical_and_expression_inTemplate ::= logical_and_expression_inTemplate && inclusive_or_expression_inTemplate - // - case 156: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd); break; - } - - // - // Rule 158: logical_or_expression_inTemplate ::= logical_or_expression_inTemplate || logical_and_expression_inTemplate - // - case 158: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr); break; - } - - // - // Rule 160: conditional_expression_inTemplate ::= logical_or_expression_inTemplate ? expression : assignment_expression_inTemplate - // - case 160: { action. consumeExpressionConditional(); break; - } - - // - // Rule 163: assignment_expression_inTemplate ::= logical_or_expression_inTemplate = assignment_expression_inTemplate - // - case 163: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign); break; - } - - // - // Rule 164: assignment_expression_inTemplate ::= logical_or_expression_inTemplate *= assignment_expression_inTemplate - // - case 164: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign); break; - } - - // - // Rule 165: assignment_expression_inTemplate ::= logical_or_expression_inTemplate /= assignment_expression_inTemplate - // - case 165: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign); break; - } - - // - // Rule 166: assignment_expression_inTemplate ::= logical_or_expression_inTemplate %= assignment_expression_inTemplate - // - case 166: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign); break; - } - - // - // Rule 167: assignment_expression_inTemplate ::= logical_or_expression_inTemplate += assignment_expression_inTemplate - // - case 167: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign); break; - } - - // - // Rule 168: assignment_expression_inTemplate ::= logical_or_expression_inTemplate -= assignment_expression_inTemplate - // - case 168: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign); break; - } - - // - // Rule 169: assignment_expression_inTemplate ::= logical_or_expression_inTemplate >>= assignment_expression_inTemplate - // - case 169: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign); break; - } - - // - // Rule 170: assignment_expression_inTemplate ::= logical_or_expression_inTemplate <<= assignment_expression_inTemplate - // - case 170: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign); break; - } - - // - // Rule 171: assignment_expression_inTemplate ::= logical_or_expression_inTemplate &= assignment_expression_inTemplate - // - case 171: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign); break; - } - - // - // Rule 172: assignment_expression_inTemplate ::= logical_or_expression_inTemplate ^= assignment_expression_inTemplate - // - case 172: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign); break; - } - - // - // Rule 173: assignment_expression_inTemplate ::= logical_or_expression_inTemplate |= assignment_expression_inTemplate - // - case 173: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign); break; - } - - // - // Rule 174: throw_expression ::= throw - // - case 174: { action. consumeExpressionThrow(false); break; - } - - // - // Rule 175: throw_expression ::= throw assignment_expression - // - case 175: { action. consumeExpressionThrow(true); break; - } - - // - // Rule 178: assignment_expression ::= logical_or_expression = assignment_expression - // - case 178: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign); break; - } - - // - // Rule 179: assignment_expression ::= logical_or_expression *= assignment_expression - // - case 179: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign); break; - } - - // - // Rule 180: assignment_expression ::= logical_or_expression /= assignment_expression - // - case 180: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign); break; - } - - // - // Rule 181: assignment_expression ::= logical_or_expression %= assignment_expression - // - case 181: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign); break; - } - - // - // Rule 182: assignment_expression ::= logical_or_expression += assignment_expression - // - case 182: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign); break; - } - - // - // Rule 183: assignment_expression ::= logical_or_expression -= assignment_expression - // - case 183: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign); break; - } - - // - // Rule 184: assignment_expression ::= logical_or_expression >>= assignment_expression - // - case 184: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign); break; - } - - // - // Rule 185: assignment_expression ::= logical_or_expression <<= assignment_expression - // - case 185: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign); break; - } - - // - // Rule 186: assignment_expression ::= logical_or_expression &= assignment_expression - // - case 186: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign); break; - } - - // - // Rule 187: assignment_expression ::= logical_or_expression ^= assignment_expression - // - case 187: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign); break; - } - - // - // Rule 188: assignment_expression ::= logical_or_expression |= assignment_expression - // - case 188: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign); break; - } - - // - // Rule 190: expression_list ::= expression_list_actual - // - case 190: { action. consumeExpressionList(); break; - } - - // - // Rule 194: expression_list_opt ::= $Empty - // - case 194: { action. consumeEmpty(); break; - } - - // - // Rule 196: expression_opt ::= $Empty - // - case 196: { action. consumeEmpty(); break; - } - - // - // Rule 199: constant_expression_opt ::= $Empty - // - case 199: { action. consumeEmpty(); break; - } - - // - // Rule 208: statement ::= ERROR_TOKEN - // - case 208: { action. consumeStatementProblem(); break; - } - - // - // Rule 209: labeled_statement ::= identifier : statement - // - case 209: { action. consumeStatementLabeled(); break; - } - - // - // Rule 210: labeled_statement ::= case constant_expression : statement - // - case 210: { action. consumeStatementCase(); break; - } - - // - // Rule 211: labeled_statement ::= default : statement - // - case 211: { action. consumeStatementDefault(); break; - } - - // - // Rule 212: expression_statement ::= expression ; - // - case 212: { action. consumeStatementExpression(); break; - } - - // - // Rule 213: expression_statement ::= ; - // - case 213: { action. consumeStatementNull(); break; - } - - // - // Rule 214: compound_statement ::= { statement_seq } - // - case 214: { action. consumeStatementCompoundStatement(true); break; - } - - // - // Rule 215: compound_statement ::= { } - // - case 215: { action. consumeStatementCompoundStatement(false); break; - } - - // - // Rule 218: selection_statement ::= if ( condition ) statement - // - case 218: { action. consumeStatementIf(false); break; - } - - // - // Rule 219: selection_statement ::= if ( condition ) statement else statement - // - case 219: { action. consumeStatementIf(true); break; - } - - // - // Rule 220: selection_statement ::= switch ( condition ) statement - // - case 220: { action. consumeStatementSwitch(); break; - } - - // - // Rule 222: condition ::= type_specifier_seq declarator = assignment_expression - // - case 222: { action. consumeConditionDeclaration(); break; - } - - // - // Rule 224: condition_opt ::= $Empty - // - case 224: { action. consumeEmpty(); break; - } - - // - // Rule 225: iteration_statement ::= while ( condition ) statement - // - case 225: { action. consumeStatementWhileLoop(); break; - } - - // - // Rule 226: iteration_statement ::= do statement while ( expression ) ; - // - case 226: { action. consumeStatementDoLoop(true); break; - } - - // - // Rule 227: iteration_statement ::= do statement - // - case 227: { action. consumeStatementDoLoop(false); break; - } - - // - // Rule 228: iteration_statement ::= for ( for_init_statement condition_opt ; expression_opt ) statement - // - case 228: { action. consumeStatementForLoop(); break; - } - - // - // Rule 230: for_init_statement ::= simple_declaration_with_declspec - // - case 230: { action. consumeStatementDeclaration(); break; - } - - // - // Rule 231: jump_statement ::= break ; - // - case 231: { action. consumeStatementBreak(); break; - } - - // - // Rule 232: jump_statement ::= continue ; - // - case 232: { action. consumeStatementContinue(); break; - } - - // - // Rule 233: jump_statement ::= return expression ; - // - case 233: { action. consumeStatementReturn(true); break; - } - - // - // Rule 234: jump_statement ::= return ; - // - case 234: { action. consumeStatementReturn(false); break; - } - - // - // Rule 235: jump_statement ::= goto identifier_token ; - // - case 235: { action. consumeStatementGoto(); break; - } - - // - // Rule 236: declaration_statement ::= block_declaration - // - case 236: { action. consumeStatementDeclarationWithDisambiguation(); break; - } - - // - // Rule 237: declaration_statement ::= function_definition - // - case 237: { action. consumeStatementDeclaration(); break; - } - - // - // Rule 245: declaration ::= ERROR_TOKEN - // - case 245: { action. consumeDeclarationProblem(); break; - } - - // - // Rule 255: simple_declaration ::= declaration_specifiers_opt init_declarator_list_opt ; - // - case 255: { action. consumeDeclarationSimple(true); break; - } - - // - // Rule 256: simple_declaration_with_declspec ::= declaration_specifiers init_declarator_list_opt ; - // - case 256: { action. consumeDeclarationSimple(true); break; - } - - // - // Rule 257: declaration_specifiers ::= simple_declaration_specifiers - // - case 257: { action. consumeDeclarationSpecifiersSimple(); break; - } - - // - // Rule 258: declaration_specifiers ::= class_declaration_specifiers - // - case 258: { action. consumeDeclarationSpecifiersComposite(); break; - } - - // - // Rule 259: declaration_specifiers ::= elaborated_declaration_specifiers - // - case 259: { action. consumeDeclarationSpecifiersComposite(); break; - } - - // - // Rule 260: declaration_specifiers ::= enum_declaration_specifiers - // - case 260: { action. consumeDeclarationSpecifiersComposite(); break; - } - - // - // Rule 261: declaration_specifiers ::= type_name_declaration_specifiers - // - case 261: { action. consumeDeclarationSpecifiersTypeName(); break; - } - - // - // Rule 263: declaration_specifiers_opt ::= $Empty - // - case 263: { action. consumeEmpty(); break; - } - - // - // Rule 267: no_type_declaration_specifier ::= friend - // - case 267: { action. consumeToken(); break; - } - - // - // Rule 268: no_type_declaration_specifier ::= typedef - // - case 268: { action. consumeToken(); break; - } - - // - // Rule 288: storage_class_specifier ::= auto - // - case 288: { action. consumeToken(); break; - } - - // - // Rule 289: storage_class_specifier ::= register - // - case 289: { action. consumeToken(); break; - } - - // - // Rule 290: storage_class_specifier ::= static - // - case 290: { action. consumeToken(); break; - } - - // - // Rule 291: storage_class_specifier ::= extern - // - case 291: { action. consumeToken(); break; - } - - // - // Rule 292: storage_class_specifier ::= mutable - // - case 292: { action. consumeToken(); break; - } - - // - // Rule 293: function_specifier ::= inline - // - case 293: { action. consumeToken(); break; - } - - // - // Rule 294: function_specifier ::= virtual - // - case 294: { action. consumeToken(); break; - } - - // - // Rule 295: function_specifier ::= explicit - // - case 295: { action. consumeToken(); break; - } - - // - // Rule 296: simple_type_specifier ::= simple_type_specifier_token - // - case 296: { action. consumeToken(); break; - } - - // - // Rule 310: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name - // - case 310: { action. consumeQualifiedId(false); break; - } - - // - // Rule 311: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name - // - case 311: { action. consumeQualifiedId(false); break; - } - - // - // Rule 312: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name - // - case 312: { action. consumeQualifiedId(false); break; - } - - // - // Rule 313: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name - // - case 313: { action. consumeQualifiedId(true); break; - } - - // - // Rule 315: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name - // - case 315: { action. consumeTypeSpecifierElaborated(false); break; - } - - // - // Rule 316: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name - // - case 316: { action. consumeTypeSpecifierElaborated(true); break; - } - - // - // Rule 317: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name - // - case 317: { action. consumeTypeSpecifierElaborated(false); break; - } - - // - // Rule 321: enum_specifier ::= enum enum_specifier_hook { enumerator_list_opt comma_opt } - // - case 321: { action. consumeTypeSpecifierEnumeration(false); break; - } - - // - // Rule 322: enum_specifier ::= enum enum_specifier_hook identifier_token { enumerator_list_opt comma_opt } - // - case 322: { action. consumeTypeSpecifierEnumeration(true); break; - } - - // - // Rule 328: enumerator_definition ::= identifier_token - // - case 328: { action. consumeEnumerator(false); break; - } - - // - // Rule 329: enumerator_definition ::= identifier_token = constant_expression - // - case 329: { action. consumeEnumerator(true); break; - } - - // - // Rule 331: namespace_definition ::= namespace namespace_name namespace_definition_hook { declaration_seq_opt } - // - case 331: { action. consumeNamespaceDefinition(true); break; - } - - // - // Rule 332: namespace_definition ::= namespace namespace_definition_hook { declaration_seq_opt } - // - case 332: { action. consumeNamespaceDefinition(false); break; - } - - // - // Rule 334: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ; - // - case 334: { action. consumeNamespaceAliasDefinition(); break; - } - - // - // Rule 335: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ; - // - case 335: { action. consumeUsingDeclaration(); break; - } - - // - // Rule 336: typename_opt ::= typename - // - case 336: { action. consumePlaceHolder(); break; - } - - // - // Rule 337: typename_opt ::= $Empty - // - case 337: { action. consumeEmpty(); break; - } - - // - // Rule 338: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ; - // - case 338: { action. consumeUsingDirective(); break; - } - - // - // Rule 339: linkage_specification ::= extern stringlit { declaration_seq_opt } - // - case 339: { action. consumeLinkageSpecification(); break; - } - - // - // Rule 340: linkage_specification ::= extern stringlit declaration - // - case 340: { action. consumeLinkageSpecification(); break; - } - - // - // Rule 345: init_declarator_complete ::= init_declarator - // - case 345: { action. consumeInitDeclaratorComplete(); break; - } - - // - // Rule 347: init_declarator ::= complete_declarator initializer - // - case 347: { action. consumeDeclaratorWithInitializer(true); break; - } - - // - // Rule 350: declarator ::= ptr_operator_seq direct_declarator - // - case 350: { action. consumeDeclaratorWithPointer(true); break; - } - - // - // Rule 352: function_declarator ::= ptr_operator_seq direct_declarator - // - case 352: { action. consumeDeclaratorWithPointer(true); break; - } - - // - // Rule 356: basic_direct_declarator ::= declarator_id_name - // - case 356: { action. consumeDirectDeclaratorIdentifier(); break; - } - - // - // Rule 357: basic_direct_declarator ::= ( declarator ) - // - case 357: { action. consumeDirectDeclaratorBracketed(); break; - } - - // - // Rule 358: function_direct_declarator ::= basic_direct_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt - // - case 358: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; - } - - // - // Rule 359: array_direct_declarator ::= array_direct_declarator array_modifier - // - case 359: { action. consumeDirectDeclaratorArrayDeclarator(true); break; - } - - // - // Rule 360: array_direct_declarator ::= basic_direct_declarator array_modifier - // - case 360: { action. consumeDirectDeclaratorArrayDeclarator(true); break; - } - - // - // Rule 361: array_modifier ::= [ constant_expression ] - // - case 361: { action. consumeDirectDeclaratorArrayModifier(true); break; - } - - // - // Rule 362: array_modifier ::= [ ] - // - case 362: { action. consumeDirectDeclaratorArrayModifier(false); break; - } - - // - // Rule 363: ptr_operator ::= pointer_hook * pointer_hook cv_qualifier_seq_opt - // - case 363: { action. consumePointer(); break; - } - - // - // Rule 364: ptr_operator ::= pointer_hook & pointer_hook - // - case 364: { action. consumeReferenceOperator(); break; - } - - // - // Rule 365: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook cv_qualifier_seq_opt - // - case 365: { action. consumePointerToMember(); break; - } - - // - // Rule 372: cv_qualifier ::= const - // - case 372: { action. consumeToken(); break; - } - - // - // Rule 373: cv_qualifier ::= volatile - // - case 373: { action. consumeToken(); break; - } - - // - // Rule 375: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name - // - case 375: { action. consumeQualifiedId(false); break; - } - - // - // Rule 376: type_id ::= type_specifier_seq - // - case 376: { action. consumeTypeId(false); break; - } - - // - // Rule 377: type_id ::= type_specifier_seq abstract_declarator - // - case 377: { action. consumeTypeId(true); break; - } - - // - // Rule 380: abstract_declarator ::= ptr_operator_seq - // - case 380: { action. consumeDeclaratorWithPointer(false); break; - } - - // - // Rule 381: abstract_declarator ::= ptr_operator_seq direct_abstract_declarator - // - case 381: { action. consumeDeclaratorWithPointer(true); break; - } - - // - // Rule 385: basic_direct_abstract_declarator ::= ( abstract_declarator ) - // - case 385: { action. consumeDirectDeclaratorBracketed(); break; - } - - // - // Rule 386: basic_direct_abstract_declarator ::= ( ) - // - case 386: { action. consumeAbstractDeclaratorEmpty(); break; - } - - // - // Rule 387: array_direct_abstract_declarator ::= array_modifier - // - case 387: { action. consumeDirectDeclaratorArrayDeclarator(false); break; - } - - // - // Rule 388: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier - // - case 388: { action. consumeDirectDeclaratorArrayDeclarator(true); break; - } - - // - // Rule 389: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier - // - case 389: { action. consumeDirectDeclaratorArrayDeclarator(true); break; - } - - // - // Rule 390: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt - // - case 390: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; - } - - // - // Rule 391: function_direct_abstract_declarator ::= ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt - // - case 391: { action. consumeDirectDeclaratorFunctionDeclarator(false); break; - } - - // - // Rule 392: parameter_declaration_clause ::= parameter_declaration_list_opt ... - // - case 392: { action. consumePlaceHolder(); break; - } - - // - // Rule 393: parameter_declaration_clause ::= parameter_declaration_list_opt - // - case 393: { action. consumeEmpty(); break; - } - - // - // Rule 394: parameter_declaration_clause ::= parameter_declaration_list , ... - // - case 394: { action. consumePlaceHolder(); break; - } - - // - // Rule 400: abstract_declarator_opt ::= $Empty - // - case 400: { action. consumeEmpty(); break; - } - - // - // Rule 401: parameter_declaration ::= declaration_specifiers parameter_init_declarator - // - case 401: { action. consumeParameterDeclaration(); break; - } - - // - // Rule 402: parameter_declaration ::= declaration_specifiers - // - case 402: { action. consumeParameterDeclarationWithoutDeclarator(); break; - } - - // - // Rule 404: parameter_init_declarator ::= declarator = parameter_initializer - // - case 404: { action. consumeDeclaratorWithInitializer(true); break; - } - - // - // Rule 406: parameter_init_declarator ::= abstract_declarator = parameter_initializer - // - case 406: { action. consumeDeclaratorWithInitializer(true); break; - } - - // - // Rule 407: parameter_init_declarator ::= = parameter_initializer - // - case 407: { action. consumeDeclaratorWithInitializer(false); break; - } - - // - // Rule 408: parameter_initializer ::= assignment_expression - // - case 408: { action. consumeInitializer(); break; - } - - // - // Rule 409: function_definition ::= declaration_specifiers_opt function_declarator ctor_initializer_list_opt function_body - // - case 409: { action. consumeFunctionDefinition(false); break; - } - - // - // Rule 410: function_definition ::= declaration_specifiers_opt function_declarator try ctor_initializer_list_opt function_body handler_seq - // - case 410: { action. consumeFunctionDefinition(true); break; - } - - // - // Rule 413: initializer ::= ( expression_list ) - // - case 413: { action. consumeInitializerConstructor(); break; - } - - // - // Rule 414: initializer_clause ::= assignment_expression - // - case 414: { action. consumeInitializer(); break; - } - - // - // Rule 415: initializer_clause ::= initializer_list - // - case 415: { action. consumeInitializer(); break; - } - - // - // Rule 416: initializer_list ::= start_initializer_list { initializer_seq , } end_initializer_list - // - case 416: { action. consumeInitializerList(); break; - } - - // - // Rule 417: initializer_list ::= start_initializer_list { initializer_seq } end_initializer_list - // - case 417: { action. consumeInitializerList(); break; - } - - // - // Rule 418: initializer_list ::= { } - // - case 418: { action. consumeInitializerList(); break; - } - - // - // Rule 419: start_initializer_list ::= $Empty - // - case 419: { action. initializerListStart(); break; - } - - // - // Rule 420: end_initializer_list ::= $Empty - // - case 420: { action. initializerListEnd(); break; - } - - // - // Rule 425: class_specifier ::= class_head { member_declaration_list_opt } - // - case 425: { action. consumeClassSpecifier(); break; - } - - // - // Rule 426: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook base_clause_opt - // - case 426: { action. consumeClassHead(false); break; - } - - // - // Rule 427: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook base_clause_opt - // - case 427: { action. consumeClassHead(false); break; - } - - // - // Rule 428: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook base_clause_opt - // - case 428: { action. consumeClassHead(true); break; - } - - // - // Rule 429: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook base_clause_opt - // - case 429: { action. consumeClassHead(true); break; - } - - // - // Rule 433: identifier_name_opt ::= $Empty - // - case 433: { action. consumeEmpty(); break; - } - - // - // Rule 437: visibility_label ::= access_specifier_keyword : - // - case 437: { action. consumeVisibilityLabel(); break; - } - - // - // Rule 438: member_declaration ::= declaration_specifiers_opt member_declarator_list ; - // - case 438: { action. consumeDeclarationSimple(true); break; - } - - // - // Rule 439: member_declaration ::= declaration_specifiers_opt ; - // - case 439: { action. consumeDeclarationSimple(false); break; - } - - // - // Rule 442: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; - // - case 442: { action. consumeMemberDeclarationQualifiedId(); break; - } - - // - // Rule 448: member_declaration ::= ERROR_TOKEN - // - case 448: { action. consumeDeclarationProblem(); break; - } - - // - // Rule 457: member_declarator ::= declarator constant_initializer - // - case 457: { action. consumeMemberDeclaratorWithInitializer(); break; - } - - // - // Rule 458: member_declarator ::= bit_field_declarator : constant_expression - // - case 458: { action. consumeBitField(true); break; - } - - // - // Rule 459: member_declarator ::= : constant_expression - // - case 459: { action. consumeBitField(false); break; - } - - // - // Rule 460: bit_field_declarator ::= identifier_name - // - case 460: { action. consumeDirectDeclaratorIdentifier(); break; - } - - // - // Rule 461: constant_initializer ::= = constant_expression - // - case 461: { action. consumeInitializer(); break; - } - - // - // Rule 467: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name - // - case 467: { action. consumeBaseSpecifier(false, false); break; - } - - // - // Rule 468: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name - // - case 468: { action. consumeBaseSpecifier(true, true); break; - } - - // - // Rule 469: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name - // - case 469: { action. consumeBaseSpecifier(true, true); break; - } - - // - // Rule 470: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name - // - case 470: { action. consumeBaseSpecifier(true, false); break; - } - - // - // Rule 471: access_specifier_keyword ::= private - // - case 471: { action. consumeToken(); break; - } - - // - // Rule 472: access_specifier_keyword ::= protected - // - case 472: { action. consumeToken(); break; - } - - // - // Rule 473: access_specifier_keyword ::= public - // - case 473: { action. consumeToken(); break; - } - - // - // Rule 475: access_specifier_keyword_opt ::= $Empty - // - case 475: { action. consumeEmpty(); break; - } - - // - // Rule 477: conversion_function_id_name ::= conversion_function_id < template_argument_list_opt > - // - case 477: { action. consumeTemplateId(); break; - } - - // - // Rule 478: conversion_function_id ::= operator conversion_type_id - // - case 478: { action. consumeConversionName(); break; - } - - // - // Rule 479: conversion_type_id ::= type_specifier_seq conversion_declarator - // - case 479: { action. consumeTypeId(true); break; - } - - // - // Rule 480: conversion_type_id ::= type_specifier_seq - // - case 480: { action. consumeTypeId(false); break; - } - - // - // Rule 481: conversion_declarator ::= ptr_operator_seq - // - case 481: { action. consumeDeclaratorWithPointer(false); break; - } - - // - // Rule 487: mem_initializer ::= mem_initializer_name ( expression_list_opt ) - // - case 487: { action. consumeConstructorChainInitializer(); break; - } - - // - // Rule 488: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name - // - case 488: { action. consumeQualifiedId(false); break; - } - - // - // Rule 491: operator_function_id_name ::= operator_id_name < template_argument_list_opt > - // - case 491: { action. consumeTemplateId(); break; - } - - // - // Rule 492: operator_id_name ::= operator overloadable_operator - // - case 492: { action. consumeOperatorName(); break; - } - - // - // Rule 535: template_declaration ::= export_opt template < template_parameter_list > declaration - // - case 535: { action. consumeTemplateDeclaration(); break; - } - - // - // Rule 536: export_opt ::= export - // - case 536: { action. consumePlaceHolder(); break; - } - - // - // Rule 537: export_opt ::= $Empty - // - case 537: { action. consumeEmpty(); break; - } - - // - // Rule 541: template_parameter ::= parameter_declaration - // - case 541: { action. consumeTemplateParamterDeclaration(); break; - } - - // - // Rule 542: type_parameter ::= class identifier_name_opt - // - case 542: { action. consumeSimpleTypeTemplateParameter(false); break; - } - - // - // Rule 543: type_parameter ::= class identifier_name_opt = type_id - // - case 543: { action. consumeSimpleTypeTemplateParameter(true); break; - } - - // - // Rule 544: type_parameter ::= typename identifier_name_opt - // - case 544: { action. consumeSimpleTypeTemplateParameter(false); break; - } - - // - // Rule 545: type_parameter ::= typename identifier_name_opt = type_id - // - case 545: { action. consumeSimpleTypeTemplateParameter(true); break; - } - - // - // Rule 546: type_parameter ::= template < template_parameter_list > class identifier_name_opt - // - case 546: { action. consumeTemplatedTypeTemplateParameter(false); break; - } - - // - // Rule 547: type_parameter ::= template < template_parameter_list > class identifier_name_opt = id_expression - // - case 547: { action. consumeTemplatedTypeTemplateParameter(true); break; - } - - // - // Rule 548: template_id_name ::= identifier_name < template_argument_list_opt > - // - case 548: { action. consumeTemplateId(); break; - } - - // - // Rule 555: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate :: nested_name_specifier_with_template_inTemplate - // - case 555: { action. consumeNestedNameSpecifier(true); break; - } - - // - // Rule 556: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate :: - // - case 556: { action. consumeNestedNameSpecifier(false); break; - } - - // - // Rule 557: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate :: nested_name_specifier_with_template_inTemplate - // - case 557: { action. consumeNestedNameSpecifier(true); break; - } - - // - // Rule 558: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate :: - // - case 558: { action. consumeNestedNameSpecifier(false); break; - } - - // - // Rule 559: class_or_namespace_name_with_template_inTemplate ::= template_opt class_or_namespace_name_inTemplate - // - case 559: { action. consumeNameWithTemplateKeyword(); break; - } - - // - // Rule 561: nested_name_specifier_opt_inTemplate ::= $Empty - // - case 561: { action. consumeNestedNameSpecifierEmpty(); break; - } - - // - // Rule 564: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier identifier_name - // - case 564: { action. consumeQualifiedId(false); break; - } - - // - // Rule 565: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier template_opt template_id_name - // - case 565: { action. consumeQualifiedId(true); break; - } - - // - // Rule 570: declaration_specifiers_inTemplate ::= simple_declaration_specifiers - // - case 570: { action. consumeDeclarationSpecifiersSimple(); break; - } - - // - // Rule 571: declaration_specifiers_inTemplate ::= class_declaration_specifiers - // - case 571: { action. consumeDeclarationSpecifiersComposite(); break; - } - - // - // Rule 572: declaration_specifiers_inTemplate ::= elaborated_declaration_specifiers - // - case 572: { action. consumeDeclarationSpecifiersComposite(); break; - } - - // - // Rule 573: declaration_specifiers_inTemplate ::= enum_declaration_specifiers - // - case 573: { action. consumeDeclarationSpecifiersComposite(); break; - } - - // - // Rule 574: declaration_specifiers_inTemplate ::= type_name_declaration_specifiers_inTemplate - // - case 574: { action. consumeDeclarationSpecifiersTypeName(); break; - } - - // - // Rule 576: type_id_inTemplate ::= type_specifier_seq_inTemplate - // - case 576: { action. consumeTypeId(false); break; - } - - // - // Rule 577: type_id_inTemplate ::= type_specifier_seq_inTemplate abstract_declarator - // - case 577: { action. consumeTypeId(true); break; - } - - // - // Rule 578: template_argument ::= assignment_expression_inTemplate - // - case 578: { action. consumeTemplateArgumentExpression(); break; - } - - // - // Rule 579: template_argument ::= type_id_inTemplate - // - case 579: { action. consumeTemplateArgumentTypeId(); break; - } - - // - // Rule 580: explicit_instantiation ::= template declaration - // - case 580: { action. consumeTemplateExplicitInstantiation(); break; - } - - // - // Rule 581: explicit_specialization ::= template < > declaration - // - case 581: { action. consumeTemplateExplicitSpecialization(); break; - } - - // - // Rule 582: try_block ::= try compound_statement handler_seq - // - case 582: { action. consumeStatementTryBlock(true); break; - } - - // - // Rule 583: try_block ::= try compound_statement - // - case 583: { action. consumeStatementTryBlock(false); break; - } - - // - // Rule 586: handler ::= catch ( exception_declaration ) compound_statement - // - case 586: { action. consumeStatementCatchHandler(false); break; - } - - // - // Rule 587: handler ::= catch ( ... ) compound_statement - // - case 587: { action. consumeStatementCatchHandler(true); break; - } - - // - // Rule 588: exception_declaration ::= type_specifier_seq declarator - // - case 588: { action. consumeDeclarationSimple(true); break; - } - - // - // Rule 589: exception_declaration ::= type_specifier_seq abstract_declarator - // - case 589: { action. consumeDeclarationSimple(true); break; - } - - // - // Rule 590: exception_declaration ::= type_specifier_seq - // - case 590: { action. consumeDeclarationSimple(false); break; - } - - // - // Rule 592: exception_specification ::= throw ( ) - // - case 592: { action. consumePlaceHolder(); break; - } - - // - // Rule 613: attribute_parameter ::= assignment_expression - // - case 613: { action. consumeIgnore(); break; - } - - // - // Rule 624: extended_asm_declaration ::= asm volatile_opt ( extended_asm_param_seq ) ; - // - case 624: { gnuAction.consumeDeclarationASM(); break; - } - - // - // Rule 635: unary_expression ::= __alignof__ unary_expression - // - case 635: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_alignOf); break; - } - - // - // Rule 636: unary_expression ::= __alignof__ ( type_id ) - // - case 636: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_alignof); break; - } - - // - // Rule 637: unary_expression ::= typeof unary_expression - // - case 637: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break; - } - - // - // Rule 638: unary_expression ::= typeof ( type_id ) - // - case 638: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break; - } - - // - // Rule 639: relational_expression ::= relational_expression >? shift_expression - // - case 639: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_max); break; - } - - // - // Rule 640: relational_expression ::= relational_expression : assignment_expression - // - case 641: { action. consumeExpressionConditional(); break; - } - - // - // Rule 642: primary_expression ::= ( compound_statement ) - // - case 642: { gnuAction.consumeCompoundStatementExpression(); break; - } - - // - // Rule 643: labeled_statement ::= case case_range_expression : statement - // - case 643: { action. consumeStatementCase(); break; - } - - // - // Rule 644: case_range_expression ::= constant_expression ... constant_expression - // - case 644: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break; - } - - // - // Rule 648: typeof_type_specifier ::= typeof unary_expression - // - case 648: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break; - } - - // - // Rule 649: typeof_type_specifier ::= typeof ( type_id ) - // - case 649: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break; - } - - // - // Rule 650: declaration_specifiers ::= typeof_declaration_specifiers - // - case 650: { action. consumeDeclarationSpecifiersTypeof(); break; - } - - // - // Rule 663: declarator ::= ptr_operator_seq attribute_or_decl_specifier_seq direct_declarator - // - case 663: { action. consumeDeclaratorWithPointer(true); break; - } - - // - // Rule 666: simple_type_specifier ::= _Complex - // - case 666: { action. consumeToken(); break; - } - - // - // Rule 667: simple_type_specifier ::= _Imaginary - // - case 667: { action. consumeToken(); break; - } - - // - // Rule 668: cv_qualifier ::= restrict - // - case 668: { action. consumeToken(); break; - } - - // - // Rule 669: explicit_instantiation ::= extern template declaration - // - case 669: { action. consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_extern); break; - } - - // - // Rule 670: explicit_instantiation ::= static template declaration - // - case 670: { action. consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_static); break; - } - - // - // Rule 671: explicit_instantiation ::= inline template declaration - // - case 671: { action. consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_inline); break; - } - - // - // Rule 672: postfix_expression ::= ( type_id ) initializer_list - // - case 672: { action. consumeExpressionTypeIdInitializer(); break; - } - - // - // Rule 676: type_id ::= vector_type - // - case 676: { action. consumeTypeId(false); break; - } - - // - // Rule 677: type_id ::= vector_type abstract_declarator - // - case 677: { action. consumeTypeId(true); break; - } - - // - // Rule 678: vector_declaration ::= vector_type init_declarator_list ; - // - case 678: { action. consumeDeclarationSimple(true); break; - } - - // - // Rule 679: vector_type ::= no_type_declaration_specifiers_opt vector vector_type_specifier all_specifier_qualifier_list_opt - // - case 679: { action. consumeVectorTypeSpecifier(); break; - } - - // - // Rule 680: vector_type_specifier ::= vector_type_specifier_token - // - case 680: { action. consumeToken(); break; - } - - // - // Rule 703: specifier_qualifier ::= typedef - // - case 703: { action. consumeToken(); break; - } - - // - // Rule 704: array_modifier ::= [ array_modifier_type_qualifiers ] - // - case 704: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break; - } - - // - // Rule 705: array_modifier ::= [ array_modifier_type_qualifiers assignment_expression ] - // - case 705: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break; - } - - // - // Rule 706: array_modifier ::= [ static assignment_expression ] - // - case 706: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break; - } - - // - // Rule 707: array_modifier ::= [ static array_modifier_type_qualifiers assignment_expression ] - // - case 707: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; - } - - // - // Rule 708: array_modifier ::= [ array_modifier_type_qualifiers static assignment_expression ] - // - case 708: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; - } - - // - // Rule 709: array_modifier ::= [ * ] - // - case 709: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break; - } - - // - // Rule 710: array_modifier ::= [ array_modifier_type_qualifiers * ] - // - case 710: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break; - } - - // - // Rule 715: static_assert_declaration ::= __static_assert ( expression , literal ) ; - // - case 715: { action. consumeCPPASTStaticAssertDeclaration(); break; - } - - - default: - break; - } - return; - } -} + public ErrorToken getRhsErrorIToken(int i) { + int index = btParser.getToken(i); + IToken err = super.getIToken(index); + return (ErrorToken) (err instanceof ErrorToken ? err : null); + } + + public XlcCPPParser(LexStream lexStream) { + super(lexStream); + + try { + super.remapTerminalSymbols(orderedTerminalSymbols(), XlcCPPParserprs.EOFT_SYMBOL); + } catch (NullExportedSymbolsException e) { + } catch (NullTerminalSymbolsException e) { + } catch (UnimplementedTerminalsException e) { + java.util.ArrayList unimplemented_symbols = e.getSymbols(); + System.out.println("The Lexer will not scan the following token(s):"); + for (int i = 0; i < unimplemented_symbols.size(); i++) { + Integer id = (Integer) unimplemented_symbols.get(i); + System.out.println(" " + XlcCPPParsersym.orderedTerminalSymbols[id.intValue()]); + } + System.out.println(); + } catch (UndefinedEofSymbolException e) { + throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol " + + XlcCPPParsersym.orderedTerminalSymbols[XlcCPPParserprs.EOFT_SYMBOL])); + } + } + + public String[] orderedTerminalSymbols() { + return XlcCPPParsersym.orderedTerminalSymbols; + } + + public String getTokenKindName(int kind) { + return XlcCPPParsersym.orderedTerminalSymbols[kind]; + } + + public int getEOFTokenKind() { + return XlcCPPParserprs.EOFT_SYMBOL; + } + + public PrsStream getParseStream() { + return (PrsStream) this; + } + + // + // Report error message for given error_token. + // + public final void reportErrorTokenMessage(int error_token, String msg) { + int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token); + String location = super.getFileName() + ':' + + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok)) + : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":" + + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token))) + + ": "; + super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE), + location, msg); + } + + public void parser() { + parser(null, 0); + } + + public void parser(Monitor monitor) { + parser(monitor, 0); + } + + public void parser(int error_repair_count) { + parser(null, error_repair_count); + } + + public void parser(Monitor monitor, int error_repair_count) { + try { + btParser = new FixedBacktrackingParser(monitor, (TokenStream) this, prs, (RuleAction) this); + } catch (NotBacktrackParseTableException e) { + throw new Error( + new NotBacktrackParseTableException("Regenerate XlcCPPParserprs.java with -BACKTRACK option")); + } catch (BadParseSymFileException e) { + throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- XlcCPPParsersym.java")); + } + + try { + btParser.parse(error_repair_count); + } catch (BadParseException e) { + reset(e.error_token); // point to error token + DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs); + diagnoseParser.diagnose(e.error_token); + } + } + + private XlcCPPBuildASTParserAction action; + private IASTCompletionNode compNode; + + public XlcCPPParser(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvider builtinBindingsProvider, + IIndex index, Map properties) { + initActions(properties); + action.initializeTranslationUnit(scanner, builtinBindingsProvider, index); + CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap); + } + + private void initActions(Map properties) { + ScopedStack astStack = new ScopedStack(); + + action = new XlcCPPBuildASTParserAction(this, astStack, XlcCPPNodeFactory.getDefault(), + GPPSecondaryParserFactory.getDefault()); + action.setParserProperties(properties); + + gnuAction = new GNUBuildASTParserAction(this, astStack, XlcCPPNodeFactory.getDefault()); + gnuAction.setParserProperties(properties); + + } + + public void addToken(IToken token) { + token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called? + super.addToken(token); + } + + public IASTTranslationUnit parse() { + // this has to be done, or... kaboom! + setStreamLength(getSize()); + + final int errorRepairCount = -1; // -1 means full error handling + parser(null, errorRepairCount); // do the actual parse + super.resetTokenStream(); // allow tokens to be garbage collected + + compNode = action.getASTCompletionNode(); // the completion node may be null + return (IASTTranslationUnit) action.getParseResult(); + } + + public IASTCompletionNode getCompletionNode() { + return compNode; + } + + // uncomment this method to use with backtracking parser + public List getRuleTokens() { + return getTokens().subList(getLeftSpan(), getRightSpan() + 1); + } + + public String[] getOrderedTerminalSymbols() { + return XlcCPPParsersym.orderedTerminalSymbols; + } + + @SuppressWarnings("nls") + public String getName() { + return "XlcCPPParser"; + } + + private GNUBuildASTParserAction gnuAction; + + public void ruleAction(int ruleNumber) { + switch (ruleNumber) { + + // + // Rule 1: ::= $Empty + // + case 1: { + action.openASTScope(); + break; + } + + // + // Rule 2: ::= $Empty + // + case 2: { + action.consumeEmpty(); + break; + } + + // + // Rule 13: translation_unit ::= declaration_seq_opt + // + case 13: { + action.consumeTranslationUnit(); + break; + } + + // + // Rule 16: literal ::= integer + // + case 16: { + action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_integer_constant); + break; + } + + // + // Rule 17: literal ::= floating + // + case 17: { + action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_float_constant); + break; + } + + // + // Rule 18: literal ::= charconst + // + case 18: { + action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_char_constant); + break; + } + + // + // Rule 19: literal ::= stringlit + // + case 19: { + action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_string_literal); + break; + } + + // + // Rule 20: literal ::= true + // + case 20: { + action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_true); + break; + } + + // + // Rule 21: literal ::= false + // + case 21: { + action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_false); + break; + } + + // + // Rule 22: literal ::= this + // + case 22: { + action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_this); + break; + } + + // + // Rule 24: primary_expression ::= ( expression ) + // + case 24: { + action.consumeExpressionBracketed(); + break; + } + + // + // Rule 26: id_expression ::= qualified_or_unqualified_name + // + case 26: { + action.consumeExpressionName(); + break; + } + + // + // Rule 33: unqualified_id_name ::= ~ identifier_token + // + case 33: { + action.consumeDestructorName(); + break; + } + + // + // Rule 34: unqualified_id_name ::= ~ template_id_name + // + case 34: { + action.consumeDestructorNameTemplateId(); + break; + } + + // + // Rule 35: identifier_name ::= identifier_token + // + case 35: { + action.consumeIdentifierName(); + break; + } + + // + // Rule 36: template_opt ::= template + // + case 36: { + action.consumePlaceHolder(); + break; + } + + // + // Rule 37: template_opt ::= $Empty + // + case 37: { + action.consumeEmpty(); + break; + } + + // + // Rule 38: dcolon_opt ::= :: + // + case 38: { + action.consumeToken(); + break; + } + + // + // Rule 39: dcolon_opt ::= $Empty + // + case 39: { + action.consumeEmpty(); + break; + } + + // + // Rule 40: qualified_id_name ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name + // + case 40: { + action.consumeQualifiedId(true); + break; + } + + // + // Rule 41: qualified_id_name ::= :: unqualified_id_name + // + case 41: { + action.consumeGlobalQualifiedId(); + break; + } + + // + // Rule 42: nested_name_specifier ::= class_or_namespace_name :: nested_name_specifier_with_template + // + case 42: { + action.consumeNestedNameSpecifier(true); + break; + } + + // + // Rule 43: nested_name_specifier ::= class_or_namespace_name :: + // + case 43: { + action.consumeNestedNameSpecifier(false); + break; + } + + // + // Rule 44: nested_name_specifier_with_template ::= class_or_namespace_name_with_template :: nested_name_specifier_with_template + // + case 44: { + action.consumeNestedNameSpecifier(true); + break; + } + + // + // Rule 45: nested_name_specifier_with_template ::= class_or_namespace_name_with_template :: + // + case 45: { + action.consumeNestedNameSpecifier(false); + break; + } + + // + // Rule 46: class_or_namespace_name_with_template ::= template_opt class_or_namespace_name + // + case 46: { + action.consumeNameWithTemplateKeyword(); + break; + } + + // + // Rule 48: nested_name_specifier_opt ::= $Empty + // + case 48: { + action.consumeNestedNameSpecifierEmpty(); + break; + } + + // + // Rule 51: postfix_expression ::= postfix_expression [ expression ] + // + case 51: { + action.consumeExpressionArraySubscript(); + break; + } + + // + // Rule 52: postfix_expression ::= postfix_expression ( expression_list_opt ) + // + case 52: { + action.consumeExpressionFunctionCall(); + break; + } + + // + // Rule 53: postfix_expression ::= simple_type_specifier ( expression_list_opt ) + // + case 53: { + action.consumeExpressionSimpleTypeConstructor(); + break; + } + + // + // Rule 54: postfix_expression ::= typename dcolon_opt nested_name_specifier identifier_name ( expression_list_opt ) + // + case 54: { + action.consumeExpressionTypeName(); + break; + } + + // + // Rule 55: postfix_expression ::= typename dcolon_opt nested_name_specifier template_opt template_id_name ( expression_list_opt ) + // + case 55: { + action.consumeExpressionTypeName(); + break; + } + + // + // Rule 56: postfix_expression ::= postfix_expression . qualified_or_unqualified_name + // + case 56: { + action.consumeExpressionFieldReference(false, false); + break; + } + + // + // Rule 57: postfix_expression ::= postfix_expression -> qualified_or_unqualified_name + // + case 57: { + action.consumeExpressionFieldReference(true, false); + break; + } + + // + // Rule 58: postfix_expression ::= postfix_expression . template qualified_or_unqualified_name + // + case 58: { + action.consumeExpressionFieldReference(false, true); + break; + } + + // + // Rule 59: postfix_expression ::= postfix_expression -> template qualified_or_unqualified_name + // + case 59: { + action.consumeExpressionFieldReference(true, true); + break; + } + + // + // Rule 60: postfix_expression ::= postfix_expression . pseudo_destructor_name + // + case 60: { + action.consumeExpressionFieldReference(false, false); + break; + } + + // + // Rule 61: postfix_expression ::= postfix_expression -> pseudo_destructor_name + // + case 61: { + action.consumeExpressionFieldReference(true, false); + break; + } + + // + // Rule 62: postfix_expression ::= postfix_expression ++ + // + case 62: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); + break; + } + + // + // Rule 63: postfix_expression ::= postfix_expression -- + // + case 63: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); + break; + } + + // + // Rule 64: postfix_expression ::= dynamic_cast < type_id > ( expression ) + // + case 64: { + action.consumeExpressionCast(ICPPASTCastExpression.op_dynamic_cast); + break; + } + + // + // Rule 65: postfix_expression ::= static_cast < type_id > ( expression ) + // + case 65: { + action.consumeExpressionCast(ICPPASTCastExpression.op_static_cast); + break; + } + + // + // Rule 66: postfix_expression ::= reinterpret_cast < type_id > ( expression ) + // + case 66: { + action.consumeExpressionCast(ICPPASTCastExpression.op_reinterpret_cast); + break; + } + + // + // Rule 67: postfix_expression ::= const_cast < type_id > ( expression ) + // + case 67: { + action.consumeExpressionCast(ICPPASTCastExpression.op_const_cast); + break; + } + + // + // Rule 68: postfix_expression ::= typeid ( expression ) + // + case 68: { + action.consumeExpressionUnaryOperator(ICPPASTUnaryExpression.op_typeid); + break; + } + + // + // Rule 69: postfix_expression ::= typeid ( type_id ) + // + case 69: { + action.consumeExpressionTypeId(ICPPASTTypeIdExpression.op_typeid); + break; + } + + // + // Rule 70: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt type_name :: destructor_type_name + // + case 70: { + action.consumePsudoDestructorName(true); + break; + } + + // + // Rule 71: pseudo_destructor_name ::= dcolon_opt nested_name_specifier template template_id_name :: destructor_type_name + // + case 71: { + action.consumePsudoDestructorName(true); + break; + } + + // + // Rule 72: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt destructor_type_name + // + case 72: { + action.consumePsudoDestructorName(false); + break; + } + + // + // Rule 73: destructor_type_name ::= ~ identifier_token + // + case 73: { + action.consumeDestructorName(); + break; + } + + // + // Rule 74: destructor_type_name ::= ~ template_id_name + // + case 74: { + action.consumeDestructorNameTemplateId(); + break; + } + + // + // Rule 78: unary_expression ::= ++ cast_expression + // + case 78: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); + break; + } + + // + // Rule 79: unary_expression ::= -- cast_expression + // + case 79: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); + break; + } + + // + // Rule 80: unary_expression ::= & cast_expression + // + case 80: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); + break; + } + + // + // Rule 81: unary_expression ::= * cast_expression + // + case 81: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); + break; + } + + // + // Rule 82: unary_expression ::= + cast_expression + // + case 82: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); + break; + } + + // + // Rule 83: unary_expression ::= - cast_expression + // + case 83: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); + break; + } + + // + // Rule 84: unary_expression ::= ~ cast_expression + // + case 84: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); + break; + } + + // + // Rule 85: unary_expression ::= ! cast_expression + // + case 85: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); + break; + } + + // + // Rule 86: unary_expression ::= sizeof unary_expression + // + case 86: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); + break; + } + + // + // Rule 87: unary_expression ::= sizeof ( type_id ) + // + case 87: { + action.consumeExpressionTypeId(ICPPASTTypeIdExpression.op_sizeof); + break; + } + + // + // Rule 88: new_expression ::= dcolon_opt new new_placement_opt new_type_id new_array_expressions_opt new_initializer_opt + // + case 88: { + action.consumeExpressionNew(true); + break; + } + + // + // Rule 89: new_expression ::= dcolon_opt new new_placement_opt ( type_id ) new_array_expressions_opt new_initializer_opt + // + case 89: { + action.consumeExpressionNew(false); + break; + } + + // + // Rule 91: new_placement_opt ::= $Empty + // + case 91: { + action.consumeEmpty(); + break; + } + + // + // Rule 92: new_type_id ::= type_specifier_seq + // + case 92: { + action.consumeTypeId(false); + break; + } + + // + // Rule 93: new_type_id ::= type_specifier_seq new_declarator + // + case 93: { + action.consumeTypeId(true); + break; + } + + // + // Rule 94: new_declarator ::= new_pointer_operators + // + case 94: { + action.consumeNewDeclarator(); + break; + } + + // + // Rule 101: new_initializer ::= ( expression_list_opt ) + // + case 101: { + action.consumeNewInitializer(); + break; + } + + // + // Rule 103: new_initializer_opt ::= $Empty + // + case 103: { + action.consumeEmpty(); + break; + } + + // + // Rule 104: delete_expression ::= dcolon_opt delete cast_expression + // + case 104: { + action.consumeExpressionDelete(false); + break; + } + + // + // Rule 105: delete_expression ::= dcolon_opt delete [ ] cast_expression + // + case 105: { + action.consumeExpressionDelete(true); + break; + } + + // + // Rule 107: cast_expression ::= ( type_id ) cast_expression + // + case 107: { + action.consumeExpressionCast(ICPPASTCastExpression.op_cast); + break; + } + + // + // Rule 109: pm_expression ::= pm_expression .* cast_expression + // + case 109: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmdot); + break; + } + + // + // Rule 110: pm_expression ::= pm_expression ->* cast_expression + // + case 110: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmarrow); + break; + } + + // + // Rule 112: multiplicative_expression ::= multiplicative_expression * pm_expression + // + case 112: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiply); + break; + } + + // + // Rule 113: multiplicative_expression ::= multiplicative_expression / pm_expression + // + case 113: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divide); + break; + } + + // + // Rule 114: multiplicative_expression ::= multiplicative_expression % pm_expression + // + case 114: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_modulo); + break; + } + + // + // Rule 116: additive_expression ::= additive_expression + multiplicative_expression + // + case 116: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plus); + break; + } + + // + // Rule 117: additive_expression ::= additive_expression - multiplicative_expression + // + case 117: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minus); + break; + } + + // + // Rule 119: shift_expression ::= shift_expression << additive_expression + // + case 119: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeft); + break; + } + + // + // Rule 120: shift_expression ::= shift_expression >> additive_expression + // + case 120: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRight); + break; + } + + // + // Rule 122: relational_expression ::= relational_expression < shift_expression + // + case 122: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan); + break; + } + + // + // Rule 123: relational_expression ::= relational_expression > shift_expression + // + case 123: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan); + break; + } + + // + // Rule 124: relational_expression ::= relational_expression <= shift_expression + // + case 124: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual); + break; + } + + // + // Rule 125: relational_expression ::= relational_expression >= shift_expression + // + case 125: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual); + break; + } + + // + // Rule 127: equality_expression ::= equality_expression == relational_expression + // + case 127: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals); + break; + } + + // + // Rule 128: equality_expression ::= equality_expression != relational_expression + // + case 128: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals); + break; + } + + // + // Rule 130: and_expression ::= and_expression & equality_expression + // + case 130: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd); + break; + } + + // + // Rule 132: exclusive_or_expression ::= exclusive_or_expression ^ and_expression + // + case 132: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor); + break; + } + + // + // Rule 134: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression + // + case 134: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr); + break; + } + + // + // Rule 136: logical_and_expression ::= logical_and_expression && inclusive_or_expression + // + case 136: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd); + break; + } + + // + // Rule 138: logical_or_expression ::= logical_or_expression || logical_and_expression + // + case 138: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr); + break; + } + + // + // Rule 140: conditional_expression ::= logical_or_expression ? expression : assignment_expression + // + case 140: { + action.consumeExpressionConditional(); + break; + } + + // + // Rule 142: relational_expression_inTemplate ::= relational_expression_inTemplate < shift_expression + // + case 142: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan); + break; + } + + // + // Rule 143: relational_expression_inTemplate ::= ( relational_expression_inTemplate > shift_expression ) + // + case 143: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan); + break; + } + + // + // Rule 144: relational_expression_inTemplate ::= relational_expression_inTemplate <= shift_expression + // + case 144: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual); + break; + } + + // + // Rule 145: relational_expression_inTemplate ::= relational_expression_inTemplate >= shift_expression + // + case 145: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual); + break; + } + + // + // Rule 147: equality_expression_inTemplate ::= equality_expression_inTemplate == relational_expression_inTemplate + // + case 147: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals); + break; + } + + // + // Rule 148: equality_expression_inTemplate ::= equality_expression_inTemplate != relational_expression_inTemplate + // + case 148: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals); + break; + } + + // + // Rule 150: and_expression_inTemplate ::= and_expression_inTemplate & equality_expression_inTemplate + // + case 150: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd); + break; + } + + // + // Rule 152: exclusive_or_expression_inTemplate ::= exclusive_or_expression_inTemplate ^ and_expression_inTemplate + // + case 152: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor); + break; + } + + // + // Rule 154: inclusive_or_expression_inTemplate ::= inclusive_or_expression_inTemplate | exclusive_or_expression_inTemplate + // + case 154: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr); + break; + } + + // + // Rule 156: logical_and_expression_inTemplate ::= logical_and_expression_inTemplate && inclusive_or_expression_inTemplate + // + case 156: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd); + break; + } + + // + // Rule 158: logical_or_expression_inTemplate ::= logical_or_expression_inTemplate || logical_and_expression_inTemplate + // + case 158: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr); + break; + } + + // + // Rule 160: conditional_expression_inTemplate ::= logical_or_expression_inTemplate ? expression : assignment_expression_inTemplate + // + case 160: { + action.consumeExpressionConditional(); + break; + } + + // + // Rule 163: assignment_expression_inTemplate ::= logical_or_expression_inTemplate = assignment_expression_inTemplate + // + case 163: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign); + break; + } + + // + // Rule 164: assignment_expression_inTemplate ::= logical_or_expression_inTemplate *= assignment_expression_inTemplate + // + case 164: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign); + break; + } + + // + // Rule 165: assignment_expression_inTemplate ::= logical_or_expression_inTemplate /= assignment_expression_inTemplate + // + case 165: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign); + break; + } + + // + // Rule 166: assignment_expression_inTemplate ::= logical_or_expression_inTemplate %= assignment_expression_inTemplate + // + case 166: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign); + break; + } + + // + // Rule 167: assignment_expression_inTemplate ::= logical_or_expression_inTemplate += assignment_expression_inTemplate + // + case 167: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign); + break; + } + + // + // Rule 168: assignment_expression_inTemplate ::= logical_or_expression_inTemplate -= assignment_expression_inTemplate + // + case 168: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign); + break; + } + + // + // Rule 169: assignment_expression_inTemplate ::= logical_or_expression_inTemplate >>= assignment_expression_inTemplate + // + case 169: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign); + break; + } + + // + // Rule 170: assignment_expression_inTemplate ::= logical_or_expression_inTemplate <<= assignment_expression_inTemplate + // + case 170: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign); + break; + } + + // + // Rule 171: assignment_expression_inTemplate ::= logical_or_expression_inTemplate &= assignment_expression_inTemplate + // + case 171: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign); + break; + } + + // + // Rule 172: assignment_expression_inTemplate ::= logical_or_expression_inTemplate ^= assignment_expression_inTemplate + // + case 172: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign); + break; + } + + // + // Rule 173: assignment_expression_inTemplate ::= logical_or_expression_inTemplate |= assignment_expression_inTemplate + // + case 173: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign); + break; + } + + // + // Rule 174: throw_expression ::= throw + // + case 174: { + action.consumeExpressionThrow(false); + break; + } + + // + // Rule 175: throw_expression ::= throw assignment_expression + // + case 175: { + action.consumeExpressionThrow(true); + break; + } + + // + // Rule 178: assignment_expression ::= logical_or_expression = assignment_expression + // + case 178: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign); + break; + } + + // + // Rule 179: assignment_expression ::= logical_or_expression *= assignment_expression + // + case 179: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign); + break; + } + + // + // Rule 180: assignment_expression ::= logical_or_expression /= assignment_expression + // + case 180: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign); + break; + } + + // + // Rule 181: assignment_expression ::= logical_or_expression %= assignment_expression + // + case 181: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign); + break; + } + + // + // Rule 182: assignment_expression ::= logical_or_expression += assignment_expression + // + case 182: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign); + break; + } + + // + // Rule 183: assignment_expression ::= logical_or_expression -= assignment_expression + // + case 183: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign); + break; + } + + // + // Rule 184: assignment_expression ::= logical_or_expression >>= assignment_expression + // + case 184: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign); + break; + } + + // + // Rule 185: assignment_expression ::= logical_or_expression <<= assignment_expression + // + case 185: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign); + break; + } + + // + // Rule 186: assignment_expression ::= logical_or_expression &= assignment_expression + // + case 186: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign); + break; + } + + // + // Rule 187: assignment_expression ::= logical_or_expression ^= assignment_expression + // + case 187: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign); + break; + } + + // + // Rule 188: assignment_expression ::= logical_or_expression |= assignment_expression + // + case 188: { + action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign); + break; + } + + // + // Rule 190: expression_list ::= expression_list_actual + // + case 190: { + action.consumeExpressionList(); + break; + } + + // + // Rule 194: expression_list_opt ::= $Empty + // + case 194: { + action.consumeEmpty(); + break; + } + + // + // Rule 196: expression_opt ::= $Empty + // + case 196: { + action.consumeEmpty(); + break; + } + + // + // Rule 199: constant_expression_opt ::= $Empty + // + case 199: { + action.consumeEmpty(); + break; + } + + // + // Rule 208: statement ::= ERROR_TOKEN + // + case 208: { + action.consumeStatementProblem(); + break; + } + + // + // Rule 209: labeled_statement ::= identifier : statement + // + case 209: { + action.consumeStatementLabeled(); + break; + } + + // + // Rule 210: labeled_statement ::= case constant_expression : statement + // + case 210: { + action.consumeStatementCase(); + break; + } + + // + // Rule 211: labeled_statement ::= default : statement + // + case 211: { + action.consumeStatementDefault(); + break; + } + + // + // Rule 212: expression_statement ::= expression ; + // + case 212: { + action.consumeStatementExpression(); + break; + } + + // + // Rule 213: expression_statement ::= ; + // + case 213: { + action.consumeStatementNull(); + break; + } + + // + // Rule 214: compound_statement ::= { statement_seq } + // + case 214: { + action.consumeStatementCompoundStatement(true); + break; + } + + // + // Rule 215: compound_statement ::= { } + // + case 215: { + action.consumeStatementCompoundStatement(false); + break; + } + + // + // Rule 218: selection_statement ::= if ( condition ) statement + // + case 218: { + action.consumeStatementIf(false); + break; + } + + // + // Rule 219: selection_statement ::= if ( condition ) statement else statement + // + case 219: { + action.consumeStatementIf(true); + break; + } + + // + // Rule 220: selection_statement ::= switch ( condition ) statement + // + case 220: { + action.consumeStatementSwitch(); + break; + } + + // + // Rule 222: condition ::= type_specifier_seq declarator = assignment_expression + // + case 222: { + action.consumeConditionDeclaration(); + break; + } + + // + // Rule 224: condition_opt ::= $Empty + // + case 224: { + action.consumeEmpty(); + break; + } + + // + // Rule 225: iteration_statement ::= while ( condition ) statement + // + case 225: { + action.consumeStatementWhileLoop(); + break; + } + + // + // Rule 226: iteration_statement ::= do statement while ( expression ) ; + // + case 226: { + action.consumeStatementDoLoop(true); + break; + } + + // + // Rule 227: iteration_statement ::= do statement + // + case 227: { + action.consumeStatementDoLoop(false); + break; + } + + // + // Rule 228: iteration_statement ::= for ( for_init_statement condition_opt ; expression_opt ) statement + // + case 228: { + action.consumeStatementForLoop(); + break; + } + + // + // Rule 230: for_init_statement ::= simple_declaration_with_declspec + // + case 230: { + action.consumeStatementDeclaration(); + break; + } + + // + // Rule 231: jump_statement ::= break ; + // + case 231: { + action.consumeStatementBreak(); + break; + } + + // + // Rule 232: jump_statement ::= continue ; + // + case 232: { + action.consumeStatementContinue(); + break; + } + + // + // Rule 233: jump_statement ::= return expression ; + // + case 233: { + action.consumeStatementReturn(true); + break; + } + + // + // Rule 234: jump_statement ::= return ; + // + case 234: { + action.consumeStatementReturn(false); + break; + } + + // + // Rule 235: jump_statement ::= goto identifier_token ; + // + case 235: { + action.consumeStatementGoto(); + break; + } + + // + // Rule 236: declaration_statement ::= block_declaration + // + case 236: { + action.consumeStatementDeclarationWithDisambiguation(); + break; + } + + // + // Rule 237: declaration_statement ::= function_definition + // + case 237: { + action.consumeStatementDeclaration(); + break; + } + + // + // Rule 245: declaration ::= ERROR_TOKEN + // + case 245: { + action.consumeDeclarationProblem(); + break; + } + // + // Rule 255: simple_declaration ::= declaration_specifiers_opt init_declarator_list_opt ; + // + case 255: { + action.consumeDeclarationSimple(true); + break; + } + + // + // Rule 256: simple_declaration_with_declspec ::= declaration_specifiers init_declarator_list_opt ; + // + case 256: { + action.consumeDeclarationSimple(true); + break; + } + + // + // Rule 257: declaration_specifiers ::= simple_declaration_specifiers + // + case 257: { + action.consumeDeclarationSpecifiersSimple(); + break; + } + + // + // Rule 258: declaration_specifiers ::= class_declaration_specifiers + // + case 258: { + action.consumeDeclarationSpecifiersComposite(); + break; + } + + // + // Rule 259: declaration_specifiers ::= elaborated_declaration_specifiers + // + case 259: { + action.consumeDeclarationSpecifiersComposite(); + break; + } + + // + // Rule 260: declaration_specifiers ::= enum_declaration_specifiers + // + case 260: { + action.consumeDeclarationSpecifiersComposite(); + break; + } + + // + // Rule 261: declaration_specifiers ::= type_name_declaration_specifiers + // + case 261: { + action.consumeDeclarationSpecifiersTypeName(); + break; + } + + // + // Rule 263: declaration_specifiers_opt ::= $Empty + // + case 263: { + action.consumeEmpty(); + break; + } + + // + // Rule 267: no_type_declaration_specifier ::= friend + // + case 267: { + action.consumeToken(); + break; + } + + // + // Rule 268: no_type_declaration_specifier ::= typedef + // + case 268: { + action.consumeToken(); + break; + } + + // + // Rule 288: storage_class_specifier ::= auto + // + case 288: { + action.consumeToken(); + break; + } + + // + // Rule 289: storage_class_specifier ::= register + // + case 289: { + action.consumeToken(); + break; + } + + // + // Rule 290: storage_class_specifier ::= static + // + case 290: { + action.consumeToken(); + break; + } + + // + // Rule 291: storage_class_specifier ::= extern + // + case 291: { + action.consumeToken(); + break; + } + + // + // Rule 292: storage_class_specifier ::= mutable + // + case 292: { + action.consumeToken(); + break; + } + + // + // Rule 293: function_specifier ::= inline + // + case 293: { + action.consumeToken(); + break; + } + + // + // Rule 294: function_specifier ::= virtual + // + case 294: { + action.consumeToken(); + break; + } + + // + // Rule 295: function_specifier ::= explicit + // + case 295: { + action.consumeToken(); + break; + } + + // + // Rule 296: simple_type_specifier ::= simple_type_specifier_token + // + case 296: { + action.consumeToken(); + break; + } + + // + // Rule 310: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name + // + case 310: { + action.consumeQualifiedId(false); + break; + } + + // + // Rule 311: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name + // + case 311: { + action.consumeQualifiedId(false); + break; + } + + // + // Rule 312: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name + // + case 312: { + action.consumeQualifiedId(false); + break; + } + + // + // Rule 313: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name + // + case 313: { + action.consumeQualifiedId(true); + break; + } + + // + // Rule 315: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name + // + case 315: { + action.consumeTypeSpecifierElaborated(false); + break; + } + + // + // Rule 316: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name + // + case 316: { + action.consumeTypeSpecifierElaborated(true); + break; + } + + // + // Rule 317: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name + // + case 317: { + action.consumeTypeSpecifierElaborated(false); + break; + } + + // + // Rule 321: enum_specifier ::= enum enum_specifier_hook { enumerator_list_opt comma_opt } + // + case 321: { + action.consumeTypeSpecifierEnumeration(false); + break; + } + + // + // Rule 322: enum_specifier ::= enum enum_specifier_hook identifier_token { enumerator_list_opt comma_opt } + // + case 322: { + action.consumeTypeSpecifierEnumeration(true); + break; + } + + // + // Rule 328: enumerator_definition ::= identifier_token + // + case 328: { + action.consumeEnumerator(false); + break; + } + + // + // Rule 329: enumerator_definition ::= identifier_token = constant_expression + // + case 329: { + action.consumeEnumerator(true); + break; + } + + // + // Rule 331: namespace_definition ::= namespace namespace_name namespace_definition_hook { declaration_seq_opt } + // + case 331: { + action.consumeNamespaceDefinition(true); + break; + } + + // + // Rule 332: namespace_definition ::= namespace namespace_definition_hook { declaration_seq_opt } + // + case 332: { + action.consumeNamespaceDefinition(false); + break; + } + + // + // Rule 334: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ; + // + case 334: { + action.consumeNamespaceAliasDefinition(); + break; + } + + // + // Rule 335: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ; + // + case 335: { + action.consumeUsingDeclaration(); + break; + } + + // + // Rule 336: typename_opt ::= typename + // + case 336: { + action.consumePlaceHolder(); + break; + } + + // + // Rule 337: typename_opt ::= $Empty + // + case 337: { + action.consumeEmpty(); + break; + } + + // + // Rule 338: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ; + // + case 338: { + action.consumeUsingDirective(); + break; + } + + // + // Rule 339: linkage_specification ::= extern stringlit { declaration_seq_opt } + // + case 339: { + action.consumeLinkageSpecification(); + break; + } + + // + // Rule 340: linkage_specification ::= extern stringlit declaration + // + case 340: { + action.consumeLinkageSpecification(); + break; + } + + // + // Rule 345: init_declarator_complete ::= init_declarator + // + case 345: { + action.consumeInitDeclaratorComplete(); + break; + } + + // + // Rule 347: init_declarator ::= complete_declarator initializer + // + case 347: { + action.consumeDeclaratorWithInitializer(true); + break; + } + + // + // Rule 350: declarator ::= ptr_operator_seq direct_declarator + // + case 350: { + action.consumeDeclaratorWithPointer(true); + break; + } + + // + // Rule 352: function_declarator ::= ptr_operator_seq direct_declarator + // + case 352: { + action.consumeDeclaratorWithPointer(true); + break; + } + + // + // Rule 356: basic_direct_declarator ::= declarator_id_name + // + case 356: { + action.consumeDirectDeclaratorIdentifier(); + break; + } + + // + // Rule 357: basic_direct_declarator ::= ( declarator ) + // + case 357: { + action.consumeDirectDeclaratorBracketed(); + break; + } + + // + // Rule 358: function_direct_declarator ::= basic_direct_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // + case 358: { + action.consumeDirectDeclaratorFunctionDeclarator(true); + break; + } + + // + // Rule 359: array_direct_declarator ::= array_direct_declarator array_modifier + // + case 359: { + action.consumeDirectDeclaratorArrayDeclarator(true); + break; + } + + // + // Rule 360: array_direct_declarator ::= basic_direct_declarator array_modifier + // + case 360: { + action.consumeDirectDeclaratorArrayDeclarator(true); + break; + } + + // + // Rule 361: array_modifier ::= [ constant_expression ] + // + case 361: { + action.consumeDirectDeclaratorArrayModifier(true); + break; + } + + // + // Rule 362: array_modifier ::= [ ] + // + case 362: { + action.consumeDirectDeclaratorArrayModifier(false); + break; + } + + // + // Rule 363: ptr_operator ::= pointer_hook * pointer_hook cv_qualifier_seq_opt + // + case 363: { + action.consumePointer(); + break; + } + + // + // Rule 364: ptr_operator ::= pointer_hook & pointer_hook + // + case 364: { + action.consumeReferenceOperator(); + break; + } + + // + // Rule 365: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook cv_qualifier_seq_opt + // + case 365: { + action.consumePointerToMember(); + break; + } + + // + // Rule 372: cv_qualifier ::= const + // + case 372: { + action.consumeToken(); + break; + } + + // + // Rule 373: cv_qualifier ::= volatile + // + case 373: { + action.consumeToken(); + break; + } + + // + // Rule 375: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name + // + case 375: { + action.consumeQualifiedId(false); + break; + } + + // + // Rule 376: type_id ::= type_specifier_seq + // + case 376: { + action.consumeTypeId(false); + break; + } + + // + // Rule 377: type_id ::= type_specifier_seq abstract_declarator + // + case 377: { + action.consumeTypeId(true); + break; + } + + // + // Rule 380: abstract_declarator ::= ptr_operator_seq + // + case 380: { + action.consumeDeclaratorWithPointer(false); + break; + } + + // + // Rule 381: abstract_declarator ::= ptr_operator_seq direct_abstract_declarator + // + case 381: { + action.consumeDeclaratorWithPointer(true); + break; + } + + // + // Rule 385: basic_direct_abstract_declarator ::= ( abstract_declarator ) + // + case 385: { + action.consumeDirectDeclaratorBracketed(); + break; + } + + // + // Rule 386: basic_direct_abstract_declarator ::= ( ) + // + case 386: { + action.consumeAbstractDeclaratorEmpty(); + break; + } + + // + // Rule 387: array_direct_abstract_declarator ::= array_modifier + // + case 387: { + action.consumeDirectDeclaratorArrayDeclarator(false); + break; + } + + // + // Rule 388: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier + // + case 388: { + action.consumeDirectDeclaratorArrayDeclarator(true); + break; + } + + // + // Rule 389: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier + // + case 389: { + action.consumeDirectDeclaratorArrayDeclarator(true); + break; + } + + // + // Rule 390: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // + case 390: { + action.consumeDirectDeclaratorFunctionDeclarator(true); + break; + } + + // + // Rule 391: function_direct_abstract_declarator ::= ( parameter_declaration_clause ) cv_qualifier_seq_opt exception_specification_opt + // + case 391: { + action.consumeDirectDeclaratorFunctionDeclarator(false); + break; + } + + // + // Rule 392: parameter_declaration_clause ::= parameter_declaration_list_opt ... + // + case 392: { + action.consumePlaceHolder(); + break; + } + + // + // Rule 393: parameter_declaration_clause ::= parameter_declaration_list_opt + // + case 393: { + action.consumeEmpty(); + break; + } + + // + // Rule 394: parameter_declaration_clause ::= parameter_declaration_list , ... + // + case 394: { + action.consumePlaceHolder(); + break; + } + + // + // Rule 400: abstract_declarator_opt ::= $Empty + // + case 400: { + action.consumeEmpty(); + break; + } + + // + // Rule 401: parameter_declaration ::= declaration_specifiers parameter_init_declarator + // + case 401: { + action.consumeParameterDeclaration(); + break; + } + + // + // Rule 402: parameter_declaration ::= declaration_specifiers + // + case 402: { + action.consumeParameterDeclarationWithoutDeclarator(); + break; + } + + // + // Rule 404: parameter_init_declarator ::= declarator = parameter_initializer + // + case 404: { + action.consumeDeclaratorWithInitializer(true); + break; + } + + // + // Rule 406: parameter_init_declarator ::= abstract_declarator = parameter_initializer + // + case 406: { + action.consumeDeclaratorWithInitializer(true); + break; + } + + // + // Rule 407: parameter_init_declarator ::= = parameter_initializer + // + case 407: { + action.consumeDeclaratorWithInitializer(false); + break; + } + + // + // Rule 408: parameter_initializer ::= assignment_expression + // + case 408: { + action.consumeInitializer(); + break; + } + + // + // Rule 409: function_definition ::= declaration_specifiers_opt function_declarator ctor_initializer_list_opt function_body + // + case 409: { + action.consumeFunctionDefinition(false); + break; + } + + // + // Rule 410: function_definition ::= declaration_specifiers_opt function_declarator try ctor_initializer_list_opt function_body handler_seq + // + case 410: { + action.consumeFunctionDefinition(true); + break; + } + + // + // Rule 413: initializer ::= ( expression_list ) + // + case 413: { + action.consumeInitializerConstructor(); + break; + } + + // + // Rule 414: initializer_clause ::= assignment_expression + // + case 414: { + action.consumeInitializer(); + break; + } + + // + // Rule 415: initializer_clause ::= initializer_list + // + case 415: { + action.consumeInitializer(); + break; + } + + // + // Rule 416: initializer_list ::= start_initializer_list { initializer_seq , } end_initializer_list + // + case 416: { + action.consumeInitializerList(); + break; + } + + // + // Rule 417: initializer_list ::= start_initializer_list { initializer_seq } end_initializer_list + // + case 417: { + action.consumeInitializerList(); + break; + } + + // + // Rule 418: initializer_list ::= { } + // + case 418: { + action.consumeInitializerList(); + break; + } + + // + // Rule 419: start_initializer_list ::= $Empty + // + case 419: { + action.initializerListStart(); + break; + } + + // + // Rule 420: end_initializer_list ::= $Empty + // + case 420: { + action.initializerListEnd(); + break; + } + + // + // Rule 425: class_specifier ::= class_head { member_declaration_list_opt } + // + case 425: { + action.consumeClassSpecifier(); + break; + } + + // + // Rule 426: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook base_clause_opt + // + case 426: { + action.consumeClassHead(false); + break; + } + + // + // Rule 427: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook base_clause_opt + // + case 427: { + action.consumeClassHead(false); + break; + } + + // + // Rule 428: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook base_clause_opt + // + case 428: { + action.consumeClassHead(true); + break; + } + + // + // Rule 429: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook base_clause_opt + // + case 429: { + action.consumeClassHead(true); + break; + } + + // + // Rule 433: identifier_name_opt ::= $Empty + // + case 433: { + action.consumeEmpty(); + break; + } + + // + // Rule 437: visibility_label ::= access_specifier_keyword : + // + case 437: { + action.consumeVisibilityLabel(); + break; + } + + // + // Rule 438: member_declaration ::= declaration_specifiers_opt member_declarator_list ; + // + case 438: { + action.consumeDeclarationSimple(true); + break; + } + + // + // Rule 439: member_declaration ::= declaration_specifiers_opt ; + // + case 439: { + action.consumeDeclarationSimple(false); + break; + } + + // + // Rule 442: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; + // + case 442: { + action.consumeMemberDeclarationQualifiedId(); + break; + } + + // + // Rule 448: member_declaration ::= ERROR_TOKEN + // + case 448: { + action.consumeDeclarationProblem(); + break; + } + + // + // Rule 457: member_declarator ::= declarator constant_initializer + // + case 457: { + action.consumeMemberDeclaratorWithInitializer(); + break; + } + + // + // Rule 458: member_declarator ::= bit_field_declarator : constant_expression + // + case 458: { + action.consumeBitField(true); + break; + } + + // + // Rule 459: member_declarator ::= : constant_expression + // + case 459: { + action.consumeBitField(false); + break; + } + + // + // Rule 460: bit_field_declarator ::= identifier_name + // + case 460: { + action.consumeDirectDeclaratorIdentifier(); + break; + } + + // + // Rule 461: constant_initializer ::= = constant_expression + // + case 461: { + action.consumeInitializer(); + break; + } + + // + // Rule 467: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name + // + case 467: { + action.consumeBaseSpecifier(false, false); + break; + } + + // + // Rule 468: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name + // + case 468: { + action.consumeBaseSpecifier(true, true); + break; + } + + // + // Rule 469: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name + // + case 469: { + action.consumeBaseSpecifier(true, true); + break; + } + + // + // Rule 470: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name + // + case 470: { + action.consumeBaseSpecifier(true, false); + break; + } + + // + // Rule 471: access_specifier_keyword ::= private + // + case 471: { + action.consumeToken(); + break; + } + + // + // Rule 472: access_specifier_keyword ::= protected + // + case 472: { + action.consumeToken(); + break; + } + + // + // Rule 473: access_specifier_keyword ::= public + // + case 473: { + action.consumeToken(); + break; + } + + // + // Rule 475: access_specifier_keyword_opt ::= $Empty + // + case 475: { + action.consumeEmpty(); + break; + } + + // + // Rule 477: conversion_function_id_name ::= conversion_function_id < template_argument_list_opt > + // + case 477: { + action.consumeTemplateId(); + break; + } + + // + // Rule 478: conversion_function_id ::= operator conversion_type_id + // + case 478: { + action.consumeConversionName(); + break; + } + + // + // Rule 479: conversion_type_id ::= type_specifier_seq conversion_declarator + // + case 479: { + action.consumeTypeId(true); + break; + } + + // + // Rule 480: conversion_type_id ::= type_specifier_seq + // + case 480: { + action.consumeTypeId(false); + break; + } + + // + // Rule 481: conversion_declarator ::= ptr_operator_seq + // + case 481: { + action.consumeDeclaratorWithPointer(false); + break; + } + + // + // Rule 487: mem_initializer ::= mem_initializer_name ( expression_list_opt ) + // + case 487: { + action.consumeConstructorChainInitializer(); + break; + } + + // + // Rule 488: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name + // + case 488: { + action.consumeQualifiedId(false); + break; + } + + // + // Rule 491: operator_function_id_name ::= operator_id_name < template_argument_list_opt > + // + case 491: { + action.consumeTemplateId(); + break; + } + + // + // Rule 492: operator_id_name ::= operator overloadable_operator + // + case 492: { + action.consumeOperatorName(); + break; + } + + // + // Rule 535: template_declaration ::= export_opt template < template_parameter_list > declaration + // + case 535: { + action.consumeTemplateDeclaration(); + break; + } + + // + // Rule 536: export_opt ::= export + // + case 536: { + action.consumePlaceHolder(); + break; + } + + // + // Rule 537: export_opt ::= $Empty + // + case 537: { + action.consumeEmpty(); + break; + } + + // + // Rule 541: template_parameter ::= parameter_declaration + // + case 541: { + action.consumeTemplateParamterDeclaration(); + break; + } + + // + // Rule 542: type_parameter ::= class identifier_name_opt + // + case 542: { + action.consumeSimpleTypeTemplateParameter(false); + break; + } + + // + // Rule 543: type_parameter ::= class identifier_name_opt = type_id + // + case 543: { + action.consumeSimpleTypeTemplateParameter(true); + break; + } + + // + // Rule 544: type_parameter ::= typename identifier_name_opt + // + case 544: { + action.consumeSimpleTypeTemplateParameter(false); + break; + } + + // + // Rule 545: type_parameter ::= typename identifier_name_opt = type_id + // + case 545: { + action.consumeSimpleTypeTemplateParameter(true); + break; + } + + // + // Rule 546: type_parameter ::= template < template_parameter_list > class identifier_name_opt + // + case 546: { + action.consumeTemplatedTypeTemplateParameter(false); + break; + } + + // + // Rule 547: type_parameter ::= template < template_parameter_list > class identifier_name_opt = id_expression + // + case 547: { + action.consumeTemplatedTypeTemplateParameter(true); + break; + } + + // + // Rule 548: template_id_name ::= identifier_name < template_argument_list_opt > + // + case 548: { + action.consumeTemplateId(); + break; + } + + // + // Rule 555: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate :: nested_name_specifier_with_template_inTemplate + // + case 555: { + action.consumeNestedNameSpecifier(true); + break; + } + + // + // Rule 556: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate :: + // + case 556: { + action.consumeNestedNameSpecifier(false); + break; + } + + // + // Rule 557: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate :: nested_name_specifier_with_template_inTemplate + // + case 557: { + action.consumeNestedNameSpecifier(true); + break; + } + + // + // Rule 558: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate :: + // + case 558: { + action.consumeNestedNameSpecifier(false); + break; + } + + // + // Rule 559: class_or_namespace_name_with_template_inTemplate ::= template_opt class_or_namespace_name_inTemplate + // + case 559: { + action.consumeNameWithTemplateKeyword(); + break; + } + + // + // Rule 561: nested_name_specifier_opt_inTemplate ::= $Empty + // + case 561: { + action.consumeNestedNameSpecifierEmpty(); + break; + } + + // + // Rule 564: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier identifier_name + // + case 564: { + action.consumeQualifiedId(false); + break; + } + + // + // Rule 565: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier template_opt template_id_name + // + case 565: { + action.consumeQualifiedId(true); + break; + } + + // + // Rule 570: declaration_specifiers_inTemplate ::= simple_declaration_specifiers + // + case 570: { + action.consumeDeclarationSpecifiersSimple(); + break; + } + + // + // Rule 571: declaration_specifiers_inTemplate ::= class_declaration_specifiers + // + case 571: { + action.consumeDeclarationSpecifiersComposite(); + break; + } + + // + // Rule 572: declaration_specifiers_inTemplate ::= elaborated_declaration_specifiers + // + case 572: { + action.consumeDeclarationSpecifiersComposite(); + break; + } + + // + // Rule 573: declaration_specifiers_inTemplate ::= enum_declaration_specifiers + // + case 573: { + action.consumeDeclarationSpecifiersComposite(); + break; + } + + // + // Rule 574: declaration_specifiers_inTemplate ::= type_name_declaration_specifiers_inTemplate + // + case 574: { + action.consumeDeclarationSpecifiersTypeName(); + break; + } + + // + // Rule 576: type_id_inTemplate ::= type_specifier_seq_inTemplate + // + case 576: { + action.consumeTypeId(false); + break; + } + + // + // Rule 577: type_id_inTemplate ::= type_specifier_seq_inTemplate abstract_declarator + // + case 577: { + action.consumeTypeId(true); + break; + } + + // + // Rule 578: template_argument ::= assignment_expression_inTemplate + // + case 578: { + action.consumeTemplateArgumentExpression(); + break; + } + + // + // Rule 579: template_argument ::= type_id_inTemplate + // + case 579: { + action.consumeTemplateArgumentTypeId(); + break; + } + + // + // Rule 580: explicit_instantiation ::= template declaration + // + case 580: { + action.consumeTemplateExplicitInstantiation(); + break; + } + + // + // Rule 581: explicit_specialization ::= template < > declaration + // + case 581: { + action.consumeTemplateExplicitSpecialization(); + break; + } + + // + // Rule 582: try_block ::= try compound_statement handler_seq + // + case 582: { + action.consumeStatementTryBlock(true); + break; + } + + // + // Rule 583: try_block ::= try compound_statement + // + case 583: { + action.consumeStatementTryBlock(false); + break; + } + + // + // Rule 586: handler ::= catch ( exception_declaration ) compound_statement + // + case 586: { + action.consumeStatementCatchHandler(false); + break; + } + + // + // Rule 587: handler ::= catch ( ... ) compound_statement + // + case 587: { + action.consumeStatementCatchHandler(true); + break; + } + + // + // Rule 588: exception_declaration ::= type_specifier_seq declarator + // + case 588: { + action.consumeDeclarationSimple(true); + break; + } + + // + // Rule 589: exception_declaration ::= type_specifier_seq abstract_declarator + // + case 589: { + action.consumeDeclarationSimple(true); + break; + } + + // + // Rule 590: exception_declaration ::= type_specifier_seq + // + case 590: { + action.consumeDeclarationSimple(false); + break; + } + + // + // Rule 592: exception_specification ::= throw ( ) + // + case 592: { + action.consumePlaceHolder(); + break; + } + + // + // Rule 613: attribute_parameter ::= assignment_expression + // + case 613: { + action.consumeIgnore(); + break; + } + + // + // Rule 624: extended_asm_declaration ::= asm volatile_opt ( extended_asm_param_seq ) ; + // + case 624: { + gnuAction.consumeDeclarationASM(); + break; + } + + // + // Rule 635: unary_expression ::= __alignof__ unary_expression + // + case 635: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_alignOf); + break; + } + + // + // Rule 636: unary_expression ::= __alignof__ ( type_id ) + // + case 636: { + action.consumeExpressionTypeId(IASTTypeIdExpression.op_alignof); + break; + } + + // + // Rule 637: unary_expression ::= typeof unary_expression + // + case 637: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); + break; + } + + // + // Rule 638: unary_expression ::= typeof ( type_id ) + // + case 638: { + action.consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); + break; + } + + // + // Rule 639: relational_expression ::= relational_expression >? shift_expression + // + case 639: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_max); + break; + } + + // + // Rule 640: relational_expression ::= relational_expression : assignment_expression + // + case 641: { + action.consumeExpressionConditional(); + break; + } + + // + // Rule 642: primary_expression ::= ( compound_statement ) + // + case 642: { + gnuAction.consumeCompoundStatementExpression(); + break; + } + + // + // Rule 643: labeled_statement ::= case case_range_expression : statement + // + case 643: { + action.consumeStatementCase(); + break; + } + + // + // Rule 644: case_range_expression ::= constant_expression ... constant_expression + // + case 644: { + action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); + break; + } + + // + // Rule 648: typeof_type_specifier ::= typeof unary_expression + // + case 648: { + action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); + break; + } + + // + // Rule 649: typeof_type_specifier ::= typeof ( type_id ) + // + case 649: { + action.consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); + break; + } + + // + // Rule 650: declaration_specifiers ::= typeof_declaration_specifiers + // + case 650: { + action.consumeDeclarationSpecifiersTypeof(); + break; + } + + // + // Rule 663: declarator ::= ptr_operator_seq attribute_or_decl_specifier_seq direct_declarator + // + case 663: { + action.consumeDeclaratorWithPointer(true); + break; + } + + // + // Rule 666: simple_type_specifier ::= _Complex + // + case 666: { + action.consumeToken(); + break; + } + + // + // Rule 667: simple_type_specifier ::= _Imaginary + // + case 667: { + action.consumeToken(); + break; + } + + // + // Rule 668: cv_qualifier ::= restrict + // + case 668: { + action.consumeToken(); + break; + } + + // + // Rule 669: explicit_instantiation ::= extern template declaration + // + case 669: { + action.consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_extern); + break; + } + + // + // Rule 670: explicit_instantiation ::= static template declaration + // + case 670: { + action.consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_static); + break; + } + + // + // Rule 671: explicit_instantiation ::= inline template declaration + // + case 671: { + action.consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_inline); + break; + } + + // + // Rule 672: postfix_expression ::= ( type_id ) initializer_list + // + case 672: { + action.consumeExpressionTypeIdInitializer(); + break; + } + + // + // Rule 676: type_id ::= vector_type + // + case 676: { + action.consumeTypeId(false); + break; + } + + // + // Rule 677: type_id ::= vector_type abstract_declarator + // + case 677: { + action.consumeTypeId(true); + break; + } + + // + // Rule 678: vector_declaration ::= vector_type init_declarator_list ; + // + case 678: { + action.consumeDeclarationSimple(true); + break; + } + + // + // Rule 679: vector_type ::= no_type_declaration_specifiers_opt vector vector_type_specifier all_specifier_qualifier_list_opt + // + case 679: { + action.consumeVectorTypeSpecifier(); + break; + } + + // + // Rule 680: vector_type_specifier ::= vector_type_specifier_token + // + case 680: { + action.consumeToken(); + break; + } + + // + // Rule 703: specifier_qualifier ::= typedef + // + case 703: { + action.consumeToken(); + break; + } + + // + // Rule 704: array_modifier ::= [ array_modifier_type_qualifiers ] + // + case 704: { + action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); + break; + } + + // + // Rule 705: array_modifier ::= [ array_modifier_type_qualifiers assignment_expression ] + // + case 705: { + action.consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); + break; + } + + // + // Rule 706: array_modifier ::= [ static assignment_expression ] + // + case 706: { + action.consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); + break; + } + + // + // Rule 707: array_modifier ::= [ static array_modifier_type_qualifiers assignment_expression ] + // + case 707: { + action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); + break; + } + + // + // Rule 708: array_modifier ::= [ array_modifier_type_qualifiers static assignment_expression ] + // + case 708: { + action.consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); + break; + } + + // + // Rule 709: array_modifier ::= [ * ] + // + case 709: { + action.consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); + break; + } + + // + // Rule 710: array_modifier ::= [ array_modifier_type_qualifiers * ] + // + case 710: { + action.consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); + break; + } + + // + // Rule 715: static_assert_declaration ::= __static_assert ( expression , literal ) ; + // + case 715: { + action.consumeCPPASTStaticAssertDeclaration(); + break; + } + + default: + break; + } + return; + } +} diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParserprs.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParserprs.java index c1989d0224a..2182dbd1aa4 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParserprs.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParserprs.java @@ -18,4396 +18,2045 @@ package org.eclipse.cdt.internal.core.lrparser.xlc.cpp; public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPParsersym { - public interface IsKeyword { - public final static byte isKeyword[] = {0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0 - }; - }; - public final static byte isKeyword[] = IsKeyword.isKeyword; - public final boolean isKeyword(int index) { return isKeyword[index] != 0; } + public interface IsKeyword { + public final static byte isKeyword[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + }; - public interface BaseCheck0 { - public final static short baseCheck0[] = {0, - 0,0,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,3,1,1,1,1,1,1, - 1,1,2,2,1,1,0,1,0,4, - 2,3,2,3,2,2,1,0,1,1, - 4,4,4,8,8,3,3,4,4,3, - 3,2,2,7,7,7,7,4,4,5, - 6,3,2,2,1,1,1,2,2,2, - 2,2,2,2,2,2,4,7,9,3, - 0,1,2,2,1,2,3,4,1,0, - 3,1,0,3,5,1,4,1,3,3, - 1,3,3,3,1,3,3,1,3,3, - 1,3,3,3,3,1,3,3,1,3, - 1,3,1,3,1,3,1,3,1,5, - 1,3,5,3,3,1,3,3,1,3, - 1,3,1,3,1,3,1,3,1,5, - 1,1,3,3,3,3,3,3,3,3, - 3,3,3,1,2,1,1,3,3,3, - 3,3,3,3,3,3,3,3,1,2, - 1,3,1,0,1,0,1,1,0,1, - 1,1,1,1,1,1,1,1,3,4, - 3,2,1,4,2,1,2,5,7,5, - 1,4,1,0,5,7,2,8,1,1, - 2,2,3,2,3,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,2,1,0,4,4,2,2,2,2, - 2,1,0,1,1,1,1,1,1,2, - 1,2,2,2,1,1,2,2,1,2, - 2,1,2,2,1,2,2,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,3, - 4,4,5,2,5,6,5,0,1,0, - 7,8,0,1,3,1,0,1,3,1, - 7,6,0,7,6,1,0,6,6,4, - 1,3,1,0,1,1,2,1,1,3, - 1,3,1,1,1,1,3,9,2,2, - 3,2,5,3,7,0,1,2,2,1, - 0,1,1,1,3,1,2,1,1,2, - 3,1,1,1,3,2,1,2,2,9, - 8,2,1,3,1,3,1,0,1,0, - 2,1,1,3,1,3,2,1,5,8, - 1,2,3,1,1,7,6,3,0,0, - 1,3,1,1,5,6,6,7,7,0, - 0,1,0,1,1,1,2,4,2,2, - 1,5,1,1,1,1,1,1,1,2, - 1,0,1,3,1,1,2,3,2,1, - 2,2,1,0,1,3,3,5,5,4, - 1,1,1,1,0,1,5,2,2,1, - 2,2,1,0,1,3,4,3,1,1, - 5,2,1,1,3,3,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,2,2,7,1,0,1,3,1, - 1,2,4,2,4,7,9,5,1,3, - 1,0,1,1,3,2,3,2,2,1, - 0,1,1,4,5,2,1,2,2,2, - 2,2,2,2,1,1,2,1,1,2, - 4,4,2,1,2,5,5,3,3,1, - 4,3,1,0,1,3,1,1,1,1, - 2,6,3,1,3,1,4,0,1,1, - 1,3,1,0,4,3,1,2,1,3, - 4,4,4,6,1,0,1,3,1,3, - 0,1,4,5,2,4,2,4,3,3, - 5,3,4,3,1,2,2,2,4,2, - 1,1,2,2,3,2,2,3,1,1, - 1,1,4,1,1,1,1,1,3,3, - 3,4,1,1,1,1,2,4,5,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,2,1,0,1,0,1,1,1, - 1,1,1,4,5,4,6,6,3,5, - 1,1,2,1,7,-199,0,0,0,0, - -5,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-6,-139,0,0, - -2,0,0,0,0,-73,-3,0,-4,0, - 0,0,0,0,0,0,-207,0,0,0, - 0,-420,0,0,0,0,0,0,0,-64, - -265,-16,0,0,0,0,0,-266,0,0, - 0,0,-123,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-9,0,0,-47,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-10,-18,0,0,-111,0, - 0,-81,0,0,0,0,0,0,-43,0, - 0,0,0,-416,0,0,0,0,0,-42, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-11,0,0,-13,-627,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-329, - 0,0,-58,0,0,0,0,-170,-20,0, - -190,0,0,0,-60,0,0,0,0,0, - 0,0,0,-306,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-221,0, - 0,0,0,0,0,0,0,-182,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-499,0,0,0,0, - 0,-28,0,0,0,0,-69,-19,0,0, - 0,0,0,0,0,0,0,0,0,0, - -164,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-174,0,0,0,-217,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-435,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-35,0,0,0,0,-474,0,0, - 0,0,0,-183,0,0,-21,0,-79,-185, - -66,0,0,0,0,0,0,0,0,-155, - 0,0,0,0,0,0,-169,-218,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-436,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-338,0,0,0,0,-23,-67,0, - 0,0,0,-573,0,0,0,0,-369,0, - 0,0,0,0,0,0,0,0,0,-206, - 0,0,0,0,0,-130,-24,-453,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-240,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-493,0,0,0,-163,0,0,0, - 0,0,0,0,0,0,0,0,-429,0, - 0,0,0,0,0,-222,0,0,0,-618, - 0,0,0,-519,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -40,0,0,0,-407,0,0,0,-191,0, - 0,0,0,0,0,0,-82,-25,0,0, - 0,0,0,-208,0,0,0,0,-652,0, - 0,0,0,0,0,0,0,-540,0,0, - 0,0,0,-223,0,0,0,0,-681,0, - 0,0,0,0,-653,0,0,0,0,-412, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-303,0,0,0,0,0,0,0,-77, - 0,0,0,0,0,0,0,-693,-26,0, - 0,0,0,0,-156,0,0,0,0,-585, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-274,0,-184,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-273,0,0, - 0,0,0,0,-84,-526,0,0,0,0, - 0,0,0,0,0,0,0,0,-34,-409, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-680,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,-62,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-44, - -536,-537,0,0,0,0,0,-196,0,0, - 0,0,0,-283,0,0,-57,0,0,-611, - 0,0,-160,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-305, - 0,0,-660,0,0,0,0,0,0,0, - 0,0,-107,-45,0,0,0,0,0,-272, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-614,0,0, - -80,-137,0,0,0,0,0,0,0,0, - 0,0,-48,0,0,0,-209,-688,0,-50, - -326,0,-320,0,0,0,0,0,0,0, - 0,-280,0,0,-51,-417,0,-718,0,0, - 0,0,0,0,0,0,0,0,0,0, - -74,0,0,0,-633,-403,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-138,0,0,0,0,0,0, - 0,0,0,0,0,-54,0,0,-475,-404, - 0,0,0,0,0,-504,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-401,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-210,0, - 0,0,0,0,0,-590,0,0,0,0, - -59,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-121,0,-61,0,0, - 0,0,0,0,0,0,0,0,-610,0, - 0,0,0,0,0,-591,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-118,-83,-418,0,0,0,0,0, - 0,0,0,0,0,-112,0,0,-76,-534, - 0,0,-289,-212,0,-179,-86,0,0,0, - 0,0,0,0,0,-600,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-110,0,0,-535,0,0,0,0, - 0,0,0,0,0,-658,-371,0,-451,0, - 0,0,0,0,0,-152,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-87,0,-88,-119,0,0,0,0, - 0,0,0,0,0,0,-269,0,0,-102, - 0,0,-103,0,0,-231,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-492,0,0,0,0,0,0,0, - 0,0,0,0,0,-647,-354,0,-576,-104, - 0,0,0,0,0,-254,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-120,0,0,0,0, - 0,0,0,0,0,0,-105,0,-56,-485, - 0,0,-353,0,0,0,-124,-255,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-574,0,0,0,0,0, - 0,0,-131,0,0,0,0,0,-372,0, - -577,-295,0,0,-106,0,0,-256,0,0, - 0,0,-454,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-583,0,0,0, - 0,0,0,0,0,0,0,0,-108,0, - -578,0,0,0,-165,0,0,-257,0,0, - 0,0,-109,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-461,0,0,0,-113,0, - 0,0,-399,0,0,0,0,0,-117,0, - -278,-125,0,0,0,0,0,-258,0,0, - 0,0,-502,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-584,0,0,0,-126,-333, - 0,0,-132,0,0,0,0,0,0,0, - -579,-127,0,0,-172,0,0,-259,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-708,0,0,0,0,0, - 0,0,-644,0,0,0,0,0,0,0, - -620,-128,0,0,-193,0,0,-260,0,0, - 0,0,-588,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-135,0,0, - 0,0,0,0,0,0,0,0,-515,0, - -279,-656,0,0,-347,0,0,-261,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-636,0,0,0,-478,0, - 0,0,-679,0,0,0,0,-211,0,0, - -136,0,0,0,-140,0,0,-262,0,0, - 0,0,-142,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-661,0,0,0,0,0, - 0,0,-143,0,0,0,0,0,0,0, - -281,0,0,0,0,0,0,-263,0,0, - 0,0,-144,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-370,0,0,-145,-146, - 0,0,-180,0,0,0,0,0,0,0, - -328,-530,0,0,-147,0,0,-264,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-228,0,-716,-419,0,0, - 0,0,-148,0,0,0,0,0,-291,0, - -268,0,0,0,-479,0,0,-310,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-702,0,0,0,0,-374, - 0,0,0,-334,0,0,0,0,0,-349, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-149,0,0,0,0,-351,0,0, - 0,0,-538,0,0,0,0,0,0,0, - 0,-683,-440,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-194, - -441,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-150,0,-151, - 0,0,-175,0,-129,0,0,0,0,-300, - 0,-195,0,-375,0,-230,0,0,0,-302, - -232,0,-153,0,0,0,0,0,0,0, - 0,0,0,0,0,-166,-197,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -167,0,0,0,0,0,-442,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-267,-443,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-171,-304,0,0,-589,0,0,-286, - -322,0,0,0,-288,-323,0,-177,-359,-324, - 0,0,0,0,0,0,-192,0,-400,0, - 0,0,0,0,0,0,0,0,0,-659, - -198,0,-276,0,0,0,0,0,0,0, - 0,0,-555,0,0,0,0,0,0,0, - -444,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-325,-445,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-341,-282,-467,0,0, - -710,0,-685,0,0,0,-703,0,0,0, - 0,-287,0,0,0,0,0,-414,-496,0, - -292,0,0,0,0,0,0,0,0,0, - 0,0,-415,-476,-309,-460,-294,0,0,0, - 0,0,0,0,0,0,0,0,-307,0, - 0,0,0,0,-446,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-447,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-342, - 0,0,0,0,-711,0,-704,0,0,0, - -483,-176,-348,-311,0,0,-497,-352,0,0, - 0,0,-312,0,-313,0,-314,0,0,0, - 0,0,0,0,0,0,-315,-316,0,0, - 0,0,0,-317,0,0,0,0,0,0, - 0,0,-597,0,0,0,0,0,-448,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-363,-449,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-318,-649,-319,0,0,-30,0, - -662,-613,-321,-335,-336,-14,0,0,0,-477, - -503,-406,0,-512,0,0,-337,0,0,0, - -343,0,0,0,0,0,0,0,0,-402, - -522,-516,0,0,0,0,0,0,0,-344, - 0,0,0,0,0,0,-345,0,0,0, - 0,0,-450,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -253,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-570,-346, - 0,0,0,0,0,-355,0,0,0,0, - 0,0,0,-357,-587,-617,0,-358,0,0, - 0,0,-455,0,-408,0,0,0,-465,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-360,0,0,-495,0, - 0,0,0,0,0,0,0,0,0,-361, - 0,0,0,0,0,-517,0,0,0,0, - -364,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-158,-410,-366,-367,-368,0,0, - -598,0,0,0,0,-377,0,0,-527,-567, - 0,0,-378,-379,0,-78,0,0,0,-568, - 0,0,0,0,0,0,0,-518,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-380,0,0,0,-381,0, - 0,0,-382,0,0,0,0,0,-383,0, - 0,0,0,0,-411,-384,0,-520,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-630,-385,0,0,-386,0, - 0,0,-634,0,0,0,0,0,-387,0, - -388,-601,0,0,-462,-481,0,-524,-521,0, - 0,0,0,-389,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-390,0,0,-391,0, - 0,0,0,0,0,0,0,0,-599,0, - 0,-650,-392,0,0,-393,0,0,-616,0, - 0,0,0,-394,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-525,-251,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-395,-500,-396,0,0,-673,0, - 0,-675,0,0,0,-669,0,-694,0,-397, - 0,-696,0,-700,0,-398,0,0,0,0, - -554,0,0,0,-691,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-405,0,0,-709,0,-707,0,0,0, - 0,0,0,0,-421,-422,0,-671,-456,0, - 0,-571,0,0,-528,0,0,0,0,-665, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-430,0,0,0,-464,-466,-468,0,0, - 0,0,0,0,0,-469,0,-575,0,0, - 0,-539,0,0,0,0,-470,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-162,0, - -471,-510,-473,-486,0,0,0,0,0,0, - 0,0,-488,0,-674,-489,0,0,-490,-457, - -491,-36,0,0,0,0,0,0,0,-586, - 0,0,0,-603,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-505,-506,0,0,-513,0,-514,0, - 0,0,0,-529,-531,0,0,0,0,0, - -604,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-277,-543, - -544,-545,-546,-547,0,-548,0,0,0,0, - -549,0,0,-550,-551,0,0,-85,0,0, - 0,0,0,-552,-553,0,0,0,0,-557, - 0,0,-623,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-559,-690,-560,-565,0,-569,0,0, - 0,0,0,0,0,-580,-581,0,0,-664, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-7,0,0,0, - 0,-301,-615,0,-582,0,0,0,0,0, - 0,0,-608,-609,0,0,-619,-213,0,0, - -631,0,-645,0,0,0,0,-646,0,0, - 0,0,-648,-651,0,0,0,-625,-667,-628, - 0,-38,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-498,0,0,0, - 0,0,-676,-682,-684,-692,-701,-214,-235,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-637,-714, - 0,0,0,0,0,0,0,0,0,-632, - 0,0,-635,-638,0,0,0,0,0,-293, - 0,0,0,0,-72,-639,-41,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-640, - 0,-75,0,-641,-241,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-677,0,0,-678,-452,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-605,0,0,0,0,-689,-122, - 0,0,0,0,0,0,0,0,0,-642, - 0,0,0,0,0,0,0,0,-695,-698, - 0,0,0,0,0,-655,0,0,0,0, - 0,0,0,0,-27,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-699,-706,-717,0, - -697,0,0,0,0,-556,0,0,0,0, - -413,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-509,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-332,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-439, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -437,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-65,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-252,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-298,-330,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -643,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-438,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-463,0, - 0,0,0,0,-8,0,0,0,0,0, - 0,0,0,0,0,0,0,-327,0,0, - 0,0,0,0,0,0,-219,0,0,0, - 0,0,0,0,0,0,0,-225,0,0, - 0,0,0,-29,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-593,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-224,0,0,0,0, - 0,0,-99,0,0,0,0,0,0,0, - 0,-670,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-32,0,0,0,0,0,0,0, - 0,0,0,-297,0,0,0,0,0,-215, - -594,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-216,0,0,0,0,0,0, - -17,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,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,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-248, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-663,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-434,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-472,-159,0,0, - 0,0,-237,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-558,-205, - 0,0,0,0,0,0,0,-270,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-271,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -561,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,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,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-622,-49,0,0,0,0,0,-626, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-624,-70,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,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,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-666,-116,0,0, - 0,0,0,0,0,0,0,-629,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-178,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-668,-181, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-46,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-200,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -672,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-229,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-705,-339,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-350,0, - 0,0,0,0,0,0,0,0,-501,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-715,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-22,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -154,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-242,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-249,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-250,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-308,0,0,0,0,0,0,0, - 0,-290,0,0,0,0,0,0,-101,0, - 0,0,0,0,-484,0,0,0,0,0, - 0,0,0,-533,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-572,0,0,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,0,0,0,0,-602,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-362,0,0,0,0, - 0,0,0,0,0,0,0,-607,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-423,0,0,0,0,0,0,0,-31, - 0,0,0,0,0,0,-494,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -243,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-365,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-244,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-245,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-532,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-431, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-432,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-433,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -507,0,0,0,0,0,0,0,0,0, - 0,0,0,-356,0,0,0,0,0,0, - -612,0,0,0,0,0,0,-542,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-299,0,0,0,-541,0, - 0,0,0,0,0,-1,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-246,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-247,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-376,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-712,0,0,0,0,0,0,0,0, - 0,0,0,0,-39,0,0,0,0,0, - -202,0,0,0,0,0,-621,0,0,0, - 0,0,0,0,0,0,0,0,-33,0, - 0,0,0,0,0,-141,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-606,0,0,0,0,0, - 0,0,0,-114,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-657,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-157,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-480, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-220,0,0,0,0,0,0, - -186,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-226,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-428,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-227,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-654,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-115, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-236,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-373,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-713, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-90,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -238,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-239,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-275,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-523,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-12,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-15,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-686,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-285,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-52, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-687,0,0,0,-37,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-203,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-53,0,-204,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-284,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-55,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -91,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-92, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-93,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-94,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-95,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-96,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-97,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-98,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -100,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-133,0,0,0,0,0,-424, - 0,0,0,0,0,0,0,0,-459,0, - -134,0,-595,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-189,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-233, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-234,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-458,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-511,0, - 0,0,0,0,-340,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0 - }; - }; + public final static byte isKeyword[] = IsKeyword.isKeyword; - public interface BaseCheck1 { - public final static short baseCheck1[] = { - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-296,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,-482,0,0,0,0,0,-592, - 0,-596,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-168,0,0,0,0, - 0,0,0,-425,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-187,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-188,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-719,0,0,0,0,0, - -331,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,-487,0,0,0,0,0,0,0,0, - 0,0,-562,0,0,0,0,0,0,0, - 0,0,-508,0,0,0,0,0,0,0, - 0,0,0,0,-426,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-427,0,0,0, - 0,0,0,-564,0,-563,0,0,0,0, - 0,0,-566,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,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 boolean isKeyword(int index) { + return isKeyword[index] != 0; + } - public final static short baseCheck[] = new short[BaseCheck0.baseCheck0.length + BaseCheck1.baseCheck1.length]; - { - int index = 0; - System.arraycopy(BaseCheck0.baseCheck0, 0, baseCheck, index, BaseCheck0.baseCheck0.length); - index += BaseCheck0.baseCheck0.length; - System.arraycopy(BaseCheck1.baseCheck1, 0, baseCheck, index, BaseCheck1.baseCheck1.length); - }; - 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 BaseCheck0 { + public final static short baseCheck0[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 0, 1, 0, 4, 2, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 4, 4, 8, 8, 3, 3, + 4, 4, 3, 3, 2, 2, 7, 7, 7, 7, 4, 4, 5, 6, 3, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 7, 9, 3, 0, 1, + 2, 2, 1, 2, 3, 4, 1, 0, 3, 1, 0, 3, 5, 1, 4, 1, 3, 3, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3, + 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 5, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 1, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 3, 1, 0, 1, 0, 1, + 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 1, 4, 2, 1, 2, 5, 7, 5, 1, 4, 1, 0, 5, 7, 2, 8, 1, 1, 2, 2, + 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 4, 4, 2, 2, 2, 2, 2, 1, 0, 1, 1, 1, 1, + 1, 1, 2, 1, 2, 2, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 3, 4, 4, 5, 2, 5, 6, 5, 0, 1, 0, 7, 8, 0, 1, 3, 1, 0, 1, 3, 1, 7, 6, 0, 7, 6, 1, 0, + 6, 6, 4, 1, 3, 1, 0, 1, 1, 2, 1, 1, 3, 1, 3, 1, 1, 1, 1, 3, 9, 2, 2, 3, 2, 5, 3, 7, 0, 1, 2, 2, 1, 0, 1, + 1, 1, 3, 1, 2, 1, 1, 2, 3, 1, 1, 1, 3, 2, 1, 2, 2, 9, 8, 2, 1, 3, 1, 3, 1, 0, 1, 0, 2, 1, 1, 3, 1, 3, 2, + 1, 5, 8, 1, 2, 3, 1, 1, 7, 6, 3, 0, 0, 1, 3, 1, 1, 5, 6, 6, 7, 7, 0, 0, 1, 0, 1, 1, 1, 2, 4, 2, 2, 1, 5, + 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 1, 3, 1, 1, 2, 3, 2, 1, 2, 2, 1, 0, 1, 3, 3, 5, 5, 4, 1, 1, 1, 1, 0, 1, 5, + 2, 2, 1, 2, 2, 1, 0, 1, 3, 4, 3, 1, 1, 5, 2, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 7, 1, 0, 1, 3, 1, 1, 2, 4, 2, 4, 7, 9, + 5, 1, 3, 1, 0, 1, 1, 3, 2, 3, 2, 2, 1, 0, 1, 1, 4, 5, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 4, 4, + 2, 1, 2, 5, 5, 3, 3, 1, 4, 3, 1, 0, 1, 3, 1, 1, 1, 1, 2, 6, 3, 1, 3, 1, 4, 0, 1, 1, 1, 3, 1, 0, 4, 3, 1, + 2, 1, 3, 4, 4, 4, 6, 1, 0, 1, 3, 1, 3, 0, 1, 4, 5, 2, 4, 2, 4, 3, 3, 5, 3, 4, 3, 1, 2, 2, 2, 4, 2, 1, 1, + 2, 2, 3, 2, 2, 3, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 3, 3, 3, 4, 1, 1, 1, 1, 2, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 4, 5, 4, 6, 6, 3, 5, 1, 1, 2, 1, 7, -199, 0, 0, 0, 0, + -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, -139, 0, 0, -2, 0, 0, + 0, 0, -73, -3, 0, -4, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, -420, 0, 0, 0, 0, 0, 0, 0, -64, -265, -16, + 0, 0, 0, 0, 0, -266, 0, 0, 0, 0, -123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -9, 0, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, -18, 0, 0, -111, 0, 0, -81, 0, 0, 0, + 0, 0, 0, -43, 0, 0, 0, 0, -416, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, + -13, -627, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -329, 0, 0, -58, 0, 0, 0, 0, -170, -20, 0, -190, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, -306, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -221, 0, 0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -499, 0, 0, 0, 0, 0, -28, 0, 0, 0, 0, -69, -19, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, -217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -435, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35, + 0, 0, 0, 0, -474, 0, 0, 0, 0, 0, -183, 0, 0, -21, 0, -79, -185, -66, 0, 0, 0, 0, 0, 0, 0, 0, -155, 0, 0, + 0, 0, 0, 0, -169, -218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -338, 0, 0, 0, 0, + -23, -67, 0, 0, 0, 0, -573, 0, 0, 0, 0, -369, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -130, + -24, -453, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -493, 0, 0, 0, -163, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -429, 0, 0, 0, 0, 0, 0, -222, 0, 0, 0, -618, 0, 0, 0, -519, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -40, 0, 0, 0, -407, 0, 0, 0, -191, 0, 0, 0, 0, 0, + 0, 0, -82, -25, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, -652, 0, 0, 0, 0, 0, 0, 0, 0, -540, 0, 0, 0, 0, 0, + -223, 0, 0, 0, 0, -681, 0, 0, 0, 0, 0, -653, 0, 0, 0, 0, -412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -303, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -693, -26, 0, 0, 0, 0, 0, + -156, 0, 0, 0, 0, -585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -274, 0, -184, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -273, 0, 0, 0, 0, 0, 0, -84, -526, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -34, -409, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -680, 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, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44, -536, -537, 0, 0, 0, 0, 0, -196, 0, 0, 0, 0, 0, + -283, 0, 0, -57, 0, 0, -611, 0, 0, -160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -305, 0, 0, -660, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, -45, 0, 0, 0, 0, 0, -272, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -614, 0, 0, -80, -137, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -48, 0, 0, 0, -209, -688, 0, -50, -326, 0, -320, 0, 0, 0, 0, 0, 0, 0, 0, -280, 0, 0, + -51, -417, 0, -718, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, -633, -403, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -54, + 0, 0, -475, -404, 0, 0, 0, 0, 0, -504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, 0, 0, 0, 0, 0, 0, -590, 0, 0, 0, 0, + -59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 0, -61, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -610, 0, 0, 0, 0, 0, 0, -591, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -118, -83, -418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, 0, 0, -76, -534, 0, 0, -289, + -212, 0, -179, -86, 0, 0, 0, 0, 0, 0, 0, 0, -600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, 0, -535, 0, 0, 0, 0, 0, 0, 0, 0, 0, -658, -371, 0, -451, 0, 0, 0, 0, 0, + 0, -152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -87, 0, -88, + -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -269, 0, 0, -102, 0, 0, -103, 0, 0, -231, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -647, -354, + 0, -576, -104, 0, 0, 0, 0, 0, -254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, -56, -485, 0, 0, -353, 0, 0, 0, -124, + -255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -574, 0, 0, 0, 0, 0, + 0, 0, -131, 0, 0, 0, 0, 0, -372, 0, -577, -295, 0, 0, -106, 0, 0, -256, 0, 0, 0, 0, -454, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, + -578, 0, 0, 0, -165, 0, 0, -257, 0, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -461, 0, 0, 0, -113, 0, 0, 0, -399, 0, 0, 0, 0, 0, -117, 0, -278, -125, 0, 0, 0, 0, 0, -258, 0, + 0, 0, 0, -502, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -584, 0, 0, 0, -126, -333, + 0, 0, -132, 0, 0, 0, 0, 0, 0, 0, -579, -127, 0, 0, -172, 0, 0, -259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -708, 0, 0, 0, 0, 0, 0, 0, -644, 0, 0, 0, 0, 0, 0, 0, -620, + -128, 0, 0, -193, 0, 0, -260, 0, 0, 0, 0, -588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -515, 0, -279, -656, 0, 0, -347, 0, 0, -261, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -636, 0, 0, 0, -478, 0, 0, 0, -679, + 0, 0, 0, 0, -211, 0, 0, -136, 0, 0, 0, -140, 0, 0, -262, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -661, 0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0, 0, 0, 0, -281, 0, 0, 0, 0, + 0, 0, -263, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -370, 0, + 0, -145, -146, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, -328, -530, 0, 0, -147, 0, 0, -264, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -228, 0, -716, -419, 0, 0, 0, 0, -148, 0, 0, 0, + 0, 0, -291, 0, -268, 0, 0, 0, -479, 0, 0, -310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -702, 0, 0, 0, 0, -374, 0, 0, 0, -334, 0, 0, 0, 0, 0, -349, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -149, 0, 0, 0, 0, -351, 0, 0, 0, 0, -538, 0, 0, 0, 0, 0, 0, 0, 0, -683, -440, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -441, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -150, 0, -151, 0, 0, -175, 0, -129, 0, 0, 0, 0, -300, 0, + -195, 0, -375, 0, -230, 0, 0, 0, -302, -232, 0, -153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -197, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, 0, 0, 0, 0, 0, -442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -267, -443, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -171, -304, 0, 0, -589, 0, 0, -286, -322, 0, 0, 0, -288, -323, 0, -177, -359, + -324, 0, 0, 0, 0, 0, 0, -192, 0, -400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -659, -198, 0, -276, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -555, 0, 0, 0, 0, 0, 0, 0, -444, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -325, -445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -341, -282, -467, 0, 0, -710, 0, -685, 0, 0, 0, -703, 0, 0, 0, 0, -287, 0, 0, 0, 0, 0, -414, -496, 0, + -292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -415, -476, -309, -460, -294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -307, 0, 0, 0, 0, 0, -446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -447, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -342, 0, 0, 0, 0, + -711, 0, -704, 0, 0, 0, -483, -176, -348, -311, 0, 0, -497, -352, 0, 0, 0, 0, -312, 0, -313, 0, -314, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -315, -316, 0, 0, 0, 0, 0, -317, 0, 0, 0, 0, 0, 0, 0, 0, -597, 0, 0, 0, 0, 0, + -448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -363, -449, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -318, -649, -319, 0, 0, -30, 0, + -662, -613, -321, -335, -336, -14, 0, 0, 0, -477, -503, -406, 0, -512, 0, 0, -337, 0, 0, 0, -343, 0, 0, + 0, 0, 0, 0, 0, 0, -402, -522, -516, 0, 0, 0, 0, 0, 0, 0, -344, 0, 0, 0, 0, 0, 0, -345, 0, 0, 0, 0, 0, + -450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -253, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -570, -346, 0, 0, 0, 0, 0, -355, 0, + 0, 0, 0, 0, 0, 0, -357, -587, -617, 0, -358, 0, 0, 0, 0, -455, 0, -408, 0, 0, 0, -465, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -360, 0, 0, -495, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -361, 0, 0, 0, 0, 0, -517, 0, 0, 0, 0, -364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -158, -410, -366, -367, -368, 0, 0, -598, 0, 0, 0, 0, -377, 0, 0, -527, -567, 0, 0, -378, -379, + 0, -78, 0, 0, 0, -568, 0, 0, 0, 0, 0, 0, 0, -518, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -380, 0, 0, 0, -381, 0, 0, 0, -382, 0, 0, 0, 0, 0, -383, 0, 0, 0, 0, 0, -411, + -384, 0, -520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -630, -385, + 0, 0, -386, 0, 0, 0, -634, 0, 0, 0, 0, 0, -387, 0, -388, -601, 0, 0, -462, -481, 0, -524, -521, 0, 0, 0, + 0, -389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -390, 0, 0, -391, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -599, 0, 0, -650, -392, 0, 0, -393, 0, 0, -616, 0, 0, 0, 0, -394, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -525, -251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -395, -500, -396, 0, 0, -673, 0, 0, -675, 0, 0, 0, -669, 0, -694, 0, -397, 0, -696, + 0, -700, 0, -398, 0, 0, 0, 0, -554, 0, 0, 0, -691, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -405, 0, 0, -709, 0, -707, 0, 0, 0, 0, 0, 0, 0, -421, -422, 0, -671, -456, 0, 0, + -571, 0, 0, -528, 0, 0, 0, 0, -665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -430, + 0, 0, 0, -464, -466, -468, 0, 0, 0, 0, 0, 0, 0, -469, 0, -575, 0, 0, 0, -539, 0, 0, 0, 0, -470, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -162, 0, -471, -510, -473, -486, 0, 0, 0, 0, 0, 0, + 0, 0, -488, 0, -674, -489, 0, 0, -490, -457, -491, -36, 0, 0, 0, 0, 0, 0, 0, -586, 0, 0, 0, -603, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -505, -506, 0, 0, -513, 0, + -514, 0, 0, 0, 0, -529, -531, 0, 0, 0, 0, 0, -604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -277, -543, -544, -545, -546, -547, 0, -548, 0, 0, 0, 0, -549, 0, 0, -550, + -551, 0, 0, -85, 0, 0, 0, 0, 0, -552, -553, 0, 0, 0, 0, -557, 0, 0, -623, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -559, -690, -560, -565, 0, -569, 0, 0, 0, 0, 0, + 0, 0, -580, -581, 0, 0, -664, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -7, 0, 0, 0, 0, -301, -615, 0, -582, 0, 0, 0, 0, 0, 0, 0, -608, -609, 0, 0, -619, -213, 0, 0, -631, + 0, -645, 0, 0, 0, 0, -646, 0, 0, 0, 0, -648, -651, 0, 0, 0, -625, -667, -628, 0, -38, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -498, 0, 0, 0, 0, 0, -676, -682, -684, -692, -701, + -214, -235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -637, + -714, 0, 0, 0, 0, 0, 0, 0, 0, 0, -632, 0, 0, -635, -638, 0, 0, 0, 0, 0, -293, 0, 0, 0, 0, -72, -639, + -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -640, 0, -75, 0, -641, -241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -677, 0, 0, -678, -452, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -605, 0, 0, 0, 0, -689, -122, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -642, 0, 0, 0, 0, 0, 0, 0, 0, -695, -698, 0, 0, 0, 0, 0, -655, 0, 0, 0, 0, 0, 0, 0, 0, + -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -699, -706, -717, 0, -697, 0, 0, 0, + 0, -556, 0, 0, 0, 0, -413, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -439, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -437, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -298, -330, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -438, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -463, 0, 0, + 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -327, 0, 0, 0, 0, 0, 0, 0, 0, -219, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -225, 0, 0, 0, 0, 0, -29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -224, 0, 0, 0, 0, 0, 0, -99, 0, 0, 0, 0, 0, 0, 0, 0, -670, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -297, 0, + 0, 0, 0, 0, -215, -594, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, -17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -434, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -472, -159, 0, 0, 0, 0, -237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -558, -205, 0, 0, 0, 0, 0, 0, 0, -270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -622, -49, 0, 0, 0, 0, 0, -626, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -624, -70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -666, -116, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -668, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -672, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -705, -339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -350, 0, 0, 0, 0, 0, 0, 0, 0, 0, -501, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -715, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -154, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -242, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -308, 0, 0, + 0, 0, 0, 0, 0, 0, -290, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, -484, 0, 0, 0, 0, 0, 0, 0, 0, -533, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -572, 0, 0, 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, 0, 0, 0, 0, -602, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -423, 0, 0, 0, 0, 0, 0, 0, + -31, 0, 0, 0, 0, 0, 0, -494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -433, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -507, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -356, 0, 0, 0, 0, 0, 0, -612, 0, 0, 0, 0, 0, 0, -542, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -299, 0, 0, 0, -541, 0, 0, 0, 0, 0, 0, -1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -247, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -376, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -712, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -39, 0, 0, 0, 0, 0, + -202, 0, 0, 0, 0, 0, -621, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, 0, -141, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -606, 0, 0, 0, 0, 0, 0, 0, 0, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, 0, 0, 0, 0, 0, 0, -186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -428, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -227, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -654, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -373, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -713, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -238, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -686, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -285, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -687, 0, 0, 0, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -53, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -284, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -133, 0, 0, 0, 0, 0, -424, 0, 0, 0, 0, 0, 0, 0, 0, -459, 0, -134, 0, -595, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -458, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -511, 0, 0, 0, 0, 0, -340, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + }; - public interface BaseAction0 { - public final static char baseAction0[] = { - 214,5,158,82,82,32,32,106,106,48, - 48,41,41,214,1,1,15,15,15,15, - 15,15,15,17,17,17,16,11,11,6, - 6,6,6,6,6,2,93,93,4,4, - 12,12,56,56,175,175,176,86,86,55, - 18,18,18,18,18,18,18,18,18,18, - 18,18,18,18,18,18,18,18,18,18, - 177,177,177,159,159,19,19,19,19,19, - 19,19,19,19,19,19,19,19,20,20, - 215,215,216,216,217,180,180,181,181,178, - 178,182,179,179,21,21,22,22,23,23, - 23,24,24,24,24,25,25,25,26,26, - 26,34,34,34,34,34,36,36,36,37, - 37,38,38,39,39,42,42,45,45,46, - 46,58,58,58,58,58,70,70,70,74, - 74,76,76,79,79,81,81,83,83,84, - 84,85,85,85,85,85,85,85,85,85, - 85,85,85,85,33,33,49,49,49,49, - 49,49,49,49,49,49,49,49,49,47, - 35,160,160,124,124,218,218,114,249,249, - 96,96,96,96,96,96,96,96,96,97, - 97,97,94,94,59,59,219,219,98,98, - 98,135,135,220,220,99,99,99,99,221, - 221,100,100,100,100,100,101,101,103,103, - 103,103,103,103,103,103,60,60,60,60, - 60,136,136,134,134,61,222,31,31,31, - 31,31,53,53,67,67,67,67,67,122, - 122,129,129,129,129,129,130,130,130,131, - 131,131,132,132,132,137,137,137,68,68, - 68,68,68,69,69,69,13,14,14,14, - 14,14,14,14,14,14,14,14,107,125, - 125,125,125,125,125,116,116,116,184,185, - 185,117,117,223,187,187,186,186,161,161, - 138,91,91,162,63,52,188,188,64,105, - 105,163,163,183,183,139,140,140,141,88, - 88,189,189,77,77,77,72,72,71,78, - 78,95,95,87,87,87,75,119,119,127, - 126,126,50,50,73,73,80,80,57,123, - 123,123,108,108,108,109,109,110,110,110, - 111,111,142,142,142,144,144,143,143,250, - 250,120,120,225,225,225,225,225,165,51, - 51,191,224,224,166,166,112,112,112,113, - 193,226,226,44,44,115,121,121,121,121, - 228,146,145,145,118,118,118,194,195,195, - 195,195,195,195,195,195,195,195,195,230, - 230,227,227,229,229,148,149,149,149,149, - 150,231,151,147,147,232,232,196,196,196, - 196,133,133,133,233,233,8,8,9,234, - 234,235,197,190,190,198,198,199,200,200, - 7,7,10,236,236,236,236,236,236,236, - 236,236,236,236,236,236,236,236,236,236, - 236,236,236,236,236,236,236,236,236,236, - 236,236,236,236,236,236,236,236,236,236, - 236,236,236,236,236,89,92,92,201,201, - 168,168,169,169,169,169,169,169,3,170, - 170,167,167,202,251,252,252,253,253,254, - 255,255,203,204,204,204,204,237,237,237, - 153,153,153,153,153,154,155,155,152,152, - 104,90,102,102,192,192,156,156,238,238, - 238,171,171,164,164,239,239,27,27,27, - 43,43,28,28,240,240,205,205,205,206, - 206,241,241,207,207,29,29,242,242,208, - 208,208,208,30,65,243,243,244,244,209, - 209,209,172,172,172,19,19,19,19,34, - 34,46,17,97,245,157,157,157,128,128, - 31,62,67,141,141,141,148,148,148,223, - 228,146,75,88,184,162,13,13,50,104, - 104,104,18,14,14,14,80,80,66,40, - 173,174,174,174,174,174,174,174,174,174, - 211,211,247,247,246,246,210,210,50,60, - 60,1,1,256,95,95,95,95,95,95, - 95,212,213,213,195,54,1834,35,3267,3255, - 5724,2223,27,30,31,1654,1590,26,28,3254, - 296,23,25,50,2263,106,76,77,108,2513, - 2563,2543,2590,652,597,598,599,2070,1533,177, - 2589,1620,2643,2605,2788,2713,6304,419,2790,77, - 308,2813,176,2806,4961,191,266,2505,35,1703, - 32,5759,4085,27,30,31,1654,1590,57,28, - 1976,1143,77,269,264,265,1563,1563,5086,35, - 1703,32,4863,2584,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,2590,1907,189,189,2055,2402, - 2352,34,2589,309,2643,2605,2788,2713,3720,1878, - 3726,276,279,282,3249,2298,520,992,6745,939, - 5436,285,5627,1946,645,5837,4375,4784,6180,1630, - 35,1703,32,6769,3083,41,30,31,1654,1590, - 3859,35,1703,32,5364,4563,27,30,31,1654, - 1590,374,28,7538,2437,534,2505,4859,1909,35, - 3267,3255,5724,2593,27,30,31,1654,1590,26, - 28,3254,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,2590,652,597,598,599,998, - 5741,177,2589,521,2643,2605,2788,2713,5738,617, - 2790,1240,308,2813,176,623,1117,191,266,8297, - 680,354,1199,356,2055,35,317,349,1121,3706, - 600,597,598,599,61,269,264,265,1923,2584, - 615,2651,601,597,598,599,925,2723,3559,35, - 1703,32,4863,6013,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,3153,309,2055,35,1509,424, - 919,162,1535,276,279,282,3249,725,520,992, - 6964,426,5471,285,347,463,645,5837,4375,4784, - 6180,1719,35,1703,32,6769,3144,2451,30,31, - 1654,1590,672,2047,600,597,598,599,3157,1944, - 488,496,3155,1430,3168,7538,483,3167,2505,3174, - 3859,3244,161,578,2055,35,6535,4635,3559,35, - 1703,32,4863,6013,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,3153,1692,5216,35,1703,32, - 4863,162,27,30,31,1654,1590,26,28,2249, - 296,23,25,50,2263,106,76,77,108,2513, - 2563,2543,3153,3765,35,314,3144,3988,2055,3480, - 549,575,3055,579,3525,35,312,78,3157,520, - 4344,1776,3155,5543,3168,3069,618,3167,3246,3174, - 77,3244,161,578,3974,1563,4758,2959,3559,35, - 1703,32,4863,6013,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,3153,2874,5216,35,1703,32, - 4863,162,27,30,31,1654,1590,26,28,2249, - 296,23,25,50,2263,106,76,77,108,2513, - 2563,2543,3153,3765,35,314,3144,6035,628,1529, - 549,575,3055,579,4672,35,312,1713,3157,2323, - 35,432,3155,2911,3168,3416,359,3167,3246,3174, - 5934,3244,161,578,3976,1563,2518,719,4162,35, - 1703,32,4863,6013,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,3153,193,5086,35,1703,32, - 4863,162,27,30,31,1654,1590,26,28,2249, - 296,23,25,50,2263,106,76,77,108,2513, - 2563,2543,3533,2055,35,4047,3144,2055,35,330, - 549,575,3055,579,360,42,3253,2485,3157,3765, - 35,566,3155,6539,3168,3430,2584,3167,3246,3174, - 4337,3244,161,578,4237,35,1703,32,4863,1384, - 27,30,31,1654,1590,26,28,2249,296,23, - 25,50,2263,106,76,77,108,2513,2563,2543, - 2590,224,604,3032,3143,2959,839,177,2589,3735, - 2643,2605,2788,2713,3927,2651,2790,520,730,2813, - 176,5580,1283,414,4533,35,1703,32,5759,214, - 27,30,31,1654,1590,56,28,2910,2055,3775, - 550,575,3055,579,1719,35,1703,32,495,4500, - 40,30,31,1654,1590,3793,35,1703,32,4863, - 3735,27,30,31,1654,1590,26,28,2249,296, - 23,25,50,2263,106,76,77,108,2513,2563, - 2543,2590,3525,35,315,2301,415,2047,177,2589, - 77,2643,2605,2788,2713,8229,2651,2790,5943,1, - 2813,176,1384,1563,414,3946,35,1703,32,4863, - 3631,27,30,31,1654,1590,26,28,2249,296, - 23,25,50,2263,106,76,77,108,2513,2563, - 2543,2590,2584,189,2055,35,2352,311,177,2589, - 421,2643,2605,2788,2713,195,2651,2790,1548,88, - 2813,176,102,1496,414,77,1719,35,1703,32, - 958,2732,3592,30,31,1654,1590,415,2047,2502, - 4087,35,1703,32,4863,1925,27,30,31,1654, - 1590,26,28,2249,296,23,25,50,2263,106, - 76,77,108,2513,2563,2543,2590,3159,712,325, - 3183,60,4340,177,2589,5683,2643,2605,2788,2713, - 605,3032,2790,358,361,2813,176,415,2047,613, - 593,422,417,4501,35,1703,32,4863,378,27, - 30,31,1654,1590,26,28,2249,296,23,25, - 50,2263,106,76,77,108,2513,2563,2543,2590, - 2596,4864,4085,678,3724,6501,177,2589,2973,2643, - 2605,2788,2713,4636,2466,2790,584,1535,2813,176, - 4096,412,191,3484,35,1703,32,4863,1488,27, - 30,31,1654,1590,26,28,2249,296,23,25, - 50,2263,106,76,77,108,2513,2563,2543,2590, - 2459,3775,2096,2055,35,1509,424,2589,2501,2643, - 2605,2788,2713,520,2984,2790,4398,5220,2943,197, - 4012,35,1703,32,4863,1825,27,30,31,1654, - 1590,26,28,2249,296,23,25,50,2263,106, - 76,77,108,2513,2563,2543,2590,467,4734,35, - 564,4401,1535,177,2589,362,2643,2605,2788,2713, - 1746,1790,2790,3178,215,2813,176,5934,4929,3280, - 821,2584,1563,2055,35,2352,313,611,601,597, - 598,599,2067,2505,1889,3181,3083,1472,4194,35, - 1703,32,6187,2635,27,30,31,1654,1590,26, - 28,3179,193,474,547,3631,3727,35,1703,32, - 4863,3676,27,30,31,1654,1590,26,28,2249, - 296,23,25,50,2263,106,76,77,108,2513, - 2563,2543,2590,603,520,4397,630,3252,5687,177, - 2589,2535,2643,2605,2788,2713,946,465,2790,5928, - 2467,2813,176,8126,1563,3281,4501,35,1703,32, - 4863,324,27,30,31,1654,1590,26,28,2249, - 296,23,25,50,2263,106,76,77,108,2513, - 2563,2543,2590,4094,189,1548,772,3776,704,177, - 2589,3148,2643,2605,2788,2713,3490,234,2790,77, - 713,2813,176,2940,1563,408,4501,35,1703,32, - 4863,225,27,30,31,1654,1590,26,28,2249, - 296,23,25,50,2263,106,76,77,108,2513, - 2563,2543,2590,427,189,712,3675,463,134,177, - 2589,4767,2643,2605,2788,2713,2153,89,2790,4704, - 102,2813,176,6888,2841,408,4501,35,1703,32, - 4863,584,27,30,31,1654,1590,26,28,2249, - 296,23,25,50,2263,106,76,77,108,2513, - 2563,2543,2590,5818,3825,2055,35,2352,316,177, - 2589,628,2643,2605,2788,2713,68,3709,2790,2201, - 3083,2813,176,3070,1535,408,1535,2055,35,1509, - 424,601,597,598,599,357,4087,35,1703,32, - 4863,407,27,30,31,1654,1590,26,28,2249, - 296,23,25,50,2263,106,76,77,108,2513, - 2563,2543,2590,77,255,1598,3083,2904,2498,177, - 2589,308,2643,2605,2788,2713,520,3070,2790,77, - 7465,2813,176,411,1563,613,3871,35,1703,32, - 4863,406,27,30,31,1654,1590,26,28,2249, - 296,23,25,50,2263,106,76,77,108,2513, - 2563,2543,2590,3573,189,928,77,3548,1790,177, - 2589,1048,2643,2605,2788,2713,3994,1535,2790,425, - 832,2813,176,3185,310,175,4501,35,1703,32, - 4863,404,27,30,31,1654,1590,26,28,2249, - 296,23,25,50,2263,106,76,77,108,2513, - 2563,2543,2590,2055,35,2352,4046,429,2929,177, - 2589,463,2643,2605,2788,2713,4101,1535,2790,77, - 3290,2813,176,339,1563,192,4501,35,1703,32, - 4863,479,27,30,31,1654,1590,26,28,2249, - 296,23,25,50,2263,106,76,77,108,2513, - 2563,2543,2590,428,189,409,77,463,1598,177, - 2589,1138,2643,2605,2788,2713,4204,3568,2790,3638, - 4663,2813,176,2584,7951,188,411,5818,4501,35, - 1703,32,4863,612,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,2590,2681,35,2352,311,533, - 2438,177,2589,77,2643,2605,2788,2713,4856,3070, - 2790,77,1331,2813,176,3651,1563,187,4501,35, - 1703,32,4863,4604,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,2590,51,189,2055,4103,2352, - 74,177,2589,1384,2643,2605,2788,2713,4216,1025, - 2790,77,585,2813,176,3364,1563,186,4501,35, - 1703,32,4863,6290,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,2590,3903,189,2551,3147,742, - 4406,177,2589,3070,2643,2605,2788,2713,4250,2366, - 2790,68,2364,2813,176,332,2911,185,4501,35, - 1703,32,4863,3447,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,2590,2681,35,2352,4108,2692, - 3080,177,2589,77,2643,2605,2788,2713,4778,338, - 2790,77,3955,2813,176,5818,1563,184,4501,35, - 1703,32,4863,2413,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,2590,4500,189,623,44,3253, - 998,177,2589,3257,2643,2605,2788,2713,4254,418, - 2790,77,1564,2813,176,5818,1563,183,4501,35, - 1703,32,4863,3447,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,2590,388,189,910,77,363, - 370,177,2589,7004,2643,2605,2788,2713,3790,3070, - 2790,68,4864,2813,176,4473,6501,182,4501,35, - 1703,32,4863,2413,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,2590,2055,35,2352,4153,2055, - 4038,177,2589,3257,2643,2605,2788,2713,939,335, - 2790,77,93,2813,176,1048,7083,181,4501,35, - 1703,32,4863,222,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,2590,2055,35,2352,565,369, - 370,177,2589,1546,2643,2605,2788,2713,2083,391, - 2790,68,70,2813,176,331,593,180,4501,35, - 1703,32,4863,203,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,2590,1889,2323,35,432,6277, - 324,177,2589,77,2643,2605,2788,2713,1640,624, - 2790,77,5230,2813,176,1125,1563,179,4501,35, - 1703,32,4863,1283,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,2590,77,3595,4500,2459,3775, - 7215,177,2589,322,2643,2605,2788,2713,466,3455, - 2790,77,71,2813,176,1535,2293,178,3643,35, - 1703,32,4863,716,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,3153,2323,35,432,2097,378, - 2055,35,330,189,2792,483,1598,440,2827,1598, - 4119,35,1703,32,6187,2802,27,30,31,1654, - 1590,59,28,531,3359,2941,3812,2760,4119,35, - 1703,32,6187,3070,27,30,31,1654,1590,58, - 28,3929,214,4631,35,1703,32,4863,2811,27, - 30,31,1654,1590,26,28,2249,296,23,25, - 50,2263,106,76,77,108,2513,2563,2543,3153, - 5818,4631,35,1703,32,4863,162,27,30,31, - 1654,1590,26,28,2249,296,23,25,50,2263, - 106,76,77,108,2513,2563,2543,3153,1019,389, - 326,3144,642,1133,162,2055,35,1509,424,324, - 77,390,5818,3157,68,854,5818,3155,593,3168, - 77,5818,3167,5681,3174,1726,3244,161,173,3144, - 600,597,598,599,1592,3776,1036,2597,3282,321, - 4190,3157,8402,457,24,3155,4082,3168,2804,308, - 3167,1150,3174,6709,3244,161,172,4631,35,1703, - 32,4863,715,27,30,31,1654,1590,26,28, - 2249,296,23,25,50,2263,106,76,77,108, - 2513,2563,2543,3153,5818,4631,35,1703,32,4863, - 162,27,30,31,1654,1590,26,28,2249,296, - 23,25,50,2263,106,76,77,108,2513,2563, - 2543,3153,375,1229,77,3144,413,4050,162,2638, - 5672,2055,35,1509,424,3445,5818,3157,4509,77, - 5818,3155,387,3168,2313,416,3167,1699,3174,77, - 3244,161,171,3144,1314,379,2694,2340,384,2800, - 520,2985,3385,2674,7534,3157,8402,620,3383,3155, - 677,3168,3779,4131,3167,49,3174,2413,3244,161, - 170,4631,35,1703,32,4863,46,27,30,31, - 1654,1590,26,28,2249,296,23,25,50,2263, - 106,76,77,108,2513,2563,2543,3153,5818,4631, - 35,1703,32,4863,162,27,30,31,1654,1590, - 26,28,2249,296,23,25,50,2263,106,76, - 77,108,2513,2563,2543,3153,5818,208,68,3144, - 3880,1535,162,2055,35,1509,424,2055,35,1509, - 424,3157,1325,3642,370,3155,387,3168,77,1765, - 3167,1252,3174,1940,3244,161,169,3144,69,379, - 2694,2340,384,77,68,2694,77,4056,1986,3157, - 8402,2953,1598,3155,377,3168,212,470,3167,2599, - 3174,469,3244,161,168,4631,35,1703,32,4863, - 587,27,30,31,1654,1590,26,28,2249,296, - 23,25,50,2263,106,76,77,108,2513,2563, - 2543,3153,232,4631,35,1703,32,4863,162,27, - 30,31,1654,1590,26,28,2249,296,23,25, - 50,2263,106,76,77,108,2513,2563,2543,3153, - 5818,1310,1384,3144,4097,1535,162,2055,35,1509, - 424,77,1638,5818,4731,3157,6062,77,5818,3155, - 387,3168,1450,426,3167,1329,3174,509,3244,161, - 167,3144,68,379,2694,2340,384,1347,1432,600, - 597,598,599,3157,1431,53,1598,3155,577,3168, - 52,468,3167,5740,3174,4082,3244,161,166,4631, - 35,1703,32,4863,586,27,30,31,1654,1590, - 26,28,2249,296,23,25,50,2263,106,76, - 77,108,2513,2563,2543,3153,5818,4631,35,1703, - 32,4863,162,27,30,31,1654,1590,26,28, - 2249,296,23,25,50,2263,106,76,77,108, - 2513,2563,2543,3153,6131,3447,2514,3144,3261,4269, - 162,4341,3070,1126,1444,5867,4044,1851,330,3157, - 68,77,5818,3155,77,3168,2907,2302,3167,4911, - 3174,2696,3244,161,165,3144,600,597,598,599, - 2584,2584,68,600,597,598,599,3157,2810,1369, - 2886,3155,1691,3168,633,2413,3167,3685,3174,925, - 3244,161,164,4631,35,1703,32,4863,231,27, - 30,31,1654,1590,26,28,2249,296,23,25, - 50,2263,106,76,77,108,2513,2563,2543,3153, - 334,5086,35,1703,32,4863,162,27,30,31, - 1654,1590,26,28,2249,296,23,25,50,2263, - 106,76,77,108,2513,2563,2543,2590,322,3594, - 3759,3144,706,705,1745,2589,2793,2643,2605,2788, - 3704,365,370,3157,1901,77,77,3155,1724,3168, - 3245,3251,3167,5766,3174,5818,3244,161,163,5086, - 35,1703,32,4863,913,27,30,31,1654,1590, - 26,28,2249,296,23,25,50,2263,106,76, - 77,108,2513,2563,2543,2590,3800,602,1607,2576, - 35,1509,424,2589,2651,2643,2605,2788,2713,1708, - 3941,2790,4097,1119,2943,197,4501,35,1703,32, - 4863,2196,27,30,31,1654,1590,26,28,2249, - 296,23,25,50,2263,106,76,77,108,2513, - 2563,2543,2590,308,827,5818,3719,232,4057,177, - 2589,2584,2643,2605,2788,2713,1716,3486,2790,6128, - 68,2813,176,3168,2588,641,2323,35,2918,3142, - 68,601,597,598,599,672,2047,622,4501,35, - 1703,32,4863,4035,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,2590,2863,4085,438,235,2976, - 49,177,2589,2983,2643,2605,2788,2713,233,3162, - 2790,2035,1044,2813,176,5818,3166,140,4501,35, - 1703,32,4863,707,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,2590,77,3177,621,72,3274, - 4872,177,2589,77,2643,2605,2788,2713,3875,3372, - 2790,3554,68,2813,176,5818,5818,3471,5818,4501, - 35,1703,32,4863,3866,27,30,31,1654,1590, - 26,28,2249,296,23,25,50,2263,106,76, - 77,108,2513,2563,2543,2590,611,90,385,6279, - 634,2793,177,2589,4033,2643,2605,2788,2713,2584, - 442,2790,77,6285,2813,176,2089,1389,3639,4696, - 35,1703,32,4863,3056,27,30,31,1654,1590, - 26,28,2249,296,23,25,50,2263,106,76, - 77,108,2513,2563,2543,3153,6291,5086,35,1703, - 32,4863,162,27,30,31,1654,1590,26,28, - 2249,296,23,25,50,2263,106,76,77,108, - 2513,2563,2543,2590,2672,5934,1695,3144,607,4378, - 1563,2589,77,2643,2605,3646,68,4401,68,3157, - 2888,708,77,3155,5959,3168,2963,2385,3167,6732, - 3174,5818,3244,161,160,4761,35,1703,32,4863, - 193,27,30,31,1654,1590,26,28,2249,296, - 23,25,50,2263,106,76,77,108,2513,2563, - 2543,2590,131,3376,1438,77,256,68,177,2589, - 2637,2643,2605,2788,2713,1745,4206,2790,77,6346, - 2813,176,5818,1563,222,5086,35,1703,32,4863, - 2584,27,30,31,1654,1590,26,28,2249,296, - 23,25,50,2263,106,76,77,108,2513,2563, - 2543,2590,2791,189,3583,226,3276,3686,238,2589, - 2651,2643,2605,2788,2713,4359,2570,2790,5818,3890, - 2943,197,5086,35,1703,32,4863,2668,27,30, - 31,1654,1590,26,28,2249,296,23,25,50, - 2263,106,76,77,108,2513,2563,2543,2590,1031, - 4189,2765,3988,3153,5882,585,2589,4340,2643,2605, - 2788,2713,97,3155,2790,4050,3259,2943,197,3374, - 6354,3470,2044,35,1509,424,601,597,598,599, - 5818,672,2047,6282,5086,35,1703,32,4863,459, - 27,30,31,1654,1590,26,28,2249,296,23, - 25,50,2263,106,76,77,108,2513,2563,2543, - 2590,2651,487,3772,4282,2413,49,5035,2589,5100, - 2643,2605,2788,2713,5165,2890,2790,2035,2033,2943, - 197,5086,35,1703,32,4863,329,27,30,31, - 1654,1590,26,28,2249,296,23,25,50,2263, - 106,76,77,108,2513,2563,2543,2590,1947,1439, - 4510,4640,4965,713,4796,2589,4861,2643,2605,2788, - 2713,3062,541,2790,4233,3373,2943,197,2055,35, - 1509,424,672,2047,5295,3483,601,597,598,599, - 340,3722,370,5086,35,1703,32,4863,458,27, - 30,31,1654,1590,26,28,2249,296,23,25, - 50,2263,106,76,77,108,2513,2563,2543,2590, - 539,540,49,5380,2584,5849,1982,2589,5386,2643, - 2605,2788,2713,2035,1114,2790,3471,4202,2943,197, - 5346,35,1703,32,4863,461,27,30,31,1654, - 1590,26,28,2249,296,23,25,50,2263,106, - 76,77,108,2513,2563,2543,2590,5411,35,1509, - 424,3882,1773,2782,2589,1899,2643,2605,2788,2713, - 271,296,2790,2350,4339,2943,197,4230,3765,35, - 489,4338,6494,4470,652,597,598,599,3879,601, - 597,598,599,4799,844,143,98,644,5818,5728, - 5818,308,4826,35,1703,32,4863,266,27,30, - 31,1654,1590,26,28,2249,296,23,25,50, - 2263,648,76,77,269,264,265,3936,35,489, - 5507,6494,5579,4925,4310,3636,1558,4989,2368,5086, - 35,1703,32,4863,4034,27,30,31,1654,1590, - 26,28,2249,296,23,25,50,2263,106,76, - 77,108,2513,3476,309,600,597,598,599,2438, - 5743,9900,276,279,282,3249,9900,9900,992,6745, - 5818,3464,285,5818,5818,645,5837,4375,4784,6180, - 4044,35,330,9900,6769,2067,5818,2485,35,1703, - 32,5508,4563,27,30,31,1654,1590,374,28, - 2651,9900,5651,3378,7538,3712,67,600,597,598, - 599,9900,9900,9900,600,597,598,599,66,9900, - 5818,1384,5738,925,5818,5086,35,1703,32,4863, - 7150,27,30,31,1654,1590,26,28,2249,296, - 23,25,50,2263,106,76,77,108,2513,2563, - 2543,3539,65,9900,616,9900,64,1117,354,1199, - 356,9900,2299,9900,349,1121,482,3366,3374,9900, - 9900,672,2047,5818,367,997,5818,5281,35,1703, - 32,4863,9900,27,30,31,1654,1590,26,28, - 2249,296,23,25,50,2263,106,76,77,108, - 2513,2563,2543,3153,2203,55,6874,9900,54,5818, - 5523,35,1509,424,3882,486,3366,3374,913,9900, - 5934,9900,9900,271,296,1563,341,345,780,5818, - 5818,601,597,598,599,3144,6344,652,597,598, - 599,101,1607,9900,9900,1583,9900,3157,9900,9900, - 2289,3155,9900,3168,308,193,3167,2841,3995,9900, - 266,3767,3021,601,597,598,599,5818,5818,6347, - 1936,4050,652,597,598,599,3591,269,264,265, - 5148,2030,35,3935,32,5508,4563,27,30,31, - 1654,1590,374,28,627,266,9900,9900,9900,3135, - 5795,591,9900,600,597,598,599,9900,600,597, - 598,599,278,264,265,3065,9900,309,9900,3464, - 4340,2413,9900,9900,6044,276,279,282,3249,2255, - 617,992,6964,9900,9900,285,9900,9900,645,5837, - 4375,4784,6180,3082,4303,9900,6282,6769,8265,9900, - 9900,2299,354,1199,356,9900,2299,9900,349,1121, - 9900,9900,9900,6757,918,9900,9900,7538,367,2602, - 5216,35,1703,32,4863,386,27,30,31,1654, - 1590,26,28,2249,296,23,25,50,2263,106, - 76,77,108,2513,2563,2543,3153,3765,370,9900, - 6874,5216,35,1703,32,4863,9900,27,30,31, - 1654,1590,26,28,2249,296,23,25,50,2263, - 106,76,77,108,2513,2563,2543,3153,3144,6356, - 455,3934,9900,3591,9900,396,9900,5148,387,9900, - 3157,9900,9900,9900,3155,9900,3168,9900,9900,3985, - 9900,379,2694,2340,384,9900,94,9900,9900,3144, - 600,597,598,599,9900,9900,3596,9900,9900,9900, - 9900,3157,9900,9900,9900,3155,3464,3981,5086,35, - 1703,32,4863,9900,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,2590,1133,442,9900,2299,9900, - 3479,716,2589,9900,2643,3654,9900,9900,9900,9900, - 367,5934,9900,9900,9900,9900,1563,9900,9900,9900, - 9900,9900,600,597,598,599,9900,262,9900,9900, - 9900,189,9900,9900,9900,9900,759,1598,4082,9900, - 9900,9900,6912,3018,213,9900,193,237,249,4745, - 700,9900,9900,9900,9900,202,236,246,247,248, - 250,651,699,5216,35,1703,32,4863,9900,27, - 30,31,1654,1590,26,28,2249,296,23,25, - 50,2263,106,76,77,108,2513,2563,2543,3153, - 201,9900,216,200,203,204,205,206,207,136, - 9900,9900,9900,9900,716,3624,35,1703,32,5364, - 4217,27,30,31,1654,1590,374,28,1433,9900, - 9900,3144,9900,4340,9900,9900,9900,3591,9900,9900, - 262,5148,9900,3157,189,4306,9900,3984,3988,759, - 1598,3038,9900,4340,1718,9900,3018,213,9900,378, - 237,249,4745,700,600,597,598,599,202,236, - 246,247,248,250,651,699,9900,9900,9900,6282, - 3464,652,597,598,599,2285,351,1710,356,3382, - 35,1703,32,5508,9900,27,30,31,1654,1590, - 374,28,9900,201,266,217,200,203,204,205, - 206,207,2299,9900,9900,214,600,597,598,599, - 9900,281,264,265,367,4739,5834,9900,9900,9900, - 9900,4340,5228,4077,35,1509,424,9900,9900,9900, - 9900,9900,5768,35,1703,32,5364,4563,27,30, - 31,1654,1590,374,28,9900,6136,6282,9900,9900, - 354,1199,356,3549,2299,9900,350,1121,541,600, - 597,598,599,9900,2118,9900,368,49,6022,4340, - 1235,5355,9900,9900,387,5016,4340,9900,2035,1349, - 600,597,598,599,9900,9900,9900,381,2694,2340, - 384,9900,9900,9900,1341,262,1924,600,597,598, - 599,9900,6282,354,1199,356,538,540,9900,349, - 1121,9900,9900,3464,1235,2649,443,8216,714,9900, - 997,91,35,1703,32,5364,4563,27,30,31, - 1654,1590,374,28,3056,9900,395,9900,9900,3467, - 9900,600,597,598,599,364,9900,9900,600,597, - 598,599,9900,444,445,446,815,3464,3216,3441, - 3466,9900,9900,9900,5016,9900,9900,9900,9900,9900, - 9900,341,345,780,9900,9900,91,35,1703,32, - 5364,4563,27,30,31,1654,1590,374,28,2919, - 9900,541,354,1199,356,2289,9900,3041,349,1121, - 9900,9900,9900,601,597,598,599,9900,9900,997, - 5086,35,1703,32,4863,3718,27,30,31,1654, - 1590,26,28,2249,296,23,25,50,2263,106, - 76,77,108,2513,2563,2543,2590,1357,5934,538, - 540,9900,9900,1563,2589,9900,3626,354,1199,356, - 9900,9900,9900,349,1121,9900,9900,9900,447,450, - 341,345,780,9900,6084,9900,9900,9900,9900,9900, - 9900,9900,4114,193,9900,9900,842,9900,9900,5216, - 35,1703,32,4863,1545,27,30,31,1654,1590, - 26,28,2249,296,23,25,50,2263,106,76, - 77,108,2513,2563,2543,3153,9900,544,2055,35, - 1509,424,716,5086,35,1703,32,4863,9900,27, - 30,31,1654,1590,26,28,2249,296,23,25, - 50,2263,106,76,77,108,3484,3144,262,9900, - 9900,9900,189,9900,9900,9900,9900,759,1598,3973, - 9900,9900,49,9900,3018,213,9900,9900,237,249, - 4745,700,4339,2035,5265,9900,202,236,246,247, - 248,250,651,699,9900,9900,9900,9900,9900,646, - 2055,35,1509,424,716,9900,9900,9900,1789,35, - 1703,32,5364,9900,27,30,31,1654,1590,374, - 28,201,9900,4036,200,203,204,205,206,207, - 262,9900,9900,9900,189,601,597,598,599,759, - 1598,9900,9900,9900,49,1337,3018,213,9900,9900, - 237,249,4745,700,9900,2035,2455,9900,202,236, - 246,247,248,250,651,699,9900,9900,9900,9900, - 9900,748,600,597,598,599,716,9900,9900,354, - 1199,356,9900,9900,9900,663,1121,9900,3464,9900, - 9900,9900,9900,201,9900,211,200,203,204,205, - 206,207,262,9900,9900,9900,189,9900,9900,77, - 9900,759,1598,9900,4077,9900,9900,9900,3018,213, - 3378,9900,237,249,4745,700,9900,9900,9900,9900, - 202,236,246,247,248,250,651,699,9900,9900, - 378,9900,9900,850,2044,35,1509,424,716,2827, - 6041,35,1703,32,5364,4563,27,30,31,1654, - 1590,374,28,9900,9900,201,2941,209,200,203, - 204,205,206,207,262,9900,9900,9900,189,9900, - 9900,9900,9900,759,1598,9900,9900,9900,49,3271, - 3018,213,9900,9900,237,249,4745,700,9900,2035, - 1226,9900,202,236,246,247,248,250,651,699, - 9900,9900,9900,9900,9900,952,2178,35,1509,424, - 716,354,1199,356,9900,9900,9900,349,1121,9900, - 2795,9900,9900,9900,9900,9900,9900,201,4119,643, - 200,203,204,205,206,207,262,9900,9900,9900, - 189,2189,35,1509,424,759,1598,9900,9900,9900, - 49,9900,3018,213,9900,9900,237,249,4745,700, - 9900,2035,47,9900,202,236,246,247,248,250, - 651,699,9900,9900,9900,9900,9900,1054,2044,35, - 1509,424,716,9900,9900,49,9900,9900,5958,9900, - 9900,9900,1287,878,9900,9900,2035,47,9900,201, - 9900,210,200,203,204,205,206,207,262,9900, - 9900,9900,189,2189,35,1509,424,759,1598,378, - 9900,9900,49,189,3018,213,9900,1011,237,249, - 4745,700,9900,2035,4158,221,202,236,246,247, - 248,250,651,699,9900,5370,9900,9900,9900,1156, - 2044,35,1509,424,716,9900,9900,49,9900,9900, - 9900,9900,9900,9900,2795,9900,9900,5737,2035,47, - 9900,201,4340,220,200,203,204,205,206,207, - 262,9900,9900,9900,189,9900,9900,77,9900,759, - 1598,9900,716,9900,49,9900,3018,213,378,1422, - 237,249,4745,700,9900,2035,47,9900,202,236, - 246,247,248,250,651,699,9900,9900,378,9900, - 9900,1258,189,223,1876,9900,716,2827,9900,9900, - 9900,9900,9900,9900,3130,9900,934,9900,9900,9900, - 9900,9900,9900,201,2941,4156,200,203,204,205, - 206,207,262,9900,9900,9900,189,2382,35,1509, - 424,759,1598,9900,9900,9900,9900,3016,3018,213, - 9900,9900,237,249,4745,700,9900,9900,9900,9900, - 202,236,246,247,248,250,651,699,9900,9900, - 9900,9900,9900,1360,4152,35,1509,424,716,9900, - 9900,49,9900,9900,9900,9900,9900,9900,3716,9900, - 9900,9900,2035,47,9900,201,9900,225,200,203, - 204,205,206,207,262,9900,9900,9900,189,2189, - 35,1509,424,759,1598,9900,9900,9900,49,1235, - 3018,213,9900,2690,237,249,4745,700,9900,2035, - 2150,9900,202,236,246,247,248,250,651,699, - 9900,9900,9900,9900,9900,1462,600,597,598,599, - 716,9900,9900,49,9900,9900,9900,9900,9900,9900, - 1947,9900,3464,9900,2035,3039,9900,201,9900,219, - 200,203,204,205,206,207,262,9900,9900,9900, - 189,478,9900,492,9900,759,1598,2066,9900,9900, - 9900,9900,3018,213,3375,3419,237,249,4745,700, - 273,296,9900,9900,202,236,246,247,248,250, - 651,699,9900,9900,652,597,598,599,9900,9900, - 9900,91,35,1703,32,5364,4563,27,30,31, - 1654,1590,374,28,9900,9900,9900,266,9900,201, - 9900,228,200,203,204,205,206,207,600,597, - 598,599,9900,9900,274,264,265,9900,9900,5086, - 35,1703,32,4863,5016,27,30,31,1654,1590, - 26,28,2249,296,23,25,50,2263,106,76, - 77,108,2513,2563,2543,3546,9900,9900,9900,9900, - 9900,9900,354,1199,356,9900,9900,9900,349,1121, - 9900,9900,9900,9900,5086,35,1703,32,4863,997, - 27,30,31,1654,1590,26,28,2249,296,23, - 25,50,2263,106,76,77,108,2513,2563,2543, - 2590,9900,9900,5086,35,1703,32,4863,3629,27, - 30,31,1654,1590,26,28,2249,296,23,25, - 50,2263,106,76,77,108,2513,2563,2543,2590, - 342,345,780,5635,35,553,9900,3643,9900,9900, - 9900,9900,2055,35,1509,424,271,296,9900,4157, - 9900,9900,9900,9900,716,2055,35,1509,424,9900, - 652,597,598,599,2164,35,3935,32,5364,4563, - 27,30,31,1654,1590,374,28,9900,9900,9900, - 378,9900,5834,266,189,9900,49,4340,9900,2827, - 1598,4093,597,598,599,9900,2802,2035,1400,49, - 269,264,265,9900,929,9900,2941,6148,2760,9900, - 2035,1204,9900,6282,9900,9900,6225,35,3935,32, - 5364,4563,27,30,31,1654,1590,374,28,2405, - 9900,600,597,598,599,354,1199,356,9900,9900, - 9900,349,1121,600,597,598,599,3969,276,279, - 282,3249,2602,9900,992,7048,3708,9900,9900,6148, - 5148,9900,6172,7940,8305,8466,9900,9900,6258,35, - 3935,32,5364,4563,27,30,31,1654,1590,374, - 28,9900,9900,600,597,598,599,354,1199,356, - 9900,9900,2200,349,1121,4093,597,598,599,3464, - 2574,9900,395,9900,2602,273,296,2055,35,1509, - 424,6148,6865,455,3934,9900,9900,9900,9900,652, - 597,598,599,9900,4203,3441,3466,652,597,598, - 599,2299,9900,9900,9900,562,563,567,9900,354, - 1199,356,266,368,9900,349,1121,9900,9900,9900, - 266,49,9900,9900,9900,9900,2602,9900,9900,274, - 264,265,2035,1349,7099,455,3934,284,264,265, - 8498,5086,35,1703,32,4863,9900,27,30,31, - 1654,1590,26,28,2249,296,23,25,50,2263, - 106,76,77,108,2513,2563,2543,3576,9900,9900, - 9900,9900,6210,35,1703,32,5364,8454,27,30, - 31,1654,1590,374,28,9900,6865,455,3934,5086, - 35,1703,32,4863,9900,27,30,31,1654,1590, - 26,28,2249,296,23,25,50,2263,106,76, - 77,108,2513,2563,2543,3579,5086,35,1703,32, - 4863,9900,27,30,31,1654,1590,26,28,2249, - 296,23,25,50,2263,106,76,77,108,2513, - 2563,2543,3589,354,1199,356,2069,9900,9900,349, - 1121,9900,9900,9900,9900,9900,9900,9900,9900,9900, - 3924,9900,9900,9900,9900,9900,9900,387,9900,9900, - 9900,9900,9900,600,597,598,599,9900,9900,9900, - 379,2694,2340,384,9900,9900,9900,9900,9900,4334, - 5086,35,1703,32,4863,3923,27,30,31,1654, - 1590,26,28,2249,296,23,25,50,2263,106, - 76,77,108,2513,2563,2543,3970,5086,35,1703, - 32,4863,9900,27,30,31,1654,1590,26,28, - 2249,296,23,25,50,2263,106,76,77,108, - 2513,2563,2543,3971,5086,35,1703,32,4863,9900, - 27,30,31,1654,1590,26,28,2249,296,23, - 25,50,2263,106,76,77,108,2513,2563,2543, - 3972,6297,35,1703,32,5364,8271,27,30,31, - 1654,1590,374,28,2044,35,1509,424,9900,9900, - 9900,2044,35,1509,424,9900,9900,401,5086,35, - 1703,32,4863,386,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 108,2513,2563,2543,4083,4471,9900,9900,49,2055, - 35,1509,424,9900,9900,49,2388,9900,9900,2035, - 47,4077,354,1199,356,9900,2035,47,349,1121, - 9900,9900,600,597,598,599,9900,9900,9900,1923, - 9900,9900,9900,9900,9900,9900,387,262,4082,9900, - 986,9900,9900,49,9900,9900,759,1643,9900,379, - 2694,2340,384,9900,2035,1688,9900,239,249,4745, - 700,9900,9900,9900,3596,9900,238,246,247,248, - 250,651,699,4891,35,1703,32,4863,9900,27, - 30,31,1654,1590,26,28,2249,296,23,25, - 50,2263,637,76,77,240,242,244,815,9900, - 9900,9900,9900,9900,9900,9900,9900,9900,9900,251, - 241,243,5086,35,1703,32,4863,9900,27,30, - 31,1654,1590,26,28,2249,296,23,25,50, - 2263,106,76,77,108,2513,2563,3591,9900,9900, - 13,3053,7439,5086,35,1703,32,4863,9900,27, - 30,31,1654,1590,26,28,2249,296,23,25, - 50,2263,106,76,77,108,2513,2563,3604,4369, - 35,1703,32,4863,9900,27,30,31,1654,1590, - 26,28,2249,296,23,25,50,2263,106,76, - 77,107,6327,35,1703,32,5364,8454,27,30, - 31,1654,1590,374,28,5467,35,1509,424,3882, - 2651,77,9900,9900,9900,9900,4077,3978,272,296, - 751,5148,9900,9900,9900,9900,9900,9900,9900,2671, - 9900,9900,652,597,598,599,4157,9900,9900,9900, - 9900,716,378,9900,600,597,598,599,9900,308, - 9900,2827,9900,9900,9900,266,652,597,598,599, - 3464,9900,9900,354,1199,356,9900,378,2941,349, - 1121,189,270,264,265,9900,2827,1598,9900,266, - 588,672,2047,2802,9900,9900,9900,387,9900,9900, - 9900,3290,2299,2941,9900,2760,287,264,265,9900, - 379,2694,2340,384,6757,9900,9900,9900,9900,9900, - 9900,9900,309,9900,9900,589,2811,9900,9900,9900, - 277,280,283,3249,9900,2771,992,9900,9900,9900, - 286,9900,9900,646,1654,35,1703,32,5508,9900, - 27,30,31,1654,1590,374,28,9900,2044,35, - 1509,424,600,597,598,599,9900,9900,9900,9900, - 9900,600,597,598,599,9900,9900,9900,4366,9900, - 9900,9900,1654,35,1703,32,5508,3464,27,30, - 31,1654,1590,374,28,9900,9900,9900,9900,9900, - 3444,9900,49,9900,5148,9900,9900,96,9900,600, - 597,598,599,2035,47,354,1199,356,9900,2299, - 9900,352,1121,9900,9900,5228,9900,600,597,598, - 599,368,9900,9900,5579,35,1509,424,3882,9900, - 9900,4157,9900,3464,3023,9900,716,272,296,9900, - 9900,9900,9900,354,1199,356,9900,2299,9900,350, - 1121,652,597,598,599,9900,9900,9900,9900,368, - 9900,9900,378,9900,2621,2299,189,9900,308,4077, - 9900,2827,1598,9900,266,9900,9900,368,2802,9900, - 9900,9900,9900,9900,9900,387,9900,9900,2941,9900, - 2760,270,264,265,9900,262,9900,9900,381,2694, - 2340,384,9900,9900,759,9900,9900,9900,5691,35, - 553,2916,9900,9900,9900,239,249,4745,700,9900, - 9900,272,296,9900,238,246,247,248,250,651, - 699,309,9900,9900,9900,652,597,598,599,277, - 280,283,3249,2718,9900,992,9900,9900,4077,286, - 9900,9900,646,240,242,244,815,9900,266,2958, - 9900,9900,9900,9900,9900,9900,9900,251,241,243, - 9900,9900,9900,9900,262,270,264,265,9900,9900, - 9900,9900,9900,759,9900,9900,600,597,598,599, - 9900,9900,9900,9900,239,249,4745,700,1997,9900, - 7439,9900,4334,238,246,247,248,250,651,699, - 3346,35,1703,32,5364,4563,27,30,31,1654, - 1590,374,28,277,280,283,3249,9900,9900,992, - 9900,9900,240,242,244,815,9900,601,597,598, - 599,9900,9900,9900,9900,9900,251,241,243,5086, - 35,1703,32,4863,9900,27,30,31,1654,1590, - 26,28,2249,296,23,25,50,2263,106,76, - 77,108,2513,3483,9900,2815,9900,2199,9900,7439, - 4077,354,1199,356,9900,9900,9900,349,1121,9900, - 6108,9900,9900,9900,9900,4077,9900,9900,6084,9900, - 9900,9900,9900,9900,9900,9900,262,9900,9900,9900, - 562,563,568,9900,9900,759,9900,9900,9900,9900, - 9900,378,592,9900,9900,9900,239,249,4745,700, - 2827,9900,9900,9900,9900,238,246,247,248,250, - 651,699,4956,35,1703,32,4863,2941,27,30, - 31,1654,1590,26,28,2249,296,23,25,50, - 2263,635,76,77,240,242,244,815,9900,9900, - 595,9900,9900,9900,9900,9900,9900,9900,251,241, - 243,5086,35,1703,32,4863,9900,27,30,31, - 1654,1590,26,28,2249,296,23,25,50,2263, - 106,76,77,108,3525,9900,9900,9900,9900,2449, - 9900,7439,5086,35,1703,32,4863,9900,27,30, - 31,1654,1590,26,28,2249,296,23,25,50, - 2263,106,76,77,108,3529,4303,35,1703,32, - 4863,9900,27,30,31,1654,1590,26,28,2249, - 296,23,25,50,2263,106,76,77,81,4435, - 35,1703,32,4863,9900,27,30,31,1654,1590, - 26,28,2249,296,23,25,50,2263,106,76, - 77,81,2524,9900,9900,9900,9900,4077,9900,9900, - 9900,9900,9900,9900,9900,9900,9900,9900,9900,2252, - 9900,9900,9900,9900,4077,9900,9900,9900,9900,9900, - 9900,9900,9900,262,9900,9900,9900,9900,709,9900, - 9900,9900,759,9900,9900,2044,35,1509,424,4399, - 262,9900,9900,239,249,4745,700,9900,9900,759, - 9900,710,238,246,247,248,250,651,699,6164, - 239,249,4745,700,9900,9900,9900,9900,9900,238, - 246,247,248,250,651,699,9900,9900,9900,49, - 2912,240,242,244,815,4077,652,597,598,599, - 2035,47,9900,9900,9900,580,241,243,240,242, - 244,815,9900,9900,2044,35,1509,424,2768,266, - 9900,262,252,241,243,9900,9900,9900,9900,9900, - 759,3027,9900,9900,9900,77,269,264,265,9900, - 4077,239,249,4745,700,652,597,598,599,9900, - 238,246,247,248,250,651,699,3009,49,77, - 9900,9900,4077,9900,4077,9900,378,9900,266,2035, - 47,9900,9900,9900,9900,2827,9900,9900,9900,240, - 242,244,815,9900,9900,647,264,265,262,9900, - 378,7623,2941,671,241,243,9900,759,9900,2827, - 3137,9900,9900,2865,9900,9900,9900,9900,239,249, - 4745,700,9900,9900,9900,3297,2941,238,246,247, - 248,250,651,699,3106,9900,9900,9900,9900,4077, - 652,597,598,599,9900,9900,9900,9900,9900,3360, - 9900,9900,690,680,9900,9900,240,242,244,815, - 9900,9900,9900,266,9900,262,9900,9900,9900,9900, - 670,241,243,9900,759,9900,9900,9900,9900,9900, - 270,264,265,9900,9900,239,249,4745,700,9900, - 693,9900,9900,9900,238,246,247,248,250,651, - 699,5021,35,1703,32,4863,9900,27,30,31, - 1654,1590,26,28,2249,296,23,25,50,2263, - 86,76,77,240,242,244,815,9900,9900,9900, - 9900,9900,9900,9900,9900,9900,9900,669,241,243, - 5086,35,1703,32,4863,9900,27,30,31,1654, - 1590,26,28,2249,296,23,25,50,2263,106, - 76,77,85,5086,35,1703,32,4863,9900,27, - 30,31,1654,1590,26,28,2249,296,23,25, - 50,2263,106,76,77,83,5086,35,1703,32, - 4863,9900,27,30,31,1654,1590,26,28,2249, - 296,23,25,50,2263,106,76,77,82,5086, - 35,1703,32,4863,9900,27,30,31,1654,1590, - 26,28,2249,296,23,25,50,2263,106,76, - 77,81,5086,35,1703,32,4863,9900,27,30, - 31,1654,1590,26,28,2249,296,23,25,50, - 2263,106,76,77,80,5086,35,1703,32,4863, - 9900,27,30,31,1654,1590,26,28,2249,296, - 23,25,50,2263,106,76,77,79,5086,35, - 1703,32,4863,9900,27,30,31,1654,1590,26, - 28,2249,296,23,25,50,2263,106,76,77, - 78,5086,2402,1703,2927,4863,9900,27,30,31, - 1654,1590,26,28,2249,296,23,25,50,2263, - 106,76,77,84,3203,9900,9900,9900,9900,4077, - 2962,9900,9900,9900,9900,9900,9900,9900,9900,77, - 9900,3300,9900,77,4077,9900,4077,9900,4077,9900, - 9900,9900,9900,9900,9900,262,9900,652,597,598, - 599,9900,9900,9900,759,9900,9900,9900,9900,9900, - 378,9900,262,9900,378,239,249,4745,700,2827, - 266,759,9900,2827,238,246,247,248,250,651, - 699,9900,239,249,4745,700,2941,278,264,265, - 2941,238,246,247,248,250,651,699,9900,9900, - 9900,9900,9900,240,242,244,815,9900,9900,3731, - 9900,9900,9900,545,9900,9900,9900,581,241,243, - 240,242,244,815,9900,9900,9900,9900,9900,9900, - 9900,9900,9900,9900,340,241,243,4566,35,1703, - 32,4863,9900,27,30,31,1654,1590,26,28, - 2249,296,23,25,50,2263,106,76,77,104, - 5086,35,1703,32,4863,9900,27,30,31,1654, - 1590,26,28,2249,296,23,25,50,2263,106, - 76,77,110,5086,35,1703,32,4863,9900,27, - 30,31,1654,1590,26,28,2249,296,23,25, - 50,2263,106,76,77,109,5086,35,1703,32, - 4863,9900,27,30,31,1654,1590,26,28,2249, - 296,23,25,50,2263,106,76,77,105,3397, - 9900,9900,9900,9900,4077,5151,35,1703,32,4863, - 9900,27,30,31,1654,1590,26,28,2249,296, - 23,25,50,2263,3864,76,77,9900,9900,9900, - 262,9900,9900,9900,9900,9900,9900,9900,9900,759, - 9900,9900 - }; - }; + public interface BaseCheck1 { + public final static short baseCheck1[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -296, 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, -482, 0, 0, 0, 0, 0, -592, 0, -596, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, 0, 0, 0, 0, 0, 0, 0, -425, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -719, 0, 0, 0, 0, 0, -331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -562, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -427, 0, 0, 0, 0, 0, 0, -564, 0, -563, 0, 0, 0, 0, + 0, 0, -566, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 interface BaseAction1 { - public final static char baseAction1[] = { - 9900,9900,9900,9900,9900,9900,9900,9900,239,249, - 4745,700,9900,9900,9900,9900,9900,238,246,247, - 248,250,651,699,6270,35,1703,32,5364,4411, - 27,30,31,1654,1590,374,28,1984,9900,9900, - 9900,6022,4340,9900,9900,9900,240,242,244,815, - 9900,9900,9900,9900,9900,9900,9900,9900,9900,9900, - 535,241,243,9900,9900,9900,9900,9900,262,9900, - 9900,9900,439,6086,9900,9900,9900,5148,4340,6086, - 9900,77,9900,5148,4340,9900,4077,9900,2649,443, - 8216,714,9900,9900,9900,351,1710,356,9900,9900, - 600,597,598,599,6282,6118,600,597,598,599, - 6282,9900,378,3059,9900,9900,3464,9900,9900,9900, - 9900,2827,3464,9900,9900,9900,444,445,446,815, - 9900,9900,652,597,598,599,9900,9900,2941,9900, - 652,597,598,599,4157,9900,9900,9900,2299,716, - 9900,9900,9900,9900,2299,266,9900,9900,9900,9900, - 367,543,9900,266,9900,9900,367,9900,9900,9900, - 3041,4157,269,264,265,378,716,9900,9900,189, - 281,264,265,9900,2827,1598,9900,9900,9900,9900, - 9900,2802,6930,395,9900,9900,9900,9900,4819,395, - 9900,2941,378,2760,77,9900,189,9900,9900,4077, - 3591,2827,1598,1341,5148,3782,3441,3466,2802,9900, - 9900,3782,3441,3466,2920,9900,9900,7623,2941,9900, - 2760,447,449,9900,9900,378,9900,600,597,598, - 599,4157,9900,9900,2827,9900,716,9900,9900,9900, - 9900,2988,77,3464,9900,9900,9900,878,9900,9900, - 9900,2941,3591,9900,1943,9900,5148,4904,9900,9900, - 9900,9900,378,9900,3156,9900,189,9900,690,680, - 9900,2827,1598,378,596,2299,9900,189,2802,600, - 597,598,599,9900,9900,9900,9900,367,2941,221, - 2760,652,597,598,599,3464,3253,9900,9900,5370, - 9900,9900,9900,5928,9900,77,692,9900,878,9900, - 878,3828,77,9900,266,9900,9900,878,9900,6930, - 9900,9900,9900,652,597,598,599,2299,9900,9900, - 9900,284,264,265,3575,9900,378,9900,189,367, - 189,679,7489,378,9900,9900,266,189,9900,9900, - 3018,213,221,9900,9900,9900,9900,9900,9900,221, - 9900,9900,5370,569,264,265,9900,9900,9900,5370, - 9900,4819,9900,9900,9900,9900,9900,4118,9900,9900, - 9900,9900,9900,9900,9900,9900,9900,9900,9900,9900, - 9900,9900,9900,9900,9900,9900,9900,229,9900,9900, - 9900,9900,9900,9900,9900,9900,9900,9900,9900,9900, - 9900,9900,9900,9900,9900,9900,9900,9900,9900,9900, - 9900,9900,9900,9900,9900,9900,9900,9900,9900,9900, - 9900,9900,9900,9900,9900,9900,9900,9900,9900,9900, - 4120,9900,9900,9900,9900,9900,9900,4200,9900,9900, - 9900,9900,9900,9900,9900,9900,9900,9900,9900,9900, - 9900,9900,9900,9900,9900,9900,9900,9900,9900,9900, - 9900,9900,9900,9900,9900,9900,9900,9900,9900,9900, - 9900,9900,9900,9900,9900,9900,9900,9900,9900,9900, - 9900,9900,9900,9900,9900,9900,9900,9900,9900,9900, - 9900,9900,9900,9900,9900,9900,9900,9900,9900,9900, - 9900,9900,9900,9900,9900,9900,9900,9900,9900,9900, - 9900,9900,9900,9900,5518,230,9900,0,1,263, - 747,0,537,7422,0,1,263,0,39,10602, - 0,39,10601,697,0,39,9915,0,39,9914, - 0,1,860,0,849,1,0,39,1,10602, - 0,39,1,10601,0,39,1,9915,0,39, - 1,9914,0,1,5597,0,1,818,0,263, - 253,0,1,1198,0,1,1227,0,1,1358, - 0,10168,257,0,10167,257,0,1198,257,0, - 1227,257,0,1358,257,0,1439,257,0,10273, - 257,0,10272,257,0,10195,257,0,10194,257, - 0,10193,257,0,10192,257,0,10191,257,0, - 10190,257,0,10189,257,0,10188,257,0,668, - 698,0,10168,258,0,10167,258,0,1198,258, - 0,1227,258,0,1358,258,0,1439,258,0, - 10273,258,0,10272,258,0,10195,258,0,10194, - 258,0,10193,258,0,10192,258,0,10191,258, - 0,10190,258,0,10189,258,0,10188,258,0, - 10168,259,0,10167,259,0,1198,259,0,1227, - 259,0,1358,259,0,1439,259,0,10273,259, - 0,10272,259,0,10195,259,0,10194,259,0, - 10193,259,0,10192,259,0,10191,259,0,10190, - 259,0,10189,259,0,10188,259,0,1358,430, - 0,1227,430,0,1198,430,0,318,430,0, - 10168,260,0,10167,260,0,1198,260,0,1227, - 260,0,1358,260,0,1439,260,0,10273,260, - 0,10272,260,0,10195,260,0,10194,260,0, - 10193,260,0,10192,260,0,10191,260,0,10190, - 260,0,10189,260,0,10188,260,0,318,323, - 0,10168,261,0,10167,261,0,1198,261,0, - 1227,261,0,1358,261,0,1439,261,0,10273, - 261,0,10272,261,0,10195,261,0,10194,261, - 0,10193,261,0,10192,261,0,10191,261,0, - 10190,261,0,10189,261,0,10188,261,0,1495, - 423,0,39,10601,0,10602,48,0,10601,48, - 0,9915,48,0,9914,48,0,10168,650,0, - 10167,650,0,1198,650,0,1227,650,0,1358, - 650,0,1439,650,0,10273,650,0,10272,650, - 0,10195,650,0,10194,650,0,10193,650,0, - 10192,650,0,10191,650,0,10190,650,0,10189, - 650,0,10188,650,0,10168,275,0,10167,275, - 0,1198,275,0,1227,275,0,1358,275,0, - 1439,275,0,10273,275,0,10272,275,0,10195, - 275,0,10194,275,0,10193,275,0,10192,275, - 0,10191,275,0,10190,275,0,10189,275,0, - 10188,275,0,10575,275,0,10574,275,0,10573, - 275,0,10207,275,0,10206,275,0,10205,275, - 0,10204,275,0,10203,275,0,10202,275,0, - 10201,275,0,10200,275,0,10199,275,0,10198, - 275,0,10197,275,0,10567,275,0,10566,275, - 0,39,275,10602,0,39,275,10601,696,0, - 39,275,9915,0,39,275,9914,0,9938,275, - 0,1,366,0,38,818,0,38,10602,0, - 38,10601,0,38,9915,0,38,9914,0,490, - 2036,0,476,2136,0,1495,29,0,9912,1, - 0,2193,353,0,1358,660,0,1227,660,0, - 1198,660,0,664,660,0,664,659,0,9963, - 75,0,9962,75,0,767,75,0,1364,75, - 0,1707,75,0,1839,75,0,1,662,0, - 1,480,0,494,949,0,493,1306,0,35, - 33,0,47,37,0,2056,190,0,6299,126, - 0,9912,419,0,9911,419,0,1358,662,0, - 1227,662,0,1198,662,0,1198,695,0,1227, - 695,0,1358,695,0,10581,695,0,537,3057, - 0,9938,1,263,0,39,1,263,0,263, - 452,0,1,1653,0,1,10575,0,1,10574, - 0,1,10573,0,1,10207,0,1,10206,0, - 1,10205,0,1,10204,0,1,10203,0,1, - 10202,0,1,10201,0,1,10200,0,1,10199, - 0,1,10198,0,1,10197,0,1,10567,0, - 1,10566,0,10602,37,0,10601,37,0,9915, - 37,0,9914,37,0,43,9936,0,43,37, - 0,2601,91,0,32,34,0,9908,1,0, - 39,818,0,1358,366,0,1227,366,0,1198, - 366,0,39,275,10601,0,1,1209,0,1, - 2586,0,263,254,0,10168,691,0,10167,691, - 0,1198,691,0,1227,691,0,1358,691,0, - 1439,691,0,10273,691,0,10272,691,0,10195, - 691,0,10194,691,0,10193,691,0,10192,691, - 0,10191,691,0,10190,691,0,10189,691,0, - 10188,691,0,1198,694,0,1227,694,0,1358, - 694,0,10581,694,0,9910,441,0,9909,441, - 0,263,451,0,1,6613,0,1,7282,0, - 1,7711,0,1,7750,0,1,7773,0,1, - 7796,0,1,7819,0,1,7842,0,1,7865, - 0,1,7888,0,1,7911,0,1,9922,0, - 1,9921,0,1,9920,0,1,9919,0,1, - 9918,0,1,9917,0,1,9916,0,1,2050, - 0,1,2053,0,1,2100,0,1,2147,0, - 1,2205,0,1,2658,0,39,1,0,9912, - 649,419,0,9911,649,419,0,1,263,3817, - 0,9909,263,0,3818,263,0,9906,1,0, - 9905,1,0,271,1220,0,424,32,0,423, - 29,0,1358,481,0,1227,481,0,1198,481, - 0,9938,481,0,39,481,0,366,481,0, - 6299,128,0,6299,127,0,1198,570,0,1227, - 570,0,1358,570,0,1198,571,0,1227,571, - 0,1358,571,0,1198,572,0,1227,572,0, - 1358,572,0,1198,573,0,1227,573,0,1358, - 573,0,1198,574,0,1227,574,0,1358,574, - 0,275,10602,0,275,10601,0,275,9915,0, - 275,9914,0,9936,45,0,37,45,0,9912, - 638,419,0,9911,638,419,0,9912,636,419, - 0,9911,636,419,0,9912,87,419,0,9911, - 87,419,0,1,92,0,4000,263,0,10, - 12,0,9938,1,0,648,637,0,1439,371, - 0,10273,371,0,10272,371,0,2401,100,0, - 8,10,12,0,4101,227,0,10602,2,37, - 0,10601,2,37,0,9915,2,37,0,9914, - 2,37,0,10602,36,0,10601,36,0,9915, - 36,0,9914,36,0,1358,657,0,1227,657, - 0,1198,657,0,1358,656,0,1227,656,0, - 1198,656,0,600,601,0,5078,103,0,4050, - 99,0,1358,95,0,1227,95,0,1198,95, - 0,9938,95,0,39,95,0,366,95,0, - 9912,649,638,419,0,649,638,0,35,73, - 0,4155,419,0,1358,657,658,0,1227,657, - 658,0,1198,657,658,0,657,658,0,313, - 4350,0,8,12,0,218,5723,0 - }; - }; + public final static short baseCheck[] = new short[BaseCheck0.baseCheck0.length + BaseCheck1.baseCheck1.length]; + { + int index = 0; + System.arraycopy(BaseCheck0.baseCheck0, 0, baseCheck, index, BaseCheck0.baseCheck0.length); + index += BaseCheck0.baseCheck0.length; + System.arraycopy(BaseCheck1.baseCheck1, 0, baseCheck, index, BaseCheck1.baseCheck1.length); + }; - public final static char baseAction[] = new char[BaseAction0.baseAction0.length + BaseAction1.baseAction1.length]; - { - int index = 0; - System.arraycopy(BaseAction0.baseAction0, 0, baseAction, index, BaseAction0.baseAction0.length); - index += BaseAction0.baseAction0.length; - System.arraycopy(BaseAction1.baseAction1, 0, baseAction, index, BaseAction1.baseAction1.length); - }; - 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 final int baseCheck(int index) { + return baseCheck[index]; + } - public interface TermCheck { - public final static char termCheck[] = {0, - 0,1,2,3,4,5,6,7,8,9, - 10,11,12,13,14,15,16,17,18,19, - 20,21,22,23,24,25,26,27,28,29, - 30,31,32,33,34,35,36,37,38,39, - 40,41,42,43,44,45,46,47,48,49, - 50,51,52,53,54,55,56,57,58,59, - 60,61,62,63,64,65,66,0,68,69, - 70,71,72,73,74,75,0,0,78,79, - 3,14,82,83,84,85,86,87,88,89, - 0,1,2,3,4,5,6,7,8,9, - 10,11,102,103,104,105,106,107,108,109, - 110,111,112,113,114,115,116,117,118,119, - 120,121,122,123,124,125,126,127,128,129, - 0,1,65,0,134,0,1,2,3,4, - 5,6,7,8,9,10,11,12,13,14, - 15,16,17,18,19,20,21,22,23,24, - 25,26,27,28,29,30,31,32,33,34, - 35,36,37,38,39,40,41,42,43,44, - 45,46,47,48,49,50,51,52,53,54, - 55,56,57,58,59,60,61,62,63,64, - 65,66,0,68,69,70,73,0,1,74, - 75,76,77,0,12,80,81,82,83,12, - 85,0,87,0,0,90,91,92,93,94, - 95,0,97,98,99,100,101,0,1,2, - 3,4,5,6,7,8,9,10,11,12, - 13,14,15,16,17,18,19,20,21,22, - 23,24,25,26,27,28,29,30,31,32, - 33,34,35,36,37,38,39,40,41,42, - 43,44,45,46,47,48,49,50,51,52, - 53,54,55,56,57,58,59,60,61,62, - 63,64,65,66,73,68,69,70,85,78, - 86,74,75,76,77,113,114,80,81,82, - 83,0,85,0,87,0,105,90,91,92, - 93,94,95,112,97,98,99,100,101,0, - 1,2,3,4,5,6,7,8,9,10, - 11,12,13,14,15,16,17,18,19,20, - 21,22,23,24,25,26,27,28,29,30, - 31,32,33,34,35,36,37,38,39,40, - 41,42,43,44,45,46,47,48,49,50, - 51,52,53,54,55,56,57,58,59,60, - 61,62,63,64,65,66,0,68,69,70, - 0,88,89,74,75,76,77,0,0,80, - 81,82,83,5,85,0,87,106,107,90, - 91,92,93,94,95,110,97,98,99,100, - 101,0,1,2,3,4,5,6,7,8, - 9,10,11,12,13,14,15,16,17,18, - 19,20,21,22,23,24,25,26,27,28, - 29,30,31,32,33,34,35,36,37,38, - 39,40,41,42,43,44,45,46,47,48, - 49,50,51,52,53,54,55,56,57,58, - 59,60,61,62,63,64,65,66,0,68, - 69,70,0,88,89,74,75,76,77,0, - 0,80,81,82,83,6,85,7,8,9, - 0,90,91,92,93,94,95,0,97,98, - 99,100,101,0,1,2,3,4,5,6, - 7,8,9,10,11,12,13,14,15,16, - 17,18,19,20,21,22,23,24,25,26, - 27,28,29,30,31,32,33,34,35,36, - 37,38,39,40,41,42,43,44,45,46, - 47,48,49,50,51,52,53,54,55,56, - 57,58,59,60,61,62,63,64,65,66, - 0,68,69,70,106,107,0,74,75,76, - 77,5,0,80,81,82,83,0,85,7, - 8,9,5,90,91,92,93,94,95,109, - 97,98,99,100,101,0,1,2,3,4, - 5,6,7,8,9,10,11,12,13,14, - 15,16,17,18,19,20,21,22,23,24, - 25,26,27,28,29,30,31,32,33,34, - 35,36,37,38,39,40,41,42,43,44, - 45,46,47,48,49,50,51,52,53,54, - 55,56,57,58,59,60,61,62,63,64, - 65,66,0,68,69,70,106,107,0,74, - 75,76,77,5,0,80,81,82,83,0, - 85,7,8,9,5,90,91,92,93,94, - 95,0,97,98,99,100,101,0,1,2, - 3,4,5,6,7,8,9,10,11,12, - 13,14,15,16,17,18,19,20,21,22, - 23,24,25,26,27,28,29,30,31,32, - 33,34,35,36,37,38,39,40,41,42, - 43,44,45,46,47,48,49,50,51,52, - 53,54,55,56,57,58,59,60,61,62, - 63,64,65,66,73,68,69,70,106,107, - 0,74,75,76,77,5,0,80,81,82, - 83,0,85,7,8,9,5,90,91,92, - 93,94,95,0,97,98,99,100,101,0, - 1,2,3,4,5,6,7,8,9,10, - 11,12,13,14,15,16,17,18,19,20, - 21,22,23,24,25,26,27,28,29,30, - 31,32,33,34,35,36,37,38,39,40, - 41,42,43,44,45,46,47,48,49,50, - 51,52,53,54,55,56,57,58,59,60, - 61,62,63,64,65,66,73,68,69,70, - 0,78,0,74,75,76,77,0,0,80, - 81,82,83,6,85,7,8,9,0,90, - 91,92,93,94,95,0,97,98,99,100, - 101,0,1,2,3,4,5,6,7,8, - 9,10,11,12,13,14,15,16,17,18, - 19,20,21,22,23,24,25,26,27,28, - 29,30,31,32,33,34,35,36,37,38, - 39,40,41,42,43,44,45,46,47,48, - 49,50,51,52,53,54,55,56,57,58, - 59,60,61,62,63,64,65,66,0,68, - 69,70,84,78,0,74,75,76,77,5, - 0,80,81,82,83,0,85,7,8,9, - 5,90,91,92,93,94,95,0,97,98, - 99,100,101,0,1,2,3,4,5,6, - 7,8,9,10,11,12,13,14,15,16, - 17,18,19,20,21,22,23,24,25,26, - 27,28,29,30,31,32,33,34,35,36, - 37,38,39,40,41,42,43,44,45,46, - 47,48,49,50,51,52,53,54,55,56, - 57,58,59,60,61,62,63,64,65,66, - 73,68,69,70,0,0,108,74,75,76, - 77,6,0,80,81,82,83,13,85,7, - 8,9,0,90,91,92,93,94,95,0, - 97,98,99,100,101,0,1,2,3,4, - 5,6,7,8,9,10,11,12,13,14, - 15,16,17,18,19,20,21,22,23,24, - 25,26,27,28,29,30,31,32,33,34, - 35,36,37,38,39,40,41,42,43,44, - 45,46,47,48,49,50,51,52,53,54, - 55,56,57,58,59,60,61,62,63,64, - 65,66,73,68,69,70,84,0,0,74, - 75,76,77,5,0,80,81,82,83,0, - 85,7,8,9,5,90,91,92,93,94, - 95,0,97,98,99,100,101,0,1,2, - 3,4,5,6,7,8,9,10,11,12, - 13,14,15,16,17,18,19,20,21,22, - 23,24,25,26,27,28,29,30,31,32, - 33,34,35,36,37,38,39,40,41,42, - 43,44,45,46,47,48,49,50,51,52, - 53,54,55,56,57,58,59,60,61,62, - 63,64,65,66,0,68,69,70,0,5, - 0,74,75,76,77,84,0,80,81,82, - 83,13,85,7,8,9,0,90,91,92, - 93,94,95,23,97,98,99,100,101,0, - 1,2,3,4,5,6,7,8,9,10, - 11,12,13,14,15,16,17,18,19,20, - 21,22,23,24,25,26,27,28,29,30, - 31,32,33,34,35,36,37,38,39,40, - 41,42,43,44,45,46,47,48,49,50, - 51,52,53,54,55,56,57,58,59,60, - 61,62,63,64,65,66,0,68,69,70, - 0,0,0,74,75,76,77,5,0,80, - 81,82,83,0,85,7,8,9,5,90, - 91,92,93,94,95,109,97,98,99,100, - 101,0,1,2,3,4,5,6,7,8, - 9,10,11,12,13,14,15,16,17,18, - 19,20,21,22,23,24,25,26,27,28, - 29,30,31,32,33,34,35,36,37,38, - 39,40,41,42,43,44,45,46,47,48, - 49,50,51,52,53,54,55,56,57,58, - 59,60,61,62,63,64,65,66,0,68, - 69,70,0,5,0,74,75,76,77,108, - 110,80,81,82,83,0,85,0,14,0, - 0,90,91,92,93,94,95,0,97,98, - 99,100,101,0,1,2,3,4,5,6, - 7,8,9,10,11,12,13,14,46,32, - 33,34,0,51,52,53,54,55,56,7, - 8,9,47,48,0,32,33,34,35,36, - 72,38,39,40,41,42,43,44,45,75, - 47,48,49,50,32,33,34,35,36,0, - 38,39,40,41,42,43,44,45,65,0, - 1,2,3,4,71,72,73,0,75,10, - 11,78,79,6,7,8,9,84,85,86, - 87,88,89,0,1,2,3,4,5,6, - 7,8,9,10,11,102,103,104,105,106, - 107,108,109,110,111,112,113,114,115,116, - 117,118,119,120,121,122,123,124,125,126, - 127,128,129,136,0,0,0,134,0,1, - 2,3,4,5,6,7,8,9,10,11, - 12,13,14,0,0,0,0,0,0,1, - 2,3,4,0,7,8,9,12,10,11, - 32,33,34,35,36,12,38,39,40,41, - 42,43,44,45,0,47,48,49,50,32, - 33,34,35,36,135,38,39,40,41,42, - 43,44,45,65,0,1,2,3,4,71, - 72,73,0,75,10,0,78,79,84,7, - 8,9,84,85,86,87,88,89,0,1, - 2,3,4,5,6,7,8,9,10,11, - 102,103,104,105,106,107,108,109,110,111, - 112,113,114,115,116,117,118,119,120,121, - 122,123,124,125,126,127,128,129,113,114, - 86,67,134,0,1,2,3,4,5,6, - 7,8,9,10,11,12,13,72,15,16, - 17,18,19,20,21,22,23,24,25,26, - 27,28,29,30,31,32,33,34,35,36, - 37,38,39,40,41,42,43,44,45,46, - 47,48,49,50,51,52,53,54,55,56, - 57,58,59,60,61,62,63,64,0,66, - 0,68,69,70,6,5,0,74,0,1, - 2,3,4,5,6,7,8,9,10,11, - 12,13,0,15,16,17,18,19,20,21, - 22,23,24,25,26,27,28,29,30,31, - 32,33,34,35,36,37,38,39,40,41, - 42,43,44,45,46,47,48,49,50,51, - 52,53,54,55,56,57,58,59,60,61, - 62,63,64,67,66,0,68,69,70,0, - 5,0,74,0,1,2,3,4,5,6, - 7,8,9,10,11,12,13,14,15,16, - 17,18,19,20,21,22,23,24,25,26, - 27,28,29,30,31,32,33,34,35,36, - 37,38,39,40,41,42,43,44,45,0, - 1,2,3,4,5,6,7,8,9,10, - 11,12,13,0,1,2,3,4,65,66, - 67,68,69,70,0,1,2,3,4,76, - 77,86,0,80,81,0,0,84,0,0, - 87,90,7,8,9,7,8,9,0,96, - 15,16,17,18,19,20,21,22,0,24, - 25,26,27,28,29,30,31,32,33,34, - 35,36,33,38,39,40,41,42,43,44, - 45,0,46,84,131,132,133,0,1,2, - 3,4,5,6,7,8,9,10,11,12, - 13,14,15,16,17,18,19,20,21,22, - 23,24,25,26,27,28,29,30,31,32, - 33,34,35,36,37,38,39,40,41,42, - 43,44,45,0,1,2,3,4,5,6, - 7,8,9,10,11,12,13,0,1,2, - 3,4,65,66,67,68,69,70,0,1, - 2,3,4,76,77,0,108,80,81,0, - 0,84,0,0,87,0,7,8,9,7, - 8,9,0,96,15,16,17,18,19,20, - 21,22,0,24,25,26,27,28,29,30, - 31,32,33,34,35,36,0,38,39,40, - 41,42,43,44,45,23,46,84,131,132, - 133,0,1,2,3,4,5,6,7,8, - 9,10,11,12,13,14,15,16,17,18, - 19,20,21,22,23,24,25,26,27,28, - 29,30,31,32,33,34,35,36,37,38, - 39,40,41,42,43,44,45,0,76,104, - 0,0,1,2,3,4,5,6,7,8, - 9,10,11,12,13,14,65,66,67,68, - 69,70,0,1,2,3,4,76,77,0, - 0,80,81,32,33,34,35,36,87,38, - 39,40,41,42,43,44,45,96,0,0, - 1,2,3,4,5,6,7,8,9,10, - 11,12,13,0,67,0,65,0,1,2, - 3,4,71,72,7,8,9,12,13,12, - 79,0,1,2,3,4,135,0,1,2, - 3,4,5,6,7,8,9,10,11,12, - 13,14,15,16,17,18,19,20,21,22, - 23,24,25,26,27,28,29,30,31,32, - 33,34,35,36,37,38,39,40,41,42, - 43,44,45,84,67,72,0,0,1,2, - 3,4,5,6,7,8,9,10,11,12, - 13,14,65,66,67,68,69,70,0,1, - 2,3,4,76,77,0,0,80,81,32, - 33,34,35,36,0,38,39,40,41,42, - 43,44,45,96,0,1,2,3,4,5, - 6,7,8,9,10,11,12,13,32,33, - 34,0,65,67,0,1,2,3,4,72, - 6,46,75,0,10,11,79,0,1,2, - 3,4,135,0,1,2,3,4,5,6, - 7,8,9,10,11,12,13,14,15,16, - 17,18,19,20,21,22,23,24,25,26, - 27,28,29,30,31,32,33,34,35,36, - 37,38,39,40,41,42,43,44,45,0, - 0,67,71,0,5,0,1,2,3,4, - 7,8,9,0,67,10,73,0,65,66, - 67,68,69,70,71,0,0,14,0,76, - 77,5,0,80,81,32,33,34,35,36, - 14,38,39,40,41,42,43,44,45,96, - 0,1,2,3,4,5,6,7,8,9, - 10,11,12,13,14,15,16,17,18,19, - 20,21,22,23,24,25,26,27,28,29, - 30,31,32,33,34,35,36,37,38,39, - 40,41,42,43,44,45,71,0,72,73, - 0,0,5,0,78,79,78,7,8,9, - 0,1,2,3,4,65,66,67,68,69, - 70,0,105,0,111,0,76,77,5,112, - 80,81,32,33,34,35,36,87,38,39, - 40,41,42,43,44,45,96,0,1,2, - 3,4,5,6,7,8,9,10,11,12, - 13,14,15,16,17,18,19,20,21,22, - 23,24,25,26,27,28,29,30,31,32, - 33,34,35,36,37,38,39,40,41,42, - 43,44,45,72,0,72,73,0,0,5, - 0,78,0,78,7,8,9,7,8,9, - 109,0,65,66,67,68,69,70,115,116, - 0,0,0,76,77,14,5,80,81,32, - 33,34,35,36,87,38,39,40,41,42, - 43,44,45,96,0,1,2,3,4,5, - 6,7,8,9,10,11,12,13,14,15, - 16,17,18,19,20,21,22,23,24,25, - 26,27,28,29,30,31,32,33,34,35, - 36,37,38,39,40,41,42,43,44,45, - 79,71,0,72,0,73,0,0,78,88, - 89,7,8,9,0,1,2,3,4,65, - 66,67,68,69,70,0,0,0,0,0, - 76,77,102,103,80,81,32,33,34,35, - 36,87,38,39,40,41,42,43,44,45, - 96,0,1,2,3,4,5,6,7,8, - 9,10,11,12,13,14,15,16,17,18, - 19,20,21,22,23,24,25,26,27,28, - 29,30,31,32,33,34,35,36,37,38, - 39,40,41,42,43,44,45,0,0,1, - 71,0,0,78,7,8,9,105,7,8, - 9,84,0,84,112,0,65,66,67,68, - 69,70,0,0,0,0,14,76,77,5, - 32,80,81,32,33,34,35,36,14,38, - 39,40,41,42,43,44,45,96,0,1, - 2,3,4,5,6,7,8,9,10,11, - 12,13,14,15,16,17,18,19,20,21, - 22,23,24,25,26,27,28,29,30,31, - 32,33,34,35,36,37,38,39,40,41, - 42,43,44,45,71,0,72,73,0,87, - 0,0,78,79,0,7,8,9,13,0, - 88,89,110,65,66,67,68,69,70,0, - 105,0,0,14,76,77,5,112,80,81, - 32,33,34,35,36,14,38,39,40,41, - 42,43,44,45,96,0,1,2,3,4, - 5,6,7,8,9,10,11,12,13,14, - 15,16,17,18,19,20,21,22,23,24, - 25,26,27,28,29,30,31,32,33,34, - 35,36,37,38,39,40,41,42,43,44, - 45,72,0,72,0,0,87,5,0,5, - 79,0,7,8,9,0,84,0,104,108, - 65,66,67,68,69,70,0,0,0,12, - 0,76,77,5,0,80,81,32,33,34, - 35,36,14,38,39,40,41,42,43,44, - 45,96,0,1,2,3,4,5,6,7, - 8,9,10,11,12,13,14,15,16,17, - 18,19,20,21,22,23,24,25,26,27, - 28,29,30,31,32,33,34,35,36,37, - 38,39,40,41,42,43,44,45,71,88, - 89,71,0,88,89,71,0,79,0,7, - 8,9,104,5,88,89,10,65,66,67, - 68,69,70,0,0,0,0,0,76,77, - 113,114,80,81,32,33,34,35,36,0, - 38,39,40,41,42,43,44,45,96,0, - 1,2,3,4,5,6,7,8,9,10, - 11,12,13,14,15,16,17,18,19,20, - 21,22,23,24,25,26,27,28,29,30, - 31,32,33,34,35,36,37,38,39,40, - 41,42,43,44,45,0,1,2,3,4, - 5,6,7,8,9,10,11,12,13,84, - 71,88,89,0,65,66,67,68,69,70, - 0,0,0,0,0,76,77,14,5,80, - 81,0,1,2,3,4,5,6,7,8, - 9,10,11,12,13,96,0,1,2,3, - 4,5,6,7,8,9,10,11,12,13, - 14,15,16,17,18,19,20,21,22,23, - 24,25,26,27,28,29,30,31,32,33, - 34,35,36,37,38,39,40,41,42,43, - 44,45,79,0,0,1,0,84,5,6, - 7,8,9,72,0,12,13,14,14,88, - 89,65,66,67,68,69,70,0,14,0, - 0,0,76,77,5,5,80,81,32,33, - 34,109,0,0,1,2,3,4,5,6, - 46,0,96,10,11,12,13,14,15,16, - 17,18,19,20,21,22,23,24,25,26, - 27,28,29,30,31,72,73,0,35,65, - 37,78,79,79,0,1,2,3,4,46, - 47,48,49,50,51,52,53,54,55,56, - 57,58,59,60,61,62,63,64,0,1, - 2,3,4,0,6,7,8,9,0,1, - 2,3,4,5,6,82,83,0,10,11, - 12,13,0,15,16,17,18,19,20,21, - 22,23,24,25,26,27,28,29,30,31, - 0,67,110,0,111,37,6,7,8,9, - 47,48,12,13,46,47,48,49,50,51, - 52,53,54,55,56,57,58,59,60,61, - 62,63,64,0,1,2,3,4,5,6, - 0,0,74,10,11,0,78,0,71,67, - 82,83,0,1,2,3,4,5,6,14, - 0,14,10,11,12,13,14,15,16,17, - 18,19,20,21,22,23,24,25,26,27, - 28,29,30,31,0,1,2,3,4,37, - 6,7,8,9,0,0,12,13,46,47, - 48,49,50,51,52,53,54,55,56,57, - 58,59,60,61,62,63,64,0,1,2, - 3,4,75,6,7,8,9,75,0,12, - 13,71,87,130,82,83,0,1,2,3, - 4,5,6,0,0,0,10,11,12,13, - 14,15,16,17,18,19,20,21,22,23, - 24,25,26,27,28,29,30,31,0,0, - 130,35,78,37,0,1,2,3,4,84, - 6,0,46,47,48,49,50,51,52,53, - 54,55,56,57,58,59,60,61,62,63, - 64,73,0,1,2,3,4,5,6,0, - 74,67,10,11,12,13,14,15,16,17, - 18,19,20,21,22,23,24,25,26,27, - 28,29,30,31,0,1,2,3,4,37, - 6,7,8,9,0,0,78,111,46,47, - 48,49,50,51,52,53,54,55,56,57, - 58,59,60,61,62,63,64,86,0,1, - 2,3,4,5,6,0,74,75,10,11, - 0,1,2,3,4,5,6,78,0,87, - 10,11,12,13,6,15,16,17,18,19, - 20,21,22,23,24,25,26,27,28,29, - 30,31,0,1,2,3,4,37,6,7, - 8,9,47,48,12,13,46,47,48,49, - 50,51,52,53,54,55,56,57,58,59, - 60,61,62,63,64,0,1,2,3,4, - 0,6,0,0,74,0,1,2,3,4, - 5,6,82,83,0,10,11,12,13,14, - 15,16,17,18,19,20,21,22,23,24, - 25,26,27,28,29,30,31,0,1,2, - 3,4,37,6,7,8,9,0,0,12, - 13,46,47,48,49,50,51,52,53,54, - 55,56,57,58,59,60,61,62,63,64, - 23,0,1,2,3,4,5,6,78,74, - 75,10,11,12,13,71,15,16,17,18, - 19,20,21,22,23,24,25,26,27,28, - 29,30,31,0,1,2,3,4,37,0, - 7,8,9,66,67,0,0,46,47,48, - 49,50,51,52,53,54,55,56,57,58, - 59,60,61,62,63,64,0,1,2,3, - 4,32,33,34,0,74,0,1,2,3, - 4,5,6,82,83,0,10,11,12,13, - 0,15,16,17,18,19,20,21,22,23, - 24,25,26,27,28,29,30,31,0,1, - 2,3,4,37,6,0,71,71,10,11, - 0,0,46,47,48,49,50,51,52,53, - 54,55,56,57,58,59,60,61,62,63, - 64,0,1,2,3,4,0,73,82,83, - 74,0,1,2,3,4,5,6,82,83, - 14,10,11,12,13,0,15,16,17,18, - 19,20,21,22,23,24,25,26,27,28, - 29,30,31,0,1,2,3,4,37,6, - 0,0,72,10,11,0,5,46,47,48, - 49,50,51,52,53,54,55,56,57,58, - 59,60,61,62,63,64,131,132,133,0, - 130,75,0,82,83,74,0,1,2,3, - 4,5,6,82,83,13,10,11,12,13, - 14,15,16,17,18,19,20,21,22,23, - 24,25,26,27,28,29,30,31,0,1, - 2,3,4,37,6,7,8,9,73,0, - 0,0,46,47,48,49,50,51,52,53, - 54,55,56,57,58,59,60,61,62,63, - 64,72,0,1,2,3,4,5,6,0, - 74,75,10,11,12,13,14,15,16,17, - 18,19,20,21,22,23,24,25,26,27, - 28,29,30,31,0,67,0,0,0,37, - 0,5,5,0,1,2,3,4,46,47, - 48,49,50,51,52,53,54,55,56,57, - 58,59,60,61,62,63,64,86,0,1, - 2,3,4,5,6,66,0,0,10,11, - 12,13,14,15,16,17,18,19,20,21, - 22,23,24,25,26,27,28,29,30,31, - 0,1,2,3,4,37,6,7,8,9, - 67,73,72,111,46,47,48,49,50,51, - 52,53,54,55,56,57,58,59,60,61, - 62,63,64,0,0,1,2,3,4,5, - 6,0,0,75,10,11,12,13,14,15, - 16,17,18,19,20,21,22,23,24,25, - 26,27,28,29,30,31,0,67,0,0, - 0,37,0,1,2,3,4,7,8,9, - 46,47,48,49,50,51,52,53,54,55, - 56,57,58,59,60,61,62,63,64,0, - 0,1,2,3,4,5,6,130,0,0, - 10,11,12,13,6,15,16,17,18,19, - 20,21,22,23,24,25,26,27,28,29, - 30,31,0,1,2,3,4,37,6,67, - 71,71,10,11,0,111,46,47,48,49, - 50,51,52,53,54,55,56,57,58,59, - 60,61,62,63,64,0,1,2,3,4, - 5,6,0,74,74,10,11,12,13,71, - 15,16,17,18,19,20,21,22,23,24, - 25,26,27,28,29,30,31,88,89,67, - 0,0,37,0,1,2,3,4,0,0, - 0,46,47,48,49,50,51,52,53,54, - 55,56,57,58,59,60,61,62,63,64, - 0,1,2,3,4,5,6,72,0,0, - 10,11,12,13,0,15,16,17,18,19, - 20,21,22,23,24,25,26,27,28,29, - 30,31,0,1,2,3,4,37,67,0, - 67,0,1,2,3,4,46,47,48,49, - 50,51,52,53,54,55,56,57,58,59, - 60,61,62,63,64,0,1,2,3,4, - 5,6,0,0,74,10,11,12,13,6, - 15,16,17,18,19,20,21,22,23,24, - 25,26,27,28,29,30,31,88,89,67, - 0,0,37,0,1,2,3,4,67,36, - 71,46,47,48,49,50,51,52,53,54, - 55,56,57,58,59,60,61,62,63,64, - 0,1,2,3,4,5,6,0,0,74, - 10,11,12,13,6,15,16,17,18,19, - 20,21,22,23,24,25,26,27,28,29, - 30,31,0,0,0,0,0,37,0,6, - 67,71,6,5,0,0,46,47,48,49, - 50,51,52,53,54,55,56,57,58,59, - 60,61,62,63,64,0,1,2,3,4, - 5,6,102,103,74,10,11,12,13,71, - 15,16,17,18,19,20,21,22,23,24, - 25,26,27,28,29,30,31,0,0,0, - 0,67,37,0,71,6,71,71,0,6, - 0,46,47,48,49,50,51,52,53,54, - 55,56,57,58,59,60,61,62,63,64, - 0,1,2,3,4,5,6,102,103,36, - 10,11,12,13,46,15,16,17,18,19, - 20,21,22,23,24,25,26,27,28,29, - 30,31,0,0,0,67,0,37,0,5, - 71,71,0,5,0,0,46,47,48,49, - 50,51,52,53,54,55,56,57,58,59, - 60,61,62,63,64,0,1,2,3,4, - 5,6,102,103,0,10,11,12,13,46, - 15,16,17,18,19,20,21,22,23,24, - 25,26,27,28,29,30,31,0,0,0, - 67,0,37,5,131,132,133,0,0,0, - 0,46,47,48,49,50,51,52,53,54, - 55,56,57,58,59,60,61,62,63,64, - 0,1,2,3,4,5,6,0,0,0, - 10,11,12,13,0,15,16,17,18,19, - 20,21,22,23,24,25,26,27,28,29, - 30,31,88,89,0,0,0,37,0,0, - 0,0,0,0,0,0,46,47,48,49, - 50,51,52,53,54,55,56,57,58,59, - 60,61,62,63,64,0,1,2,3,4, - 5,6,0,0,0,10,11,12,13,0, - 15,16,17,18,19,20,21,22,23,24, - 25,26,27,28,29,30,31,0,0,0, - 86,0,37,0,0,0,0,0,0,0, - 0,46,47,48,49,50,51,52,53,54, - 55,56,57,58,59,60,61,62,63,64, - 0,1,2,3,4,5,6,0,0,0, - 10,11,12,13,0,15,16,17,18,19, - 20,21,22,23,24,25,26,27,28,29, - 30,31,0,0,0,86,0,37,0,0, - 0,0,0,0,0,0,46,47,48,49, - 50,51,52,53,54,55,56,57,58,59, - 60,61,62,63,64,0,1,2,3,4, - 5,6,0,0,0,10,11,12,13,0, - 15,16,17,18,19,20,21,22,23,24, - 25,26,27,28,29,30,31,0,84,0, - 0,0,37,0,0,0,0,0,0,0, - 0,46,47,48,49,50,51,52,53,54, - 55,56,57,58,59,60,61,62,63,64, - 0,1,2,3,4,5,6,0,0,0, - 10,11,12,13,0,15,16,17,18,19, - 20,21,22,23,24,25,26,27,28,29, - 30,31,0,0,0,86,0,37,0,0, - 0,0,0,0,0,0,46,47,48,49, - 50,51,52,53,54,55,56,57,58,59, - 60,61,62,63,64,0,1,2,3,4, - 5,6,0,0,0,10,11,12,13,0, - 15,16,17,18,19,20,21,22,23,24, - 25,26,27,28,29,30,31,23,84,0, - 0,0,37,0,0,0,0,0,0,0, - 0,46,47,48,49,50,51,52,53,54, - 55,56,57,58,59,60,61,62,63,64, - 0,1,2,3,4,0,6,7,8,9, - 66,67,0,0,0,15,16,17,18,19, - 20,21,22,23,24,25,26,27,28,29, - 30,31,32,33,34,35,36,37,38,39, - 40,41,42,43,44,45,0,0,0,0, - 0,0,0,84,0,0,0,1,2,3, - 4,86,6,7,8,9,66,0,68,69, - 70,15,16,17,18,19,20,21,22,23, - 24,25,26,27,28,29,30,31,32,33, - 34,35,36,37,38,39,40,41,42,43, - 44,45,0,0,0,0,0,0,0,0, - 0,0,0,1,2,3,4,0,6,7, - 8,9,66,0,68,69,70,15,16,17, - 18,19,20,21,22,23,24,25,26,27, - 28,29,30,31,32,33,34,35,36,37, - 38,39,40,41,42,43,44,45,0,0, - 0,0,0,0,0,0,0,0,0,1, - 2,3,4,0,6,7,8,9,66,0, - 68,69,70,15,16,17,18,19,20,21, - 22,23,24,25,26,27,28,29,30,31, - 32,33,34,35,36,37,38,39,40,41, - 42,43,44,45,0,0,0,1,2,3, - 4,0,0,0,0,1,2,3,4,0, - 14,7,8,9,66,0,68,69,70,15, - 16,17,18,19,20,21,22,23,24,25, - 26,27,28,29,30,31,32,33,34,35, - 36,0,38,39,40,41,42,43,44,45, - 0,0,0,0,0,14,0,0,0,0, - 0,1,2,3,4,0,14,7,8,9, - 66,75,68,69,70,15,16,17,18,19, - 20,21,22,23,24,25,26,27,28,29, - 30,31,32,33,34,35,36,0,38,39, - 40,41,42,43,44,45,0,0,1,0, - 0,5,0,0,73,0,10,65,12,13, - 79,14,0,14,14,73,66,0,68,69, - 70,0,0,0,0,0,86,0,1,2, - 3,4,5,6,7,8,9,10,11,14, - 0,14,0,47,48,49,50,0,0,0, - 0,0,0,57,0,115,116,117,118,119, - 120,121,122,123,124,125,126,71,72,73, - 0,0,73,86,78,75,79,0,82,83, - 0,0,86,0,88,89,87,0,86,0, - 0,14,65,0,0,0,0,0,102,103, - 75,105,106,107,108,109,110,14,0,113, - 114,115,0,117,118,119,120,121,122,123, - 124,125,126,0,0,129,0,1,2,3, - 4,5,6,7,8,9,10,11,12,13, - 14,0,1,2,3,4,5,6,7,8, - 9,10,11,12,13,14,79,0,32,33, - 34,35,36,0,38,39,40,41,42,43, - 44,45,79,32,33,34,35,36,0,38, - 39,40,41,42,43,44,45,0,0,0, - 0,65,84,0,0,0,0,104,72,0, - 0,14,0,0,0,79,65,14,0,0, - 0,0,104,72,0,0,14,0,0,0, - 79,0,1,2,3,4,5,6,7,8, - 9,14,14,12,13,0,1,2,3,4, - 5,6,7,8,9,0,0,12,13,0, - 0,0,65,32,33,34,35,36,0,38, - 39,40,41,42,43,44,45,32,33,34, - 35,36,79,38,39,40,41,42,43,44, - 45,79,65,0,1,2,3,4,5,6, - 7,8,9,72,73,12,13,79,0,78, - 0,1,2,3,4,5,6,72,73,0, - 10,11,0,78,0,32,33,34,35,36, - 0,38,39,40,41,42,43,44,45,0, - 0,1,2,3,4,5,6,7,8,9, - 0,0,12,13,0,0,1,2,3,4, - 0,6,7,8,9,72,73,12,13,14, - 0,78,32,33,34,35,36,0,38,39, - 40,41,42,43,44,45,0,0,0,2, - 0,14,0,0,7,8,9,0,0,0, - 0,0,15,16,17,18,19,20,21,22, - 0,14,72,73,0,0,0,0,78,32, - 33,34,35,36,0,38,39,40,41,42, - 43,44,45,0,79,2,0,0,0,0, - 7,8,9,0,0,0,0,0,15,16, - 17,18,19,20,21,22,79,0,0,104, - 0,0,65,0,0,32,33,34,35,36, - 73,38,39,40,41,42,43,44,45,0, - 1,2,3,4,5,6,86,0,0,10, - 11,0,0,14,0,1,2,3,4,5, - 6,7,8,9,10,11,0,0,0,0, - 0,0,0,0,0,115,116,117,118,119, - 120,121,122,123,124,125,126,0,1,2, - 3,4,5,6,7,8,9,10,11,0, - 1,2,3,4,5,6,0,0,0,10, - 11,72,73,14,0,0,0,78,79,0, - 0,0,0,0,5,86,0,1,2,3, - 4,5,6,0,14,2,10,11,84,0, - 14,0,0,104,0,0,0,0,15,16, - 17,18,19,20,21,22,0,1,2,3, - 4,5,6,0,65,0,10,11,49,50, - 0,84,0,0,0,0,0,71,0,71, - 7,8,9,0,78,71,78,14,0,14, - 14,72,78,73,0,0,0,14,72,79, - 0,0,0,0,0,79,0,0,102,103, - 102,103,0,0,0,0,102,103,0,0, - 0,0,0,0,0,0,0,0,72,0, - 0,0,0,127,128,127,128,0,65,0, - 0,127,128,0,0,0,73,0,129,73, - 75,0,0,134,0,79,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,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0 - }; - }; - public final static char termCheck[] = TermCheck.termCheck; - public final int termCheck(int index) { return termCheck[index]; } + public final static short rhs[] = baseCheck; - public interface TermAction { - public final static char termAction[] = {0, - 9900,8841,8841,8841,8841,8841,8841,8841,8841,8841, - 8841,8841,8841,8841,8841,8841,8841,8841,8841,8841, - 8841,8841,8841,8841,8841,8841,8841,8841,8841,8841, - 8841,8841,8841,8841,8841,8841,8841,8841,8841,8841, - 8841,8841,8841,8841,8841,8841,8841,8841,8841,8841, - 8841,8841,8841,8841,8841,8841,8841,8841,8841,8841, - 8841,8841,8841,8841,8841,8841,8841,9900,8841,8841, - 8841,8841,8841,8841,8841,8841,1,9900,8841,8841, - 756,9910,8841,8841,8841,8841,8841,8841,8841,8841, - 1,8771,8759,8763,8767,860,8756,8790,8784,8787, - 818,5597,8841,8841,8841,8841,8841,8841,8841,8841, - 8841,8841,8841,8841,8841,8841,8841,8841,8841,8841, - 8841,8841,8841,8841,8841,8841,8841,8841,8841,8841, - 9900,3598,9909,9900,8841,9900,9619,8737,8737,8737, - 8737,8737,8730,8737,8737,8737,8737,8737,8737,9758, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 9623,1,115,1,1,1,748,9900,3262,1, - 9911,2489,721,420,7352,757,10108,1,1,3762, - 2655,111,9907,1,35,3863,3260,3389,3054,3816, - 5147,9900,3861,1108,3837,1789,3826,10,9761,9761, - 9761,9761,9761,9761,9761,9761,9761,9761,9761,9761, - 9761,9761,9761,9761,9761,9761,9761,9761,9761,9761, - 9761,9761,9761,9761,9761,9761,9761,9761,9761,9761, - 9761,9761,9761,9761,9761,9761,9761,9761,9761,9761, - 9761,9761,9761,9761,9761,9761,9761,9761,9761,9761, - 9761,9761,9761,9761,9761,9761,9761,9761,9761,9761, - 9761,9761,9761,9761,3862,9761,9761,9761,1983,8149, - 1774,9761,9761,9761,9761,7321,5153,9761,9761,9761, - 9761,129,9761,121,9761,137,8080,9761,9761,9761, - 9761,9761,9761,8103,9761,9761,9761,9761,9761,8, - 9782,9782,9782,9782,9782,9782,9782,9782,9782,9782, - 9782,9782,9782,9782,9782,9782,9782,9782,9782,9782, - 9782,9782,9782,9782,9782,9782,9782,9782,9782,9782, - 9782,9782,9782,9782,9782,9782,9782,9782,9782,9782, - 9782,9782,9782,9782,9782,9782,9782,9782,9782,9782, - 9782,9782,9782,9782,9782,9782,9782,9782,9782,9782, - 9782,9782,9782,9782,9782,9782,9900,9782,9782,9782, - 9900,6652,6683,9782,9782,9782,9782,9900,9900,9782, - 9782,9782,9782,782,9782,141,9782,5983,5954,9782, - 9782,9782,9782,9782,9782,3331,9782,9782,9782,9782, - 9782,9900,9619,8737,8737,8737,8737,8737,8730,8737, - 8737,8737,8737,8737,8737,9626,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,9623,1,149,1, - 1,1,9900,6652,6683,1,9911,2489,721,39, - 333,757,10108,1,1,9938,2655,1358,1198,1227, - 135,3863,3260,3389,3054,3816,5147,9900,3861,1108, - 3837,1789,3826,9900,9619,8737,8737,8737,8737,8737, - 8730,8737,8737,8737,8737,8737,8737,9626,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,9623,1, - 130,1,1,1,1166,1076,9900,1,9911,2489, - 721,4215,665,757,10108,1,1,9900,2655,1358, - 1198,1227,1741,3863,3260,3389,3054,3816,5147,3677, - 3861,1108,3837,1789,3826,9900,9619,8737,8737,8737, - 8737,8737,8730,8737,8737,8737,8737,8737,8737,9626, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 9623,1,150,1,1,1,5983,5954,9900,1, - 9911,2489,721,4252,348,757,10108,1,1,9900, - 2655,1358,1198,1227,1939,3863,3260,3389,3054,3816, - 5147,343,3861,1108,3837,1789,3826,9900,9619,8737, - 8737,8737,8737,8737,8730,8737,8737,8737,8737,8737, - 8737,9626,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,9623,1,5871,1,1,1,1166,1076, - 9900,1,9911,2489,721,2193,662,757,10108,1, - 1,9900,2655,9329,9335,9332,5617,3863,3260,3389, - 3054,3816,5147,9900,3861,1108,3837,1789,3826,9900, - 9619,8737,8737,8737,8737,8737,8730,8737,8737,8737, - 8737,8737,8737,9626,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,9623,1,3862,1,1,1, - 9900,4154,9900,1,9911,2489,721,9900,653,757, - 10108,1,1,1120,2655,1358,1198,1227,484,3863, - 3260,3389,3054,3816,5147,9900,3861,1108,3837,1789, - 3826,9900,9619,8737,8737,8737,8737,8737,8730,8737, - 8737,8737,8737,8737,8737,9626,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,9623,1,133,1, - 1,1,4098,7934,9900,1,9911,2489,721,1220, - 654,757,10108,1,1,632,2655,1358,1198,1227, - 3017,3863,3260,3389,3054,3816,5147,190,3861,1108, - 3837,1789,3826,9900,9619,8737,8737,8737,8737,8737, - 8730,8737,8737,8737,8737,8737,8737,9626,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,9623,1, - 9317,1,1,1,131,9900,4608,1,9911,2489, - 721,2213,431,757,10108,1,1,5050,2655,1358, - 1198,1227,1,3863,3260,3389,3054,3816,5147,629, - 3861,1108,3837,1789,3826,9900,9619,8737,8737,8737, - 8737,8737,8730,8737,8737,8737,8737,8737,8737,9626, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 9623,1,1604,1,1,1,2,9900,619,1, - 9911,2489,721,2915,366,757,10108,1,1,91, - 2655,9445,9451,9448,9433,3863,3260,3389,3054,3816, - 5147,9900,3861,1108,3837,1789,3826,9900,9619,8737, - 8737,8737,8737,8737,8730,8737,8737,8737,8737,8737, - 8737,9626,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,9623,1,606,1,1,1,151,1510, - 337,1,9911,2489,721,10337,366,757,10108,1, - 1,5119,2655,1358,1198,1227,155,3863,3260,3389, - 3054,3816,5147,10236,3861,1108,3837,1789,3826,9900, - 9619,8737,8737,8737,8737,8737,8730,8737,8737,8737, - 8737,8737,8737,9626,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,9623,1,9900,1,1,1, - 157,153,1,1,9911,2489,721,7949,655,757, - 10108,1,1,271,2655,1358,1198,1227,9635,3863, - 3260,3389,3054,3816,5147,4531,3861,1108,3837,1789, - 3826,9900,9619,8737,8737,8737,8737,8737,8730,8737, - 8737,8737,8737,8737,8737,9626,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,9623,1,353,1, - 1,1,9900,9263,9900,1,9911,2489,721,4703, - 4500,757,10108,1,1,118,2655,9900,9912,9900, - 9900,3863,3260,3389,3054,3816,5147,218,3861,1108, - 3837,1789,3826,9900,9311,9311,9311,9311,9311,9311, - 9311,9311,9311,9311,9311,9311,9311,9311,9919,10272, - 10273,1439,258,9921,9922,9920,9916,9917,9918,8856, - 8850,8853,7189,4159,9900,9311,9311,9311,9311,9311, - 1613,9311,9311,9311,9311,9311,9311,9311,9311,9911, - 9311,9311,9311,9311,8865,8862,8859,8883,8871,9900, - 8889,8868,8880,8847,8874,8877,8886,8844,9311,38, - 9248,9239,9242,9245,9311,9311,9311,431,9311,9236, - 5597,9311,9311,424,1358,1198,1227,9311,9311,9311, - 9311,9311,9311,366,8750,8740,9054,8747,860,849, - 1358,1198,1227,818,5597,9311,9311,9311,9311,9311, - 9311,9311,9311,9311,9311,9311,9311,9311,9311,9311, - 9311,9311,9311,9311,9311,9311,9311,9311,9311,9311, - 9311,9311,9311,9897,9900,9900,9900,9311,9900,9436, - 9436,9436,9436,9436,9436,9436,9436,9436,9436,9436, - 9436,9436,9436,9900,9900,117,9900,259,9900,9914, - 10602,10601,9915,9900,8904,8898,8901,7352,818,5597, - 9436,9436,9436,9436,9436,5769,9436,9436,9436,9436, - 9436,9436,9436,9436,328,9436,9436,9436,9436,8913, - 8910,8907,8931,8919,8729,8937,8916,8928,8895,8922, - 8925,8934,8892,9436,37,9314,9314,9314,9314,9436, - 9436,9436,661,9436,9314,355,9436,9436,3436,1358, - 1198,1227,9436,9436,9436,9436,9436,9436,662,8750, - 8740,9054,8747,860,849,1358,1198,1227,818,5597, - 9436,9436,9436,9436,9436,9436,9436,9436,9436,9436, - 9436,9436,9436,9436,9436,9436,9436,9436,9436,9436, - 9436,9436,9436,9436,9436,9436,9436,9436,7321,5153, - 3832,2335,9436,39,8750,8740,8743,8747,6776,849, - 1358,1198,1227,7911,5597,7819,7842,1613,10199,10197, - 10205,10201,10202,10200,10203,10204,1193,10566,10567,10206, - 10207,10198,10573,10574,10575,10272,10273,1439,10190,10194, - 8155,10188,10195,10191,10167,10193,10192,10189,10168,9919, - 7796,7773,7888,7865,9921,9922,9920,9916,9917,9918, - 7750,2053,2205,2100,7711,2147,2050,7282,9900,10334, - 9900,4893,10335,10336,2393,3705,9900,2006,39,8750, - 8740,9054,8747,6776,849,1358,1198,1227,7911,5597, - 7819,7842,9900,10199,10197,10205,10201,10202,10200,10203, - 10204,1193,10566,10567,10206,10207,10198,10573,10574,10575, - 10272,10273,1439,10190,10194,8155,10188,10195,10191,10167, - 10193,10192,10189,10168,9919,7796,7773,7888,7865,9921, - 9922,9920,9916,9917,9918,7750,2053,2205,2100,7711, - 2147,2050,7282,1725,10334,346,4893,10335,10336,9900, - 1130,227,2006,9900,9357,9357,9357,9357,263,9353, - 8737,8737,8737,263,263,263,263,9361,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,9900, - 8771,8759,8763,8767,860,8756,8790,8784,8787,818, - 5597,9233,9233,9900,9066,9057,9060,9063,263,1, - 9350,1,1,1,9900,9914,10602,10601,9915,4210, - 2202,1445,9900,757,10348,257,631,263,453,626, - 452,9786,8805,8799,8802,1358,1198,1227,9900,10436, - 10199,10197,10205,10201,10202,10200,10203,10204,134,10566, - 10567,10206,10207,10198,10573,10574,10575,8814,8811,8808, - 8832,8820,10525,8838,8817,8829,8796,8823,8826,8835, - 8793,9900,2826,3785,10371,10372,10373,9900,9357,9357, - 9357,9357,263,9353,8737,8737,8737,263,263,263, - 263,9533,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,9900,8771,8759,8763,8767,860,8756, - 8790,8784,8787,818,5597,9299,9299,9900,15475,15384, - 15409,15412,263,1,9350,1,1,1,48,9066, - 9057,9060,9063,4210,2202,393,4608,757,10348,570, - 9900,263,657,9900,451,9900,9674,9668,9671,9817, - 9823,9820,9900,10436,10199,10197,10205,10201,10202,10200, - 10203,10204,337,10566,10567,10206,10207,10198,10573,10574, - 10575,10272,10273,1439,10190,10194,9900,10188,10195,10191, - 10167,10193,10192,10189,10168,10236,2355,3785,10371,10372, - 10373,9900,8737,8737,8737,8737,263,8737,8730,8737, - 8737,263,263,263,263,8781,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,15410,1,1,1, - 1,15539,1,15217,1,1,1,9900,836,10292, - 9900,29,423,423,423,423,9641,423,423,423, - 423,423,423,9641,9641,9641,263,1,8734,1, - 1,1,433,9914,10602,10601,9915,3256,721,9900, - 9900,757,10145,423,423,423,423,423,253,423, - 423,423,423,423,423,423,423,10436,9900,9900, - 9835,9835,9835,9835,9835,9835,9835,9835,9835,9835, - 9835,9835,9835,494,7510,9900,9641,37,9314,9314, - 9314,9314,9257,9641,1358,1198,1227,4954,4910,366, - 9641,9900,15475,15384,15409,15412,253,9900,8737,8737, - 8737,8737,263,8737,8730,8737,8737,263,263,263, - 263,263,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,15410,1,1,1,1,15539,1,15217, - 1,1,1,9835,9936,9305,9900,638,649,649, - 649,649,649,649,649,649,649,649,649,9867, - 9867,9862,263,1,8734,1,1,1,327,9914, - 10602,10601,9915,3256,721,9900,711,757,10145,649, - 649,649,649,649,9900,649,649,649,649,649, - 649,649,649,10436,344,8771,8759,8763,8767,860, - 8756,8790,8784,8787,818,5597,9233,9233,10272,10273, - 1439,423,9867,7577,9900,8750,8740,9054,8747,649, - 849,2826,9326,551,9442,5597,9867,37,9314,9314, - 9314,9314,254,9900,8737,8737,8737,8737,263,8737, - 8730,8737,8737,263,263,263,263,263,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,15410,1, - 1,1,1,15539,1,15217,1,1,1,9900, - 9900,2700,9051,260,8444,9900,9914,10602,10601,9915, - 8964,8958,8961,9900,9936,2237,1228,114,263,1, - 8734,1,1,1,1786,490,1,9904,9900,3256, - 721,4473,9900,757,10145,8973,8970,8967,8991,8979, - 676,8997,8976,8988,8955,8982,8985,8994,8952,10436, - 9900,8737,8737,8737,8737,263,8737,8730,8737,8737, - 263,263,263,263,9464,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,15410,1,1,1,1, - 15539,1,15217,1,1,1,9251,9900,1613,676, - 261,136,8507,139,676,676,10448,9015,9009,9012, - 36,9814,9805,9808,9811,263,1,8734,1,1, - 1,493,8080,1,9903,9900,3256,721,4473,8103, - 757,10145,9024,9021,9018,9042,9030,254,9048,9027, - 9039,9006,9033,9036,9045,9003,10436,9900,8737,8737, - 8737,8737,263,8737,8730,8737,8737,263,263,263, - 263,9464,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,15410,1,1,1,1,15539,1,15217, - 1,1,1,9308,9900,1613,576,650,9900,8505, - 656,576,9900,3873,9081,9075,9078,9826,9832,9829, - 3677,9900,263,1,8734,1,1,1,788,781, - 9900,382,485,3256,721,9906,3141,757,10145,9090, - 9087,9084,9108,9096,254,9114,9093,9105,9072,9099, - 9102,9111,9069,10436,9900,8737,8737,8737,8737,263, - 8737,8730,8737,8737,263,263,263,263,9464,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,15410, - 1,1,1,1,15539,1,15217,1,1,1, - 9905,6454,113,1613,691,4147,9900,9900,6508,6652, - 6683,9479,9473,9476,326,1378,1378,1378,1378,263, - 1,8734,1,1,1,9900,9900,9900,9900,29, - 3256,721,6427,6400,757,10145,9488,9485,9482,9506, - 9494,254,9512,9491,9503,9470,9497,9500,9509,9467, - 10436,9900,8737,8737,8737,8737,263,8737,8730,8737, - 8737,263,263,263,263,263,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,15410,1,1,1, - 1,15539,1,15217,1,1,1,454,608,10509, - 1495,571,138,3876,1358,1198,1227,8080,9683,9677, - 9680,3498,1,460,8103,112,263,1,8734,1, - 1,1,640,476,1,9900,9439,3256,721,4473, - 10510,757,10145,10272,10273,1439,10190,10194,376,10188, - 10195,10191,10167,10193,10192,10189,10168,10436,9900,8737, - 8737,8737,8737,263,8737,8730,8737,8737,263,263, - 263,263,263,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,15410,1,1,1,1,15539,1, - 15217,1,1,1,9254,132,1613,376,572,9907, - 9900,154,376,376,1,9692,9686,9689,5050,9900, - 6652,6683,3331,263,1,8734,1,1,1,383, - 8080,1,464,9908,3256,721,4473,8103,757,10145, - 10272,10273,1439,10190,10194,9629,10188,10195,10191,10167, - 10193,10192,10189,10168,10436,9900,8737,8737,8737,8737, - 263,8737,8730,8737,8737,263,263,263,263,263, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 15410,1,1,1,1,15539,1,15217,1,1, - 1,1613,9900,1613,9900,573,9907,8514,1,2099, - 9632,639,9701,9695,9698,125,1591,116,10294,4703, - 263,1,8734,1,1,1,124,29,9900,7352, - 9900,3256,721,1137,9900,757,10145,10272,10273,1439, - 10190,10194,9906,10188,10195,10191,10167,10193,10192,10189, - 10168,10436,9900,8737,8737,8737,8737,263,8737,8730, - 8737,8737,263,263,263,263,263,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,15410,1,1, - 1,1,15539,1,15217,1,1,1,9257,6652, - 6683,2343,574,6652,6683,5329,9900,9905,9900,9710, - 9704,9707,4360,2201,6652,6683,2237,263,1,8734, - 1,1,1,123,9900,9900,9900,9900,3256,721, - 7321,5153,757,10145,10272,10273,1439,10190,10194,9900, - 10188,10195,10191,10167,10193,10192,10189,10168,10436,9900, - 8737,8737,8737,8737,263,8737,8730,8737,8737,263, - 263,263,263,263,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,15410,1,1,1,1,15539, - 1,15217,1,1,1,9900,8771,8759,8763,8767, - 860,8756,8790,8784,8787,818,5597,9299,9299,5219, - 6751,6652,6683,9900,263,1,8734,1,1,1, - 9900,122,156,9900,9900,3256,721,9906,2251,757, - 10145,380,8750,8740,9054,8747,6481,849,1358,1198, - 1227,818,5597,366,366,10436,9900,8737,8737,8737, - 8737,263,8737,8730,8737,8737,263,263,263,263, - 263,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,15410,1,1,1,1,15539,1,15217,1, - 1,1,9905,39,9900,3545,371,1722,4473,9938, - 1358,1198,1227,1613,441,366,366,380,9906,6652, - 6683,263,1,8734,1,1,1,9900,9527,9900, - 9900,9900,3256,721,2351,4350,757,10145,9776,9773, - 9770,4531,158,1,8750,8740,9054,8747,6776,849, - 3465,9900,10436,7911,5597,7376,7842,9904,10199,10197, - 10205,10201,10202,10200,10203,10204,1653,10566,10567,10206, - 10207,10198,10573,10574,10575,1613,380,9900,1660,9530, - 6613,380,380,9905,9900,9424,9415,9418,9421,9919, - 7796,7773,7888,7865,9921,9922,9920,9916,9917,9918, - 7750,2053,2205,2100,7711,2147,2050,7282,323,9000, - 9000,9000,9000,120,318,1358,1198,1227,1,8771, - 8759,8763,8767,2658,849,39,39,9900,7911,5597, - 7819,7842,47,9400,9406,9382,9394,9391,9397,9388, - 9385,9364,9412,9409,9379,9376,9403,9373,9370,9367, - 39,9936,4500,583,9903,6613,9938,1358,1198,1227, - 7189,4159,366,366,9919,7796,7773,7888,7865,9921, - 9922,9920,9916,9917,9918,7750,2053,2205,2100,7711, - 2147,2050,7282,1,8771,8759,8763,8767,8753,8756, - 9900,9900,2006,8778,8775,8,552,1,7555,1474, - 39,39,1,8771,8759,8763,8767,9605,8756,9894, - 9900,9260,9566,8775,9554,9557,9912,9400,9406,9382, - 9394,9391,9397,9388,9385,9364,9412,9409,9379,9376, - 9403,9373,9370,9367,480,9302,9302,9302,9302,9536, - 9302,9302,9302,9302,9900,9900,9302,9302,9578,9551, - 9548,9563,9560,9572,9569,9575,9587,9584,9581,9545, - 9593,9602,9596,9542,9599,9590,9539,481,9656,9656, - 9656,9656,9911,9653,9644,9650,9647,9911,397,9659, - 9659,7579,9894,1,9608,9608,39,8750,8740,9054, - 8747,6776,849,9900,37,9900,7911,5597,7399,7842, - 9904,10199,10197,10205,10201,10202,10200,10203,10204,1653, - 10566,10567,10206,10207,10198,10573,10574,10575,9900,9900, - 4113,3599,3879,6613,9900,8750,8740,9054,8747,5291, - 9938,405,9919,7796,7773,7888,7865,9921,9922,9920, - 9916,9917,9918,7750,2053,2205,2100,7711,2147,2050, - 7282,4445,39,8750,8740,9054,8747,6776,849,9900, - 2006,9936,7911,5597,7819,7842,9873,10199,10197,10205, - 10201,10202,10200,10203,10204,1653,10566,10567,10206,10207, - 10198,10573,10574,10575,659,9278,9278,9278,9278,6613, - 664,1358,1198,1227,9900,9900,3881,9903,9919,7796, - 7773,7888,7865,9921,9922,9920,9916,9917,9918,7750, - 2053,2205,2100,7711,2147,2050,7282,1846,1,8771, - 8759,8763,8767,860,8756,119,2006,9326,818,5597, - 174,8750,8740,9054,8747,6776,849,10391,9900,9907, - 7911,5597,7819,7842,2493,10199,10197,10205,10201,10202, - 10200,10203,10204,1653,10566,10567,10206,10207,10198,10573, - 10574,10575,92,9755,9755,9755,9755,6613,9755,9755, - 9755,9755,7189,4159,9755,9755,9919,7796,7773,7888, - 7865,9921,9922,9920,9916,9917,9918,7750,2053,2205, - 2100,7711,2147,2050,7282,9900,8750,8740,9054,8747, - 9900,9938,9900,9900,2006,39,8750,8740,9054,8747, - 6776,849,39,39,9900,7911,5597,7819,7842,9323, - 10199,10197,10205,10201,10202,10200,10203,10204,1653,10566, - 10567,10206,10207,10198,10573,10574,10575,95,9856,9856, - 9856,9856,6613,9853,9844,9850,9847,1,9900,9859, - 9859,9919,7796,7773,7888,7865,9921,9922,9920,9916, - 9917,9918,7750,2053,2205,2100,7711,2147,2050,7282, - 9458,1,8750,8740,9054,8747,6776,849,10377,2006, - 9326,7911,5597,7819,7842,1495,10199,10197,10205,10201, - 10202,10200,10203,10204,1653,10566,10567,10206,10207,10198, - 10573,10574,10575,333,9914,10602,10601,9915,6613,371, - 1358,1198,1227,9461,3468,9900,9900,9919,7796,7773, - 7888,7865,9921,9922,9920,9916,9917,9918,7750,2053, - 2205,2100,7711,2147,2050,7282,9900,9914,10602,10601, - 9915,10272,10273,1439,320,2006,614,8750,8740,9054, - 8747,6776,849,39,39,475,7911,5597,7819,7842, - 410,10199,10197,10205,10201,10202,10200,10203,10204,1653, - 10566,10567,10206,10207,10198,10573,10574,10575,9900,8750, - 8740,9054,8747,6613,849,9900,1786,3264,818,5597, - 100,9900,9919,7796,7773,7888,7865,9921,9922,9920, - 9916,9917,9918,7750,2053,2205,2100,7711,2147,2050, - 7282,9900,9066,9057,9060,9063,1,10219,8057,921, - 2006,1,8771,8759,8763,8767,2658,849,39,39, - 9912,7911,5597,7819,7842,9900,9400,9406,9382,9394, - 9391,9397,9388,9385,9364,9412,9409,9379,9376,9403, - 9373,9370,9367,9900,8750,8740,9054,8747,6613,849, - 9900,9900,9779,818,5597,326,4651,9919,7796,7773, - 7888,7865,9921,9922,9920,9916,9917,9918,7750,2053, - 2205,2100,7711,2147,2050,7282,10371,10372,10373,99, - 4113,9911,152,8057,921,2006,39,8750,8740,9054, - 8747,6776,849,39,39,5119,7911,5597,7819,7842, - 9323,10199,10197,10205,10201,10202,10200,10203,10204,1653, - 10566,10567,10206,10207,10198,10573,10574,10575,430,8949, - 8949,8949,8949,6613,318,8940,8946,8943,13490,9900, - 9900,403,9919,7796,7773,7888,7865,9921,9922,9920, - 9916,9917,9918,7750,2053,2205,2100,7711,2147,2050, - 7282,9841,39,8750,8740,9054,8747,6776,849,9900, - 2006,9326,7911,5597,7819,7842,9904,10199,10197,10205, - 10201,10202,10200,10203,10204,1653,10566,10567,10206,10207, - 10198,10573,10574,10575,9900,318,103,9900,462,6613, - 100,9838,3778,43,9430,9430,9430,9430,9919,7796, - 7773,7888,7865,9921,9922,9920,9916,9917,9918,7750, - 2053,2205,2100,7711,2147,2050,7282,1896,39,8750, - 8740,9054,8747,6776,849,2685,9900,582,7911,5597, - 7819,7842,9323,10199,10197,10205,10201,10202,10200,10203, - 10204,1653,10566,10567,10206,10207,10198,10573,10574,10575, - 660,9275,9275,9275,9275,6613,664,9266,9272,9269, - 9427,2452,9779,9903,9919,7796,7773,7888,7865,9921, - 9922,9920,9916,9917,9918,7750,2053,2205,2100,7711, - 2147,2050,7282,9900,39,8750,8740,9054,8747,6776, - 849,9900,9900,9326,7911,5597,7819,7842,9904,10199, - 10197,10205,10201,10202,10200,10203,10204,1653,10566,10567, - 10206,10207,10198,10573,10574,10575,9900,664,9900,73, - 431,6613,9900,15285,15285,15285,15285,1358,1198,1227, - 9919,7796,7773,7888,7865,9921,9922,9920,9916,9917, - 9918,7750,2053,2205,2100,7711,2147,2050,7282,594, - 39,8750,8740,9054,8747,6776,849,4113,432,145, - 7911,5597,7819,7842,423,10199,10197,10205,10201,10202, - 10200,10203,10204,1653,10566,10567,10206,10207,10198,10573, - 10574,10575,9900,8750,8740,9054,8747,6613,849,9936, - 9870,1495,9442,5597,9900,9903,9919,7796,7773,7888, - 7865,9921,9922,9920,9916,9917,9918,7750,2053,2205, - 2100,7711,2147,2050,7282,39,8750,8740,9054,8747, - 6776,849,9900,4157,2006,7911,5597,7819,7842,1495, - 10199,10197,10205,10201,10202,10200,10203,10204,1653,10566, - 10567,10206,10207,10198,10573,10574,10575,6652,6683,2718, - 9900,1,6613,45,9728,9728,9728,9728,9900,9900, - 9900,9919,7796,7773,7888,7865,9921,9922,9920,9916, - 9917,9918,7750,2053,2205,2100,7711,2147,2050,7282, - 39,8750,8740,9054,8747,2658,849,1711,9900,144, - 7911,5597,7819,7842,9900,10199,10197,10205,10201,10202, - 10200,10203,10204,1653,10566,10567,10206,10207,10198,10573, - 10574,10575,37,9314,9314,9314,9314,6613,835,2, - 9725,9900,9801,9789,9793,9797,9919,7796,7773,7888, - 7865,9921,9922,9920,9916,9917,9918,7750,2053,2205, - 2100,7711,2147,2050,7282,39,8750,8740,9054,8747, - 2658,849,9900,39,2006,7911,5597,7819,7842,9938, - 10199,10197,10205,10201,10202,10200,10203,10204,1653,10566, - 10567,10206,10207,10198,10573,10574,10575,6652,6683,2185, - 146,9900,6613,9900,16686,16577,16591,16639,9936,1996, - 37,9919,7796,7773,7888,7865,9921,9922,9920,9916, - 9917,9918,7750,2053,2205,2100,7711,2147,2050,7282, - 39,8750,8740,9054,8747,6776,849,9900,48,2006, - 7911,5597,7819,7842,10602,10199,10197,10205,10201,10202, - 10200,10203,10204,1653,10566,10567,10206,10207,10198,10573, - 10574,10575,9900,48,1,148,48,6613,9900,10601, - 9936,6454,9915,1537,9900,9900,9919,7796,7773,7888, - 7865,9921,9922,9920,9916,9917,9918,7750,2053,2205, - 2100,7711,2147,2050,7282,39,8750,8740,9054,8747, - 6029,849,6427,6400,2006,7911,5597,7819,7842,10602, - 10199,10197,10205,10201,10202,10200,10203,10204,1653,10566, - 10567,10206,10207,10198,10573,10574,10575,9900,9900,48, - 147,874,6613,39,10601,9914,6454,9915,9900,9938, - 9900,9919,7796,7773,7888,7865,9921,9922,9920,9916, - 9917,9918,7750,2053,2205,2100,7711,2147,2050,7282, - 39,8750,8740,9054,8747,6971,849,6427,6400,1610, - 7911,5597,7819,7842,2149,10199,10197,10205,10201,10202, - 10200,10203,10204,1653,10566,10567,10206,10207,10198,10573, - 10574,10575,9900,1,313,7644,9900,6613,103,9891, - 9914,6454,9900,9838,9900,9900,9919,7796,7773,7888, - 7865,9921,9922,9920,9916,9917,9918,7750,2053,2205, - 2100,7711,2147,2050,7282,39,8750,8740,9054,8747, - 8336,849,6427,6400,142,7911,5597,7819,7842,877, - 10199,10197,10205,10201,10202,10200,10203,10204,1653,10566, - 10567,10206,10207,10198,10573,10574,10575,9900,9900,9900, - 877,9900,6613,7230,10371,10372,10373,9900,9900,9900, - 9900,9919,7796,7773,7888,7865,9921,9922,9920,9916, - 9917,9918,7750,2053,2205,2100,7711,2147,2050,7282, - 39,8750,8740,9054,8747,8363,849,9900,9900,9900, - 7911,5597,7819,7842,544,10199,10197,10205,10201,10202, - 10200,10203,10204,1653,10566,10567,10206,10207,10198,10573, - 10574,10575,6652,6683,9900,9900,9900,6613,9900,9900, - 9900,9900,9900,9900,9900,9900,9919,7796,7773,7888, - 7865,9921,9922,9920,9916,9917,9918,7750,2053,2205, - 2100,7711,2147,2050,7282,39,8750,8740,9054,8747, - 6776,849,9900,9900,9900,7911,5597,7819,7842,542, - 10199,10197,10205,10201,10202,10200,10203,10204,1653,10566, - 10567,10206,10207,10198,10573,10574,10575,9900,9900,9900, - 7953,9900,6613,9900,9900,9900,9900,9900,9900,9900, - 9900,9919,7796,7773,7888,7865,9921,9922,9920,9916, - 9917,9918,7750,2053,2205,2100,7711,2147,2050,7282, - 39,8750,8740,9054,8747,8433,849,9900,9900,9900, - 7911,5597,7819,7842,9900,10199,10197,10205,10201,10202, - 10200,10203,10204,1653,10566,10567,10206,10207,10198,10573, - 10574,10575,9900,9900,9900,8273,9900,6613,9900,9900, - 9900,9900,9900,9900,9900,9900,9919,7796,7773,7888, - 7865,9921,9922,9920,9916,9917,9918,7750,2053,2205, - 2100,7711,2147,2050,7282,39,8750,8740,9054,8747, - 2658,849,9900,9900,9900,7911,5597,7819,7842,456, - 10199,10197,10205,10201,10202,10200,10203,10204,1653,10566, - 10567,10206,10207,10198,10573,10574,10575,9900,3894,9900, - 9900,9900,6613,9900,9900,9900,9900,9900,9900,9900, - 9900,9919,7796,7773,7888,7865,9921,9922,9920,9916, - 9917,9918,7750,2053,2205,2100,7711,2147,2050,7282, - 39,8750,8740,9054,8747,2658,849,9900,9900,9900, - 7911,5597,7819,7842,9900,10199,10197,10205,10201,10202, - 10200,10203,10204,1653,10566,10567,10206,10207,10198,10573, - 10574,10575,9900,9900,9900,3941,9900,6613,9900,9900, - 9900,9900,9900,9900,9900,9900,9919,7796,7773,7888, - 7865,9921,9922,9920,9916,9917,9918,7750,2053,2205, - 2100,7711,2147,2050,7282,39,8750,8740,9054,8747, - 6776,849,9900,9900,1,7911,5597,7819,7842,9900, - 10199,10197,10205,10201,10202,10200,10203,10204,1653,10566, - 10567,10206,10207,10198,10573,10574,10575,9458,3649,9900, - 9900,9900,6613,9900,9900,9900,9900,9900,9900,9900, - 9900,9919,7796,7773,7888,7865,9921,9922,9920,9916, - 9917,9918,7750,2053,2205,2100,7711,2147,2050,7282, - 9900,8750,8740,8743,8747,9900,9938,1358,1198,1227, - 9461,3468,9900,9900,9900,10199,10197,10205,10201,10202, - 10200,10203,10204,1103,10566,10567,10206,10207,10198,10573, - 10574,10575,10272,10273,1439,10190,10194,4122,10188,10195, - 10191,10167,10193,10192,10189,10168,9900,9900,9900,9900, - 9900,9900,9900,5363,9900,9900,275,9226,9213,9217, - 9222,1774,9230,9129,9123,9126,10334,9900,4893,10335, - 10336,9198,9204,9180,9192,9189,9195,9186,9183,1103, - 9210,9207,9177,9174,9201,9171,9168,9165,9138,9135, - 9132,9156,9144,4122,9162,9141,9153,9120,9147,9150, - 9159,9117,9900,9900,9900,9900,9900,9900,9900,9900, - 9900,9900,9900,8750,8740,9054,8747,9900,9938,1358, - 1198,1227,10334,9900,4893,10335,10336,10199,10197,10205, - 10201,10202,10200,10203,10204,1103,10566,10567,10206,10207, - 10198,10573,10574,10575,10272,10273,1439,10190,10194,4122, - 10188,10195,10191,10167,10193,10192,10189,10168,9900,9900, - 9900,9900,9900,9900,9900,9900,9900,9900,275,9226, - 9213,9454,9222,9900,9230,9129,9123,9126,10334,9900, - 4893,10335,10336,9198,9204,9180,9192,9189,9195,9186, - 9183,1103,9210,9207,9177,9174,9201,9171,9168,9165, - 9138,9135,9132,9156,9144,4122,9162,9141,9153,9120, - 9147,9150,9159,9117,9900,9900,9900,9914,10602,10601, - 9915,9900,9900,9900,9900,9914,10602,10601,9915,9900, - 9912,1358,1198,1227,10334,9900,4893,10335,10336,10199, - 10197,10205,10201,10202,10200,10203,10204,1299,10566,10567, - 10206,10207,10198,10573,10574,10575,10272,10273,1439,10190, - 10194,9900,10188,10195,10191,10167,10193,10192,10189,10168, - 139,9900,9900,9900,9900,9906,9900,9900,9900,9900, - 275,9722,9713,9716,9719,9900,9910,9129,9123,9126, - 10334,9911,4893,10335,10336,9198,9204,9180,9192,9189, - 9195,9186,9183,1299,9210,9207,9177,9174,9201,9171, - 9168,9165,9138,9135,9132,9156,9144,9900,9162,9141, - 9153,9120,9147,9150,9159,9117,1,9900,2903,9900, - 649,2157,546,9900,1345,9900,10405,9909,10399,10403, - 9905,9906,9900,9908,9611,5871,10334,9900,4893,10335, - 10336,9900,9900,9900,9900,638,2608,1,8771,8759, - 8763,8767,860,8756,8790,8784,8787,818,5597,9731, - 9900,344,9900,10397,10398,10428,10429,9900,9900,9900, - 9900,9900,9900,10406,9900,788,781,2558,2508,2458, - 2408,2358,2308,2258,2208,2158,2106,10408,793,10430, - 9900,9900,1395,3735,10409,9615,9905,9900,2302,2339, - 9900,9900,10407,9900,10419,10418,9907,9900,1728,9900, - 9900,9906,344,1,9900,9900,9900,9900,10424,10425, - 9735,10431,10422,10423,10402,10404,10426,398,9900,10400, - 10401,10427,9900,10412,10413,10414,10410,10411,10420,10421, - 10416,10415,10417,9900,9900,10432,32,424,424,424, - 424,9638,424,424,424,424,424,424,9638,9638, - 9638,637,648,648,648,648,648,648,648,648, - 648,648,648,9767,9767,9767,9905,9900,424,424, - 424,424,424,9900,424,424,424,424,424,424, - 424,424,398,648,648,648,648,648,9900,648, - 648,648,648,648,648,648,648,1,9900,9900, - 9900,9638,5435,1,9900,9900,9900,398,9638,9900, - 9900,9910,1,9900,9900,9638,9767,194,9900,9900, - 9900,9900,4003,648,9900,9900,196,1,1,9900, - 9767,37,10602,10602,10602,10602,10602,10602,10602,10602, - 10602,224,590,10602,10602,37,10601,10601,10601,10601, - 10601,10601,10601,10601,10601,9900,9900,10601,10601,9900, - 9900,9900,9909,10602,10602,10602,10602,10602,9900,10602, - 10602,10602,10602,10602,10602,10602,10602,10601,10601,10601, - 10601,10601,194,10601,10601,10601,10601,10601,10601,10601, - 10601,196,224,37,9915,9915,9915,9915,9915,9915, - 9915,9915,9915,10602,10602,9915,9915,590,9900,10602, - 1,8771,8759,8763,8767,860,8756,10601,10601,9900, - 818,5597,9900,10601,9900,9915,9915,9915,9915,9915, - 9900,9915,9915,9915,9915,9915,9915,9915,9915,9900, - 37,9914,9914,9914,9914,9914,9914,9914,9914,9914, - 9900,9900,9914,9914,9900,1,9608,9608,9608,9608, - 9900,9764,8790,8784,8787,9915,9915,366,366,398, - 9900,9915,9914,9914,9914,9914,9914,1,9914,9914, - 9914,9914,9914,9914,9914,9914,9900,695,9900,9347, - 9900,9906,9900,9900,9344,9338,9341,9900,9900,9900, - 159,9900,10583,10586,10582,10588,10589,10587,10584,10585, - 9900,9910,9914,9914,9900,9900,9900,9900,9914,10272, - 10273,1439,10190,10194,9900,10188,10195,10191,10167,10193, - 10192,10189,10168,694,398,9524,9900,9900,9900,9900, - 9521,9515,9518,9900,9900,9900,9900,9900,10583,10586, - 10582,10588,10589,10587,10584,10585,9905,9900,9900,398, - 9900,9900,9909,9900,9900,10272,10273,1439,10190,10194, - 6096,10188,10195,10191,10167,10193,10192,10189,10168,1, - 8771,8759,8763,8767,6481,8756,3303,9900,9900,818, - 5597,9900,9900,402,1,8771,8759,8763,8767,860, - 8756,8790,8784,8787,818,5597,9900,9900,9900,9900, - 9900,9900,9900,9900,9900,4307,1999,3217,3189,3103, - 3075,2989,2961,2875,2847,2761,2733,1,8771,8759, - 8763,8767,860,8756,8790,8784,8787,818,5597,1, - 8771,8759,8763,8767,8753,8756,126,9900,128,8778, - 8775,1613,402,9910,127,9900,9900,402,402,75, - 9900,9900,9900,9900,9293,1796,1,8771,8759,8763, - 8767,6481,8756,9900,9906,10581,818,5597,3785,9900, - 9629,9900,9900,402,9900,9900,9900,9900,10583,10586, - 10582,10588,10589,10587,10584,10585,1,8771,8759,8763, - 8767,6481,8756,9900,9909,9900,818,5597,9284,9281, - 9900,3785,9900,9900,9900,636,9900,6326,9900,6326, - 9876,9884,9880,87,9320,6326,9662,9888,9900,9739, - 9906,9296,9665,1956,9900,9900,9900,9747,1613,9905, - 9900,9900,9900,9900,9900,9632,9900,9900,6251,5909, - 6251,5909,9900,9900,9900,9900,6251,5909,9900,9900, - 9900,9900,9900,9900,9900,9900,9900,9900,1613,9900, - 9900,9900,9900,4255,1256,4255,1256,9900,9888,9900, - 9900,4255,1256,9900,9900,9900,9888,9900,9287,8396, - 9743,9900,9900,9290,9900,9905,9900,9900,9751 - }; - }; - public final static char termAction[] = TermAction.termAction; - public final int termAction(int index) { return termAction[index]; } + public final int rhs(int index) { + return rhs[index]; + }; - public interface Asb { - public final static char asb[] = {0, - 1459,4,1566,321,1448,1,363,1501,707,707, - 707,1400,67,878,1458,994,321,329,1263,1566, - 649,245,1566,1566,1566,221,261,156,261,875, - 261,1103,261,261,329,330,261,995,1345,100, - 1501,321,642,261,261,1114,330,261,330,1566, - 930,164,164,920,164,651,156,80,581,80, - 782,994,833,938,324,70,70,321,898,330, - 1264,1053,1035,847,1396,579,159,877,8,875, - 152,329,1103,335,330,330,703,219,995,995, - 995,995,995,995,995,995,995,995,644,995, - 1198,1566,930,930,930,930,329,1566,261,861, - 861,834,833,321,321,330,521,1397,335,335, - 261,363,468,1397,261,261,930,261,330,701, - 1298,176,164,164,163,163,156,329,573,784, - 1198,791,796,793,800,798,807,805,809,808, - 810,588,811,321,994,1218,321,261,330,525, - 898,898,330,1264,787,845,786,1585,86,1396, - 1395,1397,159,330,79,865,856,703,156,837, - 330,335,703,330,697,1198,1198,1198,1517,362, - 701,261,1397,1397,1397,954,1608,1608,974,974, - 363,363,363,363,330,598,6,6,598,994, - 861,156,329,697,261,261,335,335,324,239, - 468,468,1264,1298,176,163,163,163,330,1397, - 994,1397,995,995,995,995,995,995,995,995, - 995,995,995,995,995,995,995,995,995,995, - 995,995,995,994,994,994,994,994,994,994, - 994,994,994,994,15,995,1397,842,156,321, - 1193,991,403,468,529,824,898,834,834,1053, - 834,1514,579,1585,1585,1621,1620,851,842,330, - 159,65,878,930,1262,1568,159,79,857,861, - 79,861,703,837,837,330,920,365,1183,1198, - 759,757,764,762,766,765,767,768,781,330, - 219,330,1397,1397,1397,468,362,994,261,955, - 324,1294,1284,1283,1353,267,267,329,644,995, - 1397,1397,920,920,920,920,703,1397,1263,1265, - 1263,1397,468,156,907,330,1566,1196,261,920, - 920,261,1397,1288,1271,1287,781,930,92,92, - 842,842,163,330,834,1219,793,793,791,791, - 791,798,798,798,798,798,798,796,796,805, - 800,800,808,807,809,65,65,810,842,1218, - 403,468,417,524,333,1397,86,1397,597,1397, - 1397,701,1570,861,861,861,861,330,837,841, - 922,841,1154,1170,1170,1170,1170,1149,329,927, - 995,995,995,995,995,995,995,995,995,994, - 994,994,994,994,994,994,994,994,994,994, - 994,995,974,697,261,261,261,995,363,261, - 261,1397,954,65,995,65,834,953,1566,1566, - 1566,955,1566,330,471,834,834,330,156,1608, - 1397,1296,1298,330,701,271,1198,1566,1566,1566, - 1566,330,330,330,1265,701,873,329,330,598, - 261,261,888,994,1285,1285,1292,324,1058,176, - 164,176,780,780,842,834,994,994,1218,994, - 994,468,529,1397,1621,1264,833,995,65,899, - 932,830,1570,861,861,407,841,842,995,330, - 330,995,757,757,757,762,759,759,765,764, - 766,65,767,1397,261,324,944,955,65,1045, - 955,974,974,972,953,974,834,834,905,952, - 1397,1298,703,1264,1397,994,994,994,994,1566, - 1566,219,330,1264,873,1397,261,709,888,994, - 994,1296,1271,176,363,363,841,468,468,597, - 834,1570,995,995,830,830,1570,1570,907,214, - 408,330,842,703,1048,994,261,261,261,994, - 261,955,995,955,1397,321,974,1397,972,1501, - 1566,1397,873,911,1397,330,719,1397,1397,1397, - 1397,598,598,1269,261,219,945,1566,261,891, - 781,261,105,830,830,407,330,329,329,330, - 330,261,598,995,468,955,905,955,834,1501, - 994,955,952,911,911,304,1397,1397,1269,1058, - 891,1343,261,261,330,330,330,261,1397,468, - 994,953,598,834,1397,914,911,1397,1397,318, - 1566,92,330,330,955,1397,834,914,914,156, - 156,320,1299,780,955,914,1621,1263,363 - }; - }; - public final static char asb[] = Asb.asb; - public final int asb(int index) { return asb[index]; } + public interface BaseAction0 { + public final static char baseAction0[] = { 214, 5, 158, 82, 82, 32, 32, 106, 106, 48, 48, 41, 41, 214, 1, 1, 15, + 15, 15, 15, 15, 15, 15, 17, 17, 17, 16, 11, 11, 6, 6, 6, 6, 6, 6, 2, 93, 93, 4, 4, 12, 12, 56, 56, 175, + 175, 176, 86, 86, 55, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 177, 177, 177, 159, 159, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 215, 215, 216, 216, + 217, 180, 180, 181, 181, 178, 178, 182, 179, 179, 21, 21, 22, 22, 23, 23, 23, 24, 24, 24, 24, 25, 25, + 25, 26, 26, 26, 34, 34, 34, 34, 34, 36, 36, 36, 37, 37, 38, 38, 39, 39, 42, 42, 45, 45, 46, 46, 58, 58, + 58, 58, 58, 70, 70, 70, 74, 74, 76, 76, 79, 79, 81, 81, 83, 83, 84, 84, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 33, 33, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 47, 35, 160, 160, 124, + 124, 218, 218, 114, 249, 249, 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 97, 94, 94, 59, 59, 219, 219, + 98, 98, 98, 135, 135, 220, 220, 99, 99, 99, 99, 221, 221, 100, 100, 100, 100, 100, 101, 101, 103, 103, + 103, 103, 103, 103, 103, 103, 60, 60, 60, 60, 60, 136, 136, 134, 134, 61, 222, 31, 31, 31, 31, 31, 53, + 53, 67, 67, 67, 67, 67, 122, 122, 129, 129, 129, 129, 129, 130, 130, 130, 131, 131, 131, 132, 132, 132, + 137, 137, 137, 68, 68, 68, 68, 68, 69, 69, 69, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 107, 125, + 125, 125, 125, 125, 125, 116, 116, 116, 184, 185, 185, 117, 117, 223, 187, 187, 186, 186, 161, 161, 138, + 91, 91, 162, 63, 52, 188, 188, 64, 105, 105, 163, 163, 183, 183, 139, 140, 140, 141, 88, 88, 189, 189, + 77, 77, 77, 72, 72, 71, 78, 78, 95, 95, 87, 87, 87, 75, 119, 119, 127, 126, 126, 50, 50, 73, 73, 80, 80, + 57, 123, 123, 123, 108, 108, 108, 109, 109, 110, 110, 110, 111, 111, 142, 142, 142, 144, 144, 143, 143, + 250, 250, 120, 120, 225, 225, 225, 225, 225, 165, 51, 51, 191, 224, 224, 166, 166, 112, 112, 112, 113, + 193, 226, 226, 44, 44, 115, 121, 121, 121, 121, 228, 146, 145, 145, 118, 118, 118, 194, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 230, 230, 227, 227, 229, 229, 148, 149, 149, 149, 149, 150, 231, + 151, 147, 147, 232, 232, 196, 196, 196, 196, 133, 133, 133, 233, 233, 8, 8, 9, 234, 234, 235, 197, 190, + 190, 198, 198, 199, 200, 200, 7, 7, 10, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, 89, 92, 92, 201, 201, 168, 168, 169, 169, 169, 169, 169, 169, 3, + 170, 170, 167, 167, 202, 251, 252, 252, 253, 253, 254, 255, 255, 203, 204, 204, 204, 204, 237, 237, 237, + 153, 153, 153, 153, 153, 154, 155, 155, 152, 152, 104, 90, 102, 102, 192, 192, 156, 156, 238, 238, 238, + 171, 171, 164, 164, 239, 239, 27, 27, 27, 43, 43, 28, 28, 240, 240, 205, 205, 205, 206, 206, 241, 241, + 207, 207, 29, 29, 242, 242, 208, 208, 208, 208, 30, 65, 243, 243, 244, 244, 209, 209, 209, 172, 172, + 172, 19, 19, 19, 19, 34, 34, 46, 17, 97, 245, 157, 157, 157, 128, 128, 31, 62, 67, 141, 141, 141, 148, + 148, 148, 223, 228, 146, 75, 88, 184, 162, 13, 13, 50, 104, 104, 104, 18, 14, 14, 14, 80, 80, 66, 40, + 173, 174, 174, 174, 174, 174, 174, 174, 174, 174, 211, 211, 247, 247, 246, 246, 210, 210, 50, 60, 60, 1, + 1, 256, 95, 95, 95, 95, 95, 95, 95, 212, 213, 213, 195, 54, 1834, 35, 3267, 3255, 5724, 2223, 27, 30, + 31, 1654, 1590, 26, 28, 3254, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 652, 597, + 598, 599, 2070, 1533, 177, 2589, 1620, 2643, 2605, 2788, 2713, 6304, 419, 2790, 77, 308, 2813, 176, + 2806, 4961, 191, 266, 2505, 35, 1703, 32, 5759, 4085, 27, 30, 31, 1654, 1590, 57, 28, 1976, 1143, 77, + 269, 264, 265, 1563, 1563, 5086, 35, 1703, 32, 4863, 2584, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, + 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 1907, 189, 189, 2055, 2402, 2352, 34, 2589, + 309, 2643, 2605, 2788, 2713, 3720, 1878, 3726, 276, 279, 282, 3249, 2298, 520, 992, 6745, 939, 5436, + 285, 5627, 1946, 645, 5837, 4375, 4784, 6180, 1630, 35, 1703, 32, 6769, 3083, 41, 30, 31, 1654, 1590, + 3859, 35, 1703, 32, 5364, 4563, 27, 30, 31, 1654, 1590, 374, 28, 7538, 2437, 534, 2505, 4859, 1909, 35, + 3267, 3255, 5724, 2593, 27, 30, 31, 1654, 1590, 26, 28, 3254, 296, 23, 25, 50, 2263, 106, 76, 77, 108, + 2513, 2563, 2543, 2590, 652, 597, 598, 599, 998, 5741, 177, 2589, 521, 2643, 2605, 2788, 2713, 5738, + 617, 2790, 1240, 308, 2813, 176, 623, 1117, 191, 266, 8297, 680, 354, 1199, 356, 2055, 35, 317, 349, + 1121, 3706, 600, 597, 598, 599, 61, 269, 264, 265, 1923, 2584, 615, 2651, 601, 597, 598, 599, 925, 2723, + 3559, 35, 1703, 32, 4863, 6013, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, + 77, 108, 2513, 2563, 2543, 3153, 309, 2055, 35, 1509, 424, 919, 162, 1535, 276, 279, 282, 3249, 725, + 520, 992, 6964, 426, 5471, 285, 347, 463, 645, 5837, 4375, 4784, 6180, 1719, 35, 1703, 32, 6769, 3144, + 2451, 30, 31, 1654, 1590, 672, 2047, 600, 597, 598, 599, 3157, 1944, 488, 496, 3155, 1430, 3168, 7538, + 483, 3167, 2505, 3174, 3859, 3244, 161, 578, 2055, 35, 6535, 4635, 3559, 35, 1703, 32, 4863, 6013, 27, + 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 1692, + 5216, 35, 1703, 32, 4863, 162, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, + 108, 2513, 2563, 2543, 3153, 3765, 35, 314, 3144, 3988, 2055, 3480, 549, 575, 3055, 579, 3525, 35, 312, + 78, 3157, 520, 4344, 1776, 3155, 5543, 3168, 3069, 618, 3167, 3246, 3174, 77, 3244, 161, 578, 3974, + 1563, 4758, 2959, 3559, 35, 1703, 32, 4863, 6013, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, + 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 2874, 5216, 35, 1703, 32, 4863, 162, 27, 30, 31, 1654, + 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 3765, 35, 314, + 3144, 6035, 628, 1529, 549, 575, 3055, 579, 4672, 35, 312, 1713, 3157, 2323, 35, 432, 3155, 2911, 3168, + 3416, 359, 3167, 3246, 3174, 5934, 3244, 161, 578, 3976, 1563, 2518, 719, 4162, 35, 1703, 32, 4863, + 6013, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, + 3153, 193, 5086, 35, 1703, 32, 4863, 162, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, + 106, 76, 77, 108, 2513, 2563, 2543, 3533, 2055, 35, 4047, 3144, 2055, 35, 330, 549, 575, 3055, 579, 360, + 42, 3253, 2485, 3157, 3765, 35, 566, 3155, 6539, 3168, 3430, 2584, 3167, 3246, 3174, 4337, 3244, 161, + 578, 4237, 35, 1703, 32, 4863, 1384, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, + 76, 77, 108, 2513, 2563, 2543, 2590, 224, 604, 3032, 3143, 2959, 839, 177, 2589, 3735, 2643, 2605, 2788, + 2713, 3927, 2651, 2790, 520, 730, 2813, 176, 5580, 1283, 414, 4533, 35, 1703, 32, 5759, 214, 27, 30, 31, + 1654, 1590, 56, 28, 2910, 2055, 3775, 550, 575, 3055, 579, 1719, 35, 1703, 32, 495, 4500, 40, 30, 31, + 1654, 1590, 3793, 35, 1703, 32, 4863, 3735, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, + 106, 76, 77, 108, 2513, 2563, 2543, 2590, 3525, 35, 315, 2301, 415, 2047, 177, 2589, 77, 2643, 2605, + 2788, 2713, 8229, 2651, 2790, 5943, 1, 2813, 176, 1384, 1563, 414, 3946, 35, 1703, 32, 4863, 3631, 27, + 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 2584, + 189, 2055, 35, 2352, 311, 177, 2589, 421, 2643, 2605, 2788, 2713, 195, 2651, 2790, 1548, 88, 2813, 176, + 102, 1496, 414, 77, 1719, 35, 1703, 32, 958, 2732, 3592, 30, 31, 1654, 1590, 415, 2047, 2502, 4087, 35, + 1703, 32, 4863, 1925, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, + 2513, 2563, 2543, 2590, 3159, 712, 325, 3183, 60, 4340, 177, 2589, 5683, 2643, 2605, 2788, 2713, 605, + 3032, 2790, 358, 361, 2813, 176, 415, 2047, 613, 593, 422, 417, 4501, 35, 1703, 32, 4863, 378, 27, 30, + 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 2596, + 4864, 4085, 678, 3724, 6501, 177, 2589, 2973, 2643, 2605, 2788, 2713, 4636, 2466, 2790, 584, 1535, 2813, + 176, 4096, 412, 191, 3484, 35, 1703, 32, 4863, 1488, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, + 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 2459, 3775, 2096, 2055, 35, 1509, 424, 2589, 2501, + 2643, 2605, 2788, 2713, 520, 2984, 2790, 4398, 5220, 2943, 197, 4012, 35, 1703, 32, 4863, 1825, 27, 30, + 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 467, + 4734, 35, 564, 4401, 1535, 177, 2589, 362, 2643, 2605, 2788, 2713, 1746, 1790, 2790, 3178, 215, 2813, + 176, 5934, 4929, 3280, 821, 2584, 1563, 2055, 35, 2352, 313, 611, 601, 597, 598, 599, 2067, 2505, 1889, + 3181, 3083, 1472, 4194, 35, 1703, 32, 6187, 2635, 27, 30, 31, 1654, 1590, 26, 28, 3179, 193, 474, 547, + 3631, 3727, 35, 1703, 32, 4863, 3676, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, + 76, 77, 108, 2513, 2563, 2543, 2590, 603, 520, 4397, 630, 3252, 5687, 177, 2589, 2535, 2643, 2605, 2788, + 2713, 946, 465, 2790, 5928, 2467, 2813, 176, 8126, 1563, 3281, 4501, 35, 1703, 32, 4863, 324, 27, 30, + 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 4094, + 189, 1548, 772, 3776, 704, 177, 2589, 3148, 2643, 2605, 2788, 2713, 3490, 234, 2790, 77, 713, 2813, 176, + 2940, 1563, 408, 4501, 35, 1703, 32, 4863, 225, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, + 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 427, 189, 712, 3675, 463, 134, 177, 2589, 4767, 2643, + 2605, 2788, 2713, 2153, 89, 2790, 4704, 102, 2813, 176, 6888, 2841, 408, 4501, 35, 1703, 32, 4863, 584, + 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, + 5818, 3825, 2055, 35, 2352, 316, 177, 2589, 628, 2643, 2605, 2788, 2713, 68, 3709, 2790, 2201, 3083, + 2813, 176, 3070, 1535, 408, 1535, 2055, 35, 1509, 424, 601, 597, 598, 599, 357, 4087, 35, 1703, 32, + 4863, 407, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, + 2543, 2590, 77, 255, 1598, 3083, 2904, 2498, 177, 2589, 308, 2643, 2605, 2788, 2713, 520, 3070, 2790, + 77, 7465, 2813, 176, 411, 1563, 613, 3871, 35, 1703, 32, 4863, 406, 27, 30, 31, 1654, 1590, 26, 28, + 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 3573, 189, 928, 77, 3548, 1790, + 177, 2589, 1048, 2643, 2605, 2788, 2713, 3994, 1535, 2790, 425, 832, 2813, 176, 3185, 310, 175, 4501, + 35, 1703, 32, 4863, 404, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, + 2513, 2563, 2543, 2590, 2055, 35, 2352, 4046, 429, 2929, 177, 2589, 463, 2643, 2605, 2788, 2713, 4101, + 1535, 2790, 77, 3290, 2813, 176, 339, 1563, 192, 4501, 35, 1703, 32, 4863, 479, 27, 30, 31, 1654, 1590, + 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 428, 189, 409, 77, 463, + 1598, 177, 2589, 1138, 2643, 2605, 2788, 2713, 4204, 3568, 2790, 3638, 4663, 2813, 176, 2584, 7951, 188, + 411, 5818, 4501, 35, 1703, 32, 4863, 612, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, + 106, 76, 77, 108, 2513, 2563, 2543, 2590, 2681, 35, 2352, 311, 533, 2438, 177, 2589, 77, 2643, 2605, + 2788, 2713, 4856, 3070, 2790, 77, 1331, 2813, 176, 3651, 1563, 187, 4501, 35, 1703, 32, 4863, 4604, 27, + 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 51, + 189, 2055, 4103, 2352, 74, 177, 2589, 1384, 2643, 2605, 2788, 2713, 4216, 1025, 2790, 77, 585, 2813, + 176, 3364, 1563, 186, 4501, 35, 1703, 32, 4863, 6290, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, + 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 3903, 189, 2551, 3147, 742, 4406, 177, 2589, 3070, + 2643, 2605, 2788, 2713, 4250, 2366, 2790, 68, 2364, 2813, 176, 332, 2911, 185, 4501, 35, 1703, 32, 4863, + 3447, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, + 2590, 2681, 35, 2352, 4108, 2692, 3080, 177, 2589, 77, 2643, 2605, 2788, 2713, 4778, 338, 2790, 77, + 3955, 2813, 176, 5818, 1563, 184, 4501, 35, 1703, 32, 4863, 2413, 27, 30, 31, 1654, 1590, 26, 28, 2249, + 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 4500, 189, 623, 44, 3253, 998, 177, + 2589, 3257, 2643, 2605, 2788, 2713, 4254, 418, 2790, 77, 1564, 2813, 176, 5818, 1563, 183, 4501, 35, + 1703, 32, 4863, 3447, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, + 2513, 2563, 2543, 2590, 388, 189, 910, 77, 363, 370, 177, 2589, 7004, 2643, 2605, 2788, 2713, 3790, + 3070, 2790, 68, 4864, 2813, 176, 4473, 6501, 182, 4501, 35, 1703, 32, 4863, 2413, 27, 30, 31, 1654, + 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 2055, 35, 2352, + 4153, 2055, 4038, 177, 2589, 3257, 2643, 2605, 2788, 2713, 939, 335, 2790, 77, 93, 2813, 176, 1048, + 7083, 181, 4501, 35, 1703, 32, 4863, 222, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, + 106, 76, 77, 108, 2513, 2563, 2543, 2590, 2055, 35, 2352, 565, 369, 370, 177, 2589, 1546, 2643, 2605, + 2788, 2713, 2083, 391, 2790, 68, 70, 2813, 176, 331, 593, 180, 4501, 35, 1703, 32, 4863, 203, 27, 30, + 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 1889, + 2323, 35, 432, 6277, 324, 177, 2589, 77, 2643, 2605, 2788, 2713, 1640, 624, 2790, 77, 5230, 2813, 176, + 1125, 1563, 179, 4501, 35, 1703, 32, 4863, 1283, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, + 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 77, 3595, 4500, 2459, 3775, 7215, 177, 2589, 322, 2643, + 2605, 2788, 2713, 466, 3455, 2790, 77, 71, 2813, 176, 1535, 2293, 178, 3643, 35, 1703, 32, 4863, 716, + 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, + 2323, 35, 432, 2097, 378, 2055, 35, 330, 189, 2792, 483, 1598, 440, 2827, 1598, 4119, 35, 1703, 32, + 6187, 2802, 27, 30, 31, 1654, 1590, 59, 28, 531, 3359, 2941, 3812, 2760, 4119, 35, 1703, 32, 6187, 3070, + 27, 30, 31, 1654, 1590, 58, 28, 3929, 214, 4631, 35, 1703, 32, 4863, 2811, 27, 30, 31, 1654, 1590, 26, + 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 5818, 4631, 35, 1703, 32, + 4863, 162, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, + 2543, 3153, 1019, 389, 326, 3144, 642, 1133, 162, 2055, 35, 1509, 424, 324, 77, 390, 5818, 3157, 68, + 854, 5818, 3155, 593, 3168, 77, 5818, 3167, 5681, 3174, 1726, 3244, 161, 173, 3144, 600, 597, 598, 599, + 1592, 3776, 1036, 2597, 3282, 321, 4190, 3157, 8402, 457, 24, 3155, 4082, 3168, 2804, 308, 3167, 1150, + 3174, 6709, 3244, 161, 172, 4631, 35, 1703, 32, 4863, 715, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, + 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 5818, 4631, 35, 1703, 32, 4863, 162, 27, 30, + 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 375, + 1229, 77, 3144, 413, 4050, 162, 2638, 5672, 2055, 35, 1509, 424, 3445, 5818, 3157, 4509, 77, 5818, 3155, + 387, 3168, 2313, 416, 3167, 1699, 3174, 77, 3244, 161, 171, 3144, 1314, 379, 2694, 2340, 384, 2800, 520, + 2985, 3385, 2674, 7534, 3157, 8402, 620, 3383, 3155, 677, 3168, 3779, 4131, 3167, 49, 3174, 2413, 3244, + 161, 170, 4631, 35, 1703, 32, 4863, 46, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, + 106, 76, 77, 108, 2513, 2563, 2543, 3153, 5818, 4631, 35, 1703, 32, 4863, 162, 27, 30, 31, 1654, 1590, + 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 5818, 208, 68, 3144, + 3880, 1535, 162, 2055, 35, 1509, 424, 2055, 35, 1509, 424, 3157, 1325, 3642, 370, 3155, 387, 3168, 77, + 1765, 3167, 1252, 3174, 1940, 3244, 161, 169, 3144, 69, 379, 2694, 2340, 384, 77, 68, 2694, 77, 4056, + 1986, 3157, 8402, 2953, 1598, 3155, 377, 3168, 212, 470, 3167, 2599, 3174, 469, 3244, 161, 168, 4631, + 35, 1703, 32, 4863, 587, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, + 2513, 2563, 2543, 3153, 232, 4631, 35, 1703, 32, 4863, 162, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, + 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 5818, 1310, 1384, 3144, 4097, 1535, 162, + 2055, 35, 1509, 424, 77, 1638, 5818, 4731, 3157, 6062, 77, 5818, 3155, 387, 3168, 1450, 426, 3167, 1329, + 3174, 509, 3244, 161, 167, 3144, 68, 379, 2694, 2340, 384, 1347, 1432, 600, 597, 598, 599, 3157, 1431, + 53, 1598, 3155, 577, 3168, 52, 468, 3167, 5740, 3174, 4082, 3244, 161, 166, 4631, 35, 1703, 32, 4863, + 586, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, + 3153, 5818, 4631, 35, 1703, 32, 4863, 162, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, + 106, 76, 77, 108, 2513, 2563, 2543, 3153, 6131, 3447, 2514, 3144, 3261, 4269, 162, 4341, 3070, 1126, + 1444, 5867, 4044, 1851, 330, 3157, 68, 77, 5818, 3155, 77, 3168, 2907, 2302, 3167, 4911, 3174, 2696, + 3244, 161, 165, 3144, 600, 597, 598, 599, 2584, 2584, 68, 600, 597, 598, 599, 3157, 2810, 1369, 2886, + 3155, 1691, 3168, 633, 2413, 3167, 3685, 3174, 925, 3244, 161, 164, 4631, 35, 1703, 32, 4863, 231, 27, + 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 334, + 5086, 35, 1703, 32, 4863, 162, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, + 108, 2513, 2563, 2543, 2590, 322, 3594, 3759, 3144, 706, 705, 1745, 2589, 2793, 2643, 2605, 2788, 3704, + 365, 370, 3157, 1901, 77, 77, 3155, 1724, 3168, 3245, 3251, 3167, 5766, 3174, 5818, 3244, 161, 163, + 5086, 35, 1703, 32, 4863, 913, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, + 108, 2513, 2563, 2543, 2590, 3800, 602, 1607, 2576, 35, 1509, 424, 2589, 2651, 2643, 2605, 2788, 2713, + 1708, 3941, 2790, 4097, 1119, 2943, 197, 4501, 35, 1703, 32, 4863, 2196, 27, 30, 31, 1654, 1590, 26, 28, + 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 308, 827, 5818, 3719, 232, 4057, + 177, 2589, 2584, 2643, 2605, 2788, 2713, 1716, 3486, 2790, 6128, 68, 2813, 176, 3168, 2588, 641, 2323, + 35, 2918, 3142, 68, 601, 597, 598, 599, 672, 2047, 622, 4501, 35, 1703, 32, 4863, 4035, 27, 30, 31, + 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 2863, 4085, + 438, 235, 2976, 49, 177, 2589, 2983, 2643, 2605, 2788, 2713, 233, 3162, 2790, 2035, 1044, 2813, 176, + 5818, 3166, 140, 4501, 35, 1703, 32, 4863, 707, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, + 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 77, 3177, 621, 72, 3274, 4872, 177, 2589, 77, 2643, + 2605, 2788, 2713, 3875, 3372, 2790, 3554, 68, 2813, 176, 5818, 5818, 3471, 5818, 4501, 35, 1703, 32, + 4863, 3866, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, + 2543, 2590, 611, 90, 385, 6279, 634, 2793, 177, 2589, 4033, 2643, 2605, 2788, 2713, 2584, 442, 2790, 77, + 6285, 2813, 176, 2089, 1389, 3639, 4696, 35, 1703, 32, 4863, 3056, 27, 30, 31, 1654, 1590, 26, 28, 2249, + 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 6291, 5086, 35, 1703, 32, 4863, 162, + 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, + 2672, 5934, 1695, 3144, 607, 4378, 1563, 2589, 77, 2643, 2605, 3646, 68, 4401, 68, 3157, 2888, 708, 77, + 3155, 5959, 3168, 2963, 2385, 3167, 6732, 3174, 5818, 3244, 161, 160, 4761, 35, 1703, 32, 4863, 193, 27, + 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 131, + 3376, 1438, 77, 256, 68, 177, 2589, 2637, 2643, 2605, 2788, 2713, 1745, 4206, 2790, 77, 6346, 2813, 176, + 5818, 1563, 222, 5086, 35, 1703, 32, 4863, 2584, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, + 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 2791, 189, 3583, 226, 3276, 3686, 238, 2589, 2651, 2643, + 2605, 2788, 2713, 4359, 2570, 2790, 5818, 3890, 2943, 197, 5086, 35, 1703, 32, 4863, 2668, 27, 30, 31, + 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 1031, 4189, + 2765, 3988, 3153, 5882, 585, 2589, 4340, 2643, 2605, 2788, 2713, 97, 3155, 2790, 4050, 3259, 2943, 197, + 3374, 6354, 3470, 2044, 35, 1509, 424, 601, 597, 598, 599, 5818, 672, 2047, 6282, 5086, 35, 1703, 32, + 4863, 459, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, + 2543, 2590, 2651, 487, 3772, 4282, 2413, 49, 5035, 2589, 5100, 2643, 2605, 2788, 2713, 5165, 2890, 2790, + 2035, 2033, 2943, 197, 5086, 35, 1703, 32, 4863, 329, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, + 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 1947, 1439, 4510, 4640, 4965, 713, 4796, 2589, 4861, + 2643, 2605, 2788, 2713, 3062, 541, 2790, 4233, 3373, 2943, 197, 2055, 35, 1509, 424, 672, 2047, 5295, + 3483, 601, 597, 598, 599, 340, 3722, 370, 5086, 35, 1703, 32, 4863, 458, 27, 30, 31, 1654, 1590, 26, 28, + 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 539, 540, 49, 5380, 2584, 5849, + 1982, 2589, 5386, 2643, 2605, 2788, 2713, 2035, 1114, 2790, 3471, 4202, 2943, 197, 5346, 35, 1703, 32, + 4863, 461, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, + 2543, 2590, 5411, 35, 1509, 424, 3882, 1773, 2782, 2589, 1899, 2643, 2605, 2788, 2713, 271, 296, 2790, + 2350, 4339, 2943, 197, 4230, 3765, 35, 489, 4338, 6494, 4470, 652, 597, 598, 599, 3879, 601, 597, 598, + 599, 4799, 844, 143, 98, 644, 5818, 5728, 5818, 308, 4826, 35, 1703, 32, 4863, 266, 27, 30, 31, 1654, + 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 648, 76, 77, 269, 264, 265, 3936, 35, 489, 5507, 6494, 5579, + 4925, 4310, 3636, 1558, 4989, 2368, 5086, 35, 1703, 32, 4863, 4034, 27, 30, 31, 1654, 1590, 26, 28, + 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 3476, 309, 600, 597, 598, 599, 2438, 5743, 9900, + 276, 279, 282, 3249, 9900, 9900, 992, 6745, 5818, 3464, 285, 5818, 5818, 645, 5837, 4375, 4784, 6180, + 4044, 35, 330, 9900, 6769, 2067, 5818, 2485, 35, 1703, 32, 5508, 4563, 27, 30, 31, 1654, 1590, 374, 28, + 2651, 9900, 5651, 3378, 7538, 3712, 67, 600, 597, 598, 599, 9900, 9900, 9900, 600, 597, 598, 599, 66, + 9900, 5818, 1384, 5738, 925, 5818, 5086, 35, 1703, 32, 4863, 7150, 27, 30, 31, 1654, 1590, 26, 28, 2249, + 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3539, 65, 9900, 616, 9900, 64, 1117, 354, + 1199, 356, 9900, 2299, 9900, 349, 1121, 482, 3366, 3374, 9900, 9900, 672, 2047, 5818, 367, 997, 5818, + 5281, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, + 77, 108, 2513, 2563, 2543, 3153, 2203, 55, 6874, 9900, 54, 5818, 5523, 35, 1509, 424, 3882, 486, 3366, + 3374, 913, 9900, 5934, 9900, 9900, 271, 296, 1563, 341, 345, 780, 5818, 5818, 601, 597, 598, 599, 3144, + 6344, 652, 597, 598, 599, 101, 1607, 9900, 9900, 1583, 9900, 3157, 9900, 9900, 2289, 3155, 9900, 3168, + 308, 193, 3167, 2841, 3995, 9900, 266, 3767, 3021, 601, 597, 598, 599, 5818, 5818, 6347, 1936, 4050, + 652, 597, 598, 599, 3591, 269, 264, 265, 5148, 2030, 35, 3935, 32, 5508, 4563, 27, 30, 31, 1654, 1590, + 374, 28, 627, 266, 9900, 9900, 9900, 3135, 5795, 591, 9900, 600, 597, 598, 599, 9900, 600, 597, 598, + 599, 278, 264, 265, 3065, 9900, 309, 9900, 3464, 4340, 2413, 9900, 9900, 6044, 276, 279, 282, 3249, + 2255, 617, 992, 6964, 9900, 9900, 285, 9900, 9900, 645, 5837, 4375, 4784, 6180, 3082, 4303, 9900, 6282, + 6769, 8265, 9900, 9900, 2299, 354, 1199, 356, 9900, 2299, 9900, 349, 1121, 9900, 9900, 9900, 6757, 918, + 9900, 9900, 7538, 367, 2602, 5216, 35, 1703, 32, 4863, 386, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, + 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3153, 3765, 370, 9900, 6874, 5216, 35, 1703, 32, + 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, + 2543, 3153, 3144, 6356, 455, 3934, 9900, 3591, 9900, 396, 9900, 5148, 387, 9900, 3157, 9900, 9900, 9900, + 3155, 9900, 3168, 9900, 9900, 3985, 9900, 379, 2694, 2340, 384, 9900, 94, 9900, 9900, 3144, 600, 597, + 598, 599, 9900, 9900, 3596, 9900, 9900, 9900, 9900, 3157, 9900, 9900, 9900, 3155, 3464, 3981, 5086, 35, + 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, + 2513, 2563, 2543, 2590, 1133, 442, 9900, 2299, 9900, 3479, 716, 2589, 9900, 2643, 3654, 9900, 9900, + 9900, 9900, 367, 5934, 9900, 9900, 9900, 9900, 1563, 9900, 9900, 9900, 9900, 9900, 600, 597, 598, 599, + 9900, 262, 9900, 9900, 9900, 189, 9900, 9900, 9900, 9900, 759, 1598, 4082, 9900, 9900, 9900, 6912, 3018, + 213, 9900, 193, 237, 249, 4745, 700, 9900, 9900, 9900, 9900, 202, 236, 246, 247, 248, 250, 651, 699, + 5216, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, + 77, 108, 2513, 2563, 2543, 3153, 201, 9900, 216, 200, 203, 204, 205, 206, 207, 136, 9900, 9900, 9900, + 9900, 716, 3624, 35, 1703, 32, 5364, 4217, 27, 30, 31, 1654, 1590, 374, 28, 1433, 9900, 9900, 3144, + 9900, 4340, 9900, 9900, 9900, 3591, 9900, 9900, 262, 5148, 9900, 3157, 189, 4306, 9900, 3984, 3988, 759, + 1598, 3038, 9900, 4340, 1718, 9900, 3018, 213, 9900, 378, 237, 249, 4745, 700, 600, 597, 598, 599, 202, + 236, 246, 247, 248, 250, 651, 699, 9900, 9900, 9900, 6282, 3464, 652, 597, 598, 599, 2285, 351, 1710, + 356, 3382, 35, 1703, 32, 5508, 9900, 27, 30, 31, 1654, 1590, 374, 28, 9900, 201, 266, 217, 200, 203, + 204, 205, 206, 207, 2299, 9900, 9900, 214, 600, 597, 598, 599, 9900, 281, 264, 265, 367, 4739, 5834, + 9900, 9900, 9900, 9900, 4340, 5228, 4077, 35, 1509, 424, 9900, 9900, 9900, 9900, 9900, 5768, 35, 1703, + 32, 5364, 4563, 27, 30, 31, 1654, 1590, 374, 28, 9900, 6136, 6282, 9900, 9900, 354, 1199, 356, 3549, + 2299, 9900, 350, 1121, 541, 600, 597, 598, 599, 9900, 2118, 9900, 368, 49, 6022, 4340, 1235, 5355, 9900, + 9900, 387, 5016, 4340, 9900, 2035, 1349, 600, 597, 598, 599, 9900, 9900, 9900, 381, 2694, 2340, 384, + 9900, 9900, 9900, 1341, 262, 1924, 600, 597, 598, 599, 9900, 6282, 354, 1199, 356, 538, 540, 9900, 349, + 1121, 9900, 9900, 3464, 1235, 2649, 443, 8216, 714, 9900, 997, 91, 35, 1703, 32, 5364, 4563, 27, 30, 31, + 1654, 1590, 374, 28, 3056, 9900, 395, 9900, 9900, 3467, 9900, 600, 597, 598, 599, 364, 9900, 9900, 600, + 597, 598, 599, 9900, 444, 445, 446, 815, 3464, 3216, 3441, 3466, 9900, 9900, 9900, 5016, 9900, 9900, + 9900, 9900, 9900, 9900, 341, 345, 780, 9900, 9900, 91, 35, 1703, 32, 5364, 4563, 27, 30, 31, 1654, 1590, + 374, 28, 2919, 9900, 541, 354, 1199, 356, 2289, 9900, 3041, 349, 1121, 9900, 9900, 9900, 601, 597, 598, + 599, 9900, 9900, 997, 5086, 35, 1703, 32, 4863, 3718, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, + 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 1357, 5934, 538, 540, 9900, 9900, 1563, 2589, 9900, + 3626, 354, 1199, 356, 9900, 9900, 9900, 349, 1121, 9900, 9900, 9900, 447, 450, 341, 345, 780, 9900, + 6084, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 4114, 193, 9900, 9900, 842, 9900, 9900, 5216, 35, 1703, + 32, 4863, 1545, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, + 2563, 2543, 3153, 9900, 544, 2055, 35, 1509, 424, 716, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, + 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 3484, 3144, 262, 9900, 9900, 9900, 189, + 9900, 9900, 9900, 9900, 759, 1598, 3973, 9900, 9900, 49, 9900, 3018, 213, 9900, 9900, 237, 249, 4745, + 700, 4339, 2035, 5265, 9900, 202, 236, 246, 247, 248, 250, 651, 699, 9900, 9900, 9900, 9900, 9900, 646, + 2055, 35, 1509, 424, 716, 9900, 9900, 9900, 1789, 35, 1703, 32, 5364, 9900, 27, 30, 31, 1654, 1590, 374, + 28, 201, 9900, 4036, 200, 203, 204, 205, 206, 207, 262, 9900, 9900, 9900, 189, 601, 597, 598, 599, 759, + 1598, 9900, 9900, 9900, 49, 1337, 3018, 213, 9900, 9900, 237, 249, 4745, 700, 9900, 2035, 2455, 9900, + 202, 236, 246, 247, 248, 250, 651, 699, 9900, 9900, 9900, 9900, 9900, 748, 600, 597, 598, 599, 716, + 9900, 9900, 354, 1199, 356, 9900, 9900, 9900, 663, 1121, 9900, 3464, 9900, 9900, 9900, 9900, 201, 9900, + 211, 200, 203, 204, 205, 206, 207, 262, 9900, 9900, 9900, 189, 9900, 9900, 77, 9900, 759, 1598, 9900, + 4077, 9900, 9900, 9900, 3018, 213, 3378, 9900, 237, 249, 4745, 700, 9900, 9900, 9900, 9900, 202, 236, + 246, 247, 248, 250, 651, 699, 9900, 9900, 378, 9900, 9900, 850, 2044, 35, 1509, 424, 716, 2827, 6041, + 35, 1703, 32, 5364, 4563, 27, 30, 31, 1654, 1590, 374, 28, 9900, 9900, 201, 2941, 209, 200, 203, 204, + 205, 206, 207, 262, 9900, 9900, 9900, 189, 9900, 9900, 9900, 9900, 759, 1598, 9900, 9900, 9900, 49, + 3271, 3018, 213, 9900, 9900, 237, 249, 4745, 700, 9900, 2035, 1226, 9900, 202, 236, 246, 247, 248, 250, + 651, 699, 9900, 9900, 9900, 9900, 9900, 952, 2178, 35, 1509, 424, 716, 354, 1199, 356, 9900, 9900, 9900, + 349, 1121, 9900, 2795, 9900, 9900, 9900, 9900, 9900, 9900, 201, 4119, 643, 200, 203, 204, 205, 206, 207, + 262, 9900, 9900, 9900, 189, 2189, 35, 1509, 424, 759, 1598, 9900, 9900, 9900, 49, 9900, 3018, 213, 9900, + 9900, 237, 249, 4745, 700, 9900, 2035, 47, 9900, 202, 236, 246, 247, 248, 250, 651, 699, 9900, 9900, + 9900, 9900, 9900, 1054, 2044, 35, 1509, 424, 716, 9900, 9900, 49, 9900, 9900, 5958, 9900, 9900, 9900, + 1287, 878, 9900, 9900, 2035, 47, 9900, 201, 9900, 210, 200, 203, 204, 205, 206, 207, 262, 9900, 9900, + 9900, 189, 2189, 35, 1509, 424, 759, 1598, 378, 9900, 9900, 49, 189, 3018, 213, 9900, 1011, 237, 249, + 4745, 700, 9900, 2035, 4158, 221, 202, 236, 246, 247, 248, 250, 651, 699, 9900, 5370, 9900, 9900, 9900, + 1156, 2044, 35, 1509, 424, 716, 9900, 9900, 49, 9900, 9900, 9900, 9900, 9900, 9900, 2795, 9900, 9900, + 5737, 2035, 47, 9900, 201, 4340, 220, 200, 203, 204, 205, 206, 207, 262, 9900, 9900, 9900, 189, 9900, + 9900, 77, 9900, 759, 1598, 9900, 716, 9900, 49, 9900, 3018, 213, 378, 1422, 237, 249, 4745, 700, 9900, + 2035, 47, 9900, 202, 236, 246, 247, 248, 250, 651, 699, 9900, 9900, 378, 9900, 9900, 1258, 189, 223, + 1876, 9900, 716, 2827, 9900, 9900, 9900, 9900, 9900, 9900, 3130, 9900, 934, 9900, 9900, 9900, 9900, + 9900, 9900, 201, 2941, 4156, 200, 203, 204, 205, 206, 207, 262, 9900, 9900, 9900, 189, 2382, 35, 1509, + 424, 759, 1598, 9900, 9900, 9900, 9900, 3016, 3018, 213, 9900, 9900, 237, 249, 4745, 700, 9900, 9900, + 9900, 9900, 202, 236, 246, 247, 248, 250, 651, 699, 9900, 9900, 9900, 9900, 9900, 1360, 4152, 35, 1509, + 424, 716, 9900, 9900, 49, 9900, 9900, 9900, 9900, 9900, 9900, 3716, 9900, 9900, 9900, 2035, 47, 9900, + 201, 9900, 225, 200, 203, 204, 205, 206, 207, 262, 9900, 9900, 9900, 189, 2189, 35, 1509, 424, 759, + 1598, 9900, 9900, 9900, 49, 1235, 3018, 213, 9900, 2690, 237, 249, 4745, 700, 9900, 2035, 2150, 9900, + 202, 236, 246, 247, 248, 250, 651, 699, 9900, 9900, 9900, 9900, 9900, 1462, 600, 597, 598, 599, 716, + 9900, 9900, 49, 9900, 9900, 9900, 9900, 9900, 9900, 1947, 9900, 3464, 9900, 2035, 3039, 9900, 201, 9900, + 219, 200, 203, 204, 205, 206, 207, 262, 9900, 9900, 9900, 189, 478, 9900, 492, 9900, 759, 1598, 2066, + 9900, 9900, 9900, 9900, 3018, 213, 3375, 3419, 237, 249, 4745, 700, 273, 296, 9900, 9900, 202, 236, 246, + 247, 248, 250, 651, 699, 9900, 9900, 652, 597, 598, 599, 9900, 9900, 9900, 91, 35, 1703, 32, 5364, 4563, + 27, 30, 31, 1654, 1590, 374, 28, 9900, 9900, 9900, 266, 9900, 201, 9900, 228, 200, 203, 204, 205, 206, + 207, 600, 597, 598, 599, 9900, 9900, 274, 264, 265, 9900, 9900, 5086, 35, 1703, 32, 4863, 5016, 27, 30, + 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3546, 9900, + 9900, 9900, 9900, 9900, 9900, 354, 1199, 356, 9900, 9900, 9900, 349, 1121, 9900, 9900, 9900, 9900, 5086, + 35, 1703, 32, 4863, 997, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, + 2513, 2563, 2543, 2590, 9900, 9900, 5086, 35, 1703, 32, 4863, 3629, 27, 30, 31, 1654, 1590, 26, 28, + 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 2590, 342, 345, 780, 5635, 35, 553, + 9900, 3643, 9900, 9900, 9900, 9900, 2055, 35, 1509, 424, 271, 296, 9900, 4157, 9900, 9900, 9900, 9900, + 716, 2055, 35, 1509, 424, 9900, 652, 597, 598, 599, 2164, 35, 3935, 32, 5364, 4563, 27, 30, 31, 1654, + 1590, 374, 28, 9900, 9900, 9900, 378, 9900, 5834, 266, 189, 9900, 49, 4340, 9900, 2827, 1598, 4093, 597, + 598, 599, 9900, 2802, 2035, 1400, 49, 269, 264, 265, 9900, 929, 9900, 2941, 6148, 2760, 9900, 2035, + 1204, 9900, 6282, 9900, 9900, 6225, 35, 3935, 32, 5364, 4563, 27, 30, 31, 1654, 1590, 374, 28, 2405, + 9900, 600, 597, 598, 599, 354, 1199, 356, 9900, 9900, 9900, 349, 1121, 600, 597, 598, 599, 3969, 276, + 279, 282, 3249, 2602, 9900, 992, 7048, 3708, 9900, 9900, 6148, 5148, 9900, 6172, 7940, 8305, 8466, 9900, + 9900, 6258, 35, 3935, 32, 5364, 4563, 27, 30, 31, 1654, 1590, 374, 28, 9900, 9900, 600, 597, 598, 599, + 354, 1199, 356, 9900, 9900, 2200, 349, 1121, 4093, 597, 598, 599, 3464, 2574, 9900, 395, 9900, 2602, + 273, 296, 2055, 35, 1509, 424, 6148, 6865, 455, 3934, 9900, 9900, 9900, 9900, 652, 597, 598, 599, 9900, + 4203, 3441, 3466, 652, 597, 598, 599, 2299, 9900, 9900, 9900, 562, 563, 567, 9900, 354, 1199, 356, 266, + 368, 9900, 349, 1121, 9900, 9900, 9900, 266, 49, 9900, 9900, 9900, 9900, 2602, 9900, 9900, 274, 264, + 265, 2035, 1349, 7099, 455, 3934, 284, 264, 265, 8498, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, + 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3576, 9900, 9900, 9900, + 9900, 6210, 35, 1703, 32, 5364, 8454, 27, 30, 31, 1654, 1590, 374, 28, 9900, 6865, 455, 3934, 5086, 35, + 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, + 2513, 2563, 2543, 3579, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, + 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3589, 354, 1199, 356, 2069, 9900, 9900, 349, 1121, + 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 3924, 9900, 9900, 9900, 9900, 9900, 9900, 387, + 9900, 9900, 9900, 9900, 9900, 600, 597, 598, 599, 9900, 9900, 9900, 379, 2694, 2340, 384, 9900, 9900, + 9900, 9900, 9900, 4334, 5086, 35, 1703, 32, 4863, 3923, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, + 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3970, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, + 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 3971, 5086, 35, + 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, + 2513, 2563, 2543, 3972, 6297, 35, 1703, 32, 5364, 8271, 27, 30, 31, 1654, 1590, 374, 28, 2044, 35, 1509, + 424, 9900, 9900, 9900, 2044, 35, 1509, 424, 9900, 9900, 401, 5086, 35, 1703, 32, 4863, 386, 27, 30, 31, + 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 2543, 4083, 4471, 9900, + 9900, 49, 2055, 35, 1509, 424, 9900, 9900, 49, 2388, 9900, 9900, 2035, 47, 4077, 354, 1199, 356, 9900, + 2035, 47, 349, 1121, 9900, 9900, 600, 597, 598, 599, 9900, 9900, 9900, 1923, 9900, 9900, 9900, 9900, + 9900, 9900, 387, 262, 4082, 9900, 986, 9900, 9900, 49, 9900, 9900, 759, 1643, 9900, 379, 2694, 2340, + 384, 9900, 2035, 1688, 9900, 239, 249, 4745, 700, 9900, 9900, 9900, 3596, 9900, 238, 246, 247, 248, 250, + 651, 699, 4891, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, + 637, 76, 77, 240, 242, 244, 815, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 251, 241, + 243, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, + 76, 77, 108, 2513, 2563, 3591, 9900, 9900, 13, 3053, 7439, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, + 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 2563, 3604, 4369, 35, 1703, 32, + 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 107, 6327, 35, + 1703, 32, 5364, 8454, 27, 30, 31, 1654, 1590, 374, 28, 5467, 35, 1509, 424, 3882, 2651, 77, 9900, 9900, + 9900, 9900, 4077, 3978, 272, 296, 751, 5148, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 2671, 9900, 9900, + 652, 597, 598, 599, 4157, 9900, 9900, 9900, 9900, 716, 378, 9900, 600, 597, 598, 599, 9900, 308, 9900, + 2827, 9900, 9900, 9900, 266, 652, 597, 598, 599, 3464, 9900, 9900, 354, 1199, 356, 9900, 378, 2941, 349, + 1121, 189, 270, 264, 265, 9900, 2827, 1598, 9900, 266, 588, 672, 2047, 2802, 9900, 9900, 9900, 387, + 9900, 9900, 9900, 3290, 2299, 2941, 9900, 2760, 287, 264, 265, 9900, 379, 2694, 2340, 384, 6757, 9900, + 9900, 9900, 9900, 9900, 9900, 9900, 309, 9900, 9900, 589, 2811, 9900, 9900, 9900, 277, 280, 283, 3249, + 9900, 2771, 992, 9900, 9900, 9900, 286, 9900, 9900, 646, 1654, 35, 1703, 32, 5508, 9900, 27, 30, 31, + 1654, 1590, 374, 28, 9900, 2044, 35, 1509, 424, 600, 597, 598, 599, 9900, 9900, 9900, 9900, 9900, 600, + 597, 598, 599, 9900, 9900, 9900, 4366, 9900, 9900, 9900, 1654, 35, 1703, 32, 5508, 3464, 27, 30, 31, + 1654, 1590, 374, 28, 9900, 9900, 9900, 9900, 9900, 3444, 9900, 49, 9900, 5148, 9900, 9900, 96, 9900, + 600, 597, 598, 599, 2035, 47, 354, 1199, 356, 9900, 2299, 9900, 352, 1121, 9900, 9900, 5228, 9900, 600, + 597, 598, 599, 368, 9900, 9900, 5579, 35, 1509, 424, 3882, 9900, 9900, 4157, 9900, 3464, 3023, 9900, + 716, 272, 296, 9900, 9900, 9900, 9900, 354, 1199, 356, 9900, 2299, 9900, 350, 1121, 652, 597, 598, 599, + 9900, 9900, 9900, 9900, 368, 9900, 9900, 378, 9900, 2621, 2299, 189, 9900, 308, 4077, 9900, 2827, 1598, + 9900, 266, 9900, 9900, 368, 2802, 9900, 9900, 9900, 9900, 9900, 9900, 387, 9900, 9900, 2941, 9900, 2760, + 270, 264, 265, 9900, 262, 9900, 9900, 381, 2694, 2340, 384, 9900, 9900, 759, 9900, 9900, 9900, 5691, 35, + 553, 2916, 9900, 9900, 9900, 239, 249, 4745, 700, 9900, 9900, 272, 296, 9900, 238, 246, 247, 248, 250, + 651, 699, 309, 9900, 9900, 9900, 652, 597, 598, 599, 277, 280, 283, 3249, 2718, 9900, 992, 9900, 9900, + 4077, 286, 9900, 9900, 646, 240, 242, 244, 815, 9900, 266, 2958, 9900, 9900, 9900, 9900, 9900, 9900, + 9900, 251, 241, 243, 9900, 9900, 9900, 9900, 262, 270, 264, 265, 9900, 9900, 9900, 9900, 9900, 759, + 9900, 9900, 600, 597, 598, 599, 9900, 9900, 9900, 9900, 239, 249, 4745, 700, 1997, 9900, 7439, 9900, + 4334, 238, 246, 247, 248, 250, 651, 699, 3346, 35, 1703, 32, 5364, 4563, 27, 30, 31, 1654, 1590, 374, + 28, 277, 280, 283, 3249, 9900, 9900, 992, 9900, 9900, 240, 242, 244, 815, 9900, 601, 597, 598, 599, + 9900, 9900, 9900, 9900, 9900, 251, 241, 243, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, + 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 2513, 3483, 9900, 2815, 9900, 2199, 9900, 7439, 4077, + 354, 1199, 356, 9900, 9900, 9900, 349, 1121, 9900, 6108, 9900, 9900, 9900, 9900, 4077, 9900, 9900, 6084, + 9900, 9900, 9900, 9900, 9900, 9900, 9900, 262, 9900, 9900, 9900, 562, 563, 568, 9900, 9900, 759, 9900, + 9900, 9900, 9900, 9900, 378, 592, 9900, 9900, 9900, 239, 249, 4745, 700, 2827, 9900, 9900, 9900, 9900, + 238, 246, 247, 248, 250, 651, 699, 4956, 35, 1703, 32, 4863, 2941, 27, 30, 31, 1654, 1590, 26, 28, 2249, + 296, 23, 25, 50, 2263, 635, 76, 77, 240, 242, 244, 815, 9900, 9900, 595, 9900, 9900, 9900, 9900, 9900, + 9900, 9900, 251, 241, 243, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, + 23, 25, 50, 2263, 106, 76, 77, 108, 3525, 9900, 9900, 9900, 9900, 2449, 9900, 7439, 5086, 35, 1703, 32, + 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 108, 3529, 4303, + 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 81, + 4435, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, + 77, 81, 2524, 9900, 9900, 9900, 9900, 4077, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, + 9900, 2252, 9900, 9900, 9900, 9900, 4077, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 262, 9900, + 9900, 9900, 9900, 709, 9900, 9900, 9900, 759, 9900, 9900, 2044, 35, 1509, 424, 4399, 262, 9900, 9900, + 239, 249, 4745, 700, 9900, 9900, 759, 9900, 710, 238, 246, 247, 248, 250, 651, 699, 6164, 239, 249, + 4745, 700, 9900, 9900, 9900, 9900, 9900, 238, 246, 247, 248, 250, 651, 699, 9900, 9900, 9900, 49, 2912, + 240, 242, 244, 815, 4077, 652, 597, 598, 599, 2035, 47, 9900, 9900, 9900, 580, 241, 243, 240, 242, 244, + 815, 9900, 9900, 2044, 35, 1509, 424, 2768, 266, 9900, 262, 252, 241, 243, 9900, 9900, 9900, 9900, 9900, + 759, 3027, 9900, 9900, 9900, 77, 269, 264, 265, 9900, 4077, 239, 249, 4745, 700, 652, 597, 598, 599, + 9900, 238, 246, 247, 248, 250, 651, 699, 3009, 49, 77, 9900, 9900, 4077, 9900, 4077, 9900, 378, 9900, + 266, 2035, 47, 9900, 9900, 9900, 9900, 2827, 9900, 9900, 9900, 240, 242, 244, 815, 9900, 9900, 647, 264, + 265, 262, 9900, 378, 7623, 2941, 671, 241, 243, 9900, 759, 9900, 2827, 3137, 9900, 9900, 2865, 9900, + 9900, 9900, 9900, 239, 249, 4745, 700, 9900, 9900, 9900, 3297, 2941, 238, 246, 247, 248, 250, 651, 699, + 3106, 9900, 9900, 9900, 9900, 4077, 652, 597, 598, 599, 9900, 9900, 9900, 9900, 9900, 3360, 9900, 9900, + 690, 680, 9900, 9900, 240, 242, 244, 815, 9900, 9900, 9900, 266, 9900, 262, 9900, 9900, 9900, 9900, 670, + 241, 243, 9900, 759, 9900, 9900, 9900, 9900, 9900, 270, 264, 265, 9900, 9900, 239, 249, 4745, 700, 9900, + 693, 9900, 9900, 9900, 238, 246, 247, 248, 250, 651, 699, 5021, 35, 1703, 32, 4863, 9900, 27, 30, 31, + 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 86, 76, 77, 240, 242, 244, 815, 9900, 9900, 9900, 9900, + 9900, 9900, 9900, 9900, 9900, 9900, 669, 241, 243, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, + 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 85, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, + 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 83, 5086, 35, 1703, 32, 4863, 9900, 27, + 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 82, 5086, 35, 1703, 32, 4863, + 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 81, 5086, 35, 1703, 32, + 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 80, 5086, 35, + 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 79, + 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, + 77, 78, 5086, 2402, 1703, 2927, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, + 106, 76, 77, 84, 3203, 9900, 9900, 9900, 9900, 4077, 2962, 9900, 9900, 9900, 9900, 9900, 9900, 9900, + 9900, 77, 9900, 3300, 9900, 77, 4077, 9900, 4077, 9900, 4077, 9900, 9900, 9900, 9900, 9900, 9900, 262, + 9900, 652, 597, 598, 599, 9900, 9900, 9900, 759, 9900, 9900, 9900, 9900, 9900, 378, 9900, 262, 9900, + 378, 239, 249, 4745, 700, 2827, 266, 759, 9900, 2827, 238, 246, 247, 248, 250, 651, 699, 9900, 239, 249, + 4745, 700, 2941, 278, 264, 265, 2941, 238, 246, 247, 248, 250, 651, 699, 9900, 9900, 9900, 9900, 9900, + 240, 242, 244, 815, 9900, 9900, 3731, 9900, 9900, 9900, 545, 9900, 9900, 9900, 581, 241, 243, 240, 242, + 244, 815, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 340, 241, 243, 4566, 35, 1703, 32, + 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 104, 5086, 35, + 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, 77, 110, + 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 106, 76, + 77, 109, 5086, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, + 106, 76, 77, 105, 3397, 9900, 9900, 9900, 9900, 4077, 5151, 35, 1703, 32, 4863, 9900, 27, 30, 31, 1654, + 1590, 26, 28, 2249, 296, 23, 25, 50, 2263, 3864, 76, 77, 9900, 9900, 9900, 262, 9900, 9900, 9900, 9900, + 9900, 9900, 9900, 9900, 759, 9900, 9900 }; + }; - public interface Asr { - public final static char asr[] = {0, - 5,33,0,135,0,11,10,67,1,4, - 3,2,6,0,24,25,15,16,58,82, - 26,59,51,17,18,19,83,11,60,20, - 21,61,62,52,74,53,63,23,22,27, - 28,54,55,56,46,1,4,5,49,50, - 13,12,47,48,10,57,6,37,64,3, - 2,29,30,31,84,0,46,67,0,85, - 5,78,104,86,73,79,65,72,84,14, - 75,8,9,7,0,14,73,79,1,32, - 0,78,86,73,1,4,3,2,0,14, - 84,75,85,0,82,83,74,49,50,13, - 12,47,48,10,57,61,64,37,5,6, - 11,54,55,56,46,53,51,52,24,25, - 16,28,15,20,18,19,21,22,17,26, - 27,29,30,31,23,59,62,60,58,63, - 87,1,4,3,2,75,14,0,131,132, - 133,84,87,11,14,5,13,12,10,65, - 81,76,96,77,80,24,25,34,7,38, - 15,16,66,32,26,68,39,40,17,41, - 42,18,19,43,44,20,21,35,69,67, - 45,23,70,22,27,33,28,37,8,9, - 29,30,31,1,4,3,2,36,6,0, - 58,82,59,51,83,60,61,62,52,74, - 53,63,54,55,56,46,57,64,37,23, - 68,66,69,70,16,28,15,20,18,19, - 21,22,17,26,27,29,30,31,24,25, - 85,84,104,111,87,75,134,129,49,50, - 112,105,47,48,113,114,88,89,71,78, - 102,103,106,107,108,109,110,115,116,86, - 117,118,119,120,121,122,123,124,125,126, - 73,127,128,34,38,32,39,40,41,42, - 43,44,35,45,36,33,65,14,79,72, - 11,5,10,13,12,8,9,7,6,4, - 3,2,1,0,58,82,59,51,83,11, - 60,61,62,52,74,53,63,54,55,56, - 46,49,50,13,12,47,48,10,57,78, - 64,5,37,6,23,1,4,3,2,68, - 66,69,70,24,25,16,28,15,20,18, - 19,21,22,17,26,27,29,30,31,38, - 44,35,40,43,42,36,39,7,9,8, - 41,45,32,33,34,0,36,1,4,6, - 3,2,131,132,133,0,82,83,5,23, - 59,62,60,58,63,16,28,15,20,18, - 19,21,22,17,26,27,29,30,31,24, - 25,54,55,56,46,53,51,52,10,11, - 6,49,50,13,12,47,48,57,61,64, - 37,74,35,1,4,3,2,111,14,0, - 24,25,15,16,58,82,26,59,51,17, - 18,19,83,11,60,20,21,61,62,52, - 74,53,63,23,22,27,28,54,55,56, - 46,1,4,5,49,50,47,48,10,57, - 6,37,64,3,2,29,30,31,65,14, - 12,13,0,74,34,32,33,35,82,83, - 111,14,49,50,13,12,47,48,10,57, - 61,64,37,5,6,11,24,25,16,28, - 15,20,18,19,21,22,17,26,27,29, - 30,31,23,59,62,60,58,63,1,4, - 3,2,54,55,56,53,51,52,46,0, - 7,14,75,8,9,86,0,7,78,84, - 104,111,87,65,8,9,73,14,79,24, - 25,15,16,58,26,59,51,17,18,19, - 60,20,21,61,62,52,74,53,63,23, - 22,27,28,54,55,56,46,5,49,50, - 13,12,47,48,57,6,37,64,29,30, - 31,11,10,1,4,2,83,82,3,0, - 24,25,34,38,15,16,66,32,26,68, - 39,96,40,17,41,42,18,19,43,76, - 44,20,21,35,69,45,23,70,22,77, - 36,27,33,28,5,13,6,65,37,29, - 30,31,80,81,75,14,12,8,9,7, - 11,10,1,4,3,2,67,0,74,85, - 134,129,49,50,84,104,111,87,39,40, - 41,42,43,11,44,35,45,36,33,1, - 4,72,5,32,38,10,6,7,34,8, - 9,3,2,112,105,47,48,113,114,127, - 128,12,79,65,75,14,89,88,71,102, - 103,106,107,13,108,109,110,115,116,117, - 118,119,120,121,122,123,124,125,126,86, - 78,73,0,111,65,73,79,14,84,0, - 112,105,12,113,114,47,48,89,88,71, - 102,103,127,128,106,107,13,108,109,110, - 78,79,86,117,118,119,120,121,122,123, - 124,125,126,84,104,111,87,115,116,8, - 9,7,73,65,14,0,1,4,3,2, - 73,14,87,0,84,73,79,14,5,0, - 79,14,1,46,0,6,8,9,7,71, - 14,84,75,0,6,14,84,75,8,9, - 7,0,130,0,6,67,84,14,75,8, - 9,7,1,4,3,2,0,34,32,33, - 74,85,78,84,104,79,75,5,7,14, - 73,65,8,9,86,0,14,75,73,0, - 34,32,33,74,14,104,86,73,79,78, - 0,14,73,87,86,0,78,102,103,71, - 0,84,7,72,8,9,71,14,73,65, - 86,5,0,79,96,131,132,133,67,84, - 135,130,136,87,81,85,80,77,76,91, - 93,100,98,90,95,97,99,101,75,92, - 94,65,14,68,66,69,70,38,44,35, - 40,43,42,36,39,7,9,8,41,45, - 34,32,33,74,82,83,23,59,62,60, - 58,63,5,28,26,27,29,30,31,24, - 25,54,55,56,46,53,51,52,10,11, - 6,49,50,13,12,47,48,57,61,64, - 37,1,4,3,2,17,15,21,22,16, - 20,18,19,0,84,104,0,79,14,89, - 88,0,14,84,79,46,0,24,25,34, - 7,38,15,16,66,32,26,68,39,40, - 17,41,42,18,19,43,44,20,21,35, - 69,45,23,70,22,36,27,33,28,1, - 4,6,37,8,9,3,2,29,30,31, - 104,0,6,14,75,8,9,7,1,4, - 3,2,0,37,83,82,47,48,113,114, - 108,109,10,57,86,71,120,121,117,118, - 119,125,124,126,89,88,122,123,106,107, - 102,103,110,115,49,50,105,129,23,68, - 66,69,70,16,28,15,20,18,19,21, - 22,17,26,27,29,30,31,24,25,38, - 44,35,40,43,42,36,39,32,33,34, - 41,45,78,73,1,4,13,6,3,2, - 5,72,8,9,7,12,0,34,7,38, - 66,32,68,39,40,41,42,43,44,35, - 69,45,70,36,33,8,9,74,82,83, - 49,50,13,12,47,48,57,61,64,37, - 5,54,55,56,46,53,51,52,24,25, - 16,28,15,20,18,19,21,22,17,26, - 27,29,30,31,59,62,60,58,63,75, - 14,23,6,11,1,4,3,2,10,0, - 7,13,12,8,9,11,10,6,1,4, - 3,2,5,72,78,86,73,14,79,104, - 0,10,11,5,72,12,13,104,24,25, - 34,7,38,15,16,32,26,68,39,40, - 17,41,42,18,19,43,44,20,21,35, - 69,45,23,70,22,36,27,33,28,1, - 4,6,37,8,9,3,2,29,30,31, - 79,14,66,0,78,73,37,23,68,66, - 69,70,24,25,34,7,38,15,16,32, - 26,39,40,17,41,42,18,19,43,11, - 44,20,21,35,45,22,36,27,33,28, - 4,72,13,12,10,6,65,8,9,3, - 2,29,30,31,5,1,79,14,0,32, - 26,68,39,17,41,18,19,43,44,20, - 21,69,45,70,22,36,27,33,28,66, - 16,15,37,38,34,25,24,29,30,31, - 14,5,13,12,65,80,77,96,40,35, - 42,81,71,8,9,7,67,11,1,4, - 10,6,3,2,23,76,0,87,24,25, - 34,38,15,16,66,32,26,68,39,17, - 41,18,19,43,44,20,21,69,45,23, - 70,22,36,27,33,28,37,29,30,31, - 135,81,76,40,35,42,96,77,80,67, - 7,14,13,65,8,9,10,11,4,3, - 2,6,5,1,12,0,82,83,49,50, - 13,12,47,48,10,57,61,64,37,6, - 11,54,55,56,46,53,51,52,24,25, - 16,28,15,20,18,19,21,22,17,26, - 27,29,30,31,23,59,62,60,58,63, - 72,1,4,3,2,5,0,65,14,5, - 11,10,84,13,12,6,1,4,3,2, - 8,9,7,0,11,10,17,15,21,22, - 16,20,18,19,38,44,35,40,43,42, - 36,39,32,33,34,41,45,78,7,1, - 4,13,12,6,8,9,3,2,72,5, - 79,14,73,0 - }; - }; - public final static char asr[] = Asr.asr; - public final int asr(int index) { return asr[index]; } + public interface BaseAction1 { + public final static char baseAction1[] = { 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 239, 249, 4745, 700, + 9900, 9900, 9900, 9900, 9900, 238, 246, 247, 248, 250, 651, 699, 6270, 35, 1703, 32, 5364, 4411, 27, 30, + 31, 1654, 1590, 374, 28, 1984, 9900, 9900, 9900, 6022, 4340, 9900, 9900, 9900, 240, 242, 244, 815, 9900, + 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 535, 241, 243, 9900, 9900, 9900, 9900, 9900, 262, + 9900, 9900, 9900, 439, 6086, 9900, 9900, 9900, 5148, 4340, 6086, 9900, 77, 9900, 5148, 4340, 9900, 4077, + 9900, 2649, 443, 8216, 714, 9900, 9900, 9900, 351, 1710, 356, 9900, 9900, 600, 597, 598, 599, 6282, + 6118, 600, 597, 598, 599, 6282, 9900, 378, 3059, 9900, 9900, 3464, 9900, 9900, 9900, 9900, 2827, 3464, + 9900, 9900, 9900, 444, 445, 446, 815, 9900, 9900, 652, 597, 598, 599, 9900, 9900, 2941, 9900, 652, 597, + 598, 599, 4157, 9900, 9900, 9900, 2299, 716, 9900, 9900, 9900, 9900, 2299, 266, 9900, 9900, 9900, 9900, + 367, 543, 9900, 266, 9900, 9900, 367, 9900, 9900, 9900, 3041, 4157, 269, 264, 265, 378, 716, 9900, 9900, + 189, 281, 264, 265, 9900, 2827, 1598, 9900, 9900, 9900, 9900, 9900, 2802, 6930, 395, 9900, 9900, 9900, + 9900, 4819, 395, 9900, 2941, 378, 2760, 77, 9900, 189, 9900, 9900, 4077, 3591, 2827, 1598, 1341, 5148, + 3782, 3441, 3466, 2802, 9900, 9900, 3782, 3441, 3466, 2920, 9900, 9900, 7623, 2941, 9900, 2760, 447, + 449, 9900, 9900, 378, 9900, 600, 597, 598, 599, 4157, 9900, 9900, 2827, 9900, 716, 9900, 9900, 9900, + 9900, 2988, 77, 3464, 9900, 9900, 9900, 878, 9900, 9900, 9900, 2941, 3591, 9900, 1943, 9900, 5148, 4904, + 9900, 9900, 9900, 9900, 378, 9900, 3156, 9900, 189, 9900, 690, 680, 9900, 2827, 1598, 378, 596, 2299, + 9900, 189, 2802, 600, 597, 598, 599, 9900, 9900, 9900, 9900, 367, 2941, 221, 2760, 652, 597, 598, 599, + 3464, 3253, 9900, 9900, 5370, 9900, 9900, 9900, 5928, 9900, 77, 692, 9900, 878, 9900, 878, 3828, 77, + 9900, 266, 9900, 9900, 878, 9900, 6930, 9900, 9900, 9900, 652, 597, 598, 599, 2299, 9900, 9900, 9900, + 284, 264, 265, 3575, 9900, 378, 9900, 189, 367, 189, 679, 7489, 378, 9900, 9900, 266, 189, 9900, 9900, + 3018, 213, 221, 9900, 9900, 9900, 9900, 9900, 9900, 221, 9900, 9900, 5370, 569, 264, 265, 9900, 9900, + 9900, 5370, 9900, 4819, 9900, 9900, 9900, 9900, 9900, 4118, 9900, 9900, 9900, 9900, 9900, 9900, 9900, + 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 229, 9900, 9900, 9900, 9900, + 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, + 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, + 9900, 9900, 9900, 9900, 4120, 9900, 9900, 9900, 9900, 9900, 9900, 4200, 9900, 9900, 9900, 9900, 9900, + 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, + 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, + 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, + 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, + 9900, 9900, 9900, 5518, 230, 9900, 0, 1, 263, 747, 0, 537, 7422, 0, 1, 263, 0, 39, 10602, 0, 39, 10601, + 697, 0, 39, 9915, 0, 39, 9914, 0, 1, 860, 0, 849, 1, 0, 39, 1, 10602, 0, 39, 1, 10601, 0, 39, 1, 9915, + 0, 39, 1, 9914, 0, 1, 5597, 0, 1, 818, 0, 263, 253, 0, 1, 1198, 0, 1, 1227, 0, 1, 1358, 0, 10168, 257, + 0, 10167, 257, 0, 1198, 257, 0, 1227, 257, 0, 1358, 257, 0, 1439, 257, 0, 10273, 257, 0, 10272, 257, 0, + 10195, 257, 0, 10194, 257, 0, 10193, 257, 0, 10192, 257, 0, 10191, 257, 0, 10190, 257, 0, 10189, 257, 0, + 10188, 257, 0, 668, 698, 0, 10168, 258, 0, 10167, 258, 0, 1198, 258, 0, 1227, 258, 0, 1358, 258, 0, + 1439, 258, 0, 10273, 258, 0, 10272, 258, 0, 10195, 258, 0, 10194, 258, 0, 10193, 258, 0, 10192, 258, 0, + 10191, 258, 0, 10190, 258, 0, 10189, 258, 0, 10188, 258, 0, 10168, 259, 0, 10167, 259, 0, 1198, 259, 0, + 1227, 259, 0, 1358, 259, 0, 1439, 259, 0, 10273, 259, 0, 10272, 259, 0, 10195, 259, 0, 10194, 259, 0, + 10193, 259, 0, 10192, 259, 0, 10191, 259, 0, 10190, 259, 0, 10189, 259, 0, 10188, 259, 0, 1358, 430, 0, + 1227, 430, 0, 1198, 430, 0, 318, 430, 0, 10168, 260, 0, 10167, 260, 0, 1198, 260, 0, 1227, 260, 0, 1358, + 260, 0, 1439, 260, 0, 10273, 260, 0, 10272, 260, 0, 10195, 260, 0, 10194, 260, 0, 10193, 260, 0, 10192, + 260, 0, 10191, 260, 0, 10190, 260, 0, 10189, 260, 0, 10188, 260, 0, 318, 323, 0, 10168, 261, 0, 10167, + 261, 0, 1198, 261, 0, 1227, 261, 0, 1358, 261, 0, 1439, 261, 0, 10273, 261, 0, 10272, 261, 0, 10195, + 261, 0, 10194, 261, 0, 10193, 261, 0, 10192, 261, 0, 10191, 261, 0, 10190, 261, 0, 10189, 261, 0, 10188, + 261, 0, 1495, 423, 0, 39, 10601, 0, 10602, 48, 0, 10601, 48, 0, 9915, 48, 0, 9914, 48, 0, 10168, 650, 0, + 10167, 650, 0, 1198, 650, 0, 1227, 650, 0, 1358, 650, 0, 1439, 650, 0, 10273, 650, 0, 10272, 650, 0, + 10195, 650, 0, 10194, 650, 0, 10193, 650, 0, 10192, 650, 0, 10191, 650, 0, 10190, 650, 0, 10189, 650, 0, + 10188, 650, 0, 10168, 275, 0, 10167, 275, 0, 1198, 275, 0, 1227, 275, 0, 1358, 275, 0, 1439, 275, 0, + 10273, 275, 0, 10272, 275, 0, 10195, 275, 0, 10194, 275, 0, 10193, 275, 0, 10192, 275, 0, 10191, 275, 0, + 10190, 275, 0, 10189, 275, 0, 10188, 275, 0, 10575, 275, 0, 10574, 275, 0, 10573, 275, 0, 10207, 275, 0, + 10206, 275, 0, 10205, 275, 0, 10204, 275, 0, 10203, 275, 0, 10202, 275, 0, 10201, 275, 0, 10200, 275, 0, + 10199, 275, 0, 10198, 275, 0, 10197, 275, 0, 10567, 275, 0, 10566, 275, 0, 39, 275, 10602, 0, 39, 275, + 10601, 696, 0, 39, 275, 9915, 0, 39, 275, 9914, 0, 9938, 275, 0, 1, 366, 0, 38, 818, 0, 38, 10602, 0, + 38, 10601, 0, 38, 9915, 0, 38, 9914, 0, 490, 2036, 0, 476, 2136, 0, 1495, 29, 0, 9912, 1, 0, 2193, 353, + 0, 1358, 660, 0, 1227, 660, 0, 1198, 660, 0, 664, 660, 0, 664, 659, 0, 9963, 75, 0, 9962, 75, 0, 767, + 75, 0, 1364, 75, 0, 1707, 75, 0, 1839, 75, 0, 1, 662, 0, 1, 480, 0, 494, 949, 0, 493, 1306, 0, 35, 33, + 0, 47, 37, 0, 2056, 190, 0, 6299, 126, 0, 9912, 419, 0, 9911, 419, 0, 1358, 662, 0, 1227, 662, 0, 1198, + 662, 0, 1198, 695, 0, 1227, 695, 0, 1358, 695, 0, 10581, 695, 0, 537, 3057, 0, 9938, 1, 263, 0, 39, 1, + 263, 0, 263, 452, 0, 1, 1653, 0, 1, 10575, 0, 1, 10574, 0, 1, 10573, 0, 1, 10207, 0, 1, 10206, 0, 1, + 10205, 0, 1, 10204, 0, 1, 10203, 0, 1, 10202, 0, 1, 10201, 0, 1, 10200, 0, 1, 10199, 0, 1, 10198, 0, 1, + 10197, 0, 1, 10567, 0, 1, 10566, 0, 10602, 37, 0, 10601, 37, 0, 9915, 37, 0, 9914, 37, 0, 43, 9936, 0, + 43, 37, 0, 2601, 91, 0, 32, 34, 0, 9908, 1, 0, 39, 818, 0, 1358, 366, 0, 1227, 366, 0, 1198, 366, 0, 39, + 275, 10601, 0, 1, 1209, 0, 1, 2586, 0, 263, 254, 0, 10168, 691, 0, 10167, 691, 0, 1198, 691, 0, 1227, + 691, 0, 1358, 691, 0, 1439, 691, 0, 10273, 691, 0, 10272, 691, 0, 10195, 691, 0, 10194, 691, 0, 10193, + 691, 0, 10192, 691, 0, 10191, 691, 0, 10190, 691, 0, 10189, 691, 0, 10188, 691, 0, 1198, 694, 0, 1227, + 694, 0, 1358, 694, 0, 10581, 694, 0, 9910, 441, 0, 9909, 441, 0, 263, 451, 0, 1, 6613, 0, 1, 7282, 0, 1, + 7711, 0, 1, 7750, 0, 1, 7773, 0, 1, 7796, 0, 1, 7819, 0, 1, 7842, 0, 1, 7865, 0, 1, 7888, 0, 1, 7911, 0, + 1, 9922, 0, 1, 9921, 0, 1, 9920, 0, 1, 9919, 0, 1, 9918, 0, 1, 9917, 0, 1, 9916, 0, 1, 2050, 0, 1, 2053, + 0, 1, 2100, 0, 1, 2147, 0, 1, 2205, 0, 1, 2658, 0, 39, 1, 0, 9912, 649, 419, 0, 9911, 649, 419, 0, 1, + 263, 3817, 0, 9909, 263, 0, 3818, 263, 0, 9906, 1, 0, 9905, 1, 0, 271, 1220, 0, 424, 32, 0, 423, 29, 0, + 1358, 481, 0, 1227, 481, 0, 1198, 481, 0, 9938, 481, 0, 39, 481, 0, 366, 481, 0, 6299, 128, 0, 6299, + 127, 0, 1198, 570, 0, 1227, 570, 0, 1358, 570, 0, 1198, 571, 0, 1227, 571, 0, 1358, 571, 0, 1198, 572, + 0, 1227, 572, 0, 1358, 572, 0, 1198, 573, 0, 1227, 573, 0, 1358, 573, 0, 1198, 574, 0, 1227, 574, 0, + 1358, 574, 0, 275, 10602, 0, 275, 10601, 0, 275, 9915, 0, 275, 9914, 0, 9936, 45, 0, 37, 45, 0, 9912, + 638, 419, 0, 9911, 638, 419, 0, 9912, 636, 419, 0, 9911, 636, 419, 0, 9912, 87, 419, 0, 9911, 87, 419, + 0, 1, 92, 0, 4000, 263, 0, 10, 12, 0, 9938, 1, 0, 648, 637, 0, 1439, 371, 0, 10273, 371, 0, 10272, 371, + 0, 2401, 100, 0, 8, 10, 12, 0, 4101, 227, 0, 10602, 2, 37, 0, 10601, 2, 37, 0, 9915, 2, 37, 0, 9914, 2, + 37, 0, 10602, 36, 0, 10601, 36, 0, 9915, 36, 0, 9914, 36, 0, 1358, 657, 0, 1227, 657, 0, 1198, 657, 0, + 1358, 656, 0, 1227, 656, 0, 1198, 656, 0, 600, 601, 0, 5078, 103, 0, 4050, 99, 0, 1358, 95, 0, 1227, 95, + 0, 1198, 95, 0, 9938, 95, 0, 39, 95, 0, 366, 95, 0, 9912, 649, 638, 419, 0, 649, 638, 0, 35, 73, 0, + 4155, 419, 0, 1358, 657, 658, 0, 1227, 657, 658, 0, 1198, 657, 658, 0, 657, 658, 0, 313, 4350, 0, 8, 12, + 0, 218, 5723, 0 }; + }; - public interface Nasb { - public final static char nasb[] = {0, - 275,13,13,197,14,16,5,333,13,13, - 13,319,13,158,319,211,191,273,273,13, - 13,297,13,13,13,13,298,92,298,230, - 298,230,298,13,11,175,298,150,290,197, - 190,268,152,13,13,247,329,13,175,13, - 13,319,319,13,319,219,92,230,13,238, - 13,150,120,30,349,63,63,232,230,240, - 240,188,20,317,199,13,197,171,273,238, - 38,273,238,197,175,12,13,13,150,150, - 150,150,150,150,150,150,150,150,175,325, - 258,13,13,13,13,13,273,13,13,197, - 36,120,13,224,232,175,13,317,197,197, - 124,5,116,317,13,13,13,13,12,72, - 197,197,319,319,197,197,92,273,18,13, - 258,13,13,13,13,13,13,13,13,13, - 13,150,13,191,65,86,224,238,175,110, - 230,238,186,152,317,13,13,256,68,43, - 13,317,340,172,230,230,13,240,92,197, - 240,48,56,172,59,258,258,258,150,46, - 72,13,317,317,317,105,203,203,1,260, - 261,261,261,261,175,76,22,22,76,211, - 36,127,178,182,230,230,48,48,349,290, - 116,116,152,359,359,275,275,197,240,317, - 150,317,150,150,150,150,150,150,150,150, - 150,150,150,150,150,150,150,150,150,150, - 150,150,150,150,150,150,150,150,150,150, - 150,150,150,150,32,150,317,197,92,233, - 230,149,99,116,111,13,238,120,120,188, - 120,13,188,298,256,317,13,317,106,175, - 120,13,185,13,14,332,340,230,230,197, - 238,197,56,197,330,12,13,251,203,144, - 13,13,13,13,13,13,13,13,13,172, - 13,12,317,317,317,116,262,65,286,207, - 349,202,63,63,13,13,13,11,175,150, - 317,317,13,13,13,13,71,317,151,175, - 151,317,116,127,13,240,13,13,197,13, - 13,228,317,13,266,13,13,13,74,74, - 106,106,275,186,120,281,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,106,197, - 99,116,111,122,13,317,68,317,150,317, - 317,72,190,197,197,41,41,172,330,28, - 13,13,297,298,298,298,298,306,11,13, - 150,150,150,150,150,150,150,150,150,150, - 150,150,150,150,150,150,150,150,150,150, - 211,150,48,59,286,286,286,150,261,197, - 132,317,214,13,161,13,120,13,13,13, - 13,215,13,330,118,120,120,330,141,300, - 317,347,197,175,72,13,258,13,13,13, - 13,172,12,175,168,72,197,178,12,76, - 230,122,197,150,13,13,265,349,359,359, - 319,197,13,13,106,120,150,150,86,150, - 150,116,111,317,317,152,120,150,13,139, - 13,230,232,41,41,101,28,106,150,330, - 175,150,13,13,13,13,13,13,13,13, - 13,13,13,317,156,228,13,215,13,13, - 215,353,353,357,13,353,120,120,13,197, - 317,359,70,172,317,211,211,211,211,13, - 13,13,329,172,97,317,197,122,122,150, - 150,347,222,359,261,261,106,116,116,150, - 120,191,150,150,238,230,232,13,13,273, - 108,240,106,56,317,150,197,79,13,211, - 228,215,150,215,317,268,1,317,243,197, - 13,317,97,197,317,172,286,317,317,317, - 317,76,76,169,13,13,130,13,122,197, - 13,81,85,230,238,135,240,273,273,12, - 172,156,76,150,116,215,13,215,120,191, - 211,215,130,122,197,13,317,317,169,262, - 83,13,81,13,12,240,240,79,317,116, - 150,13,94,120,317,197,122,317,317,197, - 13,74,12,12,215,317,120,83,197,141, - 141,266,314,13,215,83,317,151,261 - }; - }; - public final static char nasb[] = Nasb.nasb; - public final int nasb(int index) { return nasb[index]; } + public final static char baseAction[] = new char[BaseAction0.baseAction0.length + BaseAction1.baseAction1.length]; + { + int index = 0; + System.arraycopy(BaseAction0.baseAction0, 0, baseAction, index, BaseAction0.baseAction0.length); + index += BaseAction0.baseAction0.length; + System.arraycopy(BaseAction1.baseAction1, 0, baseAction, index, BaseAction1.baseAction1.length); + }; - public interface Nasr { - public final static char nasr[] = {0, - 3,13,10,9,122,157,132,118,131,130, - 4,2,0,188,0,243,0,15,0,173, - 0,4,2,9,10,177,0,185,0,224, - 0,5,47,158,0,190,0,41,1,0, - 147,0,32,208,0,215,0,4,10,9, - 2,13,154,5,0,2,93,0,93,176, - 175,0,95,0,5,35,0,206,0,2, - 158,93,0,145,0,5,124,0,179,0, - 193,0,164,0,106,4,10,9,2,13, - 113,41,0,5,218,0,192,0,213,0, - 4,133,232,0,5,106,0,233,0,5, - 4,10,9,2,13,82,0,5,47,48, - 0,50,0,5,235,0,41,191,0,156, - 0,5,217,0,4,133,196,0,231,0, - 41,59,0,41,57,40,47,59,5,13, - 4,10,9,2,0,181,0,43,1,0, - 13,2,9,10,4,245,0,2,159,0, - 56,2,3,0,2,56,0,200,4,199, - 0,43,93,0,43,138,0,172,0,119, - 43,78,4,2,9,10,5,0,242,32, - 0,32,109,110,5,0,40,53,41,219, - 5,47,0,106,47,53,40,96,41,5, - 0,110,109,10,9,2,78,4,87,43, - 0,5,4,10,9,2,78,27,0,2, - 86,0,57,5,220,0,5,57,236,0, - 237,132,118,131,130,122,0,41,59,47, - 40,5,57,0,32,110,109,78,2,9, - 10,5,4,0,136,92,53,5,40,0, - 4,10,9,2,13,113,41,112,0,2, - 4,118,115,116,117,128,13,67,0,110, - 109,43,4,87,0,118,67,13,115,116, - 117,204,0,57,40,5,32,0,5,40, - 53,92,103,0,4,10,9,13,3,1, - 0,48,4,2,9,10,5,189,0,5, - 53,92,133,51,4,0,31,5,4,43, - 119,0,5,57,135,0,47,221,31,5, - 0 - }; - }; - public final static char nasr[] = Nasr.nasr; - public final int nasr(int index) { return nasr[index]; } + public final int baseAction(int index) { + return baseAction[index]; + } - public interface TerminalIndex { - public final static char terminalIndex[] = {0, - 118,132,131,119,2,31,51,129,130,13, - 84,10,9,120,53,57,73,79,80,91, - 92,107,105,48,49,65,110,112,133,134, - 135,59,111,50,94,109,127,52,69,71, - 75,78,81,88,103,117,11,12,7,8, - 72,99,102,114,115,116,14,60,66,89, - 93,95,104,128,125,58,98,68,96,106, - 19,1,44,100,126,82,108,20,123,136, - 137,63,83,30,101,33,124,17,18,113, - 54,55,61,62,64,70,74,76,77,90, - 97,21,22,32,6,23,24,25,26,27, - 122,4,15,16,28,29,34,35,36,37, - 38,39,40,41,42,43,45,46,5,56, - 85,86,87,3,138,67,121 - }; - }; - public final static char terminalIndex[] = TerminalIndex.terminalIndex; - public final int terminalIndex(int index) { return terminalIndex[index]; } + public final static char lhs[] = baseAction; - public interface NonterminalIndex { - public final static char nonterminalIndex[] = {0, - 144,150,151,0,0,149,0,0,253,259, - 148,0,158,0,145,147,0,157,163,0, - 0,164,173,174,175,176,271,0,0,0, - 203,140,0,177,166,178,179,180,181,280, - 143,182,272,156,183,0,146,142,184,210, - 200,0,0,0,153,152,167,185,195,0, - 0,0,0,0,0,0,209,0,0,186, - 0,227,0,187,0,188,224,228,189,160, - 190,139,191,0,192,0,170,198,0,0, - 0,0,0,0,229,194,0,0,0,0, - 0,0,201,0,0,141,161,231,232,233, - 0,241,0,172,212,213,214,216,225,235, - 243,211,230,0,215,0,0,279,204,205, - 206,207,244,0,197,202,208,219,221,0, - 222,0,0,234,0,0,0,248,0,250, - 0,264,0,267,0,268,278,0,162,193, - 218,0,220,0,237,240,0,262,0,263, - 0,276,281,0,154,155,159,0,0,169, - 171,0,0,0,0,0,217,0,226,0, - 238,239,0,0,245,252,0,256,257,258, - 261,0,0,265,0,273,0,275,0,0, - 282,284,285,0,0,165,168,0,196,0, - 199,0,0,223,236,242,0,0,246,247, - 249,251,0,254,255,260,266,269,270,0, - 0,274,0,0,277,0,283,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 final int lhs(int index) { + return lhs[index]; + }; - public interface ScopePrefix { - public final static char scopePrefix[] = { - 314,476,778,797,465,494,729,745,756,767, - 548,10,18,420,434,451,512,184,445,568, - 606,322,786,672,28,149,162,193,213,222, - 227,232,285,350,507,518,149,640,122,299, - 426,440,700,169,299,558,149,805,169,372, - 401,24,40,58,90,90,114,118,130,141, - 156,203,218,246,156,537,541,624,665,694, - 721,725,815,819,823,237,134,237,586,602, - 615,633,652,713,1,256,256,384,472,615, - 736,752,763,774,362,683,70,82,111,198, - 198,311,377,64,198,398,417,64,64,198, - 545,662,669,311,198,838,46,52,64,105, - 250,523,590,630,52,33,645,198,265,457, - 523,265,265,484,577,332,484,75,75,96, - 96,244,96,96,96,96,628,827,834,75, - 75,100,393,827,834,207,596,292,244,393, - 244,406 - }; - }; - public final static char scopePrefix[] = ScopePrefix.scopePrefix; - public final int scopePrefix(int index) { return scopePrefix[index]; } + public interface TermCheck { + public final static char termCheck[] = { 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 0, 68, 69, 70, + 71, 72, 73, 74, 75, 0, 0, 78, 79, 3, 14, 82, 83, 84, 85, 86, 87, 88, 89, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 0, 1, 65, 0, 134, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 0, 68, 69, 70, 73, 0, 1, 74, 75, 76, 77, 0, 12, 80, 81, 82, 83, 12, 85, 0, 87, 0, 0, 90, 91, 92, + 93, 94, 95, 0, 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 73, 68, 69, 70, + 85, 78, 86, 74, 75, 76, 77, 113, 114, 80, 81, 82, 83, 0, 85, 0, 87, 0, 105, 90, 91, 92, 93, 94, 95, 112, + 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 0, 68, 69, 70, 0, 88, 89, 74, + 75, 76, 77, 0, 0, 80, 81, 82, 83, 5, 85, 0, 87, 106, 107, 90, 91, 92, 93, 94, 95, 110, 97, 98, 99, 100, + 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 0, 68, 69, 70, 0, 88, 89, 74, 75, 76, 77, 0, 0, + 80, 81, 82, 83, 6, 85, 7, 8, 9, 0, 90, 91, 92, 93, 94, 95, 0, 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 0, 68, 69, 70, 106, 107, 0, 74, 75, 76, 77, 5, 0, 80, 81, 82, 83, 0, 85, 7, + 8, 9, 5, 90, 91, 92, 93, 94, 95, 109, 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 0, 68, 69, 70, 106, 107, 0, 74, 75, 76, 77, 5, 0, 80, 81, 82, 83, 0, 85, 7, 8, 9, 5, 90, 91, 92, + 93, 94, 95, 0, 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 73, 68, 69, 70, + 106, 107, 0, 74, 75, 76, 77, 5, 0, 80, 81, 82, 83, 0, 85, 7, 8, 9, 5, 90, 91, 92, 93, 94, 95, 0, 97, 98, + 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 73, 68, 69, 70, 0, 78, 0, 74, 75, 76, + 77, 0, 0, 80, 81, 82, 83, 6, 85, 7, 8, 9, 0, 90, 91, 92, 93, 94, 95, 0, 97, 98, 99, 100, 101, 0, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 0, 68, 69, 70, 84, 78, 0, 74, 75, 76, 77, 5, 0, 80, 81, 82, 83, + 0, 85, 7, 8, 9, 5, 90, 91, 92, 93, 94, 95, 0, 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 73, 68, 69, 70, 0, 0, 108, 74, 75, 76, 77, 6, 0, 80, 81, 82, 83, 13, 85, 7, 8, 9, 0, 90, + 91, 92, 93, 94, 95, 0, 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 73, 68, + 69, 70, 84, 0, 0, 74, 75, 76, 77, 5, 0, 80, 81, 82, 83, 0, 85, 7, 8, 9, 5, 90, 91, 92, 93, 94, 95, 0, + 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 0, 68, 69, 70, 0, 5, 0, 74, 75, + 76, 77, 84, 0, 80, 81, 82, 83, 13, 85, 7, 8, 9, 0, 90, 91, 92, 93, 94, 95, 23, 97, 98, 99, 100, 101, 0, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 0, 68, 69, 70, 0, 0, 0, 74, 75, 76, 77, 5, 0, 80, 81, + 82, 83, 0, 85, 7, 8, 9, 5, 90, 91, 92, 93, 94, 95, 109, 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 0, 68, 69, 70, 0, 5, 0, 74, 75, 76, 77, 108, 110, 80, 81, 82, 83, 0, 85, 0, 14, + 0, 0, 90, 91, 92, 93, 94, 95, 0, 97, 98, 99, 100, 101, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 46, 32, 33, 34, 0, 51, 52, 53, 54, 55, 56, 7, 8, 9, 47, 48, 0, 32, 33, 34, 35, 36, 72, 38, 39, 40, 41, + 42, 43, 44, 45, 75, 47, 48, 49, 50, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 65, 0, 1, 2, + 3, 4, 71, 72, 73, 0, 75, 10, 11, 78, 79, 6, 7, 8, 9, 84, 85, 86, 87, 88, 89, 0, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 136, 0, 0, 0, 134, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 7, 8, 9, 12, 10, 11, 32, 33, 34, 35, 36, 12, 38, 39, + 40, 41, 42, 43, 44, 45, 0, 47, 48, 49, 50, 32, 33, 34, 35, 36, 135, 38, 39, 40, 41, 42, 43, 44, 45, 65, + 0, 1, 2, 3, 4, 71, 72, 73, 0, 75, 10, 0, 78, 79, 84, 7, 8, 9, 84, 85, 86, 87, 88, 89, 0, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 113, 114, 86, 67, 134, 0, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 72, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 0, 66, 0, 68, 69, 70, 6, 5, 0, 74, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 67, 66, 0, + 68, 69, 70, 0, 5, 0, 74, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 1, 2, 3, 4, 65, 66, 67, 68, 69, 70, 0, 1, 2, 3, 4, 76, 77, 86, + 0, 80, 81, 0, 0, 84, 0, 0, 87, 90, 7, 8, 9, 7, 8, 9, 0, 96, 15, 16, 17, 18, 19, 20, 21, 22, 0, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 33, 38, 39, 40, 41, 42, 43, 44, 45, 0, 46, 84, 131, 132, + 133, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 0, 1, 2, 3, 4, 65, 66, 67, 68, 69, 70, 0, 1, 2, 3, 4, 76, 77, 0, 108, 80, 81, 0, 0, + 84, 0, 0, 87, 0, 7, 8, 9, 7, 8, 9, 0, 96, 15, 16, 17, 18, 19, 20, 21, 22, 0, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 23, 46, 84, 131, 132, 133, 0, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, 76, 104, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 65, 66, 67, 68, 69, 70, 0, 1, 2, 3, 4, 76, 77, 0, 0, 80, 81, 32, 33, 34, 35, 36, 87, 38, 39, + 40, 41, 42, 43, 44, 45, 96, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 67, 0, 65, 0, 1, 2, 3, + 4, 71, 72, 7, 8, 9, 12, 13, 12, 79, 0, 1, 2, 3, 4, 135, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 84, 67, 72, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 65, 66, 67, 68, + 69, 70, 0, 1, 2, 3, 4, 76, 77, 0, 0, 80, 81, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 96, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 32, 33, 34, 0, 65, 67, 0, 1, 2, 3, 4, 72, 6, 46, 75, 0, + 10, 11, 79, 0, 1, 2, 3, 4, 135, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 0, 0, 67, 71, 0, 5, 0, 1, 2, 3, 4, 7, 8, 9, 0, 67, 10, 73, 0, 65, 66, 67, 68, 69, 70, 71, 0, 0, 14, 0, + 76, 77, 5, 0, 80, 81, 32, 33, 34, 35, 36, 14, 38, 39, 40, 41, 42, 43, 44, 45, 96, 0, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 71, 0, 72, 73, 0, 0, 5, 0, 78, 79, 78, 7, 8, 9, 0, 1, 2, + 3, 4, 65, 66, 67, 68, 69, 70, 0, 105, 0, 111, 0, 76, 77, 5, 112, 80, 81, 32, 33, 34, 35, 36, 87, 38, 39, + 40, 41, 42, 43, 44, 45, 96, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 72, + 0, 72, 73, 0, 0, 5, 0, 78, 0, 78, 7, 8, 9, 7, 8, 9, 109, 0, 65, 66, 67, 68, 69, 70, 115, 116, 0, 0, 0, + 76, 77, 14, 5, 80, 81, 32, 33, 34, 35, 36, 87, 38, 39, 40, 41, 42, 43, 44, 45, 96, 0, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 79, 71, 0, 72, 0, 73, 0, 0, 78, 88, 89, 7, 8, 9, 0, 1, + 2, 3, 4, 65, 66, 67, 68, 69, 70, 0, 0, 0, 0, 0, 76, 77, 102, 103, 80, 81, 32, 33, 34, 35, 36, 87, 38, + 39, 40, 41, 42, 43, 44, 45, 96, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 0, 0, 1, 71, 0, 0, 78, 7, 8, 9, 105, 7, 8, 9, 84, 0, 84, 112, 0, 65, 66, 67, 68, 69, 70, 0, 0, 0, 0, 14, + 76, 77, 5, 32, 80, 81, 32, 33, 34, 35, 36, 14, 38, 39, 40, 41, 42, 43, 44, 45, 96, 0, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 71, 0, 72, 73, 0, 87, 0, 0, 78, 79, 0, 7, 8, 9, 13, 0, + 88, 89, 110, 65, 66, 67, 68, 69, 70, 0, 105, 0, 0, 14, 76, 77, 5, 112, 80, 81, 32, 33, 34, 35, 36, 14, + 38, 39, 40, 41, 42, 43, 44, 45, 96, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 72, 0, 72, 0, 0, 87, 5, 0, 5, 79, 0, 7, 8, 9, 0, 84, 0, 104, 108, 65, 66, 67, 68, 69, 70, 0, 0, 0, + 12, 0, 76, 77, 5, 0, 80, 81, 32, 33, 34, 35, 36, 14, 38, 39, 40, 41, 42, 43, 44, 45, 96, 0, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 71, 88, 89, 71, 0, 88, 89, 71, 0, 79, 0, 7, 8, + 9, 104, 5, 88, 89, 10, 65, 66, 67, 68, 69, 70, 0, 0, 0, 0, 0, 76, 77, 113, 114, 80, 81, 32, 33, 34, 35, + 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 96, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 84, 71, 88, 89, 0, 65, 66, 67, 68, 69, 70, 0, 0, + 0, 0, 0, 76, 77, 14, 5, 80, 81, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 96, 0, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 79, 0, 0, 1, 0, 84, 5, 6, 7, 8, 9, 72, 0, 12, 13, 14, + 14, 88, 89, 65, 66, 67, 68, 69, 70, 0, 14, 0, 0, 0, 76, 77, 5, 5, 80, 81, 32, 33, 34, 109, 0, 0, 1, 2, + 3, 4, 5, 6, 46, 0, 96, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 72, 73, 0, 35, 65, 37, 78, 79, 79, 0, 1, 2, 3, 4, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 82, 83, 0, 10, 11, + 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 67, 110, 0, 111, 37, + 6, 7, 8, 9, 47, 48, 12, 13, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 0, 1, 2, 3, 4, 5, 6, 0, 0, 74, 10, 11, 0, 78, 0, 71, 67, 82, 83, 0, 1, 2, 3, 4, 5, 6, 14, 0, 14, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 37, 6, 7, + 8, 9, 0, 0, 12, 13, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, + 3, 4, 75, 6, 7, 8, 9, 75, 0, 12, 13, 71, 87, 130, 82, 83, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 130, 35, 78, 37, 0, 1, 2, + 3, 4, 84, 6, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 73, 0, 1, 2, + 3, 4, 5, 6, 0, 74, 67, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 0, 1, 2, 3, 4, 37, 6, 7, 8, 9, 0, 0, 78, 111, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 86, 0, 1, 2, 3, 4, 5, 6, 0, 74, 75, 10, 11, 0, 1, 2, 3, 4, 5, 6, 78, 0, 87, + 10, 11, 12, 13, 6, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, + 37, 6, 7, 8, 9, 47, 48, 12, 13, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 0, 1, 2, 3, 4, 0, 6, 0, 0, 74, 0, 1, 2, 3, 4, 5, 6, 82, 83, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 37, 6, 7, 8, 9, 0, 0, 12, 13, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 23, 0, 1, 2, 3, 4, 5, 6, 78, 74, 75, + 10, 11, 12, 13, 71, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, + 37, 0, 7, 8, 9, 66, 67, 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 0, 1, 2, 3, 4, 32, 33, 34, 0, 74, 0, 1, 2, 3, 4, 5, 6, 82, 83, 0, 10, 11, 12, 13, 0, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 37, 6, 0, 71, 71, 10, 11, 0, 0, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 0, 73, 82, 83, + 74, 0, 1, 2, 3, 4, 5, 6, 82, 83, 14, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 37, 6, 0, 0, 72, 10, 11, 0, 5, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 131, 132, 133, 0, 130, 75, 0, 82, 83, 74, 0, 1, 2, 3, 4, 5, 6, + 82, 83, 13, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, + 1, 2, 3, 4, 37, 6, 7, 8, 9, 73, 0, 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 72, 0, 1, 2, 3, 4, 5, 6, 0, 74, 75, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 0, 67, 0, 0, 0, 37, 0, 5, 5, 0, 1, 2, 3, 4, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 86, 0, 1, 2, 3, 4, 5, 6, 66, 0, 0, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 37, 6, 7, 8, 9, 67, + 73, 72, 111, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 0, 1, 2, 3, + 4, 5, 6, 0, 0, 75, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 0, 67, 0, 0, 0, 37, 0, 1, 2, 3, 4, 7, 8, 9, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 0, 0, 1, 2, 3, 4, 5, 6, 130, 0, 0, 10, 11, 12, 13, 6, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 37, 6, 67, 71, 71, 10, 11, 0, 111, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 5, 6, 0, 74, 74, 10, 11, + 12, 13, 71, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 88, 89, 67, 0, 0, 37, 0, + 1, 2, 3, 4, 0, 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, + 2, 3, 4, 5, 6, 72, 0, 0, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 0, 1, 2, 3, 4, 37, 67, 0, 67, 0, 1, 2, 3, 4, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 5, 6, 0, 0, 74, 10, 11, 12, 13, 6, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 88, 89, 67, 0, 0, 37, 0, 1, 2, 3, 4, 67, 36, 71, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 5, 6, 0, 0, 74, 10, 11, 12, + 13, 6, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 0, 0, 37, 0, 6, 67, + 71, 6, 5, 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, + 4, 5, 6, 102, 103, 74, 10, 11, 12, 13, 71, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 0, 0, 0, 0, 67, 37, 0, 71, 6, 71, 71, 0, 6, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 5, 6, 102, 103, 36, 10, 11, 12, 13, 46, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 67, 0, 37, 0, 5, 71, 71, 0, 5, 0, 0, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 5, 6, 102, 103, 0, + 10, 11, 12, 13, 46, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 67, 0, + 37, 5, 131, 132, 133, 0, 0, 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 88, 89, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 86, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 10, 11, + 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 86, 0, 37, 0, 0, + 0, 0, 0, 0, 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, + 3, 4, 5, 6, 0, 0, 0, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 0, 84, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 0, 0, 0, 86, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 5, 6, 0, 0, 0, 10, 11, 12, 13, 0, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 23, 84, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 1, 2, 3, 4, 0, 6, 7, 8, + 9, 66, 67, 0, 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 1, 2, 3, 4, 86, 6, 7, 8, 9, + 66, 0, 68, 69, 70, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 66, + 0, 68, 69, 70, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 66, 0, + 68, 69, 70, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0, 1, 2, 3, 4, 0, 14, 7, 8, 9, 66, 0, 68, + 69, 70, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 0, 38, + 39, 40, 41, 42, 43, 44, 45, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 14, 7, 8, 9, 66, 75, 68, + 69, 70, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 0, 38, + 39, 40, 41, 42, 43, 44, 45, 0, 0, 1, 0, 0, 5, 0, 0, 73, 0, 10, 65, 12, 13, 79, 14, 0, 14, 14, 73, 66, 0, + 68, 69, 70, 0, 0, 0, 0, 0, 86, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 0, 14, 0, 47, 48, 49, 50, 0, 0, + 0, 0, 0, 0, 57, 0, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 71, 72, 73, 0, 0, 73, 86, + 78, 75, 79, 0, 82, 83, 0, 0, 86, 0, 88, 89, 87, 0, 86, 0, 0, 14, 65, 0, 0, 0, 0, 0, 102, 103, 75, 105, + 106, 107, 108, 109, 110, 14, 0, 113, 114, 115, 0, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, + 0, 129, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 79, 0, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 79, 32, 33, 34, 35, 36, 0, 38, 39, 40, + 41, 42, 43, 44, 45, 0, 0, 0, 0, 65, 84, 0, 0, 0, 0, 104, 72, 0, 0, 14, 0, 0, 0, 79, 65, 14, 0, 0, 0, 0, + 104, 72, 0, 0, 14, 0, 0, 0, 79, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 14, 14, 12, 13, 0, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 0, 0, 12, 13, 0, 0, 0, 65, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 32, 33, 34, 35, 36, + 79, 38, 39, 40, 41, 42, 43, 44, 45, 79, 65, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 72, 73, 12, 13, 79, 0, 78, 0, + 1, 2, 3, 4, 5, 6, 72, 73, 0, 10, 11, 0, 78, 0, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 0, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 12, 13, 0, 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 72, 73, 12, 13, 14, 0, 78, + 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, 42, 43, 44, 45, 0, 0, 0, 2, 0, 14, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, + 15, 16, 17, 18, 19, 20, 21, 22, 0, 14, 72, 73, 0, 0, 0, 0, 78, 32, 33, 34, 35, 36, 0, 38, 39, 40, 41, + 42, 43, 44, 45, 0, 79, 2, 0, 0, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 79, 0, 0, + 104, 0, 0, 65, 0, 0, 32, 33, 34, 35, 36, 73, 38, 39, 40, 41, 42, 43, 44, 45, 0, 1, 2, 3, 4, 5, 6, 86, 0, + 0, 10, 11, 0, 0, 14, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, + 0, 0, 0, 10, 11, 72, 73, 14, 0, 0, 0, 78, 79, 0, 0, 0, 0, 0, 5, 86, 0, 1, 2, 3, 4, 5, 6, 0, 14, 2, 10, + 11, 84, 0, 14, 0, 0, 104, 0, 0, 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 0, 1, 2, 3, 4, 5, 6, 0, 65, 0, 10, + 11, 49, 50, 0, 84, 0, 0, 0, 0, 0, 71, 0, 71, 7, 8, 9, 0, 78, 71, 78, 14, 0, 14, 14, 72, 78, 73, 0, 0, 0, + 14, 72, 79, 0, 0, 0, 0, 0, 79, 0, 0, 102, 103, 102, 103, 0, 0, 0, 0, 102, 103, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 72, 0, 0, 0, 0, 127, 128, 127, 128, 0, 65, 0, 0, 127, 128, 0, 0, 0, 73, 0, 129, 73, 75, 0, 0, 134, + 0, 79, 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, 0, 0, 0, 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 interface ScopeSuffix { - public final static char scopeSuffix[] = { - 145,290,94,94,290,290,94,94,94,94, - 555,16,16,290,44,290,154,190,431,574, - 612,328,209,678,16,154,167,167,167,201, - 201,44,290,355,160,160,154,94,127,304, - 431,241,705,180,307,563,792,810,174,366, - 366,16,44,62,94,94,94,94,94,145, - 160,94,201,44,160,44,44,290,16,94, - 94,94,94,94,16,836,138,241,555,555, - 555,637,656,705,5,260,274,388,460,619, - 740,740,740,740,366,687,73,73,94,201, - 201,94,94,380,382,16,94,62,62,382, - 44,94,16,94,698,94,49,55,67,108, - 253,526,593,108,659,36,648,717,260,460, - 708,268,279,501,580,335,487,80,88,98, - 147,44,529,531,533,535,44,829,829,77, - 85,102,395,831,831,209,598,294,357,388, - 342,408 - }; - }; - public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix; - public final int scopeSuffix(int index) { return scopeSuffix[index]; } + public final static char termCheck[] = TermCheck.termCheck; - public interface ScopeLhs { - public final static char scopeLhs[] = { - 51,117,18,18,91,117,18,18,18,18, - 99,95,95,105,52,91,116,89,63,99, - 98,51,18,20,95,204,3,7,8,196, - 196,195,115,51,116,116,125,58,28,112, - 64,52,177,169,112,99,18,18,169,111, - 71,95,66,88,128,19,19,205,171,102, - 204,199,196,195,125,222,61,59,181,19, - 18,18,18,18,18,12,156,195,99,98, - 98,84,46,177,54,121,121,87,91,98, - 18,18,18,18,111,20,148,141,17,200, - 196,224,109,123,73,95,72,189,88,125, - 100,182,181,215,177,17,66,18,88,97, - 195,125,135,97,22,40,58,177,121,91, - 177,121,121,117,99,51,117,148,141,157, - 237,195,137,132,131,130,94,175,56,148, - 141,245,87,175,56,199,135,115,51,87, - 51,71 - }; - }; - public final static char scopeLhs[] = ScopeLhs.scopeLhs; - public final int scopeLhs(int index) { return scopeLhs[index]; } + public final int termCheck(int index) { + return termCheck[index]; + } - public interface ScopeLa { - public final static char scopeLa[] = { - 130,87,79,79,87,87,79,79,79,79, - 79,111,111,87,65,87,1,78,1,79, - 136,75,5,79,111,1,78,78,78,1, - 1,65,87,75,1,1,1,79,79,87, - 1,1,6,78,73,65,1,1,78,79, - 79,111,65,1,79,79,79,79,79,130, - 1,79,1,65,1,65,65,87,111,79, - 79,79,79,79,111,1,79,1,79,79, - 79,84,84,6,73,1,1,12,75,79, - 78,78,78,78,79,5,8,8,79,1, - 1,79,79,5,1,111,79,1,1,1, - 65,79,111,79,10,79,1,79,8,84, - 1,67,86,84,79,3,78,1,1,75, - 67,1,1,75,90,85,1,1,1,37, - 1,65,1,68,66,66,65,6,6,1, - 1,104,13,6,6,5,1,75,1,12, - 1,5 - }; - }; - public final static char scopeLa[] = ScopeLa.scopeLa; - public final int scopeLa(int index) { return scopeLa[index]; } + public interface TermAction { + public final static char termAction[] = { 0, 9900, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, + 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, + 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, + 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, + 8841, 8841, 8841, 8841, 8841, 9900, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 1, 9900, 8841, 8841, + 756, 9910, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 1, 8771, 8759, 8763, 8767, 860, 8756, 8790, + 8784, 8787, 818, 5597, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, + 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 8841, 9900, 3598, + 9909, 9900, 8841, 9900, 9619, 8737, 8737, 8737, 8737, 8737, 8730, 8737, 8737, 8737, 8737, 8737, 8737, + 9758, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9623, 1, 115, 1, 1, 1, 748, 9900, 3262, 1, 9911, + 2489, 721, 420, 7352, 757, 10108, 1, 1, 3762, 2655, 111, 9907, 1, 35, 3863, 3260, 3389, 3054, 3816, + 5147, 9900, 3861, 1108, 3837, 1789, 3826, 10, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, + 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, + 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, + 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, 9761, + 9761, 9761, 9761, 9761, 9761, 9761, 3862, 9761, 9761, 9761, 1983, 8149, 1774, 9761, 9761, 9761, 9761, + 7321, 5153, 9761, 9761, 9761, 9761, 129, 9761, 121, 9761, 137, 8080, 9761, 9761, 9761, 9761, 9761, 9761, + 8103, 9761, 9761, 9761, 9761, 9761, 8, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, + 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, + 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, + 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, 9782, + 9782, 9782, 9782, 9782, 9900, 9782, 9782, 9782, 9900, 6652, 6683, 9782, 9782, 9782, 9782, 9900, 9900, + 9782, 9782, 9782, 9782, 782, 9782, 141, 9782, 5983, 5954, 9782, 9782, 9782, 9782, 9782, 9782, 3331, + 9782, 9782, 9782, 9782, 9782, 9900, 9619, 8737, 8737, 8737, 8737, 8737, 8730, 8737, 8737, 8737, 8737, + 8737, 8737, 9626, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9623, 1, 149, 1, 1, 1, 9900, 6652, 6683, + 1, 9911, 2489, 721, 39, 333, 757, 10108, 1, 1, 9938, 2655, 1358, 1198, 1227, 135, 3863, 3260, 3389, + 3054, 3816, 5147, 9900, 3861, 1108, 3837, 1789, 3826, 9900, 9619, 8737, 8737, 8737, 8737, 8737, 8730, + 8737, 8737, 8737, 8737, 8737, 8737, 9626, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9623, 1, 130, 1, + 1, 1, 1166, 1076, 9900, 1, 9911, 2489, 721, 4215, 665, 757, 10108, 1, 1, 9900, 2655, 1358, 1198, 1227, + 1741, 3863, 3260, 3389, 3054, 3816, 5147, 3677, 3861, 1108, 3837, 1789, 3826, 9900, 9619, 8737, 8737, + 8737, 8737, 8737, 8730, 8737, 8737, 8737, 8737, 8737, 8737, 9626, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 9623, 1, 150, 1, 1, 1, 5983, 5954, 9900, 1, 9911, 2489, 721, 4252, 348, 757, 10108, 1, 1, 9900, + 2655, 1358, 1198, 1227, 1939, 3863, 3260, 3389, 3054, 3816, 5147, 343, 3861, 1108, 3837, 1789, 3826, + 9900, 9619, 8737, 8737, 8737, 8737, 8737, 8730, 8737, 8737, 8737, 8737, 8737, 8737, 9626, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9623, 1, 5871, 1, 1, 1, 1166, 1076, 9900, 1, 9911, 2489, 721, 2193, 662, + 757, 10108, 1, 1, 9900, 2655, 9329, 9335, 9332, 5617, 3863, 3260, 3389, 3054, 3816, 5147, 9900, 3861, + 1108, 3837, 1789, 3826, 9900, 9619, 8737, 8737, 8737, 8737, 8737, 8730, 8737, 8737, 8737, 8737, 8737, + 8737, 9626, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9623, 1, 3862, 1, 1, 1, 9900, 4154, 9900, 1, + 9911, 2489, 721, 9900, 653, 757, 10108, 1, 1, 1120, 2655, 1358, 1198, 1227, 484, 3863, 3260, 3389, 3054, + 3816, 5147, 9900, 3861, 1108, 3837, 1789, 3826, 9900, 9619, 8737, 8737, 8737, 8737, 8737, 8730, 8737, + 8737, 8737, 8737, 8737, 8737, 9626, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9623, 1, 133, 1, 1, 1, + 4098, 7934, 9900, 1, 9911, 2489, 721, 1220, 654, 757, 10108, 1, 1, 632, 2655, 1358, 1198, 1227, 3017, + 3863, 3260, 3389, 3054, 3816, 5147, 190, 3861, 1108, 3837, 1789, 3826, 9900, 9619, 8737, 8737, 8737, + 8737, 8737, 8730, 8737, 8737, 8737, 8737, 8737, 8737, 9626, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 9623, 1, 9317, 1, 1, 1, 131, 9900, 4608, 1, 9911, 2489, 721, 2213, 431, 757, 10108, 1, 1, 5050, 2655, + 1358, 1198, 1227, 1, 3863, 3260, 3389, 3054, 3816, 5147, 629, 3861, 1108, 3837, 1789, 3826, 9900, 9619, + 8737, 8737, 8737, 8737, 8737, 8730, 8737, 8737, 8737, 8737, 8737, 8737, 9626, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 9623, 1, 1604, 1, 1, 1, 2, 9900, 619, 1, 9911, 2489, 721, 2915, 366, 757, 10108, 1, 1, + 91, 2655, 9445, 9451, 9448, 9433, 3863, 3260, 3389, 3054, 3816, 5147, 9900, 3861, 1108, 3837, 1789, + 3826, 9900, 9619, 8737, 8737, 8737, 8737, 8737, 8730, 8737, 8737, 8737, 8737, 8737, 8737, 9626, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9623, 1, 606, 1, 1, 1, 151, 1510, 337, 1, 9911, 2489, 721, 10337, + 366, 757, 10108, 1, 1, 5119, 2655, 1358, 1198, 1227, 155, 3863, 3260, 3389, 3054, 3816, 5147, 10236, + 3861, 1108, 3837, 1789, 3826, 9900, 9619, 8737, 8737, 8737, 8737, 8737, 8730, 8737, 8737, 8737, 8737, + 8737, 8737, 9626, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9623, 1, 9900, 1, 1, 1, 157, 153, 1, 1, + 9911, 2489, 721, 7949, 655, 757, 10108, 1, 1, 271, 2655, 1358, 1198, 1227, 9635, 3863, 3260, 3389, 3054, + 3816, 5147, 4531, 3861, 1108, 3837, 1789, 3826, 9900, 9619, 8737, 8737, 8737, 8737, 8737, 8730, 8737, + 8737, 8737, 8737, 8737, 8737, 9626, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9623, 1, 353, 1, 1, 1, + 9900, 9263, 9900, 1, 9911, 2489, 721, 4703, 4500, 757, 10108, 1, 1, 118, 2655, 9900, 9912, 9900, 9900, + 3863, 3260, 3389, 3054, 3816, 5147, 218, 3861, 1108, 3837, 1789, 3826, 9900, 9311, 9311, 9311, 9311, + 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9919, 10272, 10273, 1439, 258, 9921, 9922, + 9920, 9916, 9917, 9918, 8856, 8850, 8853, 7189, 4159, 9900, 9311, 9311, 9311, 9311, 9311, 1613, 9311, + 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9911, 9311, 9311, 9311, 9311, 8865, 8862, 8859, 8883, 8871, + 9900, 8889, 8868, 8880, 8847, 8874, 8877, 8886, 8844, 9311, 38, 9248, 9239, 9242, 9245, 9311, 9311, + 9311, 431, 9311, 9236, 5597, 9311, 9311, 424, 1358, 1198, 1227, 9311, 9311, 9311, 9311, 9311, 9311, 366, + 8750, 8740, 9054, 8747, 860, 849, 1358, 1198, 1227, 818, 5597, 9311, 9311, 9311, 9311, 9311, 9311, 9311, + 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, 9311, + 9311, 9311, 9311, 9311, 9897, 9900, 9900, 9900, 9311, 9900, 9436, 9436, 9436, 9436, 9436, 9436, 9436, + 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9900, 9900, 117, 9900, 259, 9900, 9914, 10602, 10601, 9915, + 9900, 8904, 8898, 8901, 7352, 818, 5597, 9436, 9436, 9436, 9436, 9436, 5769, 9436, 9436, 9436, 9436, + 9436, 9436, 9436, 9436, 328, 9436, 9436, 9436, 9436, 8913, 8910, 8907, 8931, 8919, 8729, 8937, 8916, + 8928, 8895, 8922, 8925, 8934, 8892, 9436, 37, 9314, 9314, 9314, 9314, 9436, 9436, 9436, 661, 9436, 9314, + 355, 9436, 9436, 3436, 1358, 1198, 1227, 9436, 9436, 9436, 9436, 9436, 9436, 662, 8750, 8740, 9054, + 8747, 860, 849, 1358, 1198, 1227, 818, 5597, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, + 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, 9436, + 9436, 7321, 5153, 3832, 2335, 9436, 39, 8750, 8740, 8743, 8747, 6776, 849, 1358, 1198, 1227, 7911, 5597, + 7819, 7842, 1613, 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1193, 10566, 10567, 10206, + 10207, 10198, 10573, 10574, 10575, 10272, 10273, 1439, 10190, 10194, 8155, 10188, 10195, 10191, 10167, + 10193, 10192, 10189, 10168, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, + 2053, 2205, 2100, 7711, 2147, 2050, 7282, 9900, 10334, 9900, 4893, 10335, 10336, 2393, 3705, 9900, 2006, + 39, 8750, 8740, 9054, 8747, 6776, 849, 1358, 1198, 1227, 7911, 5597, 7819, 7842, 9900, 10199, 10197, + 10205, 10201, 10202, 10200, 10203, 10204, 1193, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, + 10272, 10273, 1439, 10190, 10194, 8155, 10188, 10195, 10191, 10167, 10193, 10192, 10189, 10168, 9919, + 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, + 7282, 1725, 10334, 346, 4893, 10335, 10336, 9900, 1130, 227, 2006, 9900, 9357, 9357, 9357, 9357, 263, + 9353, 8737, 8737, 8737, 263, 263, 263, 263, 9361, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9900, 8771, 8759, 8763, 8767, 860, 8756, 8790, 8784, 8787, 818, + 5597, 9233, 9233, 9900, 9066, 9057, 9060, 9063, 263, 1, 9350, 1, 1, 1, 9900, 9914, 10602, 10601, 9915, + 4210, 2202, 1445, 9900, 757, 10348, 257, 631, 263, 453, 626, 452, 9786, 8805, 8799, 8802, 1358, 1198, + 1227, 9900, 10436, 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 134, 10566, 10567, 10206, + 10207, 10198, 10573, 10574, 10575, 8814, 8811, 8808, 8832, 8820, 10525, 8838, 8817, 8829, 8796, 8823, + 8826, 8835, 8793, 9900, 2826, 3785, 10371, 10372, 10373, 9900, 9357, 9357, 9357, 9357, 263, 9353, 8737, + 8737, 8737, 263, 263, 263, 263, 9533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 9900, 8771, 8759, 8763, 8767, 860, 8756, 8790, 8784, 8787, 818, 5597, 9299, + 9299, 9900, 15475, 15384, 15409, 15412, 263, 1, 9350, 1, 1, 1, 48, 9066, 9057, 9060, 9063, 4210, 2202, + 393, 4608, 757, 10348, 570, 9900, 263, 657, 9900, 451, 9900, 9674, 9668, 9671, 9817, 9823, 9820, 9900, + 10436, 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 337, 10566, 10567, 10206, 10207, 10198, + 10573, 10574, 10575, 10272, 10273, 1439, 10190, 10194, 9900, 10188, 10195, 10191, 10167, 10193, 10192, + 10189, 10168, 10236, 2355, 3785, 10371, 10372, 10373, 9900, 8737, 8737, 8737, 8737, 263, 8737, 8730, + 8737, 8737, 263, 263, 263, 263, 8781, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15410, + 1, 1, 1, 1, 15539, 1, 15217, 1, 1, 1, 9900, 836, 10292, 9900, 29, 423, 423, 423, 423, 9641, 423, 423, + 423, 423, 423, 423, 9641, 9641, 9641, 263, 1, 8734, 1, 1, 1, 433, 9914, 10602, 10601, 9915, 3256, 721, + 9900, 9900, 757, 10145, 423, 423, 423, 423, 423, 253, 423, 423, 423, 423, 423, 423, 423, 423, 10436, + 9900, 9900, 9835, 9835, 9835, 9835, 9835, 9835, 9835, 9835, 9835, 9835, 9835, 9835, 9835, 494, 7510, + 9900, 9641, 37, 9314, 9314, 9314, 9314, 9257, 9641, 1358, 1198, 1227, 4954, 4910, 366, 9641, 9900, + 15475, 15384, 15409, 15412, 253, 9900, 8737, 8737, 8737, 8737, 263, 8737, 8730, 8737, 8737, 263, 263, + 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15410, 1, 1, 1, 1, 15539, 1, + 15217, 1, 1, 1, 9835, 9936, 9305, 9900, 638, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, 649, + 9867, 9867, 9862, 263, 1, 8734, 1, 1, 1, 327, 9914, 10602, 10601, 9915, 3256, 721, 9900, 711, 757, + 10145, 649, 649, 649, 649, 649, 9900, 649, 649, 649, 649, 649, 649, 649, 649, 10436, 344, 8771, 8759, + 8763, 8767, 860, 8756, 8790, 8784, 8787, 818, 5597, 9233, 9233, 10272, 10273, 1439, 423, 9867, 7577, + 9900, 8750, 8740, 9054, 8747, 649, 849, 2826, 9326, 551, 9442, 5597, 9867, 37, 9314, 9314, 9314, 9314, + 254, 9900, 8737, 8737, 8737, 8737, 263, 8737, 8730, 8737, 8737, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15410, 1, 1, 1, 1, 15539, 1, 15217, 1, 1, 1, 9900, 9900, + 2700, 9051, 260, 8444, 9900, 9914, 10602, 10601, 9915, 8964, 8958, 8961, 9900, 9936, 2237, 1228, 114, + 263, 1, 8734, 1, 1, 1, 1786, 490, 1, 9904, 9900, 3256, 721, 4473, 9900, 757, 10145, 8973, 8970, 8967, + 8991, 8979, 676, 8997, 8976, 8988, 8955, 8982, 8985, 8994, 8952, 10436, 9900, 8737, 8737, 8737, 8737, + 263, 8737, 8730, 8737, 8737, 263, 263, 263, 263, 9464, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 15410, 1, 1, 1, 1, 15539, 1, 15217, 1, 1, 1, 9251, 9900, 1613, 676, 261, 136, 8507, 139, + 676, 676, 10448, 9015, 9009, 9012, 36, 9814, 9805, 9808, 9811, 263, 1, 8734, 1, 1, 1, 493, 8080, 1, + 9903, 9900, 3256, 721, 4473, 8103, 757, 10145, 9024, 9021, 9018, 9042, 9030, 254, 9048, 9027, 9039, + 9006, 9033, 9036, 9045, 9003, 10436, 9900, 8737, 8737, 8737, 8737, 263, 8737, 8730, 8737, 8737, 263, + 263, 263, 263, 9464, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15410, 1, 1, 1, 1, + 15539, 1, 15217, 1, 1, 1, 9308, 9900, 1613, 576, 650, 9900, 8505, 656, 576, 9900, 3873, 9081, 9075, + 9078, 9826, 9832, 9829, 3677, 9900, 263, 1, 8734, 1, 1, 1, 788, 781, 9900, 382, 485, 3256, 721, 9906, + 3141, 757, 10145, 9090, 9087, 9084, 9108, 9096, 254, 9114, 9093, 9105, 9072, 9099, 9102, 9111, 9069, + 10436, 9900, 8737, 8737, 8737, 8737, 263, 8737, 8730, 8737, 8737, 263, 263, 263, 263, 9464, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15410, 1, 1, 1, 1, 15539, 1, 15217, 1, 1, 1, 9905, 6454, + 113, 1613, 691, 4147, 9900, 9900, 6508, 6652, 6683, 9479, 9473, 9476, 326, 1378, 1378, 1378, 1378, 263, + 1, 8734, 1, 1, 1, 9900, 9900, 9900, 9900, 29, 3256, 721, 6427, 6400, 757, 10145, 9488, 9485, 9482, 9506, + 9494, 254, 9512, 9491, 9503, 9470, 9497, 9500, 9509, 9467, 10436, 9900, 8737, 8737, 8737, 8737, 263, + 8737, 8730, 8737, 8737, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 15410, 1, 1, 1, 1, 15539, 1, 15217, 1, 1, 1, 454, 608, 10509, 1495, 571, 138, 3876, 1358, 1198, + 1227, 8080, 9683, 9677, 9680, 3498, 1, 460, 8103, 112, 263, 1, 8734, 1, 1, 1, 640, 476, 1, 9900, 9439, + 3256, 721, 4473, 10510, 757, 10145, 10272, 10273, 1439, 10190, 10194, 376, 10188, 10195, 10191, 10167, + 10193, 10192, 10189, 10168, 10436, 9900, 8737, 8737, 8737, 8737, 263, 8737, 8730, 8737, 8737, 263, 263, + 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15410, 1, 1, 1, 1, 15539, 1, + 15217, 1, 1, 1, 9254, 132, 1613, 376, 572, 9907, 9900, 154, 376, 376, 1, 9692, 9686, 9689, 5050, 9900, + 6652, 6683, 3331, 263, 1, 8734, 1, 1, 1, 383, 8080, 1, 464, 9908, 3256, 721, 4473, 8103, 757, 10145, + 10272, 10273, 1439, 10190, 10194, 9629, 10188, 10195, 10191, 10167, 10193, 10192, 10189, 10168, 10436, + 9900, 8737, 8737, 8737, 8737, 263, 8737, 8730, 8737, 8737, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15410, 1, 1, 1, 1, 15539, 1, 15217, 1, 1, 1, 1613, 9900, 1613, + 9900, 573, 9907, 8514, 1, 2099, 9632, 639, 9701, 9695, 9698, 125, 1591, 116, 10294, 4703, 263, 1, 8734, + 1, 1, 1, 124, 29, 9900, 7352, 9900, 3256, 721, 1137, 9900, 757, 10145, 10272, 10273, 1439, 10190, 10194, + 9906, 10188, 10195, 10191, 10167, 10193, 10192, 10189, 10168, 10436, 9900, 8737, 8737, 8737, 8737, 263, + 8737, 8730, 8737, 8737, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 15410, 1, 1, 1, 1, 15539, 1, 15217, 1, 1, 1, 9257, 6652, 6683, 2343, 574, 6652, 6683, 5329, 9900, + 9905, 9900, 9710, 9704, 9707, 4360, 2201, 6652, 6683, 2237, 263, 1, 8734, 1, 1, 1, 123, 9900, 9900, + 9900, 9900, 3256, 721, 7321, 5153, 757, 10145, 10272, 10273, 1439, 10190, 10194, 9900, 10188, 10195, + 10191, 10167, 10193, 10192, 10189, 10168, 10436, 9900, 8737, 8737, 8737, 8737, 263, 8737, 8730, 8737, + 8737, 263, 263, 263, 263, 263, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15410, 1, 1, + 1, 1, 15539, 1, 15217, 1, 1, 1, 9900, 8771, 8759, 8763, 8767, 860, 8756, 8790, 8784, 8787, 818, 5597, + 9299, 9299, 5219, 6751, 6652, 6683, 9900, 263, 1, 8734, 1, 1, 1, 9900, 122, 156, 9900, 9900, 3256, 721, + 9906, 2251, 757, 10145, 380, 8750, 8740, 9054, 8747, 6481, 849, 1358, 1198, 1227, 818, 5597, 366, 366, + 10436, 9900, 8737, 8737, 8737, 8737, 263, 8737, 8730, 8737, 8737, 263, 263, 263, 263, 263, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15410, 1, 1, 1, 1, 15539, 1, 15217, 1, 1, 1, 9905, 39, + 9900, 3545, 371, 1722, 4473, 9938, 1358, 1198, 1227, 1613, 441, 366, 366, 380, 9906, 6652, 6683, 263, 1, + 8734, 1, 1, 1, 9900, 9527, 9900, 9900, 9900, 3256, 721, 2351, 4350, 757, 10145, 9776, 9773, 9770, 4531, + 158, 1, 8750, 8740, 9054, 8747, 6776, 849, 3465, 9900, 10436, 7911, 5597, 7376, 7842, 9904, 10199, + 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, + 10575, 1613, 380, 9900, 1660, 9530, 6613, 380, 380, 9905, 9900, 9424, 9415, 9418, 9421, 9919, 7796, + 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, + 323, 9000, 9000, 9000, 9000, 120, 318, 1358, 1198, 1227, 1, 8771, 8759, 8763, 8767, 2658, 849, 39, 39, + 9900, 7911, 5597, 7819, 7842, 47, 9400, 9406, 9382, 9394, 9391, 9397, 9388, 9385, 9364, 9412, 9409, + 9379, 9376, 9403, 9373, 9370, 9367, 39, 9936, 4500, 583, 9903, 6613, 9938, 1358, 1198, 1227, 7189, 4159, + 366, 366, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, + 7711, 2147, 2050, 7282, 1, 8771, 8759, 8763, 8767, 8753, 8756, 9900, 9900, 2006, 8778, 8775, 8, 552, 1, + 7555, 1474, 39, 39, 1, 8771, 8759, 8763, 8767, 9605, 8756, 9894, 9900, 9260, 9566, 8775, 9554, 9557, + 9912, 9400, 9406, 9382, 9394, 9391, 9397, 9388, 9385, 9364, 9412, 9409, 9379, 9376, 9403, 9373, 9370, + 9367, 480, 9302, 9302, 9302, 9302, 9536, 9302, 9302, 9302, 9302, 9900, 9900, 9302, 9302, 9578, 9551, + 9548, 9563, 9560, 9572, 9569, 9575, 9587, 9584, 9581, 9545, 9593, 9602, 9596, 9542, 9599, 9590, 9539, + 481, 9656, 9656, 9656, 9656, 9911, 9653, 9644, 9650, 9647, 9911, 397, 9659, 9659, 7579, 9894, 1, 9608, + 9608, 39, 8750, 8740, 9054, 8747, 6776, 849, 9900, 37, 9900, 7911, 5597, 7399, 7842, 9904, 10199, 10197, + 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, + 9900, 9900, 4113, 3599, 3879, 6613, 9900, 8750, 8740, 9054, 8747, 5291, 9938, 405, 9919, 7796, 7773, + 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 4445, + 39, 8750, 8740, 9054, 8747, 6776, 849, 9900, 2006, 9936, 7911, 5597, 7819, 7842, 9873, 10199, 10197, + 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, + 659, 9278, 9278, 9278, 9278, 6613, 664, 1358, 1198, 1227, 9900, 9900, 3881, 9903, 9919, 7796, 7773, + 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 1846, 1, + 8771, 8759, 8763, 8767, 860, 8756, 119, 2006, 9326, 818, 5597, 174, 8750, 8740, 9054, 8747, 6776, 849, + 10391, 9900, 9907, 7911, 5597, 7819, 7842, 2493, 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, + 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 92, 9755, 9755, 9755, 9755, 6613, 9755, + 9755, 9755, 9755, 7189, 4159, 9755, 9755, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, + 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 9900, 8750, 8740, 9054, 8747, 9900, 9938, 9900, + 9900, 2006, 39, 8750, 8740, 9054, 8747, 6776, 849, 39, 39, 9900, 7911, 5597, 7819, 7842, 9323, 10199, + 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, + 10575, 95, 9856, 9856, 9856, 9856, 6613, 9853, 9844, 9850, 9847, 1, 9900, 9859, 9859, 9919, 7796, 7773, + 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 9458, 1, + 8750, 8740, 9054, 8747, 6776, 849, 10377, 2006, 9326, 7911, 5597, 7819, 7842, 1495, 10199, 10197, 10205, + 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 333, + 9914, 10602, 10601, 9915, 6613, 371, 1358, 1198, 1227, 9461, 3468, 9900, 9900, 9919, 7796, 7773, 7888, + 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 9900, 9914, + 10602, 10601, 9915, 10272, 10273, 1439, 320, 2006, 614, 8750, 8740, 9054, 8747, 6776, 849, 39, 39, 475, + 7911, 5597, 7819, 7842, 410, 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, + 10206, 10207, 10198, 10573, 10574, 10575, 9900, 8750, 8740, 9054, 8747, 6613, 849, 9900, 1786, 3264, + 818, 5597, 100, 9900, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, + 2205, 2100, 7711, 2147, 2050, 7282, 9900, 9066, 9057, 9060, 9063, 1, 10219, 8057, 921, 2006, 1, 8771, + 8759, 8763, 8767, 2658, 849, 39, 39, 9912, 7911, 5597, 7819, 7842, 9900, 9400, 9406, 9382, 9394, 9391, + 9397, 9388, 9385, 9364, 9412, 9409, 9379, 9376, 9403, 9373, 9370, 9367, 9900, 8750, 8740, 9054, 8747, + 6613, 849, 9900, 9900, 9779, 818, 5597, 326, 4651, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, + 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 10371, 10372, 10373, 99, 4113, 9911, 152, + 8057, 921, 2006, 39, 8750, 8740, 9054, 8747, 6776, 849, 39, 39, 5119, 7911, 5597, 7819, 7842, 9323, + 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, + 10574, 10575, 430, 8949, 8949, 8949, 8949, 6613, 318, 8940, 8946, 8943, 13490, 9900, 9900, 403, 9919, + 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, + 7282, 9841, 39, 8750, 8740, 9054, 8747, 6776, 849, 9900, 2006, 9326, 7911, 5597, 7819, 7842, 9904, + 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, + 10574, 10575, 9900, 318, 103, 9900, 462, 6613, 100, 9838, 3778, 43, 9430, 9430, 9430, 9430, 9919, 7796, + 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, + 1896, 39, 8750, 8740, 9054, 8747, 6776, 849, 2685, 9900, 582, 7911, 5597, 7819, 7842, 9323, 10199, + 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, + 10575, 660, 9275, 9275, 9275, 9275, 6613, 664, 9266, 9272, 9269, 9427, 2452, 9779, 9903, 9919, 7796, + 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, + 9900, 39, 8750, 8740, 9054, 8747, 6776, 849, 9900, 9900, 9326, 7911, 5597, 7819, 7842, 9904, 10199, + 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, + 10575, 9900, 664, 9900, 73, 431, 6613, 9900, 15285, 15285, 15285, 15285, 1358, 1198, 1227, 9919, 7796, + 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, + 594, 39, 8750, 8740, 9054, 8747, 6776, 849, 4113, 432, 145, 7911, 5597, 7819, 7842, 423, 10199, 10197, + 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, + 9900, 8750, 8740, 9054, 8747, 6613, 849, 9936, 9870, 1495, 9442, 5597, 9900, 9903, 9919, 7796, 7773, + 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 39, + 8750, 8740, 9054, 8747, 6776, 849, 9900, 4157, 2006, 7911, 5597, 7819, 7842, 1495, 10199, 10197, 10205, + 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 6652, + 6683, 2718, 9900, 1, 6613, 45, 9728, 9728, 9728, 9728, 9900, 9900, 9900, 9919, 7796, 7773, 7888, 7865, + 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 39, 8750, 8740, + 9054, 8747, 2658, 849, 1711, 9900, 144, 7911, 5597, 7819, 7842, 9900, 10199, 10197, 10205, 10201, 10202, + 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 37, 9314, 9314, 9314, + 9314, 6613, 835, 2, 9725, 9900, 9801, 9789, 9793, 9797, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, + 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 39, 8750, 8740, 9054, 8747, 2658, 849, + 9900, 39, 2006, 7911, 5597, 7819, 7842, 9938, 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, + 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 6652, 6683, 2185, 146, 9900, 6613, 9900, + 16686, 16577, 16591, 16639, 9936, 1996, 37, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, + 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 39, 8750, 8740, 9054, 8747, 6776, 849, 9900, 48, + 2006, 7911, 5597, 7819, 7842, 10602, 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, + 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 9900, 48, 1, 148, 48, 6613, 9900, 10601, 9936, + 6454, 9915, 1537, 9900, 9900, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, + 2053, 2205, 2100, 7711, 2147, 2050, 7282, 39, 8750, 8740, 9054, 8747, 6029, 849, 6427, 6400, 2006, 7911, + 5597, 7819, 7842, 10602, 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, + 10206, 10207, 10198, 10573, 10574, 10575, 9900, 9900, 48, 147, 874, 6613, 39, 10601, 9914, 6454, 9915, + 9900, 9938, 9900, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, + 2100, 7711, 2147, 2050, 7282, 39, 8750, 8740, 9054, 8747, 6971, 849, 6427, 6400, 1610, 7911, 5597, 7819, + 7842, 2149, 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, + 10198, 10573, 10574, 10575, 9900, 1, 313, 7644, 9900, 6613, 103, 9891, 9914, 6454, 9900, 9838, 9900, + 9900, 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, + 2147, 2050, 7282, 39, 8750, 8740, 9054, 8747, 8336, 849, 6427, 6400, 142, 7911, 5597, 7819, 7842, 877, + 10199, 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, + 10574, 10575, 9900, 9900, 9900, 877, 9900, 6613, 7230, 10371, 10372, 10373, 9900, 9900, 9900, 9900, + 9919, 7796, 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, + 2050, 7282, 39, 8750, 8740, 9054, 8747, 8363, 849, 9900, 9900, 9900, 7911, 5597, 7819, 7842, 544, 10199, + 10197, 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, + 10575, 6652, 6683, 9900, 9900, 9900, 6613, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9919, 7796, + 7773, 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, + 39, 8750, 8740, 9054, 8747, 6776, 849, 9900, 9900, 9900, 7911, 5597, 7819, 7842, 542, 10199, 10197, + 10205, 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, + 9900, 9900, 9900, 7953, 9900, 6613, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9919, 7796, 7773, + 7888, 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 39, + 8750, 8740, 9054, 8747, 8433, 849, 9900, 9900, 9900, 7911, 5597, 7819, 7842, 9900, 10199, 10197, 10205, + 10201, 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 9900, + 9900, 9900, 8273, 9900, 6613, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9919, 7796, 7773, 7888, + 7865, 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 39, 8750, + 8740, 9054, 8747, 2658, 849, 9900, 9900, 9900, 7911, 5597, 7819, 7842, 456, 10199, 10197, 10205, 10201, + 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 9900, 3894, + 9900, 9900, 9900, 6613, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9919, 7796, 7773, 7888, 7865, + 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 39, 8750, 8740, + 9054, 8747, 2658, 849, 9900, 9900, 9900, 7911, 5597, 7819, 7842, 9900, 10199, 10197, 10205, 10201, + 10202, 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 9900, 9900, + 9900, 3941, 9900, 6613, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9919, 7796, 7773, 7888, 7865, + 9921, 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 39, 8750, 8740, + 9054, 8747, 6776, 849, 9900, 9900, 1, 7911, 5597, 7819, 7842, 9900, 10199, 10197, 10205, 10201, 10202, + 10200, 10203, 10204, 1653, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 9458, 3649, 9900, + 9900, 9900, 6613, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9919, 7796, 7773, 7888, 7865, 9921, + 9922, 9920, 9916, 9917, 9918, 7750, 2053, 2205, 2100, 7711, 2147, 2050, 7282, 9900, 8750, 8740, 8743, + 8747, 9900, 9938, 1358, 1198, 1227, 9461, 3468, 9900, 9900, 9900, 10199, 10197, 10205, 10201, 10202, + 10200, 10203, 10204, 1103, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 10272, 10273, 1439, + 10190, 10194, 4122, 10188, 10195, 10191, 10167, 10193, 10192, 10189, 10168, 9900, 9900, 9900, 9900, + 9900, 9900, 9900, 5363, 9900, 9900, 275, 9226, 9213, 9217, 9222, 1774, 9230, 9129, 9123, 9126, 10334, + 9900, 4893, 10335, 10336, 9198, 9204, 9180, 9192, 9189, 9195, 9186, 9183, 1103, 9210, 9207, 9177, 9174, + 9201, 9171, 9168, 9165, 9138, 9135, 9132, 9156, 9144, 4122, 9162, 9141, 9153, 9120, 9147, 9150, 9159, + 9117, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 8750, 8740, 9054, 8747, 9900, + 9938, 1358, 1198, 1227, 10334, 9900, 4893, 10335, 10336, 10199, 10197, 10205, 10201, 10202, 10200, + 10203, 10204, 1103, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 10272, 10273, 1439, 10190, + 10194, 4122, 10188, 10195, 10191, 10167, 10193, 10192, 10189, 10168, 9900, 9900, 9900, 9900, 9900, 9900, + 9900, 9900, 9900, 9900, 275, 9226, 9213, 9454, 9222, 9900, 9230, 9129, 9123, 9126, 10334, 9900, 4893, + 10335, 10336, 9198, 9204, 9180, 9192, 9189, 9195, 9186, 9183, 1103, 9210, 9207, 9177, 9174, 9201, 9171, + 9168, 9165, 9138, 9135, 9132, 9156, 9144, 4122, 9162, 9141, 9153, 9120, 9147, 9150, 9159, 9117, 9900, + 9900, 9900, 9914, 10602, 10601, 9915, 9900, 9900, 9900, 9900, 9914, 10602, 10601, 9915, 9900, 9912, + 1358, 1198, 1227, 10334, 9900, 4893, 10335, 10336, 10199, 10197, 10205, 10201, 10202, 10200, 10203, + 10204, 1299, 10566, 10567, 10206, 10207, 10198, 10573, 10574, 10575, 10272, 10273, 1439, 10190, 10194, + 9900, 10188, 10195, 10191, 10167, 10193, 10192, 10189, 10168, 139, 9900, 9900, 9900, 9900, 9906, 9900, + 9900, 9900, 9900, 275, 9722, 9713, 9716, 9719, 9900, 9910, 9129, 9123, 9126, 10334, 9911, 4893, 10335, + 10336, 9198, 9204, 9180, 9192, 9189, 9195, 9186, 9183, 1299, 9210, 9207, 9177, 9174, 9201, 9171, 9168, + 9165, 9138, 9135, 9132, 9156, 9144, 9900, 9162, 9141, 9153, 9120, 9147, 9150, 9159, 9117, 1, 9900, 2903, + 9900, 649, 2157, 546, 9900, 1345, 9900, 10405, 9909, 10399, 10403, 9905, 9906, 9900, 9908, 9611, 5871, + 10334, 9900, 4893, 10335, 10336, 9900, 9900, 9900, 9900, 638, 2608, 1, 8771, 8759, 8763, 8767, 860, + 8756, 8790, 8784, 8787, 818, 5597, 9731, 9900, 344, 9900, 10397, 10398, 10428, 10429, 9900, 9900, 9900, + 9900, 9900, 9900, 10406, 9900, 788, 781, 2558, 2508, 2458, 2408, 2358, 2308, 2258, 2208, 2158, 2106, + 10408, 793, 10430, 9900, 9900, 1395, 3735, 10409, 9615, 9905, 9900, 2302, 2339, 9900, 9900, 10407, 9900, + 10419, 10418, 9907, 9900, 1728, 9900, 9900, 9906, 344, 1, 9900, 9900, 9900, 9900, 10424, 10425, 9735, + 10431, 10422, 10423, 10402, 10404, 10426, 398, 9900, 10400, 10401, 10427, 9900, 10412, 10413, 10414, + 10410, 10411, 10420, 10421, 10416, 10415, 10417, 9900, 9900, 10432, 32, 424, 424, 424, 424, 9638, 424, + 424, 424, 424, 424, 424, 9638, 9638, 9638, 637, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, + 9767, 9767, 9767, 9905, 9900, 424, 424, 424, 424, 424, 9900, 424, 424, 424, 424, 424, 424, 424, 424, + 398, 648, 648, 648, 648, 648, 9900, 648, 648, 648, 648, 648, 648, 648, 648, 1, 9900, 9900, 9900, 9638, + 5435, 1, 9900, 9900, 9900, 398, 9638, 9900, 9900, 9910, 1, 9900, 9900, 9638, 9767, 194, 9900, 9900, + 9900, 9900, 4003, 648, 9900, 9900, 196, 1, 1, 9900, 9767, 37, 10602, 10602, 10602, 10602, 10602, 10602, + 10602, 10602, 10602, 224, 590, 10602, 10602, 37, 10601, 10601, 10601, 10601, 10601, 10601, 10601, 10601, + 10601, 9900, 9900, 10601, 10601, 9900, 9900, 9900, 9909, 10602, 10602, 10602, 10602, 10602, 9900, 10602, + 10602, 10602, 10602, 10602, 10602, 10602, 10602, 10601, 10601, 10601, 10601, 10601, 194, 10601, 10601, + 10601, 10601, 10601, 10601, 10601, 10601, 196, 224, 37, 9915, 9915, 9915, 9915, 9915, 9915, 9915, 9915, + 9915, 10602, 10602, 9915, 9915, 590, 9900, 10602, 1, 8771, 8759, 8763, 8767, 860, 8756, 10601, 10601, + 9900, 818, 5597, 9900, 10601, 9900, 9915, 9915, 9915, 9915, 9915, 9900, 9915, 9915, 9915, 9915, 9915, + 9915, 9915, 9915, 9900, 37, 9914, 9914, 9914, 9914, 9914, 9914, 9914, 9914, 9914, 9900, 9900, 9914, + 9914, 9900, 1, 9608, 9608, 9608, 9608, 9900, 9764, 8790, 8784, 8787, 9915, 9915, 366, 366, 398, 9900, + 9915, 9914, 9914, 9914, 9914, 9914, 1, 9914, 9914, 9914, 9914, 9914, 9914, 9914, 9914, 9900, 695, 9900, + 9347, 9900, 9906, 9900, 9900, 9344, 9338, 9341, 9900, 9900, 9900, 159, 9900, 10583, 10586, 10582, 10588, + 10589, 10587, 10584, 10585, 9900, 9910, 9914, 9914, 9900, 9900, 9900, 9900, 9914, 10272, 10273, 1439, + 10190, 10194, 9900, 10188, 10195, 10191, 10167, 10193, 10192, 10189, 10168, 694, 398, 9524, 9900, 9900, + 9900, 9900, 9521, 9515, 9518, 9900, 9900, 9900, 9900, 9900, 10583, 10586, 10582, 10588, 10589, 10587, + 10584, 10585, 9905, 9900, 9900, 398, 9900, 9900, 9909, 9900, 9900, 10272, 10273, 1439, 10190, 10194, + 6096, 10188, 10195, 10191, 10167, 10193, 10192, 10189, 10168, 1, 8771, 8759, 8763, 8767, 6481, 8756, + 3303, 9900, 9900, 818, 5597, 9900, 9900, 402, 1, 8771, 8759, 8763, 8767, 860, 8756, 8790, 8784, 8787, + 818, 5597, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 4307, 1999, 3217, 3189, 3103, 3075, + 2989, 2961, 2875, 2847, 2761, 2733, 1, 8771, 8759, 8763, 8767, 860, 8756, 8790, 8784, 8787, 818, 5597, + 1, 8771, 8759, 8763, 8767, 8753, 8756, 126, 9900, 128, 8778, 8775, 1613, 402, 9910, 127, 9900, 9900, + 402, 402, 75, 9900, 9900, 9900, 9900, 9293, 1796, 1, 8771, 8759, 8763, 8767, 6481, 8756, 9900, 9906, + 10581, 818, 5597, 3785, 9900, 9629, 9900, 9900, 402, 9900, 9900, 9900, 9900, 10583, 10586, 10582, 10588, + 10589, 10587, 10584, 10585, 1, 8771, 8759, 8763, 8767, 6481, 8756, 9900, 9909, 9900, 818, 5597, 9284, + 9281, 9900, 3785, 9900, 9900, 9900, 636, 9900, 6326, 9900, 6326, 9876, 9884, 9880, 87, 9320, 6326, 9662, + 9888, 9900, 9739, 9906, 9296, 9665, 1956, 9900, 9900, 9900, 9747, 1613, 9905, 9900, 9900, 9900, 9900, + 9900, 9632, 9900, 9900, 6251, 5909, 6251, 5909, 9900, 9900, 9900, 9900, 6251, 5909, 9900, 9900, 9900, + 9900, 9900, 9900, 9900, 9900, 9900, 9900, 1613, 9900, 9900, 9900, 9900, 4255, 1256, 4255, 1256, 9900, + 9888, 9900, 9900, 4255, 1256, 9900, 9900, 9900, 9888, 9900, 9287, 8396, 9743, 9900, 9900, 9290, 9900, + 9905, 9900, 9900, 9751 }; + }; - public interface ScopeStateSet { - public final static char scopeStateSet[] = { - 466,376,268,268,478,376,268,268,268,268, - 111,124,124,522,466,478,376,478,510,111, - 111,466,268,268,124,43,190,238,238,21, - 21,490,376,466,376,376,378,61,391,89, - 510,466,53,46,89,111,268,268,46,128, - 165,124,510,171,378,268,268,86,1,111, - 43,50,21,490,378,41,510,99,18,268, - 268,268,268,268,268,242,8,490,111,111, - 111,69,336,53,466,376,376,450,478,111, - 268,268,268,268,128,268,24,182,268,50, - 21,138,128,130,165,124,165,187,171,378, - 111,5,18,56,53,268,510,268,171,111, - 490,378,13,111,273,493,61,53,376,478, - 53,376,376,376,111,466,376,24,182,380, - 389,490,380,385,385,385,29,58,140,24, - 182,374,450,58,140,50,13,376,466,450, - 466,165 - }; - }; - public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet; - public final int scopeStateSet(int index) { return scopeStateSet[index]; } + public final static char termAction[] = TermAction.termAction; - public interface ScopeRhs { - public final static char scopeRhs[] = {0, - 184,5,80,0,44,145,140,142,0,186, - 35,349,142,72,0,139,0,186,349,142, - 35,72,0,186,35,72,0,186,349,142, - 72,0,347,142,0,131,281,0,0,300, - 142,177,0,142,0,142,177,0,220,142, - 0,217,5,0,140,241,0,180,256,142, - 0,224,0,256,142,0,272,224,0,285, - 180,0,272,0,180,0,248,272,0,248, - 0,225,180,0,198,272,0,198,0,217, - 5,37,0,140,0,259,0,279,0,251, - 0,32,172,0,382,92,0,30,194,0, - 196,5,0,217,5,64,0,378,5,343, - 0,377,5,5,8,0,140,140,0,376, - 5,74,0,375,5,130,0,140,195,0, - 142,196,85,0,239,0,265,0,230,193, - 141,23,0,151,0,193,141,23,0,150, - 0,304,142,71,139,0,20,0,338,142, - 71,67,0,20,58,0,33,147,0,20, - 58,0,0,338,142,71,67,229,0,20, - 201,0,304,142,71,147,0,223,141,0, - 156,0,261,5,337,0,337,0,2,0, - 140,0,304,142,71,146,0,223,141,270, - 0,223,141,36,270,0,223,141,370,36, - 0,143,230,193,141,0,230,193,141,0, - 149,142,0,190,0,366,142,190,0,142, - 190,0,246,142,0,193,365,255,0,151, - 0,0,0,0,365,255,0,152,151,0, - 0,0,0,150,0,0,0,0,152,150, - 0,0,0,0,364,142,178,258,0,141, - 0,258,0,143,0,0,141,0,363,142, - 178,250,0,141,0,0,44,141,0,0, - 172,5,0,142,328,327,142,85,326,190, - 0,327,142,85,326,190,0,238,0,239, - 0,326,190,0,101,0,0,238,0,239, - 0,226,101,0,0,238,0,239,0,327, - 142,326,190,0,238,0,226,0,0,238, - 0,279,142,5,0,140,0,0,0,0, - 0,279,142,5,246,0,260,5,0,231, - 0,161,0,212,193,141,0,10,0,0, - 0,0,212,0,9,0,0,251,72,0, - 279,142,5,209,0,209,0,2,0,0, - 140,0,0,0,0,0,225,5,0,271, - 142,178,46,40,0,223,141,76,77,0, - 219,142,0,143,223,141,325,77,0,223, - 141,325,77,0,223,141,86,138,76,0, - 271,142,178,299,76,0,299,76,0,143, - 0,0,141,0,271,142,178,299,275,76, - 0,299,275,76,0,322,323,142,178,138, - 360,68,0,360,68,0,144,143,0,0, - 0,141,0,322,323,142,178,360,68,0, - 143,0,0,0,141,0,223,141,321,68, - 0,230,223,141,321,255,0,223,141,321, - 255,0,193,141,0,98,151,0,215,0, - 214,0,213,0,212,0,320,142,168,0, - 320,142,190,0,184,100,0,355,185,357, - 358,5,97,0,140,194,0,357,358,5, - 97,0,142,0,140,194,0,184,5,90, - 233,95,0,140,142,0,233,95,0,113, - 2,146,140,142,0,272,5,90,0,225, - 194,0,33,184,0,194,0,198,33,184, - 0,272,5,101,0,233,169,272,5,99, - 0,67,194,0,272,5,99,0,140,194, - 67,194,0,356,142,178,0,184,0,251, - 92,0,184,116,220,0,30,192,0,163, - 78,195,5,0,195,5,0,20,176,140, - 0,184,116,182,0,30,184,0,140,164, - 0,261,5,0,251,72,318,0,184,72, - 0,217,5,352,83,141,0,140,0,0, - 0,0,352,83,141,0,2,160,140,0, - 0,0,0,217,5,61,0,162,0,140, - 67,193,141,0,31,162,0,98,151,31, - 162,0,244,223,141,0,161,31,162,0, - 217,5,63,0,184,5,63,0,184,5, - 78,217,71,58,0,217,71,58,0,20, - 2,146,140,0,184,5,78,217,71,60, - 0,217,71,60,0,184,5,78,217,71, - 62,0,217,71,62,0,184,5,78,217, - 71,59,0,217,71,59,0,261,5,140, - 230,193,141,23,0,140,230,193,141,23, - 0,151,2,0,140,0,261,5,139,295, - 193,141,23,0,295,193,141,23,0,150, - 2,0,140,0,261,5,150,0,261,5, - 155,0,184,72,155,0,313,0,31,0, - 31,154,0,192,0,149,0,184,5,0 - }; - }; - public final static char scopeRhs[] = ScopeRhs.scopeRhs; - public final int scopeRhs(int index) { return scopeRhs[index]; } + public final int termAction(int index) { + return termAction[index]; + } - public interface ScopeState { - public final static char scopeState[] = {0, - 2637,2385,1389,0,1708,1310,0,3709,2096,1745, - 1450,0,5518,8514,8507,8444,0,3251,2953,0, - 2452,1591,0,6148,6096,6044,4411,0,5795,5723, - 5651,5579,5507,5435,5363,5291,5219,5147,4739,4636, - 8505,0,7048,6013,0,4911,3862,4778,0,4147, - 4098,0,1364,767,0,921,0,2213,1120,0, - 4307,4500,4703,4531,1166,1076,5119,2658,3649,1228, - 3303,3217,3189,3103,3075,2989,2961,2875,2847,2761, - 2733,1138,1048,958,0,1345,1137,0,1395,4189, - 1314,3880,3779,3383,6709,910,1445,0,3135,3021, - 8433,2655,2097,2658,1944,8363,8336,6971,6776,6029, - 5795,5723,5651,5579,5507,5435,5363,5291,5219,5147, - 4739,4636,0,2694,2340,1199,1121,4819,6930,6732, - 6481,6282,4473,3055,2941,2827,0,780,0,7534, - 7465,6888,6501,6539,6187,6035,6494,5759,5724,6022, - 5687,5220,5580,5543,5148,5508,4863,3988,3486,5471, - 5436,5364,3882,0,4819,8216,5228,6912,6874,4745, - 6732,5370,6148,6096,6044,6481,4411,6282,7150,5016, - 860,4872,5871,4217,4961,0,8216,4745,0,3137, - 3027,7534,7465,3023,2535,1643,6888,2485,6501,2335, - 2237,2185,6539,986,3419,6187,2083,6035,1925,6494, - 5759,5724,2911,1713,6022,5687,6964,5220,1474,5580, - 5543,1044,5148,2795,4340,5508,4863,1947,3988,3486, - 5471,5436,5364,818,6745,3882,4077,1496,1384,1011, - 849,1728,6732,4872,5370,6148,6096,4819,6044,6481, - 4411,6282,2718,2700,8216,5228,1364,767,6912,5871, - 7150,6874,5016,860,4217,4961,4745,8155,7711,7282, - 6613,4122,3649,6508,7399,8126,1228,4307,3303,3217, - 3189,3103,3075,2989,2961,2875,2847,2761,2733,4500, - 4703,4531,1166,1076,5119,6454,6427,6400,6709,2658, - 7376,788,3331,4608,3677,5983,5954,5050,6683,6652, - 6326,6299,6251,5909,4255,1256,7352,7321,5153,7189, - 4159,8103,8080,1138,1048,8057,958,7911,7888,7865, - 7842,7819,7796,7773,7750,3735,4050,1395,878,4003, - 3941,3894,1956,1896,1846,3832,3785,3599,3548,1314, - 3498,3436,1796,1510,1746,1660,2608,2558,2508,2458, - 2408,2358,2308,2258,2208,2158,2106,2056,716,1613, - 1445,2006,1563,3389,0,7048,6013,6964,6745,878, - 716,4340,4077,0,878,716,4340,4077,6013,0, - 4872,4366,7099,878,6148,6865,4334,6096,6044,6356, - 5769,7048,8498,8466,8305,7940,6172,6013,4082,6535, - 4635,4210,7489,7623,3969,5265,5228,6964,4954,4910, - 4158,716,3142,2793,8297,3859,6084,3464,5871,4340, - 7150,1924,1691,997,5016,925,913,6745,7538,6769, - 4893,6180,3249,4784,4375,5837,4961,3256,4077,6757, - 4819,8271,4406,8454,8265,6930,4411,6136,8402,4767, - 6912,6874,4563,4217,0,5795,5723,5651,5579,5507, - 5435,5363,5291,5219,5147,4739,4636,8149,7215,7083, - 7004,7951,7934,7644,7577,7510,7439,7422,6546,4904, - 8229,0,8396,7230,8273,7953,8433,7949,2658,7579, - 7555,6751,5329,5617,8363,8336,6971,6776,6029,5795, - 5723,5651,5579,5507,5435,5363,5291,5219,5147,4739, - 4636,8149,7215,7083,7004,7951,7934,7644,7577,7510, - 7439,7422,6546,0 - }; - }; - public final static char scopeState[] = ScopeState.scopeState; - public final int scopeState(int index) { return scopeState[index]; } + public interface Asb { + public final static char asb[] = { 0, 1459, 4, 1566, 321, 1448, 1, 363, 1501, 707, 707, 707, 1400, 67, 878, + 1458, 994, 321, 329, 1263, 1566, 649, 245, 1566, 1566, 1566, 221, 261, 156, 261, 875, 261, 1103, 261, + 261, 329, 330, 261, 995, 1345, 100, 1501, 321, 642, 261, 261, 1114, 330, 261, 330, 1566, 930, 164, 164, + 920, 164, 651, 156, 80, 581, 80, 782, 994, 833, 938, 324, 70, 70, 321, 898, 330, 1264, 1053, 1035, 847, + 1396, 579, 159, 877, 8, 875, 152, 329, 1103, 335, 330, 330, 703, 219, 995, 995, 995, 995, 995, 995, 995, + 995, 995, 995, 644, 995, 1198, 1566, 930, 930, 930, 930, 329, 1566, 261, 861, 861, 834, 833, 321, 321, + 330, 521, 1397, 335, 335, 261, 363, 468, 1397, 261, 261, 930, 261, 330, 701, 1298, 176, 164, 164, 163, + 163, 156, 329, 573, 784, 1198, 791, 796, 793, 800, 798, 807, 805, 809, 808, 810, 588, 811, 321, 994, + 1218, 321, 261, 330, 525, 898, 898, 330, 1264, 787, 845, 786, 1585, 86, 1396, 1395, 1397, 159, 330, 79, + 865, 856, 703, 156, 837, 330, 335, 703, 330, 697, 1198, 1198, 1198, 1517, 362, 701, 261, 1397, 1397, + 1397, 954, 1608, 1608, 974, 974, 363, 363, 363, 363, 330, 598, 6, 6, 598, 994, 861, 156, 329, 697, 261, + 261, 335, 335, 324, 239, 468, 468, 1264, 1298, 176, 163, 163, 163, 330, 1397, 994, 1397, 995, 995, 995, + 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 995, 994, 994, 994, + 994, 994, 994, 994, 994, 994, 994, 994, 15, 995, 1397, 842, 156, 321, 1193, 991, 403, 468, 529, 824, + 898, 834, 834, 1053, 834, 1514, 579, 1585, 1585, 1621, 1620, 851, 842, 330, 159, 65, 878, 930, 1262, + 1568, 159, 79, 857, 861, 79, 861, 703, 837, 837, 330, 920, 365, 1183, 1198, 759, 757, 764, 762, 766, + 765, 767, 768, 781, 330, 219, 330, 1397, 1397, 1397, 468, 362, 994, 261, 955, 324, 1294, 1284, 1283, + 1353, 267, 267, 329, 644, 995, 1397, 1397, 920, 920, 920, 920, 703, 1397, 1263, 1265, 1263, 1397, 468, + 156, 907, 330, 1566, 1196, 261, 920, 920, 261, 1397, 1288, 1271, 1287, 781, 930, 92, 92, 842, 842, 163, + 330, 834, 1219, 793, 793, 791, 791, 791, 798, 798, 798, 798, 798, 798, 796, 796, 805, 800, 800, 808, + 807, 809, 65, 65, 810, 842, 1218, 403, 468, 417, 524, 333, 1397, 86, 1397, 597, 1397, 1397, 701, 1570, + 861, 861, 861, 861, 330, 837, 841, 922, 841, 1154, 1170, 1170, 1170, 1170, 1149, 329, 927, 995, 995, + 995, 995, 995, 995, 995, 995, 995, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 994, 995, 974, + 697, 261, 261, 261, 995, 363, 261, 261, 1397, 954, 65, 995, 65, 834, 953, 1566, 1566, 1566, 955, 1566, + 330, 471, 834, 834, 330, 156, 1608, 1397, 1296, 1298, 330, 701, 271, 1198, 1566, 1566, 1566, 1566, 330, + 330, 330, 1265, 701, 873, 329, 330, 598, 261, 261, 888, 994, 1285, 1285, 1292, 324, 1058, 176, 164, 176, + 780, 780, 842, 834, 994, 994, 1218, 994, 994, 468, 529, 1397, 1621, 1264, 833, 995, 65, 899, 932, 830, + 1570, 861, 861, 407, 841, 842, 995, 330, 330, 995, 757, 757, 757, 762, 759, 759, 765, 764, 766, 65, 767, + 1397, 261, 324, 944, 955, 65, 1045, 955, 974, 974, 972, 953, 974, 834, 834, 905, 952, 1397, 1298, 703, + 1264, 1397, 994, 994, 994, 994, 1566, 1566, 219, 330, 1264, 873, 1397, 261, 709, 888, 994, 994, 1296, + 1271, 176, 363, 363, 841, 468, 468, 597, 834, 1570, 995, 995, 830, 830, 1570, 1570, 907, 214, 408, 330, + 842, 703, 1048, 994, 261, 261, 261, 994, 261, 955, 995, 955, 1397, 321, 974, 1397, 972, 1501, 1566, + 1397, 873, 911, 1397, 330, 719, 1397, 1397, 1397, 1397, 598, 598, 1269, 261, 219, 945, 1566, 261, 891, + 781, 261, 105, 830, 830, 407, 330, 329, 329, 330, 330, 261, 598, 995, 468, 955, 905, 955, 834, 1501, + 994, 955, 952, 911, 911, 304, 1397, 1397, 1269, 1058, 891, 1343, 261, 261, 330, 330, 330, 261, 1397, + 468, 994, 953, 598, 834, 1397, 914, 911, 1397, 1397, 318, 1566, 92, 330, 330, 955, 1397, 834, 914, 914, + 156, 156, 320, 1299, 780, 955, 914, 1621, 1263, 363 }; + }; - public interface InSymb { - public final static char inSymb[] = {0, - 0,351,80,177,77,7,142,190,229,42, - 35,67,40,76,273,5,142,76,325,380, - 347,266,8,9,7,34,267,258,268,255, - 269,68,274,139,23,141,294,37,259,326, - 142,5,6,147,146,11,10,139,141,209, - 67,67,67,71,67,46,299,275,138,180, - 184,142,300,278,142,215,209,180,225,141, - 141,5,3,5,5,5,178,365,321,180, - 360,321,180,71,141,223,193,192,37,64, - 61,57,48,47,12,13,50,49,141,10, - 5,63,58,60,62,59,23,150,155,85, - 142,320,300,256,180,141,212,225,71,71, - 194,142,72,5,82,83,139,138,223,193, - 5,71,78,142,178,178,299,86,73,297, - 5,160,162,161,171,163,174,173,176,175, - 179,74,182,73,5,86,256,180,141,72, - 225,180,223,223,381,46,309,310,5,379, - 1,46,142,193,282,140,139,141,138,178, - 141,142,193,67,6,5,5,5,82,83, - 193,140,217,196,184,178,177,194,142,5, - 71,71,71,71,141,5,129,134,5,72, - 142,327,84,193,13,12,142,142,142,259, - 72,72,230,142,142,142,142,178,141,152, - 73,217,105,112,48,47,114,113,12,128, - 127,103,102,78,71,88,89,13,107,106, - 109,108,110,126,125,124,123,122,121,120, - 119,118,117,86,116,115,172,178,250,180, - 193,35,142,251,12,182,180,275,143,84, - 169,5,73,259,384,377,343,5,364,141, - 188,270,76,67,77,190,367,140,139,283, - 180,283,223,178,142,223,304,142,291,5, - 195,163,211,207,216,213,218,220,307,230, - 313,230,217,217,217,72,352,5,169,142, - 142,5,247,246,150,140,139,23,141,37, - 217,184,217,217,217,217,193,261,67,141, - 67,261,184,327,336,141,337,212,212,304, - 304,256,279,280,168,281,338,67,23,66, - 271,271,142,223,169,169,161,161,160,160, - 160,163,163,163,163,163,163,162,162,173, - 171,171,175,174,176,295,184,179,142,178, - 142,186,349,350,12,1,73,169,5,46, - 1,193,142,283,283,142,142,230,142,323, - 138,324,266,267,268,269,374,259,23,195, - 103,102,71,13,107,106,109,108,110,126, - 125,124,123,122,121,120,119,118,117,86, - 116,115,73,6,169,169,169,219,5,353, - 194,172,356,94,92,1,184,14,101,99, - 97,95,90,98,100,93,91,76,85,256, - 260,142,5,141,193,156,5,78,78,78, - 78,230,295,141,223,193,328,73,223,5, - 12,142,169,86,260,225,5,142,73,73, - 78,71,282,282,271,275,84,84,142,349, - 35,186,12,1,378,230,366,84,287,225, - 139,285,180,142,142,84,323,322,86,73, - 141,78,163,163,163,207,195,195,213,211, - 216,184,218,217,142,142,14,84,382,251, - 84,5,5,5,233,5,138,184,138,196, - 279,142,193,67,217,5,5,5,5,140, - 139,244,10,67,142,261,212,187,142,86, - 86,142,256,142,86,86,363,186,186,73, - 143,73,84,86,180,285,180,164,369,270, - 36,141,322,193,163,84,169,315,318,72, - 224,84,104,84,272,194,142,272,358,168, - 90,272,142,169,279,230,169,184,184,184, - 184,5,5,6,138,140,329,130,142,263, - 338,243,73,285,180,73,141,36,370,223, - 230,142,5,72,184,169,225,169,357,142, - 5,169,329,142,169,140,261,261,6,5, - 142,78,243,14,223,141,141,315,261,251, - 86,233,185,320,184,263,142,104,375,194, - 74,66,223,223,136,355,169,142,263,169, - 169,142,5,282,169,142,376,86,73 - }; - }; - public final static char inSymb[] = InSymb.inSymb; - public final int inSymb(int index) { return inSymb[index]; } + public final static char asb[] = Asb.asb; - public interface Name { - public final static String name[] = { - "", - "[", - "(", - ".", - ".*", - "->", - "->*", - "++", - "--", - "&", - "*", - "+", - "-", - "~", - "!", - "/", - "%", - ">>", - "<<", - "<", - ">", - "<=", - ">=", - "==", - "!=", - "^", - "|", - "&&", - "||", - "?", - ":", - "::", - "...", - "=", - "*=", - "/=", - "%=", - "+=", - "-=", - ">>=", - "<<=", - "&=", - "^=", - "|=", - ",", - ">?", - "", "->*", "++", "--", "&", "*", "+", "-", "~", + "!", "/", "%", ">>", "<<", "<", ">", "<=", ">=", "==", "!=", "^", "|", "&&", "||", "?", ":", "::", + "...", "=", "*=", "/=", "%=", "+=", "-=", ">>=", "<<=", "&=", "^=", "|=", ",", ">?", " markerDataList = new ArrayList(); /* @@ -66,8 +67,7 @@ public class XlcErrorParserTester { */ private class MockMarkerGenerator implements IMarkerGenerator { - public void addMarker(IResource file, int lineNumber, String errorDesc, - int severity, String errorVar) { + public void addMarker(IResource file, int lineNumber, String errorDesc, int severity, String errorVar) { // dummy } @@ -97,7 +97,7 @@ public class XlcErrorParserTester { */ @Override public IFile findFileName(String fileName) { - if (fileName!=null && fileName.trim().length()>0) + if (fileName != null && fileName.trim().length() > 0) return fTempProject.getFile(fileName); return null; } @@ -106,18 +106,19 @@ public class XlcErrorParserTester { * Called by ErrorPattern.RecordError() for external problem markers */ @Override - public void generateExternalMarker(IResource rc, int lineNumb, String desc, int sev, String varName, IPath externalPath) { + public void generateExternalMarker(IResource rc, int lineNumb, String desc, int sev, String varName, + IPath externalPath) { // if rc is this project it means that file was not found MarkerData markerData = new MarkerData(); - if (rc!=null && rc!=fTempProject) { + if (rc != null && rc != fTempProject) { markerData.fileName = rc.getName(); } else { - markerData.fileName=""; + markerData.fileName = ""; } markerData.lineNumber = lineNumb; markerData.message = desc; markerData.severity = sev; - + markerDataList.add(markerData); } } diff --git a/xlc/org.eclipse.cdt.errorparsers.xlc/src/org/eclipse/cdt/errorparsers/xlc/Activator.java b/xlc/org.eclipse.cdt.errorparsers.xlc/src/org/eclipse/cdt/errorparsers/xlc/Activator.java index 59e1cc91bbb..e455e15efe8 100644 --- a/xlc/org.eclipse.cdt.errorparsers.xlc/src/org/eclipse/cdt/errorparsers/xlc/Activator.java +++ b/xlc/org.eclipse.cdt.errorparsers.xlc/src/org/eclipse/cdt/errorparsers/xlc/Activator.java @@ -7,7 +7,7 @@ * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 - * + * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ @@ -27,7 +27,7 @@ public class Activator extends AbstractUIPlugin { // The shared instance private static Activator plugin; - + /** * The constructor */ diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/activator/Activator.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/activator/Activator.java index e76e86f2cde..bf0781bbfee 100644 --- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/activator/Activator.java +++ b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/activator/Activator.java @@ -32,7 +32,7 @@ public class Activator extends Plugin { */ public Activator() { super(); - if(fInstance == null) { + if (fInstance == null) { fInstance = this; } } @@ -47,8 +47,7 @@ public class Activator extends Plugin { public static void log(String message, Throwable e) { Throwable nestedException; - if (e instanceof CModelException - && (nestedException = ((CModelException)e).getException()) != null) { + if (e instanceof CModelException && (nestedException = ((CModelException) e).getException()) != null) { e = nestedException; } log(createStatus(message, e)); diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/AbstractXLCBuildOutputParser.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/AbstractXLCBuildOutputParser.java index 842604bd3de..e7ef4adde10 100644 --- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/AbstractXLCBuildOutputParser.java +++ b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/AbstractXLCBuildOutputParser.java @@ -84,8 +84,8 @@ public abstract class AbstractXLCBuildOutputParser implements IScannerInfoConsol */ protected String[] computeCompilerCommands() { if (fProject != null) { - SCProfileInstance profileInstance = ScannerConfigProfileManager.getInstance().getSCProfileInstance( - fProject, ScannerConfigProfileManager.NULL_PROFILE_ID); + SCProfileInstance profileInstance = ScannerConfigProfileManager.getInstance().getSCProfileInstance(fProject, + ScannerConfigProfileManager.NULL_PROFILE_ID); BuildOutputProvider boProvider = profileInstance.getProfile().getBuildOutputProviderElement(); if (boProvider != null) { String compilerCommandsString = boProvider.getScannerInfoConsoleParser().getCompilerCommands(); @@ -140,9 +140,9 @@ public abstract class AbstractXLCBuildOutputParser implements IScannerInfoConsol fSMultiline = ""; //$NON-NLS-1$ } line = line.trim(); - try{ + try { TraceUtil.outputTrace("XLCBuildOutputParser parsing line: [", line, "]"); //$NON-NLS-1$ //$NON-NLS-2$ - }catch(NoClassDefFoundError e){ + } catch (NoClassDefFoundError e) { //no problem, as this may be called from a standalone indexer } // make\[[0-9]*\]: error_desc @@ -202,7 +202,7 @@ public abstract class AbstractXLCBuildOutputParser implements IScannerInfoConsol getUtility().reportProblems(); } - if(fCollector != null && fCollector instanceof IScannerInfoCollector2) { + if (fCollector != null && fCollector instanceof IScannerInfoCollector2) { IScannerInfoCollector2 collector = (IScannerInfoCollector2) fCollector; try { collector.updateScannerConfiguration(null); @@ -386,7 +386,7 @@ public abstract class AbstractXLCBuildOutputParser implements IScannerInfoConsol abstract protected boolean processCommand(String[] tokens); - protected List getFileExtensionsList() { + protected List getFileExtensionsList() { IContentTypeManager manager = Platform.getContentTypeManager(); List extensions = new LinkedList(); IContentType cSource = manager.getContentType(CCorePlugin.CONTENT_TYPE_CSOURCE); diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/PerFileXLCScannerInfoCollector.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/PerFileXLCScannerInfoCollector.java index 3774867d42c..5ef88b40059 100644 --- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/PerFileXLCScannerInfoCollector.java +++ b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/PerFileXLCScannerInfoCollector.java @@ -98,7 +98,8 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I private boolean fIsDefaultContext; private List fChangedResources; - public ScannerConfigUpdateJob(InfoContext context, IDiscoveredPathInfo pathInfo, boolean isDefaultContext, List changedResources) { + public ScannerConfigUpdateJob(InfoContext context, IDiscoveredPathInfo pathInfo, boolean isDefaultContext, + List changedResources) { super(Messages.getString("PerFileXLCScannerInfoCollector.0")); //$NON-NLS-1$); fContext = context; fPathInfo = pathInfo; @@ -108,9 +109,9 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I @Override protected IStatus run(IProgressMonitor monitor) { - try { + try { - // get the scanner info profile ID + // get the scanner info profile ID IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project); IConfiguration config = info.getDefaultConfiguration(); @@ -118,25 +119,28 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I String profileID = config.getToolChain().getScannerConfigDiscoveryProfileId(); IDiscoveredPathManager manager = MakeCorePlugin.getDefault().getDiscoveryManager(); - if(manager instanceof DiscoveredPathManager) { - ((DiscoveredPathManager)manager).updateDiscoveredInfo(fContext, fPathInfo, fIsDefaultContext, fChangedResources, profileID); + if (manager instanceof DiscoveredPathManager) { + ((DiscoveredPathManager) manager).updateDiscoveredInfo(fContext, fPathInfo, fIsDefaultContext, + fChangedResources, profileID); } // reload project description to hopefully get the data to take ICProjectDescriptionManager descriptionManager = CoreModel.getDefault().getProjectDescriptionManager(); - ICProjectDescription cProjectDescription = descriptionManager.getProjectDescription(project, true /* writable */); + ICProjectDescription cProjectDescription = descriptionManager.getProjectDescription(project, + true /* writable */); ICConfigurationDescription configDes = cProjectDescription.getActiveConfiguration(); IToolChain toolchain = config.getToolChain(); - for(ITool tool : toolchain.getTools()) { - for(IInputType inputType : tool.getInputTypes()) { + for (ITool tool : toolchain.getTools()) { + for (IInputType inputType : tool.getInputTypes()) { IContentType contentType = inputType.getSourceContentType(); - if(contentType != null) { - for(IResource resource : fChangedResources) { + if (contentType != null) { + for (IResource resource : fChangedResources) { // get language settings for the resource - ICLanguageSetting langSetting = configDes.getLanguageSettingForFile(resource.getProjectRelativePath(), false); + ICLanguageSetting langSetting = configDes + .getLanguageSettingForFile(resource.getProjectRelativePath(), false); - if(langSetting == null) { + if (langSetting == null) { continue; } @@ -145,14 +149,14 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I // if the setting doesn't handle our content type ID, then go to the next resource boolean found = false; - for(String id : contentTypeIDs) { - if(id.equals(contentType.getId())) { + for (String id : contentTypeIDs) { + if (id.equals(contentType.getId())) { found = true; break; } } - if(!found) { + if (!found) { continue; } @@ -166,23 +170,22 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } } - descriptionManager.setProjectDescription(project, cProjectDescription, true /* force */, monitor); + descriptionManager.setProjectDescription(project, cProjectDescription, true /* force */, monitor); } catch (CoreException e) { Activator.log(e); return Activator.createStatus(Messages.getString("PerFileXLCScannerInfoCollector.1")); //$NON-NLS-1$ } - return Status.OK_STATUS; + return Status.OK_STATUS; } private boolean updateMacroSettings(ICLanguageSetting langSetting) { ICLanguageSettingEntry[] entries = langSetting.getSettingEntries(ICSettingEntry.MACRO); List newEntries = new LinkedList(); - for(ICLanguageSettingEntry entry : entries) { + for (ICLanguageSettingEntry entry : entries) { newEntries.add(entry); } - boolean entriesChanged = false; // look for settings corresponding to each path we discovered @@ -198,15 +201,16 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } // if we didn't find the path, add it - if(!symbolFound) { + if (!symbolFound) { entriesChanged = true; - CMacroEntry newEntry = CDataUtil.createCMacroEntry(symbol, discSymbols.get(symbol), ICSettingEntry.BUILTIN | ICSettingEntry.READONLY | ICSettingEntry.RESOLVED); + CMacroEntry newEntry = CDataUtil.createCMacroEntry(symbol, discSymbols.get(symbol), + ICSettingEntry.BUILTIN | ICSettingEntry.READONLY | ICSettingEntry.RESOLVED); newEntries.add(newEntry); } } // if we changed the entries, then set the new ones - if(entriesChanged) { + if (entriesChanged) { langSetting.setSettingEntries(ICSettingEntry.MACRO, newEntries.toArray(new ICLanguageSettingEntry[0])); } @@ -216,7 +220,7 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I private boolean updateIncludeSettings(ICLanguageSetting langSetting) { ICLanguageSettingEntry[] entries = langSetting.getSettingEntries(ICSettingEntry.INCLUDE_PATH); List newEntries = new LinkedList(); - for(ICLanguageSettingEntry entry : entries) { + for (ICLanguageSettingEntry entry : entries) { newEntries.add(entry); } @@ -235,16 +239,18 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } // if we didn't find the path, add it - if(!pathFound) { + if (!pathFound) { entriesChanged = true; - CIncludePathEntry newEntry = CDataUtil.createCIncludePathEntry(path.toString(), ICSettingEntry.BUILTIN | ICSettingEntry.READONLY | ICSettingEntry.RESOLVED); + CIncludePathEntry newEntry = CDataUtil.createCIncludePathEntry(path.toString(), + ICSettingEntry.BUILTIN | ICSettingEntry.READONLY | ICSettingEntry.RESOLVED); newEntries.add(newEntry); } } // if we changed the entries, then set the new ones - if(entriesChanged) { - langSetting.setSettingEntries(ICSettingEntry.INCLUDE_PATH, newEntries.toArray(new ICLanguageSettingEntry[0])); + if (entriesChanged) { + langSetting.setSettingEntries(ICSettingEntry.INCLUDE_PATH, + newEntries.toArray(new ICLanguageSettingEntry[0])); } return entriesChanged; @@ -261,7 +267,7 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } private IPerFileDiscoveredPathInfo2 getPerFileInfo1() { - if(fInfo1 instanceof IPerFileDiscoveredPathInfo2) { + if (fInfo1 instanceof IPerFileDiscoveredPathInfo2) { return (IPerFileDiscoveredPathInfo2) fInfo1; } @@ -460,176 +466,176 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } /** - * Per file DPI object - * - * @author vhirsl - */ - protected class PerFileDiscoveredPathInfo implements IPerFileDiscoveredPathInfo2 { - /* (non-Javadoc) - * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo#getIncludeFiles(org.eclipse.core.runtime.IPath) - */ - @Override + * Per file DPI object + * + * @author vhirsl + */ + protected class PerFileDiscoveredPathInfo implements IPerFileDiscoveredPathInfo2 { + /* (non-Javadoc) + * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo#getIncludeFiles(org.eclipse.core.runtime.IPath) + */ + @Override public IPath[] getIncludeFiles(IPath path) { - synchronized (fLock) { - - Set pathSet = new LinkedHashSet(); - // get the command - CCommandDSC cmd = getCommand(path); - if (cmd != null) { - IPath[] paths = stringListToPathArray(cmd.getIncludeFile()); - pathSet.addAll(Arrays.asList(paths)); - } - // use project scope scanner info - if (psi == null) { - generateProjectScannerInfo(); - } - - for(IPath path2 : psi.includeFiles) { - pathSet.add(path2); - } - - return pathSet.toArray(new IPath[0]); - } - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo#getIncludePaths() - */ - @Override + synchronized (fLock) { + + Set pathSet = new LinkedHashSet(); + // get the command + CCommandDSC cmd = getCommand(path); + if (cmd != null) { + IPath[] paths = stringListToPathArray(cmd.getIncludeFile()); + pathSet.addAll(Arrays.asList(paths)); + } + // use project scope scanner info + if (psi == null) { + generateProjectScannerInfo(); + } + + for (IPath path2 : psi.includeFiles) { + pathSet.add(path2); + } + + return pathSet.toArray(new IPath[0]); + } + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo#getIncludePaths() + */ + @Override public IPath[] getIncludePaths() { - final IPath[] includepaths; - final IPath[] quotepaths; - synchronized (fLock) { -// return new IPath[0]; - includepaths = getAllIncludePaths(INCLUDE_PATH); - quotepaths = getAllIncludePaths(QUOTE_INCLUDE_PATH); - } - if (quotepaths == null || quotepaths.length == 0) { - return includepaths; - } - if (includepaths == null || includepaths.length == 0) { - return quotepaths; - } - ArrayList result = new ArrayList(includepaths.length + quotepaths.length); - result.addAll(Arrays.asList(includepaths)); - result.addAll(Arrays.asList(quotepaths)); - return result.toArray(new IPath[result.size()]); - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo#getIncludePaths(org.eclipse.core.runtime.IPath) - */ - @Override + final IPath[] includepaths; + final IPath[] quotepaths; + synchronized (fLock) { + // return new IPath[0]; + includepaths = getAllIncludePaths(INCLUDE_PATH); + quotepaths = getAllIncludePaths(QUOTE_INCLUDE_PATH); + } + if (quotepaths == null || quotepaths.length == 0) { + return includepaths; + } + if (includepaths == null || includepaths.length == 0) { + return quotepaths; + } + ArrayList result = new ArrayList(includepaths.length + quotepaths.length); + result.addAll(Arrays.asList(includepaths)); + result.addAll(Arrays.asList(quotepaths)); + return result.toArray(new IPath[result.size()]); + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo#getIncludePaths(org.eclipse.core.runtime.IPath) + */ + @Override public IPath[] getIncludePaths(IPath path) { - synchronized (fLock) { - Set pathSet = new LinkedHashSet(); - // get the command - CCommandDSC cmd = getCommand(path); - if (cmd != null) { - IPath[] paths = stringListToPathArray(cmd.getIncludes()); - pathSet.addAll(Arrays.asList(paths)); - } - // use project scope scanner info - if (psi == null) { - generateProjectScannerInfo(); - } - - for(IPath path2 : psi.includePaths) { - pathSet.add(path2); - } - - return pathSet.toArray(new IPath[0]); - } - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerFileDiscoveredPathInfo#getMacroFiles(org.eclipse.core.runtime.IPath) - */ - @Override + synchronized (fLock) { + Set pathSet = new LinkedHashSet(); + // get the command + CCommandDSC cmd = getCommand(path); + if (cmd != null) { + IPath[] paths = stringListToPathArray(cmd.getIncludes()); + pathSet.addAll(Arrays.asList(paths)); + } + // use project scope scanner info + if (psi == null) { + generateProjectScannerInfo(); + } + + for (IPath path2 : psi.includePaths) { + pathSet.add(path2); + } + + return pathSet.toArray(new IPath[0]); + } + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerFileDiscoveredPathInfo#getMacroFiles(org.eclipse.core.runtime.IPath) + */ + @Override public IPath[] getMacroFiles(IPath path) { - synchronized (fLock) { - Set pathSet = new LinkedHashSet(); - // get the command - CCommandDSC cmd = getCommand(path); - if (cmd != null) { - IPath[] paths = stringListToPathArray(cmd.getImacrosFile()); - pathSet.addAll(Arrays.asList(paths)); - } - // use project scope scanner info - if (psi == null) { - generateProjectScannerInfo(); - } - - for(IPath path2 : psi.macrosFiles) { - pathSet.add(path2); - } - - return pathSet.toArray(new IPath[0]); - } - } - - @Override + synchronized (fLock) { + Set pathSet = new LinkedHashSet(); + // get the command + CCommandDSC cmd = getCommand(path); + if (cmd != null) { + IPath[] paths = stringListToPathArray(cmd.getImacrosFile()); + pathSet.addAll(Arrays.asList(paths)); + } + // use project scope scanner info + if (psi == null) { + generateProjectScannerInfo(); + } + + for (IPath path2 : psi.macrosFiles) { + pathSet.add(path2); + } + + return pathSet.toArray(new IPath[0]); + } + } + + @Override public Map getPathInfoMap() { - synchronized (fLock) { + synchronized (fLock) { //TODO: do we need to cache this? return calculatePathInfoMap(); - } + } } /* (non-Javadoc) - * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo#getProject() - */ - @Override + * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo#getProject() + */ + @Override public IProject getProject() { - return project; - } + return project; + } - /* (non-Javadoc) - * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerFileDiscoveredPathInfo#getQuoteIncludePaths(org.eclipse.core.runtime.IPath) - */ - @Override + /* (non-Javadoc) + * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerFileDiscoveredPathInfo#getQuoteIncludePaths(org.eclipse.core.runtime.IPath) + */ + @Override public IPath[] getQuoteIncludePaths(IPath path) { - synchronized (fLock) { - Set pathSet = new LinkedHashSet(); - // get the command - CCommandDSC cmd = getCommand(path); - if (cmd != null) { - IPath[] paths = stringListToPathArray(cmd.getQuoteIncludes()); - pathSet.addAll(Arrays.asList(paths)); - } - // use project scope scanner info - if (psi == null) { - generateProjectScannerInfo(); - } - - for(IPath path2 : psi.quoteIncludePaths) { - pathSet.add(path2); - } - - return pathSet.toArray(new IPath[0]); - } - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerFileDiscoveredPathInfo#getSerializable() - */ - @Override + synchronized (fLock) { + Set pathSet = new LinkedHashSet(); + // get the command + CCommandDSC cmd = getCommand(path); + if (cmd != null) { + IPath[] paths = stringListToPathArray(cmd.getQuoteIncludes()); + pathSet.addAll(Arrays.asList(paths)); + } + // use project scope scanner info + if (psi == null) { + generateProjectScannerInfo(); + } + + for (IPath path2 : psi.quoteIncludePaths) { + pathSet.add(path2); + } + + return pathSet.toArray(new IPath[0]); + } + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerFileDiscoveredPathInfo#getSerializable() + */ + @Override public IDiscoveredScannerInfoSerializable getSerializable() { - synchronized (fLock) { - return sid; - } - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo#getSymbols() - */ - @Override + synchronized (fLock) { + return sid; + } + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo#getSymbols() + */ + @Override public Map getSymbols() { -// return new HashMap(); - synchronized (fLock) { - return getAllSymbols(); - } - } + // return new HashMap(); + synchronized (fLock) { + return getAllSymbols(); + } + } /* * (non-Javadoc) @@ -691,198 +697,195 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } } - } + } public static class ProjectScannerInfo { - public Map definedSymbols; - public IPath[] includeFiles; - public IPath[] includePaths; - public IPath[] macrosFiles; - public IPath[] quoteIncludePaths; + public Map definedSymbols; + public IPath[] includeFiles; + public IPath[] includePaths; + public IPath[] macrosFiles; + public IPath[] quoteIncludePaths; + public boolean isEmpty() { - return (includePaths.length == 0 && - quoteIncludePaths.length == 0 && - includeFiles.length == 0 && - macrosFiles.length == 0 && - definedSymbols.size() == 0); + return (includePaths.length == 0 && quoteIncludePaths.length == 0 && includeFiles.length == 0 + && macrosFiles.length == 0 && definedSymbols.size() == 0); } - } + } public class ScannerInfoData implements IDiscoveredScannerInfoSerializable { - public static final String DEFINED_SYMBOL = "definedSymbol"; //$NON-NLS-1$ - public static final String ID_ATTR = "id"; //$NON-NLS-1$ - public static final String INCLUDE_PATH = "includePath"; //$NON-NLS-1$ + public static final String DEFINED_SYMBOL = "definedSymbol"; //$NON-NLS-1$ + public static final String ID_ATTR = "id"; //$NON-NLS-1$ + public static final String INCLUDE_PATH = "includePath"; //$NON-NLS-1$ - private static final String NAME = "name"; //$NON-NLS-1$ + private static final String NAME = "name"; //$NON-NLS-1$ - public static final String PATH = "path"; //$NON-NLS-1$ - private static final String PROJECT = "project"; //$NON-NLS-1$ - public static final String REMOVED = "removed"; //$NON-NLS-1$ - public static final String SYMBOL = "symbol"; //$NON-NLS-1$ - public final Map commandIdCommandMap; // map of all commands + public static final String PATH = "path"; //$NON-NLS-1$ + private static final String PROJECT = "project"; //$NON-NLS-1$ + public static final String REMOVED = "removed"; //$NON-NLS-1$ + public static final String SYMBOL = "symbol"; //$NON-NLS-1$ + public final Map commandIdCommandMap; // map of all commands public final Map> commandIdToFilesMap; // command id and set of files it applies to - public final Map fileToCommandIdMap; // maps each file to the corresponding command id - - public ScannerInfoData() { - commandIdCommandMap = new LinkedHashMap(); // [commandId, command] - fileToCommandIdMap = new HashMap(); // [file, commandId] - commandIdToFilesMap = new HashMap>(); // [commandId, set of files] - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.make.internal.core.scannerconfig.DiscoveredScannerInfoStore.IDiscoveredScannerInfoSerializable#deserialize(org.w3c.dom.Element) - */ - @Override + public final Map fileToCommandIdMap; // maps each file to the corresponding command id + + public ScannerInfoData() { + commandIdCommandMap = new LinkedHashMap(); // [commandId, command] + fileToCommandIdMap = new HashMap(); // [file, commandId] + commandIdToFilesMap = new HashMap>(); // [commandId, set of files] + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.make.internal.core.scannerconfig.DiscoveredScannerInfoStore.IDiscoveredScannerInfoSerializable#deserialize(org.w3c.dom.Element) + */ + @Override public void deserialize(Element collectorElem) { - synchronized (fLock) { + synchronized (fLock) { - for (Node child = collectorElem.getFirstChild(); child != null; child = child.getNextSibling()) { - if(child.getNodeName().equals(PROJECT)) { - Element projectElement = (Element) child; - String projectName = projectElement.getAttribute(NAME); + for (Node child = collectorElem.getFirstChild(); child != null; child = child.getNextSibling()) { + if (child.getNodeName().equals(PROJECT)) { + Element projectElement = (Element) child; + String projectName = projectElement.getAttribute(NAME); - IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); + IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); - Map> scannerInfo = new HashMap>(); + Map> scannerInfo = new HashMap>(); - List includes = new LinkedList(); - List symbols = new LinkedList(); + List includes = new LinkedList(); + List symbols = new LinkedList(); - // iterate over children - for(Node projectChild = projectElement.getFirstChild(); projectChild != null; projectChild = projectChild.getNextSibling()) { - if(projectChild.getNodeName().equals(INCLUDE_PATH)) { - Element childElem = (Element) projectChild; - String path = childElem.getAttribute(PATH); - if(path != null) { + // iterate over children + for (Node projectChild = projectElement + .getFirstChild(); projectChild != null; projectChild = projectChild.getNextSibling()) { + if (projectChild.getNodeName().equals(INCLUDE_PATH)) { + Element childElem = (Element) projectChild; + String path = childElem.getAttribute(PATH); + if (path != null) { includes.add(path); } - } - else if(projectChild.getNodeName().equals(DEFINED_SYMBOL)) { - Element childElem = (Element) projectChild; - String symbol = childElem.getAttribute(SYMBOL); + } else if (projectChild.getNodeName().equals(DEFINED_SYMBOL)) { + Element childElem = (Element) projectChild; + String symbol = childElem.getAttribute(SYMBOL); - if(symbol != null) { + if (symbol != null) { symbols.add(symbol); } - } - } - - // add loaded scanner info to project settings for this collector - scannerInfo.put(ScannerInfoTypes.INCLUDE_PATHS, includes); - scannerInfo.put(ScannerInfoTypes.SYMBOL_DEFINITIONS, symbols); - fProjectSettingsMap.put(project, scannerInfo); - } - - - else if (child.getNodeName().equals(CC_ELEM)) { - Element cmdElem = (Element) child; - boolean cppFileType = cmdElem.getAttribute(FILE_TYPE_ATTR).equals("c++"); //$NON-NLS-1$ - XLCCommandDSC command = new XLCCommandDSC(cppFileType, project); - command.setCommandId(Integer.parseInt(cmdElem.getAttribute(ID_ATTR))); - // deserialize command - command.deserialize(cmdElem); - // get set of files the command applies to - NodeList appliesList = cmdElem.getElementsByTagName(APPLIES_TO_ATTR); - if (appliesList.getLength() > 0) { - Element appliesElem = (Element) appliesList.item(0); - NodeList fileList = appliesElem.getElementsByTagName(FILE_ELEM); - for (int i = 0; i < fileList.getLength(); ++i) { - Element fileElem = (Element) fileList.item(i); - String fileName = fileElem.getAttribute(PATH_ATTR); - IFile file = project.getFile(fileName); - addCompilerCommand(file, command); - } + } + } + + // add loaded scanner info to project settings for this collector + scannerInfo.put(ScannerInfoTypes.INCLUDE_PATHS, includes); + scannerInfo.put(ScannerInfoTypes.SYMBOL_DEFINITIONS, symbols); + fProjectSettingsMap.put(project, scannerInfo); + } + + else if (child.getNodeName().equals(CC_ELEM)) { + Element cmdElem = (Element) child; + boolean cppFileType = cmdElem.getAttribute(FILE_TYPE_ATTR).equals("c++"); //$NON-NLS-1$ + XLCCommandDSC command = new XLCCommandDSC(cppFileType, project); + command.setCommandId(Integer.parseInt(cmdElem.getAttribute(ID_ATTR))); + // deserialize command + command.deserialize(cmdElem); + // get set of files the command applies to + NodeList appliesList = cmdElem.getElementsByTagName(APPLIES_TO_ATTR); + if (appliesList.getLength() > 0) { + Element appliesElem = (Element) appliesList.item(0); + NodeList fileList = appliesElem.getElementsByTagName(FILE_ELEM); + for (int i = 0; i < fileList.getLength(); ++i) { + Element fileElem = (Element) fileList.item(i); + String fileName = fileElem.getAttribute(PATH_ATTR); + IFile file = project.getFile(fileName); + addCompilerCommand(file, command); + } applyFileDeltas(); - } - } - } - } - } - - /* (non-Javadoc) - * @see org.eclipse.cdt.make.internal.core.scannerconfig.DiscoveredScannerInfoStore.IDiscoveredScannerInfoSerializable#getCollectorId() - */ - @Override + } + } + } + } + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.make.internal.core.scannerconfig.DiscoveredScannerInfoStore.IDiscoveredScannerInfoSerializable#getCollectorId() + */ + @Override public String getCollectorId() { - return COLLECTOR_ID; - } + return COLLECTOR_ID; + } - /* (non-Javadoc) - * @see org.eclipse.cdt.make.internal.core.scannerconfig.DiscoveredScannerInfoStore.IDiscoveredScannerInfoSerializable#serialize(org.w3c.dom.Element) - */ - @Override + /* (non-Javadoc) + * @see org.eclipse.cdt.make.internal.core.scannerconfig.DiscoveredScannerInfoStore.IDiscoveredScannerInfoSerializable#serialize(org.w3c.dom.Element) + */ + @Override public void serialize(Element collectorElem) { - try { - synchronized (fLock) { - Document doc = collectorElem.getOwnerDocument(); - - // serialize project level info - for (IProject project : fProjectSettingsMap.keySet()) { - // create a project node - Element projectElement = doc.createElement(PROJECT); - projectElement.setAttribute(NAME, project.getName()); - - Map> scannerInfo = (Map>) fProjectSettingsMap.get(project); - - List includes = scannerInfo.get(ScannerInfoTypes.INCLUDE_PATHS); - for(String include : includes) { - Element pathElement = doc.createElement(INCLUDE_PATH); - pathElement.setAttribute(PATH, include); - //Boolean removed = (Boolean) includes.contains(include); - //if (removed != null && removed.booleanValue() == true) { - // pathElement.setAttribute(REMOVED, "true"); //$NON-NLS-1$ - //} - pathElement.setAttribute(REMOVED, "false"); //$NON-NLS-1$ - projectElement.appendChild(pathElement); - } + try { + synchronized (fLock) { + Document doc = collectorElem.getOwnerDocument(); + + // serialize project level info + for (IProject project : fProjectSettingsMap.keySet()) { + // create a project node + Element projectElement = doc.createElement(PROJECT); + projectElement.setAttribute(NAME, project.getName()); + + Map> scannerInfo = (Map>) fProjectSettingsMap + .get(project); + + List includes = scannerInfo.get(ScannerInfoTypes.INCLUDE_PATHS); + for (String include : includes) { + Element pathElement = doc.createElement(INCLUDE_PATH); + pathElement.setAttribute(PATH, include); + //Boolean removed = (Boolean) includes.contains(include); + //if (removed != null && removed.booleanValue() == true) { + // pathElement.setAttribute(REMOVED, "true"); //$NON-NLS-1$ + //} + pathElement.setAttribute(REMOVED, "false"); //$NON-NLS-1$ + projectElement.appendChild(pathElement); + } - // Now do the same for the symbols - List symbols = scannerInfo.get(ScannerInfoTypes.SYMBOL_DEFINITIONS); + // Now do the same for the symbols + List symbols = scannerInfo.get(ScannerInfoTypes.SYMBOL_DEFINITIONS); - for(String symbol : symbols) { + for (String symbol : symbols) { Element symbolElement = doc.createElement(DEFINED_SYMBOL); symbolElement.setAttribute(SYMBOL, symbol); projectElement.appendChild(symbolElement); + } + collectorElem.appendChild(projectElement); + } + + // serialize file level info + List commandIds = new ArrayList(commandIdCommandMap.keySet()); + Collections.sort(commandIds); + for (Iterator i = commandIds.iterator(); i.hasNext();) { + Integer commandId = i.next(); + CCommandDSC command = commandIdCommandMap.get(commandId); + + Element cmdElem = doc.createElement(CC_ELEM); + collectorElem.appendChild(cmdElem); + cmdElem.setAttribute(ID_ATTR, commandId.toString()); + cmdElem.setAttribute(FILE_TYPE_ATTR, command.appliesToCPPFileType() ? "c++" : "c"); //$NON-NLS-1$ //$NON-NLS-2$ + // write command and scanner info + command.serialize(cmdElem); + // write files command applies to + Element filesElem = doc.createElement(APPLIES_TO_ATTR); + cmdElem.appendChild(filesElem); + Set files = commandIdToFilesMap.get(commandId); + if (files != null) { + for (Iterator j = files.iterator(); j.hasNext();) { + Element fileElem = doc.createElement(FILE_ELEM); + IFile file = j.next(); + IPath path = file.getProjectRelativePath(); + fileElem.setAttribute(PATH_ATTR, path.toString()); + filesElem.appendChild(fileElem); + } + } } - collectorElem.appendChild(projectElement); } - // serialize file level info - List commandIds = new ArrayList(commandIdCommandMap.keySet()); - Collections.sort(commandIds); - for (Iterator i = commandIds.iterator(); i.hasNext(); ) { - Integer commandId = i.next(); - CCommandDSC command = commandIdCommandMap.get(commandId); - - Element cmdElem = doc.createElement(CC_ELEM); - collectorElem.appendChild(cmdElem); - cmdElem.setAttribute(ID_ATTR, commandId.toString()); - cmdElem.setAttribute(FILE_TYPE_ATTR, command.appliesToCPPFileType() ? "c++" : "c"); //$NON-NLS-1$ //$NON-NLS-2$ - // write command and scanner info - command.serialize(cmdElem); - // write files command applies to - Element filesElem = doc.createElement(APPLIES_TO_ATTR); - cmdElem.appendChild(filesElem); - Set files = commandIdToFilesMap.get(commandId); - if (files != null) { - for (Iterator j = files.iterator(); j.hasNext(); ) { - Element fileElem = doc.createElement(FILE_ELEM); - IFile file = j.next(); - IPath path = file.getProjectRelativePath(); - fileElem.setAttribute(PATH_ATTR, path.toString()); - filesElem.appendChild(fileElem); - } - } - } - } - - } - catch(Throwable e) { - e.printStackTrace(); - } - } - - } + } catch (Throwable e) { + e.printStackTrace(); + } + } + + } protected static final String APPLIES_TO_ATTR = "appliesToFiles"; //$NON-NLS-1$ @@ -896,34 +899,33 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I protected static final String ID_ATTR = "id"; //$NON-NLS-1$ - protected static final int INCLUDE_FILE = 3; + protected static final int INCLUDE_FILE = 3; - protected static final int INCLUDE_PATH = 1; + protected static final int INCLUDE_PATH = 1; - - - protected static final int MACROS_FILE = 4; + protected static final int MACROS_FILE = 4; protected static final String PATH_ATTR = "path"; //$NON-NLS-1$ protected static final int QUOTE_INCLUDE_PATH = 2; - protected static PathInfo createFilePathInfo(CCommandDSC cmd){ - IPath[] includes = stringListToPathArray(cmd.getIncludes()); - IPath[] quotedIncludes = stringListToPathArray(cmd.getQuoteIncludes()); - IPath[] incFiles = stringListToPathArray(cmd.getIncludeFile()); - IPath[] macroFiles = stringListToPathArray(cmd.getImacrosFile()); - List symbols = cmd.getSymbols(); - Map definedSymbols = new HashMap(symbols.size()); - for (Iterator i = symbols.iterator(); i.hasNext(); ) { - String symbol = (String) i.next(); - String key = ScannerConfigUtil.getSymbolKey(symbol); - String value = ScannerConfigUtil.getSymbolValue(symbol); - definedSymbols.put(key, value); - } - - return new PathInfo(includes, quotedIncludes, definedSymbols, incFiles, macroFiles); - } + protected static PathInfo createFilePathInfo(CCommandDSC cmd) { + IPath[] includes = stringListToPathArray(cmd.getIncludes()); + IPath[] quotedIncludes = stringListToPathArray(cmd.getQuoteIncludes()); + IPath[] incFiles = stringListToPathArray(cmd.getIncludeFile()); + IPath[] macroFiles = stringListToPathArray(cmd.getImacrosFile()); + List symbols = cmd.getSymbols(); + Map definedSymbols = new HashMap(symbols.size()); + for (Iterator i = symbols.iterator(); i.hasNext();) { + String symbol = (String) i.next(); + String key = ScannerConfigUtil.getSymbolKey(symbol); + String value = ScannerConfigUtil.getSymbolValue(symbol); + definedSymbols.put(key, value); + } + + return new PathInfo(includes, quotedIncludes, definedSymbols, incFiles, macroFiles); + } + /** * @param discovered * @param allIncludes @@ -931,48 +933,49 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I */ protected static IPath[] stringListToPathArray(List discovered) { List allIncludes = new ArrayList(discovered.size()); - for (Iterator j = discovered.iterator(); j.hasNext(); ) { - String include = j.next(); - if (!allIncludes.contains(include)) { - allIncludes.add(new Path(include)); - } + for (Iterator j = discovered.iterator(); j.hasNext();) { + String include = j.next(); + if (!allIncludes.contains(include)) { + allIncludes.add(new Path(include)); + } } return allIncludes.toArray(new IPath[allIncludes.size()]); } + protected int commandIdCounter = 0; protected InfoContext context; - /** monitor for data access */ - protected final Object fLock = new Object(); + /** monitor for data access */ + protected final Object fLock = new Object(); - private Map> fProjectSettingsMap = new HashMap>(); + private Map> fProjectSettingsMap = new HashMap>(); - protected final SortedSet freeCommandIdPool; // sorted set of free command ids + protected final SortedSet freeCommandIdPool; // sorted set of free command ids protected IProject project; - protected ProjectScannerInfo psi = null; // sum of all scanner info - protected final List siChangedForCommandIdList; // list of command ids for which scanner info has changed + protected ProjectScannerInfo psi = null; // sum of all scanner info + protected final List siChangedForCommandIdList; // list of command ids for which scanner info has changed // protected List siChangedForFileList; // list of files for which scanner info has changed - protected final Map siChangedForFileMap; // (file, comandId) map for deltas + protected final Map siChangedForFileMap; // (file, comandId) map for deltas protected ScannerInfoData sid; // scanner info data /** - * - */ - public PerFileXLCScannerInfoCollector() { - sid = new ScannerInfoData(); + * + */ + public PerFileXLCScannerInfoCollector() { + sid = new ScannerInfoData(); -// siChangedForFileList = new ArrayList(); + // siChangedForFileList = new ArrayList(); siChangedForFileMap = new HashMap(); siChangedForCommandIdList = new ArrayList(); - freeCommandIdPool = new TreeSet(); - } + freeCommandIdPool = new TreeSet(); + } - /** - * @param file - * @param object - */ - protected void addCompilerCommand(IFile file, CCommandDSC cmd) { + /** + * @param file + * @param object + */ + protected void addCompilerCommand(IFile file, CCommandDSC cmd) { synchronized (fLock) { List existingCommands = new ArrayList(sid.commandIdCommandMap.values()); int index = existingCommands.indexOf(cmd); @@ -995,11 +998,11 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } } - /** - * @param commandId - * @param scannerInfo - */ - protected void addScannerInfo(Integer commandId, Map scannerInfo) { + /** + * @param commandId + * @param scannerInfo + */ + protected void addScannerInfo(Integer commandId, Map scannerInfo) { synchronized (fLock) { CCommandDSC cmd = sid.commandIdCommandMap.get(commandId); if (cmd != null) { @@ -1019,15 +1022,16 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } } - /** - * @param type - * @param object - */ - protected void addScannerInfo(ScannerInfoTypes type, List delta) { - // TODO Auto-generated method stub + /** + * @param type + * @param object + */ + protected void addScannerInfo(ScannerInfoTypes type, List delta) { + // TODO Auto-generated method stub + + } - } - /** + /** * @param file * @param cmd */ @@ -1077,7 +1081,6 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } } - protected Map calculatePathInfoMap() { synchronized (fLock) { Map map = new HashMap(sid.fileToCommandIdMap.size() + 1); @@ -1113,19 +1116,18 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I @Override public void contributeToScannerConfig(Object resource, Map scannerInfo) { - // check the resource - String errorMessage = null; - if (resource == null) { - errorMessage = "resource is null";//$NON-NLS-1$ - } - else if (resource instanceof Integer) { - synchronized (fLock) { - addScannerInfo(((Integer)resource), scannerInfo); + // check the resource + String errorMessage = null; + if (resource == null) { + errorMessage = "resource is null";//$NON-NLS-1$ + } else if (resource instanceof Integer) { + synchronized (fLock) { + addScannerInfo(((Integer) resource), scannerInfo); } - return; - } + return; + } - if ((resource instanceof IFile)) { + if ((resource instanceof IFile)) { if (((IFile) resource).getProject() == null) { errorMessage = "project is null";//$NON-NLS-1$ @@ -1154,27 +1156,28 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } } - else if(resource instanceof IProject) { - // save to project level settings - synchronized (fLock) { - fProjectSettingsMap.put(((IProject) resource), scannerInfo); - } - } + else if (resource instanceof IProject) { + // save to project level settings + synchronized (fLock) { + fProjectSettingsMap.put(((IProject) resource), scannerInfo); + } + } - else { // error - TraceUtil.outputError("PerFileSICollector.contributeToScannerConfig : ", "Not a project or file."); //$NON-NLS-1$ //$NON-NLS-2$ + else { // error + TraceUtil.outputError("PerFileSICollector.contributeToScannerConfig : ", "Not a project or file."); //$NON-NLS-1$ //$NON-NLS-2$ return; - } - } + } + } - /* (non-Javadoc) - * @see org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector2#createPathInfoObject() - */ - @Override + /* (non-Javadoc) + * @see org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector2#createPathInfoObject() + */ + @Override public IDiscoveredPathInfo createPathInfoObject() { - return new PerFileDiscoveredPathInfo(); - } - /* (non-Javadoc) + return new PerFileDiscoveredPathInfo(); + } + + /* (non-Javadoc) * @see org.eclipse.cdt.make.internal.core.scannerconfig2.PerFileSICollector#deleteAll(org.eclipse.core.resources.IResource) */ public void deleteAll(IResource resource) { @@ -1185,32 +1188,32 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } } - /* (non-Javadoc) - * @see org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollectorCleaner#deleteAll(org.eclipse.core.resources.IResource) - */ - public void deleteAll1(IResource resource) { - if (resource.equals(project)) { - synchronized (fLock) { -// siChangedForFileList = new ArrayList(); - siChangedForFileMap.clear(); - Set changedFiles = sid.fileToCommandIdMap.keySet(); - for (Iterator i = changedFiles.iterator(); i.hasNext(); ) { - IFile file = i.next(); -// IPath path = file.getFullPath(); -// siChangedForFileList.add(path); - siChangedForFileMap.put(file, null); - } - - sid = new ScannerInfoData(); - psi = null; - - commandIdCounter = 0; + /* (non-Javadoc) + * @see org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollectorCleaner#deleteAll(org.eclipse.core.resources.IResource) + */ + public void deleteAll1(IResource resource) { + if (resource.equals(project)) { + synchronized (fLock) { + // siChangedForFileList = new ArrayList(); + siChangedForFileMap.clear(); + Set changedFiles = sid.fileToCommandIdMap.keySet(); + for (Iterator i = changedFiles.iterator(); i.hasNext();) { + IFile file = i.next(); + // IPath path = file.getFullPath(); + // siChangedForFileList.add(path); + siChangedForFileMap.put(file, null); + } + + sid = new ScannerInfoData(); + psi = null; + + commandIdCounter = 0; freeCommandIdPool.clear(); - } - } - } + } + } + } - /* + /* * (non-Javadoc) * * @see @@ -1225,7 +1228,7 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } } - /* + /* * (non-Javadoc) * * @see @@ -1240,7 +1243,7 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } } - /* + /* * (non-Javadoc) * * @see @@ -1270,7 +1273,7 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } } - /** + /** * @param file * @param cmd */ @@ -1289,7 +1292,7 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } } - protected void generateProjectScannerInfo() { + protected void generateProjectScannerInfo() { synchronized (fLock) { psi = new ProjectScannerInfo(); psi.includePaths = getAllIncludePaths(INCLUDE_PATH); @@ -1300,7 +1303,7 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } } - /* (non-Javadoc) + /* (non-Javadoc) * @see org.eclipse.cdt.make.internal.core.scannerconfig2.PerFileSICollector#getAllIncludePaths(int) */ protected IPath[] getAllIncludePaths(int type) { @@ -1333,15 +1336,15 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } /** - * @param type can be one of the following: - *
  • INCLUDE_PATH - *
  • QUOTE_INCLUDE_PATH - *
  • INCLUDE_FILE - *
  • MACROS_FILE - * - * @return list of IPath(s). - */ - protected IPath[] getAllIncludePaths1(int type) { + * @param type can be one of the following: + *
  • INCLUDE_PATH + *
  • QUOTE_INCLUDE_PATH + *
  • INCLUDE_FILE + *
  • MACROS_FILE + * + * @return list of IPath(s). + */ + protected IPath[] getAllIncludePaths1(int type) { synchronized (fLock) { List allIncludes = new ArrayList(); for (Iterator i = sid.commandIdCommandMap.keySet().iterator(); i.hasNext();) { @@ -1404,7 +1407,7 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I for (String symbol : projectSymbols) { if (symbol.matches("_Builtin")) //$NON-NLS-1$ - symbols.put(symbol,""); //$NON-NLS-1$ + symbols.put(symbol, ""); //$NON-NLS-1$ else symbols.put(symbol, "1"); //$NON-NLS-1$ } @@ -1419,10 +1422,10 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } } - /** - * @return - */ - protected Map getAllSymbols1() { + /** + * @return + */ + protected Map getAllSymbols1() { synchronized (fLock) { Map symbols = new HashMap(); for (Iterator i = sid.commandIdCommandMap.keySet().iterator(); i.hasNext();) { @@ -1442,75 +1445,71 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } } - /* (non-Javadoc) - * @see org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector#getCollectedScannerInfo(java.lang.Object, org.eclipse.cdt.make.core.scannerconfig.ScannerInfoTypes) - */ - @Override + /* (non-Javadoc) + * @see org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector#getCollectedScannerInfo(java.lang.Object, org.eclipse.cdt.make.core.scannerconfig.ScannerInfoTypes) + */ + @Override public List getCollectedScannerInfo(Object resource, ScannerInfoTypes type) { - List rv = new ArrayList(); - // check the resource - String errorMessage = null; - if (resource == null) { - errorMessage = "resource is null";//$NON-NLS-1$ - } - else if (!(resource instanceof IResource)) { - errorMessage = "resource is not an IResource";//$NON-NLS-1$ - } - else if (((IResource) resource).getProject() == null) { - errorMessage = "project is null";//$NON-NLS-1$ - } - else if (((IResource) resource).getProject() != project) { - errorMessage = "wrong project";//$NON-NLS-1$ - } - - if (errorMessage != null) { - TraceUtil.outputError("PerProjectSICollector.getCollectedScannerInfo : ", errorMessage); //$NON-NLS-1$ - return rv; - } - if (project.equals(((IResource)resource).getProject())) { - if (type.equals(ScannerInfoTypes.COMPILER_COMMAND)) { - synchronized (fLock) { - for (Iterator i = sid.commandIdCommandMap.keySet().iterator(); i.hasNext(); ) { - Integer cmdId = i.next(); - Set fileSet = sid.commandIdToFilesMap.get(cmdId); - if (fileSet != null && !fileSet.isEmpty()) { - rv.add(sid.commandIdCommandMap.get(cmdId)); - } - } - } - } - else if (type.equals(ScannerInfoTypes.UNDISCOVERED_COMPILER_COMMAND)) { -// if (!siChangedForFileList.isEmpty()) { - synchronized (fLock) { - if (scannerInfoChanged()) { - if (siChangedForCommandIdList.isEmpty()) { -// for (Iterator i = siChangedForFileList.iterator(); i.hasNext(); ) { - for (Iterator i = siChangedForFileMap.keySet().iterator(); i.hasNext(); ) { -// IPath path = (IPath) i.next(); - IFile file = (IFile) i.next(); - Integer cmdId = siChangedForFileMap.get(file); - if (cmdId != null) { - if (!siChangedForCommandIdList.contains(cmdId)) { - siChangedForCommandIdList.add(cmdId); - } - } - } - } - Collections.sort(siChangedForCommandIdList); - for (Iterator i = siChangedForCommandIdList.iterator(); i.hasNext(); ) { - Integer cmdId = i.next(); - CCommandDSC command = sid.commandIdCommandMap.get(cmdId); - rv.add(command); - } - } - } - } - } - return rv; - } - - protected CCommandDSC getCommand(IFile file) { + List rv = new ArrayList(); + // check the resource + String errorMessage = null; + if (resource == null) { + errorMessage = "resource is null";//$NON-NLS-1$ + } else if (!(resource instanceof IResource)) { + errorMessage = "resource is not an IResource";//$NON-NLS-1$ + } else if (((IResource) resource).getProject() == null) { + errorMessage = "project is null";//$NON-NLS-1$ + } else if (((IResource) resource).getProject() != project) { + errorMessage = "wrong project";//$NON-NLS-1$ + } + + if (errorMessage != null) { + TraceUtil.outputError("PerProjectSICollector.getCollectedScannerInfo : ", errorMessage); //$NON-NLS-1$ + return rv; + } + if (project.equals(((IResource) resource).getProject())) { + if (type.equals(ScannerInfoTypes.COMPILER_COMMAND)) { + synchronized (fLock) { + for (Iterator i = sid.commandIdCommandMap.keySet().iterator(); i.hasNext();) { + Integer cmdId = i.next(); + Set fileSet = sid.commandIdToFilesMap.get(cmdId); + if (fileSet != null && !fileSet.isEmpty()) { + rv.add(sid.commandIdCommandMap.get(cmdId)); + } + } + } + } else if (type.equals(ScannerInfoTypes.UNDISCOVERED_COMPILER_COMMAND)) { + // if (!siChangedForFileList.isEmpty()) { + synchronized (fLock) { + if (scannerInfoChanged()) { + if (siChangedForCommandIdList.isEmpty()) { + // for (Iterator i = siChangedForFileList.iterator(); i.hasNext(); ) { + for (Iterator i = siChangedForFileMap.keySet().iterator(); i.hasNext();) { + // IPath path = (IPath) i.next(); + IFile file = (IFile) i.next(); + Integer cmdId = siChangedForFileMap.get(file); + if (cmdId != null) { + if (!siChangedForCommandIdList.contains(cmdId)) { + siChangedForCommandIdList.add(cmdId); + } + } + } + } + Collections.sort(siChangedForCommandIdList); + for (Iterator i = siChangedForCommandIdList.iterator(); i.hasNext();) { + Integer cmdId = i.next(); + CCommandDSC command = sid.commandIdCommandMap.get(cmdId); + rv.add(command); + } + } + } + } + } + return rv; + } + + protected CCommandDSC getCommand(IFile file) { synchronized (fLock) { CCommandDSC cmd = null; if (file != null) { @@ -1524,11 +1523,11 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } } - /** - * @param path - * @return - */ - protected CCommandDSC getCommand(IPath path) { + /** + * @param path + * @return + */ + protected CCommandDSC getCommand(IPath path) { synchronized (fLock) { try { IFile file = project.getWorkspace().getRoot().getFile(path); @@ -1539,7 +1538,7 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } } - /* (non-Javadoc) + /* (non-Javadoc) * @see org.eclipse.cdt.managedbuilder.scannerconfig.IManagedScannerInfoCollector#getDefinedSymbols() */ @Override @@ -1549,7 +1548,7 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } } - /* (non-Javadoc) + /* (non-Javadoc) * @see org.eclipse.cdt.managedbuilder.scannerconfig.IManagedScannerInfoCollector#getIncludePaths() */ @Override @@ -1568,11 +1567,11 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } } - protected InfoContext getInfoContext() { + protected InfoContext getInfoContext() { return context; } - protected void removeUnusedCommands() { + protected void removeUnusedCommands() { synchronized (fLock) { for (Iterator i = sid.commandIdToFilesMap.entrySet().iterator(); i.hasNext();) { Entry entry = (Entry) i.next(); @@ -1600,13 +1599,13 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } } - protected boolean scannerInfoChanged() { - synchronized (fLock) { - return (!fProjectSettingsMap.isEmpty()) || !siChangedForFileMap.isEmpty(); - } + protected boolean scannerInfoChanged() { + synchronized (fLock) { + return (!fProjectSettingsMap.isEmpty()) || !siChangedForFileMap.isEmpty(); + } } - @Override + @Override public void setInfoContext(InfoContext context) { synchronized (fLock) { this.project = context.getProject(); @@ -1622,83 +1621,79 @@ public class PerFileXLCScannerInfoCollector implements IScannerInfoCollector3, I } /* (non-Javadoc) - * @see org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector2#setProject(org.eclipse.core.resources.IProject) - */ - @Override + * @see org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector2#setProject(org.eclipse.core.resources.IProject) + */ + @Override public void setProject(IProject project) { - synchronized (fLock) { + synchronized (fLock) { setInfoContext(new InfoContext(project)); } - } + } - @Override + @Override public void updateScannerConfiguration(IProgressMonitor monitor) throws CoreException { - if (monitor == null) { - monitor = new NullProgressMonitor(); - } - monitor.beginTask(Messages.getString("ScannerInfoCollector.Processing"), 100); //$NON-NLS-1$ - monitor.subTask(Messages.getString("ScannerInfoCollector.Processing")); //$NON-NLS-1$ - ArrayList changedResources = new ArrayList(); - synchronized (fLock) { - if (scannerInfoChanged()) { - applyFileDeltas(); - removeUnusedCommands(); - changedResources.addAll(siChangedForFileMap.keySet()); - siChangedForFileMap.clear(); - } - siChangedForCommandIdList.clear(); - - // add in any projects that got project level info (from the specs provider) - changedResources.addAll(fProjectSettingsMap.keySet()); - - monitor.worked(50); - if (!changedResources.isEmpty()) { - // update outside monitor scope - try { - // update scanner configuration - monitor.subTask(Messages.getString("ScannerInfoCollector.Updating") + project.getName()); //$NON-NLS-1$ - IDiscoveredPathInfo pathInfo = MakeCorePlugin.getDefault().getDiscoveryManager().getDiscoveredInfo(project, context); - //IDiscoveredPathInfo pathInfo = new PerFileDiscoveredPathInfo(); - if (!(pathInfo instanceof IPerFileDiscoveredPathInfo)) { - pathInfo = createPathInfoObject(); - } - else { - PerFileDiscoveredPathInfo perFilePathInfo = new PerFileDiscoveredPathInfo(); - - // merge them - if (!(pathInfo instanceof IPerFileDiscoveredPathInfo)) { - pathInfo = new MergedPerFileDiscoveredPathInfo(pathInfo, perFilePathInfo); - } - else { - pathInfo = perFilePathInfo; - } - } - - - Job job = new ScannerConfigUpdateJob(context, pathInfo, context.isDefaultContext(), changedResources); - ISchedulingRule rule = ResourcesPlugin.getWorkspace().getRoot(); - job.setRule(rule); - job.schedule(); - - - -// } finally { -// manager.endRule(rule); -// } - - } catch (CoreException e) { - MakeCorePlugin.log(e); - } - - catch (Throwable e) { - e.printStackTrace(); - } - } - } - - - monitor.worked(50); - monitor.done(); + if (monitor == null) { + monitor = new NullProgressMonitor(); + } + monitor.beginTask(Messages.getString("ScannerInfoCollector.Processing"), 100); //$NON-NLS-1$ + monitor.subTask(Messages.getString("ScannerInfoCollector.Processing")); //$NON-NLS-1$ + ArrayList changedResources = new ArrayList(); + synchronized (fLock) { + if (scannerInfoChanged()) { + applyFileDeltas(); + removeUnusedCommands(); + changedResources.addAll(siChangedForFileMap.keySet()); + siChangedForFileMap.clear(); + } + siChangedForCommandIdList.clear(); + + // add in any projects that got project level info (from the specs provider) + changedResources.addAll(fProjectSettingsMap.keySet()); + + monitor.worked(50); + if (!changedResources.isEmpty()) { + // update outside monitor scope + try { + // update scanner configuration + monitor.subTask(Messages.getString("ScannerInfoCollector.Updating") + project.getName()); //$NON-NLS-1$ + IDiscoveredPathInfo pathInfo = MakeCorePlugin.getDefault().getDiscoveryManager() + .getDiscoveredInfo(project, context); + //IDiscoveredPathInfo pathInfo = new PerFileDiscoveredPathInfo(); + if (!(pathInfo instanceof IPerFileDiscoveredPathInfo)) { + pathInfo = createPathInfoObject(); + } else { + PerFileDiscoveredPathInfo perFilePathInfo = new PerFileDiscoveredPathInfo(); + + // merge them + if (!(pathInfo instanceof IPerFileDiscoveredPathInfo)) { + pathInfo = new MergedPerFileDiscoveredPathInfo(pathInfo, perFilePathInfo); + } else { + pathInfo = perFilePathInfo; + } + } + + Job job = new ScannerConfigUpdateJob(context, pathInfo, context.isDefaultContext(), + changedResources); + ISchedulingRule rule = ResourcesPlugin.getWorkspace().getRoot(); + job.setRule(rule); + job.schedule(); + + // } finally { + // manager.endRule(rule); + // } + + } catch (CoreException e) { + MakeCorePlugin.log(e); + } + + catch (Throwable e) { + e.printStackTrace(); + } + } + } + + monitor.worked(50); + monitor.done(); } } \ No newline at end of file diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCBuildOutputParserUtility.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCBuildOutputParserUtility.java index 4fc81495911..6e7e3048fe1 100644 --- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCBuildOutputParserUtility.java +++ b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCBuildOutputParserUtility.java @@ -47,49 +47,51 @@ import org.eclipse.core.runtime.Path; * */ public class XLCBuildOutputParserUtility { - protected class Problem { - protected String description; - protected IResource file; - protected int lineNumber; - protected int severity; - protected String variableName; - - public Problem(IResource file, int lineNumber, String desciption, int severity, String variableName) { - this.file = file; - this.lineNumber = lineNumber; - this.description = desciption; - this.severity = severity; - this.variableName = variableName; - } - } - public static IPath convertCygpath(IPath path) { - if (path.segmentCount() > 1 && path.segment(0).equals("cygdrive")) { //$NON-NLS-1$ - StringBuilder buf = new StringBuilder(2); - buf.append(Character.toUpperCase(path.segment(1).charAt(0))); - buf.append(':'); - path = path.removeFirstSegments(2); - path = path.setDevice(buf.toString()); - path = path.makeAbsolute(); - } - return path; - } - private List commandsList2; - private int commandsN = 0; - private List compiledFileList; - - private Map directoryCommandListMap; - - private IPath fBaseDirectory; - private String fDefaultMacroDefinitionValue= "1"; //$NON-NLS-1$ - private Vector fDirectoryStack; - private ArrayList fErrors; - private int filesN = 0; - - private IMarkerGenerator fMarkerGenerator; - - private IProject project; - - private int workingDirsN = 0; + protected class Problem { + protected String description; + protected IResource file; + protected int lineNumber; + protected int severity; + protected String variableName; + + public Problem(IResource file, int lineNumber, String desciption, int severity, String variableName) { + this.file = file; + this.lineNumber = lineNumber; + this.description = desciption; + this.severity = severity; + this.variableName = variableName; + } + } + + public static IPath convertCygpath(IPath path) { + if (path.segmentCount() > 1 && path.segment(0).equals("cygdrive")) { //$NON-NLS-1$ + StringBuilder buf = new StringBuilder(2); + buf.append(Character.toUpperCase(path.segment(1).charAt(0))); + buf.append(':'); + path = path.removeFirstSegments(2); + path = path.setDevice(buf.toString()); + path = path.makeAbsolute(); + } + return path; + } + + private List commandsList2; + private int commandsN = 0; + private List compiledFileList; + + private Map directoryCommandListMap; + + private IPath fBaseDirectory; + private String fDefaultMacroDefinitionValue = "1"; //$NON-NLS-1$ + private Vector fDirectoryStack; + private ArrayList fErrors; + private int filesN = 0; + + private IMarkerGenerator fMarkerGenerator; + + private IProject project; + + private int workingDirsN = 0; /* * For tracking the location of files being compiled @@ -98,28 +100,28 @@ public class XLCBuildOutputParserUtility { private List fCollectedFiles; private List fNameConflicts; - protected XLCBuildOutputParserUtility(IPath baseDirectory, IPath workingDirectory){ + protected XLCBuildOutputParserUtility(IPath baseDirectory, IPath workingDirectory) { fDirectoryStack = new Vector(); - fErrors = new ArrayList(); - this.fBaseDirectory = baseDirectory; - if (workingDirectory != null) { - pushDirectory(workingDirectory); - } + fErrors = new ArrayList(); + this.fBaseDirectory = baseDirectory; + if (workingDirectory != null) { + pushDirectory(workingDirectory); + } } + /** - * - */ - public XLCBuildOutputParserUtility(IProject project, IPath workingDirectory, - IMarkerGenerator markerGenerator) { - fDirectoryStack = new Vector(); - fErrors = new ArrayList(); - this.project = project; - fBaseDirectory = getPathForResource(project); - if (workingDirectory != null) { - pushDirectory(workingDirectory); - } - } + * + */ + public XLCBuildOutputParserUtility(IProject project, IPath workingDirectory, IMarkerGenerator markerGenerator) { + fDirectoryStack = new Vector(); + fErrors = new ArrayList(); + this.project = project; + fBaseDirectory = getPathForResource(project); + if (workingDirectory != null) { + pushDirectory(workingDirectory); + } + } private IPath getPathForResource(IResource resource) { // TODO: when the file system utility stuff is in, this will have to call it to get the path @@ -129,354 +131,339 @@ public class XLCBuildOutputParserUtility { return path; } - /** - * Adds a mapping filename, generic_command - * @param longFileName - * @param genericLine - */ - void addGenericCommandForFile(String longFileName, String genericCommand) { - // if a file name has already been added once, return - if (compiledFileList.contains(longFileName)) - return; - compiledFileList.add(longFileName); - - String workingDir = getWorkingDirectory().toString(); - List directoryCommandList = (List) directoryCommandListMap.get(workingDir); - if (directoryCommandList == null) { - directoryCommandList = new ArrayList(); - directoryCommandListMap.put(workingDir, directoryCommandList); - ++workingDirsN; - } - Map command21FileListMap = null; - for (Iterator i = directoryCommandList.iterator(); i.hasNext(); ) { - command21FileListMap = (Map) i.next(); - List fileList = (List) command21FileListMap.get(genericCommand); - if (fileList != null) { - if (!fileList.contains(longFileName)) { - fileList.add(longFileName); - ++filesN; - } - return; - } - } - command21FileListMap = new HashMap(1); - directoryCommandList.add(command21FileListMap); - ++commandsN; - List fileList = new ArrayList(); - command21FileListMap.put(genericCommand, fileList); - fileList.add(longFileName); - ++filesN; - } - - /** - * Adds a mapping command line -> file, this time without a dir - * @param longFileName - * @param genericLine - */ - void addGenericCommandForFile2(String longFileName, String genericLine) { - // if a file name has already been added once, return - if (compiledFileList.contains(longFileName)) - return; - compiledFileList.add(longFileName); - - String[] tokens = genericLine.split("\\s+"); //$NON-NLS-1$ - CCommandDSC command = getNewCCommandDSC(tokens, 0, false); // assume .c file type - int index = commandsList2.indexOf(command); - if (index == -1) { - commandsList2.add(command); - ++commandsN; - } - else { - command = (CCommandDSC) commandsList2.get(index); - } -// // add a file -// command.addFile(longFileName); -// ++filesN; - } - - public void changeMakeDirectory(String dir, int dirLevel, boolean enterDir) { - if (enterDir) { - /* Sometimes make screws up the output, so - * "leave" events can't be seen. Double-check level - * here. - */ - for (int parseLevel = getDirectoryLevel(); dirLevel < parseLevel; parseLevel = getDirectoryLevel()) { - popDirectory(); - } - pushDirectory(new Path(dir)); - } else { - popDirectory(); - /* Could check to see if they match */ - } - } - - /** - * Called by the console line parsers to generate a problem marker. - */ - public void generateMarker(IResource file, int lineNumber, String desc, int severity, String varName) { - // No need to collect markers if marker generator is not present - if (fMarkerGenerator != null) { - Problem problem = new Problem(file, lineNumber, desc, severity, varName); - fErrors.add(problem); - } - } - - /** - * - */ - void generateReport() { - TraceUtil.metricsTrace("Stats for directory ", //$NON-NLS-1$ - "Generic command: '", "' applicable for:", //$NON-NLS-1$ //$NON-NLS-2$ - directoryCommandListMap); - TraceUtil.summaryTrace("Discovery summary", workingDirsN, commandsN, filesN); //$NON-NLS-1$ - } - - /** - * @param filePath : String - * @return filePath : IPath - not null - */ - public IPath getAbsolutePath(String filePath) { - IPath pFilePath; - if (filePath.startsWith("/")) { //$NON-NLS-1$ - return convertCygpath(new Path(filePath)); - } - else if (filePath.startsWith("\\") || //$NON-NLS-1$ - (!filePath.startsWith(".") && //$NON-NLS-1$ - filePath.length() > 2 && filePath.charAt(1) == ':' && - (filePath.charAt(2) == '\\' || filePath.charAt(2) == '/'))) { - // absolute path - pFilePath = new Path(filePath); - } - else { - // relative path - IPath cwd = getWorkingDirectory(); - if (!cwd.isAbsolute()) { - cwd = getBaseDirectory().append(cwd); - } - if (filePath.startsWith("`pwd`")) { //$NON-NLS-1$ - if (filePath.length() > 5 && (filePath.charAt(5) == '/' || filePath.charAt(5) == '\\')) { - filePath = filePath.substring(6); - } - else { - filePath = filePath.substring(5); - } - } - pFilePath = cwd.append(filePath); - } - return pFilePath; - } - /** - * @return Returns the fBaseDirectory. - */ - public IPath getBaseDirectory() { - return fBaseDirectory; - } - - /** - * Returns all CCommandDSC collected so far. - * Currently this list is not filled, so it will always return an empty list. - * @return List of CCommandDSC - */ - public List getCCommandDSCList() { - return new ArrayList(commandsList2); - } - - protected int getDirectoryLevel() { - return fDirectoryStack.size(); - } - /** - * @return Returns the fDirectoryStack. - */ - protected Vector getDirectoryStack() { - return fDirectoryStack; - } - /** - * @return Returns the fErrors. - */ - protected ArrayList getErrors() { - return fErrors; - } /** - * @return Returns the fMarkerGenerator. - */ - protected IMarkerGenerator getMarkerGenerator() { - return fMarkerGenerator; - } - - /** - * @param genericLine - * @param cppFileType - * @return CCommandDSC compile command description - */ - public CCommandDSC getNewCCommandDSC(String[] tokens, final int idxOfCompilerCommand, boolean cppFileType) { + * Adds a mapping filename, generic_command + * @param longFileName + * @param genericLine + */ + void addGenericCommandForFile(String longFileName, String genericCommand) { + // if a file name has already been added once, return + if (compiledFileList.contains(longFileName)) + return; + compiledFileList.add(longFileName); + + String workingDir = getWorkingDirectory().toString(); + List directoryCommandList = (List) directoryCommandListMap.get(workingDir); + if (directoryCommandList == null) { + directoryCommandList = new ArrayList(); + directoryCommandListMap.put(workingDir, directoryCommandList); + ++workingDirsN; + } + Map command21FileListMap = null; + for (Iterator i = directoryCommandList.iterator(); i.hasNext();) { + command21FileListMap = (Map) i.next(); + List fileList = (List) command21FileListMap.get(genericCommand); + if (fileList != null) { + if (!fileList.contains(longFileName)) { + fileList.add(longFileName); + ++filesN; + } + return; + } + } + command21FileListMap = new HashMap(1); + directoryCommandList.add(command21FileListMap); + ++commandsN; + List fileList = new ArrayList(); + command21FileListMap.put(genericCommand, fileList); + fileList.add(longFileName); + ++filesN; + } + + /** + * Adds a mapping command line -> file, this time without a dir + * @param longFileName + * @param genericLine + */ + void addGenericCommandForFile2(String longFileName, String genericLine) { + // if a file name has already been added once, return + if (compiledFileList.contains(longFileName)) + return; + compiledFileList.add(longFileName); + + String[] tokens = genericLine.split("\\s+"); //$NON-NLS-1$ + CCommandDSC command = getNewCCommandDSC(tokens, 0, false); // assume .c file type + int index = commandsList2.indexOf(command); + if (index == -1) { + commandsList2.add(command); + ++commandsN; + } else { + command = (CCommandDSC) commandsList2.get(index); + } + // // add a file + // command.addFile(longFileName); + // ++filesN; + } + + public void changeMakeDirectory(String dir, int dirLevel, boolean enterDir) { + if (enterDir) { + /* Sometimes make screws up the output, so + * "leave" events can't be seen. Double-check level + * here. + */ + for (int parseLevel = getDirectoryLevel(); dirLevel < parseLevel; parseLevel = getDirectoryLevel()) { + popDirectory(); + } + pushDirectory(new Path(dir)); + } else { + popDirectory(); + /* Could check to see if they match */ + } + } + + /** + * Called by the console line parsers to generate a problem marker. + */ + public void generateMarker(IResource file, int lineNumber, String desc, int severity, String varName) { + // No need to collect markers if marker generator is not present + if (fMarkerGenerator != null) { + Problem problem = new Problem(file, lineNumber, desc, severity, varName); + fErrors.add(problem); + } + } + + /** + * + */ + void generateReport() { + TraceUtil.metricsTrace("Stats for directory ", //$NON-NLS-1$ + "Generic command: '", "' applicable for:", //$NON-NLS-1$ //$NON-NLS-2$ + directoryCommandListMap); + TraceUtil.summaryTrace("Discovery summary", workingDirsN, commandsN, filesN); //$NON-NLS-1$ + } + + /** + * @param filePath : String + * @return filePath : IPath - not null + */ + public IPath getAbsolutePath(String filePath) { + IPath pFilePath; + if (filePath.startsWith("/")) { //$NON-NLS-1$ + return convertCygpath(new Path(filePath)); + } else if (filePath.startsWith("\\") || //$NON-NLS-1$ + (!filePath.startsWith(".") && //$NON-NLS-1$ + filePath.length() > 2 && filePath.charAt(1) == ':' + && (filePath.charAt(2) == '\\' || filePath.charAt(2) == '/'))) { + // absolute path + pFilePath = new Path(filePath); + } else { + // relative path + IPath cwd = getWorkingDirectory(); + if (!cwd.isAbsolute()) { + cwd = getBaseDirectory().append(cwd); + } + if (filePath.startsWith("`pwd`")) { //$NON-NLS-1$ + if (filePath.length() > 5 && (filePath.charAt(5) == '/' || filePath.charAt(5) == '\\')) { + filePath = filePath.substring(6); + } else { + filePath = filePath.substring(5); + } + } + pFilePath = cwd.append(filePath); + } + return pFilePath; + } + + /** + * @return Returns the fBaseDirectory. + */ + public IPath getBaseDirectory() { + return fBaseDirectory; + } + + /** + * Returns all CCommandDSC collected so far. + * Currently this list is not filled, so it will always return an empty list. + * @return List of CCommandDSC + */ + public List getCCommandDSCList() { + return new ArrayList(commandsList2); + } + + protected int getDirectoryLevel() { + return fDirectoryStack.size(); + } + + /** + * @return Returns the fDirectoryStack. + */ + protected Vector getDirectoryStack() { + return fDirectoryStack; + } + + /** + * @return Returns the fErrors. + */ + protected ArrayList getErrors() { + return fErrors; + } + + /** + * @return Returns the fMarkerGenerator. + */ + protected IMarkerGenerator getMarkerGenerator() { + return fMarkerGenerator; + } + + /** + * @param genericLine + * @param cppFileType + * @return CCommandDSC compile command description + */ + public CCommandDSC getNewCCommandDSC(String[] tokens, final int idxOfCompilerCommand, boolean cppFileType) { ArrayList dirafter = new ArrayList(); ArrayList includes = new ArrayList(); - XLCCommandDSC command = new XLCCommandDSC(cppFileType, getProject()); - command.addSCOption(new KVStringPair(SCDOptionsEnum.COMMAND.toString(), tokens[idxOfCompilerCommand])); - for (int i = idxOfCompilerCommand+1; i < tokens.length; ++i) { - String token = tokens[i]; - //Target specific options: see GccScannerInfoConsoleParser - if (token.startsWith("-m") || //$NON-NLS-1$ - token.equals("-ansi") || //$NON-NLS-1$ - token.equals("-posix") || //$NON-NLS-1$ - token.equals("-pthread") || //$NON-NLS-1$ - token.startsWith("-O") || //$NON-NLS-1$ - token.equals("-fno-inline") || //$NON-NLS-1$ - token.startsWith("-finline") || //$NON-NLS-1$ - token.equals("-fno-exceptions") || //$NON-NLS-1$ - token.equals("-fexceptions") || //$NON-NLS-1$ - token.equals("-fshort-wchar") || //$NON-NLS-1$ - token.equals("-fshort-double") || //$NON-NLS-1$ - token.equals("-fno-signed-char") || //$NON-NLS-1$ - token.equals("-fsigned-char") || //$NON-NLS-1$ - token.startsWith("-fabi-version=") //$NON-NLS-1$ + XLCCommandDSC command = new XLCCommandDSC(cppFileType, getProject()); + command.addSCOption(new KVStringPair(SCDOptionsEnum.COMMAND.toString(), tokens[idxOfCompilerCommand])); + for (int i = idxOfCompilerCommand + 1; i < tokens.length; ++i) { + String token = tokens[i]; + //Target specific options: see GccScannerInfoConsoleParser + if (token.startsWith("-m") || //$NON-NLS-1$ + token.equals("-ansi") || //$NON-NLS-1$ + token.equals("-posix") || //$NON-NLS-1$ + token.equals("-pthread") || //$NON-NLS-1$ + token.startsWith("-O") || //$NON-NLS-1$ + token.equals("-fno-inline") || //$NON-NLS-1$ + token.startsWith("-finline") || //$NON-NLS-1$ + token.equals("-fno-exceptions") || //$NON-NLS-1$ + token.equals("-fexceptions") || //$NON-NLS-1$ + token.equals("-fshort-wchar") || //$NON-NLS-1$ + token.equals("-fshort-double") || //$NON-NLS-1$ + token.equals("-fno-signed-char") || //$NON-NLS-1$ + token.equals("-fsigned-char") || //$NON-NLS-1$ + token.startsWith("-fabi-version=") //$NON-NLS-1$ ) { - command.addSCOption(new KVStringPair(SCDOptionsEnum.COMMAND.toString(), token)); + command.addSCOption(new KVStringPair(SCDOptionsEnum.COMMAND.toString(), token)); continue; - } - for (int j = SCDOptionsEnum.MIN; j <= SCDOptionsEnum.MAX; ++j) { - final SCDOptionsEnum optionKind = SCDOptionsEnum.getSCDOptionsEnum(j); + } + for (int j = SCDOptionsEnum.MIN; j <= SCDOptionsEnum.MAX; ++j) { + final SCDOptionsEnum optionKind = SCDOptionsEnum.getSCDOptionsEnum(j); if (token.startsWith(optionKind.toString())) { - String option = token.substring( - optionKind.toString().length()).trim(); - if (option.length() > 0) { - // ex. -I/dir - } - else if (optionKind.equals(SCDOptionsEnum.IDASH)) { - for (Iterator iter=includes.iterator(); iter.hasNext(); ) { - option = (String)iter.next(); - KVStringPair pair = new KVStringPair(SCDOptionsEnum.IQUOTE.toString(), option); - command.addSCOption(pair); - } - includes = new ArrayList(); - // -I- has no parameter - } - else { - // ex. -I /dir - // take a next token - if (i+1 < tokens.length && !tokens[i+1].startsWith("-")) { //$NON-NLS-1$ - option = tokens[++i]; - } - else break; - } - - if (option.length() > 0 && ( - optionKind.equals(SCDOptionsEnum.INCLUDE) || - optionKind.equals(SCDOptionsEnum.INCLUDE_FILE) || - optionKind.equals(SCDOptionsEnum.IMACROS_FILE) || - optionKind.equals(SCDOptionsEnum.IDIRAFTER) || - optionKind.equals(SCDOptionsEnum.ISYSTEM) || - optionKind.equals(SCDOptionsEnum.IQUOTE) )) { - option = (getAbsolutePath(option)).toString(); - } - - if (optionKind.equals(SCDOptionsEnum.IDIRAFTER)) { - KVStringPair pair = new KVStringPair(SCDOptionsEnum.INCLUDE.toString(), option); - dirafter.add(pair); - } - else if (optionKind.equals(SCDOptionsEnum.INCLUDE)) { - includes.add(option); - } - else { // add the pair - if (optionKind.equals(SCDOptionsEnum.DEFINE)) { - if (option.indexOf('=') == -1) { - option += '='+ fDefaultMacroDefinitionValue; - } - } - KVStringPair pair = new KVStringPair(optionKind.toString(), option); - command.addSCOption(pair); - } - break; - } - } - } - String option; - for (Iterator iter=includes.iterator(); iter.hasNext(); ) { - option = (String)iter.next(); - KVStringPair pair = new KVStringPair(SCDOptionsEnum.INCLUDE.toString(), option); - command.addSCOption(pair); - } - for (Iterator iter=dirafter.iterator(); iter.hasNext(); ) { - command.addSCOption((KVStringPair)iter.next()); - } - return command; - } - - /** - * @return Returns the project. - */ - protected IProject getProject() { - return project; - } - - public IPath getWorkingDirectory() { - if (fDirectoryStack.size() != 0) { - return fDirectoryStack.lastElement(); - } - // Fallback to the Project Location - // FIXME: if the build did not start in the Project ? - return fBaseDirectory; - } - - protected IPath popDirectory() { - int i = getDirectoryLevel(); - if (i != 0) { - IPath dir = fDirectoryStack.lastElement(); - fDirectoryStack.removeElementAt(i - 1); - return dir; - } - return new Path(""); //$NON-NLS-1$ - } - - protected void pushDirectory(IPath dir) { - if (dir != null) { - IPath pwd = null; - if (fBaseDirectory != null && fBaseDirectory.isPrefixOf(dir)) { - pwd = dir.removeFirstSegments(fBaseDirectory.segmentCount()); - } else { - // check if it is a cygpath - pwd= convertCygpath(dir); - } - fDirectoryStack.addElement(pwd); - } - } + String option = token.substring(optionKind.toString().length()).trim(); + if (option.length() > 0) { + // ex. -I/dir + } else if (optionKind.equals(SCDOptionsEnum.IDASH)) { + for (Iterator iter = includes.iterator(); iter.hasNext();) { + option = (String) iter.next(); + KVStringPair pair = new KVStringPair(SCDOptionsEnum.IQUOTE.toString(), option); + command.addSCOption(pair); + } + includes = new ArrayList(); + // -I- has no parameter + } else { + // ex. -I /dir + // take a next token + if (i + 1 < tokens.length && !tokens[i + 1].startsWith("-")) { //$NON-NLS-1$ + option = tokens[++i]; + } else + break; + } + + if (option.length() > 0 && (optionKind.equals(SCDOptionsEnum.INCLUDE) + || optionKind.equals(SCDOptionsEnum.INCLUDE_FILE) + || optionKind.equals(SCDOptionsEnum.IMACROS_FILE) + || optionKind.equals(SCDOptionsEnum.IDIRAFTER) || optionKind.equals(SCDOptionsEnum.ISYSTEM) + || optionKind.equals(SCDOptionsEnum.IQUOTE))) { + option = (getAbsolutePath(option)).toString(); + } + + if (optionKind.equals(SCDOptionsEnum.IDIRAFTER)) { + KVStringPair pair = new KVStringPair(SCDOptionsEnum.INCLUDE.toString(), option); + dirafter.add(pair); + } else if (optionKind.equals(SCDOptionsEnum.INCLUDE)) { + includes.add(option); + } else { // add the pair + if (optionKind.equals(SCDOptionsEnum.DEFINE)) { + if (option.indexOf('=') == -1) { + option += '=' + fDefaultMacroDefinitionValue; + } + } + KVStringPair pair = new KVStringPair(optionKind.toString(), option); + command.addSCOption(pair); + } + break; + } + } + } + String option; + for (Iterator iter = includes.iterator(); iter.hasNext();) { + option = (String) iter.next(); + KVStringPair pair = new KVStringPair(SCDOptionsEnum.INCLUDE.toString(), option); + command.addSCOption(pair); + } + for (Iterator iter = dirafter.iterator(); iter.hasNext();) { + command.addSCOption((KVStringPair) iter.next()); + } + return command; + } + + /** + * @return Returns the project. + */ + protected IProject getProject() { + return project; + } + + public IPath getWorkingDirectory() { + if (fDirectoryStack.size() != 0) { + return fDirectoryStack.lastElement(); + } + // Fallback to the Project Location + // FIXME: if the build did not start in the Project ? + return fBaseDirectory; + } + + protected IPath popDirectory() { + int i = getDirectoryLevel(); + if (i != 0) { + IPath dir = fDirectoryStack.lastElement(); + fDirectoryStack.removeElementAt(i - 1); + return dir; + } + return new Path(""); //$NON-NLS-1$ + } + + protected void pushDirectory(IPath dir) { + if (dir != null) { + IPath pwd = null; + if (fBaseDirectory != null && fBaseDirectory.isPrefixOf(dir)) { + pwd = dir.removeFirstSegments(fBaseDirectory.segmentCount()); + } else { + // check if it is a cygpath + pwd = convertCygpath(dir); + } + fDirectoryStack.addElement(pwd); + } + } public boolean reportProblems() { - boolean reset = false; - for (Iterator iter = fErrors.iterator(); iter.hasNext(); ) { - Problem problem = iter.next(); - if (problem.severity == IMarkerGenerator.SEVERITY_ERROR_BUILD) { - reset = true; - } - if (problem.file == null) { - fMarkerGenerator.addMarker(new ProblemMarkerInfo( - project, - problem.lineNumber, - problem.description, - problem.severity, - problem.variableName)); - } else { - fMarkerGenerator.addMarker(new ProblemMarkerInfo( - problem.file, - problem.lineNumber, - problem.description, - problem.severity, - problem.variableName)); - } - } - fErrors.clear(); - return reset; - } - - public void setDefaultMacroDefinitionValue(String val) { - if (val != null) { - fDefaultMacroDefinitionValue= val; - } - } - - public String getDefaultMacroDefinitionValue() { - return fDefaultMacroDefinitionValue; - } + boolean reset = false; + for (Iterator iter = fErrors.iterator(); iter.hasNext();) { + Problem problem = iter.next(); + if (problem.severity == IMarkerGenerator.SEVERITY_ERROR_BUILD) { + reset = true; + } + if (problem.file == null) { + fMarkerGenerator.addMarker(new ProblemMarkerInfo(project, problem.lineNumber, problem.description, + problem.severity, problem.variableName)); + } else { + fMarkerGenerator.addMarker(new ProblemMarkerInfo(problem.file, problem.lineNumber, problem.description, + problem.severity, problem.variableName)); + } + } + fErrors.clear(); + return reset; + } + + public void setDefaultMacroDefinitionValue(String val) { + if (val != null) { + fDefaultMacroDefinitionValue = val; + } + } + + public String getDefaultMacroDefinitionValue() { + return fDefaultMacroDefinitionValue; + } public String normalizePath(String path) { int column = path.indexOf(':'); @@ -485,25 +472,25 @@ public class XLCBuildOutputParserUtility { if (Character.isLowerCase(driveLetter)) { StringBuilder sb = new StringBuilder(); if (column - 1 > 0) { - sb.append(path.substring(0, column-1)); + sb.append(path.substring(0, column - 1)); } sb.append(Character.toUpperCase(driveLetter)); sb.append(path.substring(column)); path = sb.toString(); } } - if (path.indexOf('.') == -1 || path.equals(".")) { //$NON-NLS-1$ - return (new Path(path)).toString(); // convert separators to '/' + if (path.indexOf('.') == -1 || path.equals(".")) { //$NON-NLS-1$ + return (new Path(path)).toString(); // convert separators to '/' } // lose "./" segments since they confuse the Path normalization StringBuilder buf = new StringBuilder(path); int len = buf.length(); StringBuilder newBuf = new StringBuilder(buf.length()); int scp = 0; // starting copy point - int ssp = 0; // starting search point + int ssp = 0; // starting search point int sdot; boolean validPrefix; - while (ssp < len && (sdot = buf.indexOf(".", ssp)) != -1) { //$NON-NLS-1$ + while (ssp < len && (sdot = buf.indexOf(".", ssp)) != -1) { //$NON-NLS-1$ validPrefix = false; int ddot = buf.indexOf("..", ssp);//$NON-NLS-1$ if (sdot < ddot || ddot == -1) { @@ -518,21 +505,18 @@ public class XLCBuildOutputParserUtility { if (validPrefix && nextChar == '/') { ++ssp; scp = ssp; - } - else if (validPrefix && nextChar == '\\') { + } else if (validPrefix && nextChar == '\\') { ++ssp; if (ssp < len - 1 && buf.charAt(ssp) == '\\') { ++ssp; } scp = ssp; - } - else { + } else { // no path delimiter, must be '.' inside the path scp = ssp - 1; } } - } - else if (sdot == ddot) { + } else if (sdot == ddot) { ssp = sdot + 2; } } @@ -542,7 +526,6 @@ public class XLCBuildOutputParserUtility { return orgPath.toString(); } - /** * Called by the console line parsers to find a file with a given name. * @param fileName @@ -561,7 +544,7 @@ public class XLCBuildOutputParserUtility { // Create a problem marker final String error = MakeMessages.getString("ConsoleParser.Ambiguous_Filepath_Error_Message"); //$NON-NLS-1$ TraceUtil.outputError(error, fileName); - generateMarker(getProject(), -1, error+fileName, IMarkerGenerator.SEVERITY_WARNING, null); + generateMarker(getProject(), -1, error + fileName, IMarkerGenerator.SEVERITY_WARNING, null); } } } @@ -666,10 +649,10 @@ public class XLCBuildOutputParserUtility { public List translateRelativePaths(IFile file, String fileName, List includes) { List translatedIncludes = new ArrayList(includes.size()); - for (Iterator i = includes.iterator(); i.hasNext(); ) { + for (Iterator i = includes.iterator(); i.hasNext();) { String include = (String) i.next(); IPath includePath = new Path(include); - if (!includePath.isAbsolute() && !includePath.isUNC()) { // do not translate UNC paths + if (!includePath.isAbsolute() && !includePath.isUNC()) { // do not translate UNC paths // First try the current working directory IPath cwd = getWorkingDirectory(); if (!cwd.isAbsolute()) { @@ -685,22 +668,22 @@ public class XLCBuildOutputParserUtility { if (!filePath.toString().equalsIgnoreCase(file.getLocation().toString())) { // must be the cwd is wrong // check if file name starts with ".." - if (fileName.startsWith("..")) { //$NON-NLS-1$ + if (fileName.startsWith("..")) { //$NON-NLS-1$ // probably multiple choices for cwd, hopeless final String error = MakeMessages.getString("ConsoleParser.Working_Directory_Error_Message"); //$NON-NLS-1$ TraceUtil.outputError(error, fileName); - generateMarker(file, -1, error, IMarkerGenerator.SEVERITY_WARNING, fileName); + generateMarker(file, -1, error, IMarkerGenerator.SEVERITY_WARNING, fileName); break; - } - else { + } else { // remove common segments at the end IPath tPath = new Path(fileName); - if (fileName.startsWith(".")) { //$NON-NLS-1$ + if (fileName.startsWith(".")) { //$NON-NLS-1$ tPath = tPath.removeFirstSegments(1); } // get the file path from the file filePath = file.getLocation(); - IPath lastFileSegment = filePath.removeFirstSegments(filePath.segmentCount() - tPath.segmentCount()); + IPath lastFileSegment = filePath + .removeFirstSegments(filePath.segmentCount() - tPath.segmentCount()); if (lastFileSegment.matchingFirstSegments(tPath) == tPath.segmentCount()) { cwd = filePath.removeLastSegments(tPath.segmentCount()); } @@ -713,7 +696,7 @@ public class XLCBuildOutputParserUtility { if (!dir.exists()) { final String error = MakeMessages.getString("ConsoleParser.Nonexistent_Include_Path_Error_Message"); //$NON-NLS-1$ TraceUtil.outputError(error, include); -// generateMarker(file, -1, error+include, IMarkerGenerator.SEVERITY_WARNING, fileName); + // generateMarker(file, -1, error+include, IMarkerGenerator.SEVERITY_WARNING, fileName); } } // TODO VMIR for now add unresolved paths as well diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCPerFileBuildOutputParser.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCPerFileBuildOutputParser.java index ebaf2d1d626..9f55f00aeb8 100644 --- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCPerFileBuildOutputParser.java +++ b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCPerFileBuildOutputParser.java @@ -41,143 +41,143 @@ public class XLCPerFileBuildOutputParser extends AbstractXLCBuildOutputParser { protected boolean processCommand(String[] tokens) { try { - // GCC C/C++ compiler invocation - int compilerInvocationIndex = findCompilerInvocation(tokens); - if (compilerInvocationIndex < 0) { - return false; - } - - // find a file name - int extensionsIndex = -1; - boolean found = false; - String filePath = null; - - // check for automake format first - // e.g. line will start with - // source='/some/path/source.cpp' - int automakeSrcIndex = findAutoMakeSourceIndex(tokens); - if(automakeSrcIndex != -1) { - filePath = getAutoMakeSourcePath(tokens[automakeSrcIndex]); - int k = filePath.lastIndexOf('.'); - if (k != -1 && (filePath.length() - k < 5)) { - String fileExtension = filePath.substring(k); - extensionsIndex = getFileExtensionsList().indexOf(fileExtension); - if (extensionsIndex != -1) { - found = true; - } + // GCC C/C++ compiler invocation + int compilerInvocationIndex = findCompilerInvocation(tokens); + if (compilerInvocationIndex < 0) { + return false; } - } - if (!found) { - for (int i = compilerInvocationIndex + 1; i < tokens.length; i++) { - String token = tokens[i]; - int k = token.lastIndexOf('.'); - if (k != -1 && (token.length() - k < 5)) { - String fileExtension = token.substring(k); + // find a file name + int extensionsIndex = -1; + boolean found = false; + String filePath = null; + + // check for automake format first + // e.g. line will start with + // source='/some/path/source.cpp' + int automakeSrcIndex = findAutoMakeSourceIndex(tokens); + if (automakeSrcIndex != -1) { + filePath = getAutoMakeSourcePath(tokens[automakeSrcIndex]); + int k = filePath.lastIndexOf('.'); + if (k != -1 && (filePath.length() - k < 5)) { + String fileExtension = filePath.substring(k); extensionsIndex = getFileExtensionsList().indexOf(fileExtension); if (extensionsIndex != -1) { - filePath = token; found = true; - break; } } } - } - if (!found) { - TraceUtil.outputTrace("Error identifying file name :1", tokens, TraceUtil.EOL); //$NON-NLS-1$ - return false; - } - // sanity check - if (filePath.indexOf(getFileExtensions()[extensionsIndex]) == -1) { - TraceUtil.outputTrace("Error identifying file name :2", tokens, TraceUtil.EOL); //$NON-NLS-1$ - return false; - } - if (getUtility() != null) { - IPath pFilePath = fUtility.getAbsolutePath(filePath); - String shortFileName = pFilePath.removeFileExtension().lastSegment(); - - // generalize occurrences of the file name - for (int i = compilerInvocationIndex + 1; i < tokens.length; i++) { - String token = tokens[i]; - if (token.equals("-include")) { //$NON-NLS-1$ - ++i; - } else if (token.equals("-imacros")) { //$NON-NLS-1$ - ++i; - } else if (token.equals(filePath)) { - tokens[i] = "LONG_NAME"; //$NON-NLS-1$ - } else if (token.startsWith(shortFileName)) { - tokens[i] = token.replaceFirst(shortFileName, "SHORT_NAME"); //$NON-NLS-1$ + if (!found) { + for (int i = compilerInvocationIndex + 1; i < tokens.length; i++) { + String token = tokens[i]; + int k = token.lastIndexOf('.'); + if (k != -1 && (token.length() - k < 5)) { + String fileExtension = token.substring(k); + extensionsIndex = getFileExtensionsList().indexOf(fileExtension); + if (extensionsIndex != -1) { + filePath = token; + found = true; + break; + } + } } } - IFile file = null; - IPath baseDirectory = fUtility.getBaseDirectory(); - if (baseDirectory.isPrefixOf(pFilePath)) { - IPath relPath = pFilePath.removeFirstSegments(baseDirectory.segmentCount()); - // Note: We add the scanner-config even if the resource doesn't - // actually - // exist below this project (which may happen when reading - // existing - // build logs, because resources can be created as part of the - // build - // and may not exist at the time of analyzing the config but - // re-built - // later on. - // if (getProject().exists(relPath)) { - file = getProject().getFile(relPath); - } else { - file = getUtility().findFileInWorkspace(pFilePath); + if (!found) { + TraceUtil.outputTrace("Error identifying file name :1", tokens, TraceUtil.EOL); //$NON-NLS-1$ + return false; + } + // sanity check + if (filePath.indexOf(getFileExtensions()[extensionsIndex]) == -1) { + TraceUtil.outputTrace("Error identifying file name :2", tokens, TraceUtil.EOL); //$NON-NLS-1$ + return false; } - if (true /*file != null*/) { - CCommandDSC cmd = getUtility().getNewCCommandDSC(tokens, compilerInvocationIndex, extensionsIndex > 0); - List cmdList = new CopyOnWriteArrayList(); - cmdList.add(cmd); - Map> sc = new HashMap>(1); - sc.put(ScannerInfoTypes.COMPILER_COMMAND, cmdList); - getCollector().contributeToScannerConfig(file, sc); - if (fCollector != null && fCollector instanceof IScannerInfoCollector2) { - IScannerInfoCollector2 collector = (IScannerInfoCollector2) fCollector; - try { - collector.updateScannerConfiguration(null); - } catch (CoreException e) { - // TODO Auto-generated catch block - Activator.log(e); + if (getUtility() != null) { + IPath pFilePath = fUtility.getAbsolutePath(filePath); + String shortFileName = pFilePath.removeFileExtension().lastSegment(); + + // generalize occurrences of the file name + for (int i = compilerInvocationIndex + 1; i < tokens.length; i++) { + String token = tokens[i]; + if (token.equals("-include")) { //$NON-NLS-1$ + ++i; + } else if (token.equals("-imacros")) { //$NON-NLS-1$ + ++i; + } else if (token.equals(filePath)) { + tokens[i] = "LONG_NAME"; //$NON-NLS-1$ + } else if (token.startsWith(shortFileName)) { + tokens[i] = token.replaceFirst(shortFileName, "SHORT_NAME"); //$NON-NLS-1$ } } - } else { - /* - //TraceUtil.outputError("Build command for file outside project: " + pFilePath.toString(), tokens); //$NON-NLS-1$ - // put the info on the project - //CCommandDSC cmd = getUtility().getNewCCommandDSC(tokens, compilerInvocationIndex, extensionsIndex > 0); - //List cmdList = new ArrayList(); -// cmdList.add(cmd); - Map> sc = new HashMap>(); -// sc.put(ScannerInfoTypes.COMPILER_COMMAND, cmdList); - - - // put in empty info for the other types - sc.put(ScannerInfoTypes.INCLUDE_PATHS, new LinkedList()); - sc.put(ScannerInfoTypes.SYMBOL_DEFINITIONS, new LinkedList()); - - getCollector().contributeToScannerConfig(getProject(), sc); - if (fCollector != null && fCollector instanceof IScannerInfoCollector2) { - IScannerInfoCollector2 collector = (IScannerInfoCollector2) fCollector; - try { - collector.updateScannerConfiguration(null); - } catch (CoreException e) { - // TODO Auto-generated catch block - Activator.log(e); - } + + IFile file = null; + IPath baseDirectory = fUtility.getBaseDirectory(); + if (baseDirectory.isPrefixOf(pFilePath)) { + IPath relPath = pFilePath.removeFirstSegments(baseDirectory.segmentCount()); + // Note: We add the scanner-config even if the resource doesn't + // actually + // exist below this project (which may happen when reading + // existing + // build logs, because resources can be created as part of the + // build + // and may not exist at the time of analyzing the config but + // re-built + // later on. + // if (getProject().exists(relPath)) { + file = getProject().getFile(relPath); + } else { + file = getUtility().findFileInWorkspace(pFilePath); } + if (true /*file != null*/) { + CCommandDSC cmd = getUtility().getNewCCommandDSC(tokens, compilerInvocationIndex, + extensionsIndex > 0); + List cmdList = new CopyOnWriteArrayList(); + cmdList.add(cmd); + Map> sc = new HashMap>(1); + sc.put(ScannerInfoTypes.COMPILER_COMMAND, cmdList); + getCollector().contributeToScannerConfig(file, sc); + if (fCollector != null && fCollector instanceof IScannerInfoCollector2) { + IScannerInfoCollector2 collector = (IScannerInfoCollector2) fCollector; + try { + collector.updateScannerConfiguration(null); + } catch (CoreException e) { + // TODO Auto-generated catch block + Activator.log(e); + } + } + } else { + /* + //TraceUtil.outputError("Build command for file outside project: " + pFilePath.toString(), tokens); //$NON-NLS-1$ + // put the info on the project + //CCommandDSC cmd = getUtility().getNewCCommandDSC(tokens, compilerInvocationIndex, extensionsIndex > 0); + //List cmdList = new ArrayList(); + // cmdList.add(cmd); + Map> sc = new HashMap>(); + // sc.put(ScannerInfoTypes.COMPILER_COMMAND, cmdList); + + + // put in empty info for the other types + sc.put(ScannerInfoTypes.INCLUDE_PATHS, new LinkedList()); + sc.put(ScannerInfoTypes.SYMBOL_DEFINITIONS, new LinkedList()); + + getCollector().contributeToScannerConfig(getProject(), sc); + if (fCollector != null && fCollector instanceof IScannerInfoCollector2) { + IScannerInfoCollector2 collector = (IScannerInfoCollector2) fCollector; + try { + collector.updateScannerConfiguration(null); + } catch (CoreException e) { + // TODO Auto-generated catch block + Activator.log(e); + } + } - */ + */ + } } - } - return true; + return true; - } - catch(Throwable e) { + } catch (Throwable e) { e.printStackTrace(); return false; } @@ -187,13 +187,13 @@ public class XLCPerFileBuildOutputParser extends AbstractXLCBuildOutputParser { // path may be enclosed in single quotes int firstQuoteIndex = string.indexOf('\''); int lastQuoteIndex = string.lastIndexOf('\''); - if(firstQuoteIndex != -1 && lastQuoteIndex != -1) + if (firstQuoteIndex != -1 && lastQuoteIndex != -1) return string.substring(firstQuoteIndex, lastQuoteIndex); else { // just take everything after the equals sign int equalsIndex = string.indexOf('='); - if(equalsIndex != -1 && equalsIndex < string.length()) - return string.substring(equalsIndex+1); + if (equalsIndex != -1 && equalsIndex < string.length()) + return string.substring(equalsIndex + 1); } return null; @@ -202,7 +202,7 @@ public class XLCPerFileBuildOutputParser extends AbstractXLCBuildOutputParser { protected int findAutoMakeSourceIndex(String[] tokens) { for (int i = 0; i < tokens.length; i++) { final String token = tokens[i].toLowerCase(); - if(token.indexOf("source=") != -1) //$NON-NLS-1$ + if (token.indexOf("source=") != -1) //$NON-NLS-1$ return i; } return -1; diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCPerProjectBuildOutputParser.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCPerProjectBuildOutputParser.java index 714f041a0f3..04a188f0ef2 100644 --- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCPerProjectBuildOutputParser.java +++ b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XLCPerProjectBuildOutputParser.java @@ -13,7 +13,6 @@ *******************************************************************************/ package org.eclipse.cdt.make.xlc.core.scannerconfig; - import java.util.HashMap; import java.util.List; import java.util.Map; @@ -33,151 +32,142 @@ import org.eclipse.core.runtime.CoreException; * @author crecoskie * */ -public class XLCPerProjectBuildOutputParser extends - AbstractXLCBuildOutputParser { +public class XLCPerProjectBuildOutputParser extends AbstractXLCBuildOutputParser { /* (non-Javadoc) * @see org.eclipse.cdt.make.xlc.core.scannerconfig.AbstractXLCBuildOutputParser#processCommand(java.lang.String[]) */ @Override - protected boolean processCommand(String[] tokens) { - int compilerInvocationIdx= findCompilerInvocation(tokens); - if (compilerInvocationIdx<0) { - return false; - } - - if (compilerInvocationIdx+1 >= tokens.length) { - return false; - } - - // Recognized gcc or g++ compiler invocation - List includes = new CopyOnWriteArrayList(); - List symbols = new CopyOnWriteArrayList(); - List targetSpecificOptions = new CopyOnWriteArrayList(); - - String fileName = null; - for (int j= compilerInvocationIdx+1; j < tokens.length; j++) { + protected boolean processCommand(String[] tokens) { + int compilerInvocationIdx = findCompilerInvocation(tokens); + if (compilerInvocationIdx < 0) { + return false; + } + + if (compilerInvocationIdx + 1 >= tokens.length) { + return false; + } + + // Recognized gcc or g++ compiler invocation + List includes = new CopyOnWriteArrayList(); + List symbols = new CopyOnWriteArrayList(); + List targetSpecificOptions = new CopyOnWriteArrayList(); + + String fileName = null; + for (int j = compilerInvocationIdx + 1; j < tokens.length; j++) { String token = tokens[j]; if (token.equals(DASHIDASH)) { - } - else if (token.startsWith(DASHI)) { - String candidate= null; + } else if (token.startsWith(DASHI)) { + String candidate = null; if (token.length() > 2) { - candidate= token.substring(2).trim(); - } - else if (j+1 < tokens.length) { - candidate= tokens[j+1]; + candidate = token.substring(2).trim(); + } else if (j + 1 < tokens.length) { + candidate = tokens[j + 1]; if (candidate.startsWith("-")) { //$NON-NLS-1$ - candidate= null; - } - else { + candidate = null; + } else { j++; } } if (candidate != null && candidate.length() > 0) { if (getUtility() != null) { - candidate= getUtility().normalizePath(candidate); + candidate = getUtility().normalizePath(candidate); } if (!includes.contains(candidate)) { includes.add(candidate); } } - } - else if (token.startsWith(DASHD)) { - String candidate= null; + } else if (token.startsWith(DASHD)) { + String candidate = null; if (token.length() > 2) { - candidate= token.substring(2).trim(); - } - else if (j+1 < tokens.length) { - candidate= tokens[j+1]; + candidate = token.substring(2).trim(); + } else if (j + 1 < tokens.length) { + candidate = tokens[j + 1]; if (candidate.startsWith("-")) { //$NON-NLS-1$ - candidate= null; - } - else { + candidate = null; + } else { j++; } } - if (candidate != null && candidate.length() > 0) { - if (candidate.indexOf('=') == -1) { - candidate+= '='+ getUtility().getDefaultMacroDefinitionValue(); - } - if (!symbols.contains(candidate)) { - symbols.add(candidate); - } - } - } - - else if (fileName == null) { - int extIndex = token.lastIndexOf('.'); - String extension=null; - - if(extIndex != -1) - extension = token.substring(extIndex); + if (candidate != null && candidate.length() > 0) { + if (candidate.indexOf('=') == -1) { + candidate += '=' + getUtility().getDefaultMacroDefinitionValue(); + } + if (!symbols.contains(candidate)) { + symbols.add(candidate); + } + } + } - List extensions = getFileExtensionsList(); - if(extension != null && extensions.contains(extension)) - fileName = token; - } - } + else if (fileName == null) { + int extIndex = token.lastIndexOf('.'); + String extension = null; - if (fileName == null) { - return false; // return when no file was given (analogous to GCCPerFileBOPConsoleParser) - } + if (extIndex != -1) + extension = token.substring(extIndex); - IProject project = getProject(); - IFile file = null; - List translatedIncludes = includes; - if (includes.size() > 0) { - if (fileName != null) { - if (getUtility() != null) { - file = getUtility().findFile(fileName); - if (file != null) { - project = file.getProject(); - translatedIncludes = getUtility().translateRelativePaths(file, fileName, includes); - } - } - } - else { - StringBuilder line= new StringBuilder(); - for (int j = 0; j < tokens.length; j++) { + List extensions = getFileExtensionsList(); + if (extension != null && extensions.contains(extension)) + fileName = token; + } + } + + if (fileName == null) { + return false; // return when no file was given (analogous to GCCPerFileBOPConsoleParser) + } + + IProject project = getProject(); + IFile file = null; + List translatedIncludes = includes; + if (includes.size() > 0) { + if (fileName != null) { + if (getUtility() != null) { + file = getUtility().findFile(fileName); + if (file != null) { + project = file.getProject(); + translatedIncludes = getUtility().translateRelativePaths(file, fileName, includes); + } + } + } else { + StringBuilder line = new StringBuilder(); + for (int j = 0; j < tokens.length; j++) { line.append(tokens[j]); line.append(' '); } - final String error = MakeMessages.getString("ConsoleParser.Filename_Missing_Error_Message"); //$NON-NLS-1$ - TraceUtil.outputError(error, line.toString()); - if (getUtility() != null) { - getUtility().generateMarker(getProject(), -1, error + line.toString(), IMarkerGenerator.SEVERITY_WARNING, null); - } - } - if (file == null && getUtility() != null) { // real world case - // remove include paths since there was no chance to translate them - translatedIncludes.clear(); - } - } - // Contribute discovered includes and symbols to the ScannerInfoCollector - if (translatedIncludes.size() > 0 || symbols.size() > 0) { - Map> scannerInfo = new HashMap>(); - scannerInfo.put(ScannerInfoTypes.INCLUDE_PATHS, translatedIncludes); - scannerInfo.put(ScannerInfoTypes.SYMBOL_DEFINITIONS, symbols); - scannerInfo.put(ScannerInfoTypes.TARGET_SPECIFIC_OPTION, targetSpecificOptions); - getCollector().contributeToScannerConfig(project, scannerInfo); - if(fCollector != null && fCollector instanceof IScannerInfoCollector2) { - IScannerInfoCollector2 collector = (IScannerInfoCollector2) fCollector; - try { - collector.updateScannerConfiguration(null); - } catch (CoreException e) { - // TODO Auto-generated catch block - Activator.log(e); - } - } + final String error = MakeMessages.getString("ConsoleParser.Filename_Missing_Error_Message"); //$NON-NLS-1$ + TraceUtil.outputError(error, line.toString()); + if (getUtility() != null) { + getUtility().generateMarker(getProject(), -1, error + line.toString(), + IMarkerGenerator.SEVERITY_WARNING, null); + } + } + if (file == null && getUtility() != null) { // real world case + // remove include paths since there was no chance to translate them + translatedIncludes.clear(); + } + } + // Contribute discovered includes and symbols to the ScannerInfoCollector + if (translatedIncludes.size() > 0 || symbols.size() > 0) { + Map> scannerInfo = new HashMap>(); + scannerInfo.put(ScannerInfoTypes.INCLUDE_PATHS, translatedIncludes); + scannerInfo.put(ScannerInfoTypes.SYMBOL_DEFINITIONS, symbols); + scannerInfo.put(ScannerInfoTypes.TARGET_SPECIFIC_OPTION, targetSpecificOptions); + getCollector().contributeToScannerConfig(project, scannerInfo); + if (fCollector != null && fCollector instanceof IScannerInfoCollector2) { + IScannerInfoCollector2 collector = (IScannerInfoCollector2) fCollector; + try { + collector.updateScannerConfiguration(null); + } catch (CoreException e) { + // TODO Auto-generated catch block + Activator.log(e); + } + } - TraceUtil.outputTrace("Discovered scanner info for file \'" + fileName + '\'', //$NON-NLS-1$ - "Include paths", includes, translatedIncludes, "Defined symbols", symbols); //$NON-NLS-1$ //$NON-NLS-2$ - } + TraceUtil.outputTrace("Discovered scanner info for file \'" + fileName + '\'', //$NON-NLS-1$ + "Include paths", includes, translatedIncludes, "Defined symbols", symbols); //$NON-NLS-1$ //$NON-NLS-2$ + } return true; -} - - + } } diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XlCSpecsConsoleParser.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XlCSpecsConsoleParser.java index a706896a615..65e96ccdbb9 100644 --- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XlCSpecsConsoleParser.java +++ b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XlCSpecsConsoleParser.java @@ -43,26 +43,23 @@ import org.eclipse.cdt.core.CProjectNature; public class XlCSpecsConsoleParser implements IScannerInfoConsoleParser { // pattern for the output line of interest - final Pattern linePattern = Pattern - .compile("exec:\\s(?!export)(?:.*)\\((.*)\\)"); //$NON-NLS-1$ + final Pattern linePattern = Pattern.compile("exec:\\s(?!export)(?:.*)\\((.*)\\)"); //$NON-NLS-1$ // pattern for the symbols arguments final Pattern symbolPattern = Pattern.compile("-D(.*)"); //$NON-NLS-1$ // pattern for the includes arguments - final Pattern includePattern = Pattern - .compile("-(?:qgcc_c_stdinc|qc_stdinc|qgcc_cpp_stdinc|qcpp_stdinc)=(.*)"); //$NON-NLS-1$ + final Pattern includePattern = Pattern.compile("-(?:qgcc_c_stdinc|qc_stdinc|qgcc_cpp_stdinc|qcpp_stdinc)=(.*)"); //$NON-NLS-1$ final Pattern C_includePattern = Pattern.compile("-(?:qgcc_c_stdinc|qc_stdinc)=(.*)"); //$NON-NLS-1$ final Pattern CXX_includePattern = Pattern.compile("-(?:qgcc_cpp_stdinc|qcpp_stdinc)=(.*)"); //$NON-NLS-1$ - + // xlC compiler constants - protected final static String [] compilerConstants = { - "_Builtin", //$NON-NLS-1$ + protected final static String[] compilerConstants = { "_Builtin", //$NON-NLS-1$ "__IBMCPP__", //$NON-NLS-1$ - "__xlC__", //$NON-NLS-1$ - "__IBMC__", //$NON-NLS-1$ - "__xlc__" //$NON-NLS-1$ + "__xlC__", //$NON-NLS-1$ + "__IBMC__", //$NON-NLS-1$ + "__xlc__" //$NON-NLS-1$ }; private IProject fProject = null; @@ -71,11 +68,12 @@ public class XlCSpecsConsoleParser implements IScannerInfoConsoleParser { protected List symbols = new ArrayList(); - protected List includes = new ArrayList(); + protected List includes = new ArrayList(); protected List c_includes = new ArrayList(); protected List cpp_includes = new ArrayList(); - - boolean c_lang; // if language is C only search for the C include paths from the XL Compiler, otherwise get the C++ ones. + + boolean c_lang; // if language is C only search for the C include paths from the XL Compiler, otherwise get the C++ ones. + public boolean isC_lang() { return c_lang; } @@ -94,20 +92,19 @@ public class XlCSpecsConsoleParser implements IScannerInfoConsoleParser { * @since 1.0 */ @Override - public void startup(IProject project, IPath workingDirectory, - IScannerInfoCollector collector, IMarkerGenerator markerGenerator) { + public void startup(IProject project, IPath workingDirectory, IScannerInfoCollector collector, + IMarkerGenerator markerGenerator) { this.fProject = project; this.fCollector = collector; - + try { if (project.hasNature(CCProjectNature.CC_NATURE_ID)) { // use C++ pattern c_lang = false; - } - else { + } else { // use C pattern c_lang = true; - } + } } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -129,10 +126,9 @@ public class XlCSpecsConsoleParser implements IScannerInfoConsoleParser { @Override public boolean processLine(String line) { boolean rc = false; - TraceUtil.outputTrace( - "XLCSpecsConsoleParser parsing line: [", line, "]"); //$NON-NLS-1$ //$NON-NLS-2$ + TraceUtil.outputTrace("XLCSpecsConsoleParser parsing line: [", line, "]"); //$NON-NLS-1$ //$NON-NLS-2$ - line= line.trim(); + line = line.trim(); if (line.length() == 0) { return false; } @@ -147,18 +143,17 @@ public class XlCSpecsConsoleParser implements IScannerInfoConsoleParser { for (int i = 0; i < args.length; i++) { // getting the arguments of interest Matcher symbolMatcher = symbolPattern.matcher(args[i]); - if (symbolMatcher.matches() - && !symbols.contains(symbolMatcher.group(1))) { + if (symbolMatcher.matches() && !symbols.contains(symbolMatcher.group(1))) { // if it is a symbol and it was not yet added symbols.add(symbolMatcher.group(1)); } else { // if it is not a symbol, check to see if it is an // include - Matcher includeMatcher = c_lang ? C_includePattern.matcher(args[i]) : CXX_includePattern.matcher(args[i]); + Matcher includeMatcher = c_lang ? C_includePattern.matcher(args[i]) + : CXX_includePattern.matcher(args[i]); if (includeMatcher.matches()) { // if it is a set of include paths, split it - String[] includePaths = includeMatcher.group(1).split( - ":"); //$NON-NLS-1$ + String[] includePaths = includeMatcher.group(1).split(":"); //$NON-NLS-1$ for (int j = 0; j < includePaths.length; j++) { if (!includes.contains(includePaths[j])) { // if the include path was not yet added @@ -193,7 +188,7 @@ public class XlCSpecsConsoleParser implements IScannerInfoConsoleParser { scannerInfo.put(ScannerInfoTypes.SYMBOL_DEFINITIONS, symbols); fCollector.contributeToScannerConfig(fProject, scannerInfo); - if(fCollector != null && fCollector instanceof IScannerInfoCollector2) { + if (fCollector != null && fCollector instanceof IScannerInfoCollector2) { IScannerInfoCollector2 collector = (IScannerInfoCollector2) fCollector; try { collector.updateScannerConfiguration(null); @@ -202,9 +197,8 @@ public class XlCSpecsConsoleParser implements IScannerInfoConsoleParser { Activator.log(e); } } - TraceUtil.outputTrace( - "Scanner info from \'specs\' file", //$NON-NLS-1$ - "Include paths", includes, new ArrayList(), "Defined symbols", symbols); //$NON-NLS-1$ //$NON-NLS-2$ + TraceUtil.outputTrace("Scanner info from \'specs\' file", //$NON-NLS-1$ + "Include paths", includes, new ArrayList(), "Defined symbols", symbols); //$NON-NLS-1$ //$NON-NLS-2$ } } diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XlCSpecsRunSIProvider.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XlCSpecsRunSIProvider.java index df734de312e..453bf8f3afe 100644 --- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XlCSpecsRunSIProvider.java +++ b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/XlCSpecsRunSIProvider.java @@ -39,15 +39,9 @@ public class XlCSpecsRunSIProvider extends GCCSpecsRunSIProvider { if (rc) { try { - this.fCompileCommand = new Path(ManagedBuildManager.getBuildMacroProvider() - .resolveValue( - this.fCompileCommand.toString(), - EMPTY_STRING, - null, - IBuildMacroProvider.CONTEXT_CONFIGURATION, - ManagedBuildManager.getBuildInfo( - this.resource.getProject()) - .getDefaultConfiguration())); + this.fCompileCommand = new Path(ManagedBuildManager.getBuildMacroProvider().resolveValue( + this.fCompileCommand.toString(), EMPTY_STRING, null, IBuildMacroProvider.CONTEXT_CONFIGURATION, + ManagedBuildManager.getBuildInfo(this.resource.getProject()).getDefaultConfiguration())); } catch (BuildMacroException e) { e.printStackTrace(); return false; diff --git a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/util/XLCCommandDSC.java b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/util/XLCCommandDSC.java index 1b029974410..cd4b6ad7262 100644 --- a/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/util/XLCCommandDSC.java +++ b/xlc/org.eclipse.cdt.make.xlc.core/src/org/eclipse/cdt/make/xlc/core/scannerconfig/util/XLCCommandDSC.java @@ -38,13 +38,11 @@ public class XLCCommandDSC extends CCommandDSC { */ @Override public void addSCOption(KVStringPair option) { - if (project != null && - (option.getKey().equals(SCDOptionsEnum.INCLUDE_FILE.toString()) || - option.getKey().equals(SCDOptionsEnum.INCLUDE.toString()) || - option.getKey().equals(SCDOptionsEnum.ISYSTEM.toString()) || - option.getKey().equals(SCDOptionsEnum.IMACROS_FILE.toString()) || - option.getKey().equals(SCDOptionsEnum.IQUOTE.toString()))) - { + if (project != null && (option.getKey().equals(SCDOptionsEnum.INCLUDE_FILE.toString()) + || option.getKey().equals(SCDOptionsEnum.INCLUDE.toString()) + || option.getKey().equals(SCDOptionsEnum.ISYSTEM.toString()) + || option.getKey().equals(SCDOptionsEnum.IMACROS_FILE.toString()) + || option.getKey().equals(SCDOptionsEnum.IQUOTE.toString()))) { String value = option.getValue(); value = makeRelative(project, new Path(value)).toOSString(); option = new KVStringPair(option.getKey(), value); diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/src/org/eclipse/cdt/managedbuilder/xlc/core/XlcBuiltinSpecsDetector.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.core/src/org/eclipse/cdt/managedbuilder/xlc/core/XlcBuiltinSpecsDetector.java index 64ee9ef9caa..cadfcf72135 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/src/org/eclipse/cdt/managedbuilder/xlc/core/XlcBuiltinSpecsDetector.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlc.core/src/org/eclipse/cdt/managedbuilder/xlc/core/XlcBuiltinSpecsDetector.java @@ -26,11 +26,13 @@ import org.eclipse.cdt.managedbuilder.language.settings.providers.ToolchainBuilt /** * Language settings provider to detect built-in compiler settings for IBM XLC compiler. */ -public class XlcBuiltinSpecsDetector extends ToolchainBuiltinSpecsDetector implements ILanguageSettingsEditableProvider { +public class XlcBuiltinSpecsDetector extends ToolchainBuiltinSpecsDetector + implements ILanguageSettingsEditableProvider { // must match the toolchain definition in org.eclipse.cdt.managedbuilder.core.buildDefinitions extension point - private static final String XLC_TOOLCHAIN_ID = "cdt.managedbuild.toolchain.xlc.exe.debug"; //$NON-NLS-1$ + private static final String XLC_TOOLCHAIN_ID = "cdt.managedbuild.toolchain.xlc.exe.debug"; //$NON-NLS-1$ - private static final Pattern OPTIONS_PATTERN = Pattern.compile("-[^\\s\"']*(\\s*((\".*?\")|('.*?')|([^-\\s][^\\s]+)))?"); //$NON-NLS-1$ + private static final Pattern OPTIONS_PATTERN = Pattern + .compile("-[^\\s\"']*(\\s*((\".*?\")|('.*?')|([^-\\s][^\\s]+)))?"); //$NON-NLS-1$ private static final int OPTION_GROUP = 0; /* Sample output: @@ -44,14 +46,19 @@ public class XlcBuiltinSpecsDetector extends ToolchainBuiltinSpecsDetector imple */ @SuppressWarnings("nls") private static final AbstractOptionParser[] optionParsers = { - new IncludePathOptionParser("-I\\s*([\"'])(.*)\\1", "$2", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY | ICSettingEntry.LOCAL), + new IncludePathOptionParser("-I\\s*([\"'])(.*)\\1", "$2", + ICSettingEntry.BUILTIN | ICSettingEntry.READONLY | ICSettingEntry.LOCAL), new IncludePathOptionParser("-I\\s*([^\\s\"']*)", "$1", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), - new IncludePathOptionParser("-qc\\+\\+=\\s*([^\\s\"']*)", "$1", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), - new MacroOptionParser("-D\\s*([\"'])([^=]*)(=(.*))?\\1", "$2", "$4", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), - new MacroOptionParser("-D\\s*([^\\s=\"']*)=(\\\\([\"']))(.*?)\\2", "$1", "$3$4$3", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), - new MacroOptionParser("-D\\s*([^\\s=\"']*)=([\"'])(.*?)\\2", "$1", "$3", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), - new MacroOptionParser("-D\\s*([^\\s=\"']*)(=([^\\s\"']*))?", "$1", "$3", ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), - }; + new IncludePathOptionParser("-qc\\+\\+=\\s*([^\\s\"']*)", "$1", + ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), + new MacroOptionParser("-D\\s*([\"'])([^=]*)(=(.*))?\\1", "$2", "$4", + ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), + new MacroOptionParser("-D\\s*([^\\s=\"']*)=(\\\\([\"']))(.*?)\\2", "$1", "$3$4$3", + ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), + new MacroOptionParser("-D\\s*([^\\s=\"']*)=([\"'])(.*?)\\2", "$1", "$3", + ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), + new MacroOptionParser("-D\\s*([^\\s=\"']*)(=([^\\s\"']*))?", "$1", "$3", + ICSettingEntry.BUILTIN | ICSettingEntry.READONLY), }; @Override public String getToolchainId() { @@ -69,7 +76,7 @@ public class XlcBuiltinSpecsDetector extends ToolchainBuiltinSpecsDetector imple Matcher optionMatcher = OPTIONS_PATTERN.matcher(line); while (optionMatcher.find()) { String option = optionMatcher.group(OPTION_GROUP); - if (option!=null) { + if (option != null) { options.add(option); } } diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/aix/AixConfigurationEnvironmentSupplier.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/aix/AixConfigurationEnvironmentSupplier.java index a7ae73b0148..d65417ddc94 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/aix/AixConfigurationEnvironmentSupplier.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/aix/AixConfigurationEnvironmentSupplier.java @@ -20,37 +20,39 @@ import org.eclipse.cdt.managedbuilder.envvar.IConfigurationEnvironmentVariableSu import org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider; import org.eclipse.cdt.managedbuilder.internal.envvar.BuildEnvVar; -public class AixConfigurationEnvironmentSupplier implements - IConfigurationEnvironmentVariableSupplier { +public class AixConfigurationEnvironmentSupplier implements IConfigurationEnvironmentVariableSupplier { static final String VARNAME = "PATH"; static final String BINPATH = "/usr/vac/bin"; static final String DELIMITER_AIX = ":"; static final String PROPERTY_DELIMITER = "path.separator"; - static final String PROPERTY_OSNAME = "os.name"; + static final String PROPERTY_OSNAME = "os.name"; + /* (non-Javadoc) * @see org.eclipse.cdt.managedbuilder.envvar.IConfigurationEnvironmentVariableSupplier#getVariable(java.lang.String, org.eclipse.cdt.managedbuilder.core.IConfiguration, org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider) */ @Override - public IBuildEnvironmentVariable getVariable(String variableName, - IConfiguration configuration, IEnvironmentVariableProvider provider) { + public IBuildEnvironmentVariable getVariable(String variableName, IConfiguration configuration, + IEnvironmentVariableProvider provider) { - if (variableName == null) return null; - if (!VARNAME.equalsIgnoreCase(variableName)) return null; - return new BuildEnvVar(VARNAME, BINPATH, - IBuildEnvironmentVariable.ENVVAR_PREPEND, - System.getProperty(PROPERTY_DELIMITER, DELIMITER_AIX)); + if (variableName == null) + return null; + if (!VARNAME.equalsIgnoreCase(variableName)) + return null; + return new BuildEnvVar(VARNAME, BINPATH, IBuildEnvironmentVariable.ENVVAR_PREPEND, + System.getProperty(PROPERTY_DELIMITER, DELIMITER_AIX)); } /* (non-Javadoc) * @see org.eclipse.cdt.managedbuilder.envvar.IConfigurationEnvironmentVariableSupplier#getVariables(org.eclipse.cdt.managedbuilder.core.IConfiguration, org.eclipse.cdt.managedbuilder.envvar.IEnvironmentVariableProvider) */ @Override - public IBuildEnvironmentVariable[] getVariables( - IConfiguration configuration, IEnvironmentVariableProvider provider) { + public IBuildEnvironmentVariable[] getVariables(IConfiguration configuration, + IEnvironmentVariableProvider provider) { IBuildEnvironmentVariable[] tmp = new IBuildEnvironmentVariable[1]; tmp[0] = getVariable(VARNAME, configuration, provider); - if (tmp[0] != null) return tmp; + if (tmp[0] != null) + return tmp; return null; } } diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/aix/AixPathResolver.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/aix/AixPathResolver.java index 84e8d07a81d..0a5f64f6558 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/aix/AixPathResolver.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/aix/AixPathResolver.java @@ -24,8 +24,8 @@ public class AixPathResolver implements IBuildPathResolver { * @see org.eclipse.cdt.managedbuilder.core.IBuildPathResolver#resolveBuildPaths(int, java.lang.String, java.lang.String, org.eclipse.cdt.managedbuilder.core.IConfiguration) */ @Override - public String[] resolveBuildPaths(int pathType, String variableName, - String variableValue, IConfiguration configuration) { + public String[] resolveBuildPaths(int pathType, String variableName, String variableValue, + IConfiguration configuration) { return variableValue.split(DELIMITER_AIX); } } diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/XLCProjectMacroSupplier.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/XLCProjectMacroSupplier.java index 059a1dd8272..b156d235a70 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/XLCProjectMacroSupplier.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/XLCProjectMacroSupplier.java @@ -35,10 +35,9 @@ public class XLCProjectMacroSupplier implements IProjectBuildMacroSupplier { * @see org.eclipse.cdt.managedbuilder.macros.IProjectBuildMacroSupplier#getMacro(java.lang.String, org.eclipse.cdt.managedbuilder.core.IManagedProject, org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider) */ @Override - public IBuildMacro getMacro(String macroName, IManagedProject project, - IBuildMacroProvider provider) { + public IBuildMacro getMacro(String macroName, IManagedProject project, IBuildMacroProvider provider) { - if(macroName.equals(PreferenceConstants.P_XL_COMPILER_ROOT)) { + if (macroName.equals(PreferenceConstants.P_XL_COMPILER_ROOT)) { String compilerPath = null; // figure out compiler path from properties and preferences @@ -46,21 +45,20 @@ public class XLCProjectMacroSupplier implements IProjectBuildMacroSupplier { // search for property first IProject theProject = (IProject) project.getOwner(); try { - compilerPath = theProject.getPersistentProperty(new QualifiedName("", - PreferenceConstants.P_XL_COMPILER_ROOT)); + compilerPath = theProject + .getPersistentProperty(new QualifiedName("", PreferenceConstants.P_XL_COMPILER_ROOT)); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } - if(compilerPath == null) { + if (compilerPath == null) { // use the workbench preference IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore(); compilerPath = prefStore.getString(PreferenceConstants.P_XL_COMPILER_ROOT); } - BuildMacro macro = new BuildMacro(macroName, ICdtVariable.VALUE_PATH_DIR, - compilerPath); + BuildMacro macro = new BuildMacro(macroName, ICdtVariable.VALUE_PATH_DIR, compilerPath); return macro; } @@ -73,8 +71,7 @@ public class XLCProjectMacroSupplier implements IProjectBuildMacroSupplier { * @see org.eclipse.cdt.managedbuilder.macros.IProjectBuildMacroSupplier#getMacros(org.eclipse.cdt.managedbuilder.core.IManagedProject, org.eclipse.cdt.managedbuilder.macros.IBuildMacroProvider) */ @Override - public IBuildMacro[] getMacros(IManagedProject project, - IBuildMacroProvider provider) { + public IBuildMacro[] getMacros(IManagedProject project, IBuildMacroProvider provider) { String macroName = PreferenceConstants.P_XL_COMPILER_ROOT; @@ -85,50 +82,48 @@ public class XLCProjectMacroSupplier implements IProjectBuildMacroSupplier { // search for property first IProject theProject = (IProject) project.getOwner(); try { - compilerPath = theProject.getPersistentProperty(new QualifiedName("", - PreferenceConstants.P_XL_COMPILER_ROOT)); + compilerPath = theProject + .getPersistentProperty(new QualifiedName("", PreferenceConstants.P_XL_COMPILER_ROOT)); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } - if(compilerPath == null) { + if (compilerPath == null) { // use the workbench preference IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore(); compilerPath = prefStore.getString(PreferenceConstants.P_XL_COMPILER_ROOT); } - BuildMacro macro = new BuildMacro(macroName, ICdtVariable.VALUE_PATH_DIR, - compilerPath); + BuildMacro macro = new BuildMacro(macroName, ICdtVariable.VALUE_PATH_DIR, compilerPath); // our array consists of our macro, plus all the macros from our parent IBuildMacro[] parentMacros = provider.getMacros(IBuildMacroProvider.CONTEXT_PROJECT, project, true); - // look for an existing macro definition int foundIndex = -1; - for(int k = 0; k < parentMacros.length; k++) { - - if(parentMacros[k].getName().equals(macro.getName())) { + for (int k = 0; k < parentMacros.length; k++) { + + if (parentMacros[k].getName().equals(macro.getName())) { foundIndex = k; break; } } - + int numMacros = (foundIndex == -1) ? parentMacros.length + 1 : parentMacros.length; - + IBuildMacro[] macros = new IBuildMacro[numMacros]; // if there was no existing value then add it to the front - if(foundIndex == -1) { + if (foundIndex == -1) { macros[0] = macro; - for(int k = 1; k < macros.length; k++) { - macros[k] = parentMacros[k-1]; + for (int k = 1; k < macros.length; k++) { + macros[k] = parentMacros[k - 1]; } } - else { // replace the old value - for(int k = 0; k < macros.length; k++) { + else { // replace the old value + for (int k = 0; k < macros.length; k++) { macros[k] = parentMacros[k]; } macros[foundIndex] = macro; diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/PreferenceConstants.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/PreferenceConstants.java index a34d2d3794a..e40749d2d1f 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/PreferenceConstants.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/PreferenceConstants.java @@ -23,11 +23,11 @@ public class PreferenceConstants { public static final String P_XL_COMPILER_ROOT = "XL_compilerRoot"; //$NON-NLS-1$ - public static final String P_XLC_COMPILER_VERSION = "XLC_compilerVersion"; //$NON-NLS-1$ + public static final String P_XLC_COMPILER_VERSION = "XLC_compilerVersion"; //$NON-NLS-1$ - public static final String P_XL_COMPILER_VERSION_8 = "v8.0"; //$NON-NLS-1$ - public static final String P_XL_COMPILER_VERSION_9 = "v9.0"; //$NON-NLS-1$ - public static final String P_XL_COMPILER_VERSION_10 = "v10.1"; //$NON-NLS-1$ + public static final String P_XL_COMPILER_VERSION_8 = "v8.0"; //$NON-NLS-1$ + public static final String P_XL_COMPILER_VERSION_9 = "v9.0"; //$NON-NLS-1$ + public static final String P_XL_COMPILER_VERSION_10 = "v10.1"; //$NON-NLS-1$ public static final String P_XL_COMPILER_VERSION_11 = "v11.1"; //$NON-NLS-1$ public static final String P_XL_COMPILER_VERSION_8_NAME = Messages.XLCompiler_v8; @@ -35,7 +35,7 @@ public class PreferenceConstants { public static final String P_XL_COMPILER_VERSION_10_NAME = Messages.XLCompiler_v10; public static final String P_XL_COMPILER_VERSION_11_NAME = Messages.XLCompiler_v11; - public static String getVersion (String label) { + public static String getVersion(String label) { if (label.equalsIgnoreCase(P_XL_COMPILER_VERSION_11_NAME)) return P_XL_COMPILER_VERSION_11; else if (label.equalsIgnoreCase(P_XL_COMPILER_VERSION_10_NAME)) @@ -46,7 +46,7 @@ public class PreferenceConstants { return P_XL_COMPILER_VERSION_8; } - public static String getVersionLabel (String version) { + public static String getVersionLabel(String version) { if (version.equalsIgnoreCase(P_XL_COMPILER_VERSION_11)) return P_XL_COMPILER_VERSION_11_NAME; else if (version.equalsIgnoreCase(P_XL_COMPILER_VERSION_10)) diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/PreferenceInitializer.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/PreferenceInitializer.java index e1ef9f0242d..2df7ac8efb8 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/PreferenceInitializer.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/PreferenceInitializer.java @@ -31,7 +31,7 @@ public class PreferenceInitializer extends AbstractPreferenceInitializer { @Override public void initializeDefaultPreferences() { IPreferenceStore store = XLCUIPlugin.getDefault().getPreferenceStore(); - store.setDefault(PreferenceConstants.P_XL_COMPILER_ROOT, "/usr/vacpp/bin"); //$NON-NLS-1$ + store.setDefault(PreferenceConstants.P_XL_COMPILER_ROOT, "/usr/vacpp/bin"); //$NON-NLS-1$ store.setDefault(PreferenceConstants.P_XLC_COMPILER_VERSION, PreferenceConstants.P_XL_COMPILER_VERSION_8); } diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/XLCompilerPreferencePage.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/XLCompilerPreferencePage.java index 4b8d2ad21d0..08404edf390 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/XLCompilerPreferencePage.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/preferences/XLCompilerPreferencePage.java @@ -37,9 +37,7 @@ import org.eclipse.ui.IWorkbenchPreferencePage; * be accessed directly via the preference store. */ -public class XLCompilerPreferencePage - extends FieldEditorPreferencePage - implements IWorkbenchPreferencePage { +public class XLCompilerPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { private String originalMessage; @@ -58,19 +56,15 @@ public class XLCompilerPreferencePage @Override public void createFieldEditors() { - DirectoryFieldEditor pathEditor = new DirectoryFieldEditor(PreferenceConstants.P_XL_COMPILER_ROOT, Messages.XLCompilerPreferencePage_1, getFieldEditorParent()) - { + DirectoryFieldEditor pathEditor = new DirectoryFieldEditor(PreferenceConstants.P_XL_COMPILER_ROOT, + Messages.XLCompilerPreferencePage_1, getFieldEditorParent()) { @Override - protected boolean doCheckState() - { + protected boolean doCheckState() { // always return true, as we don't want to fail cases when compiler is installed remotely // just warn user - if (!super.doCheckState()) - { + if (!super.doCheckState()) { setMessage(Messages.XLCompilerPreferencePage_3, IMessageProvider.WARNING); - } - else - { + } else { setMessage(originalMessage); } @@ -78,8 +72,7 @@ public class XLCompilerPreferencePage } @Override - protected boolean checkState() - { + protected boolean checkState() { return doCheckState(); } @@ -87,13 +80,14 @@ public class XLCompilerPreferencePage addField(pathEditor); - String[][] versionEntries = {{PreferenceConstants.P_XL_COMPILER_VERSION_8_NAME, PreferenceConstants.P_XL_COMPILER_VERSION_8}, - {PreferenceConstants.P_XL_COMPILER_VERSION_9_NAME, PreferenceConstants.P_XL_COMPILER_VERSION_9}, - {PreferenceConstants.P_XL_COMPILER_VERSION_10_NAME, PreferenceConstants.P_XL_COMPILER_VERSION_10}, - {PreferenceConstants.P_XL_COMPILER_VERSION_11_NAME, PreferenceConstants.P_XL_COMPILER_VERSION_11}}; + String[][] versionEntries = { + { PreferenceConstants.P_XL_COMPILER_VERSION_8_NAME, PreferenceConstants.P_XL_COMPILER_VERSION_8 }, + { PreferenceConstants.P_XL_COMPILER_VERSION_9_NAME, PreferenceConstants.P_XL_COMPILER_VERSION_9 }, + { PreferenceConstants.P_XL_COMPILER_VERSION_10_NAME, PreferenceConstants.P_XL_COMPILER_VERSION_10 }, + { PreferenceConstants.P_XL_COMPILER_VERSION_11_NAME, PreferenceConstants.P_XL_COMPILER_VERSION_11 } }; - addField(new ComboFieldEditor(PreferenceConstants.P_XLC_COMPILER_VERSION, - Messages.XLCompilerPreferencePage_2, versionEntries, getFieldEditorParent())); + addField(new ComboFieldEditor(PreferenceConstants.P_XLC_COMPILER_VERSION, Messages.XLCompilerPreferencePage_2, + versionEntries, getFieldEditorParent())); } @@ -101,8 +95,7 @@ public class XLCompilerPreferencePage * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench) */ @Override - public void init(IWorkbench workbench) - { + public void init(IWorkbench workbench) { originalMessage = getMessage(); } diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/HiddenOptionApplicabilityCalculator.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/HiddenOptionApplicabilityCalculator.java index d07368c4088..62e6e821015 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/HiddenOptionApplicabilityCalculator.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/HiddenOptionApplicabilityCalculator.java @@ -23,16 +23,14 @@ import org.eclipse.cdt.managedbuilder.core.IOptionApplicability; This class decides whether the make shared object option is visible,enabled or used in command line or not */ -public class HiddenOptionApplicabilityCalculator implements - IOptionApplicability { +public class HiddenOptionApplicabilityCalculator implements IOptionApplicability { /** * This function decides if the option for which this class * is option applicability calculator is enabled or not. */ @Override - public boolean isOptionEnabled(IBuildObject configuration, - IHoldsOptions holder, IOption option) { + public boolean isOptionEnabled(IBuildObject configuration, IHoldsOptions holder, IOption option) { return false; } @@ -43,8 +41,7 @@ public class HiddenOptionApplicabilityCalculator implements */ @Override - public boolean isOptionUsedInCommandLine(IBuildObject configuration, - IHoldsOptions holder, IOption option) { + public boolean isOptionUsedInCommandLine(IBuildObject configuration, IHoldsOptions holder, IOption option) { return true; } @@ -54,8 +51,7 @@ public class HiddenOptionApplicabilityCalculator implements */ @Override - public boolean isOptionVisible(IBuildObject configuration, - IHoldsOptions holder, IOption option) { + public boolean isOptionVisible(IBuildObject configuration, IHoldsOptions holder, IOption option) { return false; } diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCApplicabilityCalculator.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCApplicabilityCalculator.java index 620b202ce69..a7163ebcd0d 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCApplicabilityCalculator.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCApplicabilityCalculator.java @@ -44,8 +44,7 @@ import org.eclipse.jface.preference.IPreferenceStore; * */ -public class XLCApplicabilityCalculator implements IOptionApplicability -{ +public class XLCApplicabilityCalculator implements IOptionApplicability { private static final String BUNDLE_NAME = "org/eclipse/cdt/managedbuilder/xlc/ui/properties/applicability.properties"; private static final String PROP_NAME_VERSION_ORDER = "xlc.applicability.version.order"; private static final String PROP_VALUE_PLUS = "+"; @@ -54,10 +53,8 @@ public class XLCApplicabilityCalculator implements IOptionApplicability private static List versionOrder; private static Map applicabilityMap; - public XLCApplicabilityCalculator() - { - if (!initialized) - { + public XLCApplicabilityCalculator() { + if (!initialized) { Properties props = null; ClassLoader loader = this.getClass().getClassLoader(); @@ -69,17 +66,14 @@ public class XLCApplicabilityCalculator implements IOptionApplicability if (input == null) input = ClassLoader.getSystemResourceAsStream(BUNDLE_NAME); - try - { - if (input != null) - { + try { + if (input != null) { props = new Properties(); props.load(input); Set entrySet = props.entrySet(); Iterator iterator = entrySet.iterator(); - while (iterator.hasNext()) - { + while (iterator.hasNext()) { Map.Entry entry = (Map.Entry) iterator.next(); String key = (String) entry.getKey(); @@ -88,45 +82,36 @@ public class XLCApplicabilityCalculator implements IOptionApplicability if (value == null) value = ""; - if (key.equals(PROP_NAME_VERSION_ORDER)) - { + if (key.equals(PROP_NAME_VERSION_ORDER)) { versionOrder = new ArrayList(); String[] versions = value.split(","); - if (versions != null) - { - for (int i = 0; i < versions.length; i ++) - { + if (versions != null) { + for (int i = 0; i < versions.length; i++) { versionOrder.add(versions[i].trim()); } } - } - else - { + } else { if (applicabilityMap == null) applicabilityMap = new HashMap(); List applicList = (List) applicabilityMap.get(key); - if (applicList == null) - { + if (applicList == null) { applicList = new ArrayList(); applicabilityMap.put(key, applicList); } boolean hasGreaterOption = false; //find if ends with + and set as separate option - if (value.endsWith(PROP_VALUE_PLUS)) - { + if (value.endsWith(PROP_VALUE_PLUS)) { hasGreaterOption = true; value = value.substring(0, value.length() - PROP_VALUE_PLUS.length()); } String[] versions = value.split(","); - if (versions != null) - { - for (int i = 0; i < versions.length; i ++) - { + if (versions != null) { + for (int i = 0; i < versions.length; i++) { applicList.add(versions[i].trim()); } @@ -137,21 +122,13 @@ public class XLCApplicabilityCalculator implements IOptionApplicability } } } - } - catch (IOException e) - { + } catch (IOException e) { e.printStackTrace(); - } - finally - { - if (input != null) - { - try - { + } finally { + if (input != null) { + try { input.close(); - } - catch (IOException e) - { + } catch (IOException e) { // ignore } } @@ -162,19 +139,15 @@ public class XLCApplicabilityCalculator implements IOptionApplicability } } - private boolean isApplicable(IBuildObject configuration, IHoldsOptions holder, IOption option) - { + private boolean isApplicable(IBuildObject configuration, IHoldsOptions holder, IOption option) { // first we check the preference for this project, if it exists IProject project = null; - if(configuration instanceof IConfiguration) - { + if (configuration instanceof IConfiguration) { IConfiguration config = (IConfiguration) configuration; IManagedProject managedProject = config.getManagedProject(); project = (IProject) managedProject.getOwner(); - } - else if(configuration instanceof IFolderInfo) - { + } else if (configuration instanceof IFolderInfo) { IFolderInfo folderInfo = (IFolderInfo) configuration; IConfiguration config = folderInfo.getParent(); @@ -190,14 +163,13 @@ public class XLCApplicabilityCalculator implements IOptionApplicability String currentVersion = null; try { - currentVersion = project.getPersistentProperty(new QualifiedName("", - PreferenceConstants.P_XLC_COMPILER_VERSION)); + currentVersion = project + .getPersistentProperty(new QualifiedName("", PreferenceConstants.P_XLC_COMPILER_VERSION)); } catch (CoreException e) { e.printStackTrace(); } - if(currentVersion == null) - { + if (currentVersion == null) { // if the property isn't set, then use the workbench preference IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore(); currentVersion = prefStore.getString(PreferenceConstants.P_XLC_COMPILER_VERSION); @@ -220,8 +192,7 @@ public class XLCApplicabilityCalculator implements IOptionApplicability //then we need to find out if current version is greater than the last valid in the list String lastOption = (String) applicList.get(applicList.size() - 1); - if (lastOption != null && lastOption.equals(PROP_VALUE_PLUS)) - { + if (lastOption != null && lastOption.equals(PROP_VALUE_PLUS)) { //if 'greater than' option is specified but no version order exists, consider config error and return false if (versionOrder == null) return false; @@ -229,12 +200,10 @@ public class XLCApplicabilityCalculator implements IOptionApplicability //check for the last valid version in applicability list String validVersion = null; //start with element before the + - for (int k = applicList.size() - 2; k >= 0; k --) - { + for (int k = applicList.size() - 2; k >= 0; k--) { String version = (String) applicList.get(k); - if (versionOrder.contains(version)) - { + if (versionOrder.contains(version)) { validVersion = version; break; } @@ -249,7 +218,6 @@ public class XLCApplicabilityCalculator implements IOptionApplicability return true; } - return false; } @@ -258,8 +226,7 @@ public class XLCApplicabilityCalculator implements IOptionApplicability * @see org.eclipse.cdt.managedbuilder.core.IOptionApplicability#isOptionEnabled(org.eclipse.cdt.managedbuilder.core.IBuildObject, org.eclipse.cdt.managedbuilder.core.IHoldsOptions, org.eclipse.cdt.managedbuilder.core.IOption) */ @Override - public boolean isOptionEnabled(IBuildObject configuration, - IHoldsOptions holder, IOption option) { + public boolean isOptionEnabled(IBuildObject configuration, IHoldsOptions holder, IOption option) { return isApplicable(configuration, holder, option); } @@ -267,8 +234,7 @@ public class XLCApplicabilityCalculator implements IOptionApplicability * @see org.eclipse.cdt.managedbuilder.core.IOptionApplicability#isOptionUsedInCommandLine(org.eclipse.cdt.managedbuilder.core.IBuildObject, org.eclipse.cdt.managedbuilder.core.IHoldsOptions, org.eclipse.cdt.managedbuilder.core.IOption) */ @Override - public boolean isOptionUsedInCommandLine(IBuildObject configuration, - IHoldsOptions holder, IOption option) { + public boolean isOptionUsedInCommandLine(IBuildObject configuration, IHoldsOptions holder, IOption option) { return isApplicable(configuration, holder, option); } @@ -276,8 +242,7 @@ public class XLCApplicabilityCalculator implements IOptionApplicability * @see org.eclipse.cdt.managedbuilder.core.IOptionApplicability#isOptionVisible(org.eclipse.cdt.managedbuilder.core.IBuildObject, org.eclipse.cdt.managedbuilder.core.IHoldsOptions, org.eclipse.cdt.managedbuilder.core.IOption) */ @Override - public boolean isOptionVisible(IBuildObject configuration, - IHoldsOptions holder, IOption option) { + public boolean isOptionVisible(IBuildObject configuration, IHoldsOptions holder, IOption option) { return isApplicable(configuration, holder, option); } diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCompilerPropertyPage.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCompilerPropertyPage.java index f7240e28044..8e55e62e63e 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCompilerPropertyPage.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCompilerPropertyPage.java @@ -36,7 +36,6 @@ public class XLCompilerPropertyPage extends FieldEditorPreferencePage implements protected Composite versionParent; - /* (non-Javadoc) * @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors() */ @@ -109,7 +108,8 @@ public class XLCompilerPropertyPage extends FieldEditorPreferencePage implements IProject project = ((IResource) (getElement().getAdapter(IResource.class))).getProject(); String[] versionEntries = { PreferenceConstants.P_XL_COMPILER_VERSION_8_NAME, - PreferenceConstants.P_XL_COMPILER_VERSION_9_NAME, PreferenceConstants.P_XL_COMPILER_VERSION_10_NAME, PreferenceConstants.P_XL_COMPILER_VERSION_11_NAME }; + PreferenceConstants.P_XL_COMPILER_VERSION_9_NAME, PreferenceConstants.P_XL_COMPILER_VERSION_10_NAME, + PreferenceConstants.P_XL_COMPILER_VERSION_11_NAME }; versionParent = getFieldEditorParent(); @@ -170,7 +170,6 @@ public class XLCompilerPropertyPage extends FieldEditorPreferencePage implements //set the text entry to default setting fVersionEditor.getComboControl(versionParent).setText(currentVersionLabel); - } /* diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCv8ApplicabiltyCalculator.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCv8ApplicabiltyCalculator.java index 8dc09fd5e10..001e009359f 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCv8ApplicabiltyCalculator.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCv8ApplicabiltyCalculator.java @@ -35,7 +35,7 @@ public class XLCv8ApplicabiltyCalculator implements IOptionApplicability { private boolean isVersion8(IBuildObject configuration) { // first we check the preference for this project, if it exists - if(configuration instanceof IConfiguration) { + if (configuration instanceof IConfiguration) { IConfiguration config = (IConfiguration) configuration; IManagedProject managedProject = config.getManagedProject(); @@ -43,24 +43,24 @@ public class XLCv8ApplicabiltyCalculator implements IOptionApplicability { String currentVersion = null; try { - currentVersion = project.getPersistentProperty(new QualifiedName("", - PreferenceConstants.P_XLC_COMPILER_VERSION)); + currentVersion = project + .getPersistentProperty(new QualifiedName("", PreferenceConstants.P_XLC_COMPILER_VERSION)); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } - if(currentVersion == null) { + if (currentVersion == null) { // if the property isn't set, then use the workbench preference IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore(); currentVersion = prefStore.getString(PreferenceConstants.P_XLC_COMPILER_VERSION); } - if(currentVersion.equals(PreferenceConstants.P_XL_COMPILER_VERSION_8)) - return true; + if (currentVersion.equals(PreferenceConstants.P_XL_COMPILER_VERSION_8)) + return true; } - if(configuration instanceof IFolderInfo) { + if (configuration instanceof IFolderInfo) { IFolderInfo folderInfo = (IFolderInfo) configuration; IConfiguration config = folderInfo.getParent(); @@ -71,21 +71,21 @@ public class XLCv8ApplicabiltyCalculator implements IOptionApplicability { String currentVersion = null; try { - currentVersion = project.getPersistentProperty(new QualifiedName("", - PreferenceConstants.P_XLC_COMPILER_VERSION)); + currentVersion = project + .getPersistentProperty(new QualifiedName("", PreferenceConstants.P_XLC_COMPILER_VERSION)); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } - if(currentVersion == null) { + if (currentVersion == null) { // if the property isn't set, then use the workbench preference IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore(); currentVersion = prefStore.getString(PreferenceConstants.P_XLC_COMPILER_VERSION); } - if(currentVersion.equals(PreferenceConstants.P_XL_COMPILER_VERSION_8)) - return true; + if (currentVersion.equals(PreferenceConstants.P_XL_COMPILER_VERSION_8)) + return true; } @@ -97,8 +97,7 @@ public class XLCv8ApplicabiltyCalculator implements IOptionApplicability { * @see org.eclipse.cdt.managedbuilder.core.IOptionApplicability#isOptionEnabled(org.eclipse.cdt.managedbuilder.core.IBuildObject, org.eclipse.cdt.managedbuilder.core.IHoldsOptions, org.eclipse.cdt.managedbuilder.core.IOption) */ @Override - public boolean isOptionEnabled(IBuildObject configuration, - IHoldsOptions holder, IOption option) { + public boolean isOptionEnabled(IBuildObject configuration, IHoldsOptions holder, IOption option) { return isVersion8(configuration); } @@ -106,8 +105,7 @@ public class XLCv8ApplicabiltyCalculator implements IOptionApplicability { * @see org.eclipse.cdt.managedbuilder.core.IOptionApplicability#isOptionUsedInCommandLine(org.eclipse.cdt.managedbuilder.core.IBuildObject, org.eclipse.cdt.managedbuilder.core.IHoldsOptions, org.eclipse.cdt.managedbuilder.core.IOption) */ @Override - public boolean isOptionUsedInCommandLine(IBuildObject configuration, - IHoldsOptions holder, IOption option) { + public boolean isOptionUsedInCommandLine(IBuildObject configuration, IHoldsOptions holder, IOption option) { return isVersion8(configuration); } @@ -115,8 +113,7 @@ public class XLCv8ApplicabiltyCalculator implements IOptionApplicability { * @see org.eclipse.cdt.managedbuilder.core.IOptionApplicability#isOptionVisible(org.eclipse.cdt.managedbuilder.core.IBuildObject, org.eclipse.cdt.managedbuilder.core.IHoldsOptions, org.eclipse.cdt.managedbuilder.core.IOption) */ @Override - public boolean isOptionVisible(IBuildObject configuration, - IHoldsOptions holder, IOption option) { + public boolean isOptionVisible(IBuildObject configuration, IHoldsOptions holder, IOption option) { return isVersion8(configuration); } } diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCv9ApplicabilityCalculator.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCv9ApplicabilityCalculator.java index bde91af75dc..533e9b182e0 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCv9ApplicabilityCalculator.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/properties/XLCv9ApplicabilityCalculator.java @@ -37,7 +37,7 @@ public class XLCv9ApplicabilityCalculator implements IOptionApplicability { private boolean isVersion9(IBuildObject configuration) { // first we check the preference for this project, if it exists - if(configuration instanceof IConfiguration) { + if (configuration instanceof IConfiguration) { IConfiguration config = (IConfiguration) configuration; IManagedProject managedProject = config.getManagedProject(); @@ -45,24 +45,24 @@ public class XLCv9ApplicabilityCalculator implements IOptionApplicability { String currentVersion = null; try { - currentVersion = project.getPersistentProperty(new QualifiedName("", - PreferenceConstants.P_XLC_COMPILER_VERSION)); + currentVersion = project + .getPersistentProperty(new QualifiedName("", PreferenceConstants.P_XLC_COMPILER_VERSION)); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } - if(currentVersion == null) { + if (currentVersion == null) { // if the property isn't set, then use the workbench preference IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore(); currentVersion = prefStore.getString(PreferenceConstants.P_XLC_COMPILER_VERSION); } - if(currentVersion.equals(PreferenceConstants.P_XL_COMPILER_VERSION_9)) - return true; + if (currentVersion.equals(PreferenceConstants.P_XL_COMPILER_VERSION_9)) + return true; } - if(configuration instanceof IFolderInfo) { + if (configuration instanceof IFolderInfo) { IFolderInfo folderInfo = (IFolderInfo) configuration; IConfiguration config = folderInfo.getParent(); @@ -73,21 +73,21 @@ public class XLCv9ApplicabilityCalculator implements IOptionApplicability { String currentVersion = null; try { - currentVersion = project.getPersistentProperty(new QualifiedName("", - PreferenceConstants.P_XLC_COMPILER_VERSION)); + currentVersion = project + .getPersistentProperty(new QualifiedName("", PreferenceConstants.P_XLC_COMPILER_VERSION)); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } - if(currentVersion == null) { + if (currentVersion == null) { // if the property isn't set, then use the workbench preference IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore(); currentVersion = prefStore.getString(PreferenceConstants.P_XLC_COMPILER_VERSION); } - if(currentVersion.equals(PreferenceConstants.P_XL_COMPILER_VERSION_9)) - return true; + if (currentVersion.equals(PreferenceConstants.P_XL_COMPILER_VERSION_9)) + return true; } @@ -99,8 +99,7 @@ public class XLCv9ApplicabilityCalculator implements IOptionApplicability { * @see org.eclipse.cdt.managedbuilder.core.IOptionApplicability#isOptionEnabled(org.eclipse.cdt.managedbuilder.core.IBuildObject, org.eclipse.cdt.managedbuilder.core.IHoldsOptions, org.eclipse.cdt.managedbuilder.core.IOption) */ @Override - public boolean isOptionEnabled(IBuildObject configuration, - IHoldsOptions holder, IOption option) { + public boolean isOptionEnabled(IBuildObject configuration, IHoldsOptions holder, IOption option) { return isVersion9(configuration); } @@ -108,8 +107,7 @@ public class XLCv9ApplicabilityCalculator implements IOptionApplicability { * @see org.eclipse.cdt.managedbuilder.core.IOptionApplicability#isOptionUsedInCommandLine(org.eclipse.cdt.managedbuilder.core.IBuildObject, org.eclipse.cdt.managedbuilder.core.IHoldsOptions, org.eclipse.cdt.managedbuilder.core.IOption) */ @Override - public boolean isOptionUsedInCommandLine(IBuildObject configuration, - IHoldsOptions holder, IOption option) { + public boolean isOptionUsedInCommandLine(IBuildObject configuration, IHoldsOptions holder, IOption option) { return isVersion9(configuration); } @@ -117,8 +115,7 @@ public class XLCv9ApplicabilityCalculator implements IOptionApplicability { * @see org.eclipse.cdt.managedbuilder.core.IOptionApplicability#isOptionVisible(org.eclipse.cdt.managedbuilder.core.IBuildObject, org.eclipse.cdt.managedbuilder.core.IHoldsOptions, org.eclipse.cdt.managedbuilder.core.IOption) */ @Override - public boolean isOptionVisible(IBuildObject configuration, - IHoldsOptions holder, IOption option) { + public boolean isOptionVisible(IBuildObject configuration, IHoldsOptions holder, IOption option) { return isVersion9(configuration); } diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/variables/DynamicVariableResolver.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/variables/DynamicVariableResolver.java index 3f64a2fda6e..1557a6744fe 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/variables/DynamicVariableResolver.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/variables/DynamicVariableResolver.java @@ -30,12 +30,10 @@ public class DynamicVariableResolver implements IDynamicVariableResolver { * @see org.eclipse.core.variables.IDynamicVariableResolver#resolveValue(org.eclipse.core.variables.IDynamicVariable, java.lang.String) */ @Override - public String resolveValue(IDynamicVariable variable, String argument) - throws CoreException { + public String resolveValue(IDynamicVariable variable, String argument) throws CoreException { if (variable.getName().equals((PreferenceConstants.P_XL_COMPILER_ROOT))) { - IPreferenceStore prefStore = XLCUIPlugin.getDefault() - .getPreferenceStore(); + IPreferenceStore prefStore = XLCUIPlugin.getDefault().getPreferenceStore(); return prefStore.getString(PreferenceConstants.P_XL_COMPILER_ROOT); } diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/wizards/XLCSettingsWizardPage.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/wizards/XLCSettingsWizardPage.java index 68d25e62dfb..1f934ef390a 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/wizards/XLCSettingsWizardPage.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/wizards/XLCSettingsWizardPage.java @@ -44,8 +44,7 @@ public class XLCSettingsWizardPage extends MBSCustomPage { public static final String PAGE_ID = "org.eclipse.cdt.managedbuilder.xlc.ui.XlcSettingsWizardPage"; //$NON-NLS-1$ - private final class BrowseButtonSelectionListener implements - SelectionListener { + private final class BrowseButtonSelectionListener implements SelectionListener { private final Composite composite; private BrowseButtonSelectionListener(Composite composite) { @@ -92,9 +91,11 @@ public class XLCSettingsWizardPage extends MBSCustomPage { } private void setDefaultPreferences(String pageID) { - String compilerPath = XLCUIPlugin.getDefault().getPreferenceStore().getString(PreferenceConstants.P_XL_COMPILER_ROOT); + String compilerPath = XLCUIPlugin.getDefault().getPreferenceStore() + .getString(PreferenceConstants.P_XL_COMPILER_ROOT); MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XL_COMPILER_ROOT, compilerPath); - MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XLC_COMPILER_VERSION, PreferenceConstants.P_XL_COMPILER_VERSION_8); + MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XLC_COMPILER_VERSION, + PreferenceConstants.P_XL_COMPILER_VERSION_8); } /* (non-Javadoc) @@ -152,7 +153,8 @@ public class XLCSettingsWizardPage extends MBSCustomPage { @Override public void modifyText(ModifyEvent e) { // update the page manager with the setting - MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XL_COMPILER_ROOT, fDirTextBox.getText()); + MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XL_COMPILER_ROOT, + fDirTextBox.getText()); } @@ -165,8 +167,7 @@ public class XLCSettingsWizardPage extends MBSCustomPage { Button browseButton = new Button(fComposite, SWT.PUSH); browseButton.setAlignment(SWT.CENTER); browseButton.setText(Messages.XLCSettingsWizardPage_2); - browseButton.addSelectionListener(new BrowseButtonSelectionListener(fComposite) - ); + browseButton.addSelectionListener(new BrowseButtonSelectionListener(fComposite)); browseButton.setVisible(true); @@ -195,14 +196,16 @@ public class XLCSettingsWizardPage extends MBSCustomPage { fVersionCombo.setText(PreferenceConstants.getVersionLabel(compilerVersion)); // update the page manager with the setting - MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XLC_COMPILER_VERSION, PreferenceConstants.getVersion(fVersionCombo.getText())); + MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XLC_COMPILER_VERSION, + PreferenceConstants.getVersion(fVersionCombo.getText())); fVersionCombo.addModifyListener(new ModifyListener() { @Override public void modifyText(ModifyEvent e) { // update the page manager with the setting - MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XLC_COMPILER_VERSION, PreferenceConstants.getVersion(fVersionCombo.getText())); + MBSCustomPageManager.addPageProperty(pageID, PreferenceConstants.P_XLC_COMPILER_VERSION, + PreferenceConstants.getVersion(fVersionCombo.getText())); } diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/wizards/XLCSettingsWizardRunnable.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/wizards/XLCSettingsWizardRunnable.java index 72be374bbab..f8f74dc7a0a 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/wizards/XLCSettingsWizardRunnable.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlc.ui/src/org/eclipse/cdt/managedbuilder/xlc/ui/wizards/XLCSettingsWizardRunnable.java @@ -40,20 +40,24 @@ public class XLCSettingsWizardRunnable implements IRunnableWithProgress { @Override public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { // take the data from the page manager, and set the project properties with it - String compilerPath = MBSCustomPageManager.getPageProperty(pageId, PreferenceConstants.P_XL_COMPILER_ROOT).toString(); - String compilerVersion = MBSCustomPageManager.getPageProperty(pageId, PreferenceConstants.P_XLC_COMPILER_VERSION).toString(); + String compilerPath = MBSCustomPageManager.getPageProperty(pageId, PreferenceConstants.P_XL_COMPILER_ROOT) + .toString(); + String compilerVersion = MBSCustomPageManager + .getPageProperty(pageId, PreferenceConstants.P_XLC_COMPILER_VERSION).toString(); // get a handle to the wizard IWizardPage[] pages = MBSCustomPageManager.getPages(); - if(pages != null && pages.length > 0) { + if (pages != null && pages.length > 0) { ICDTCommonProjectWizard wizard = (ICDTCommonProjectWizard) pages[0].getWizard(); IProject project = wizard.getLastProject(); try { - project.setPersistentProperty(new QualifiedName("", PreferenceConstants.P_XL_COMPILER_ROOT), compilerPath); - project.setPersistentProperty(new QualifiedName("", PreferenceConstants.P_XLC_COMPILER_VERSION), compilerVersion); + project.setPersistentProperty(new QualifiedName("", PreferenceConstants.P_XL_COMPILER_ROOT), + compilerPath); + project.setPersistentProperty(new QualifiedName("", PreferenceConstants.P_XLC_COMPILER_VERSION), + compilerVersion); } catch (CoreException e) { CCorePlugin.log(e); diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/Activator.java b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/Activator.java index 8a6df59398b..0c60ca8b38b 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/Activator.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/Activator.java @@ -16,15 +16,12 @@ package org.eclipse.cdt.managedbuilder.xlupc.ui; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; - public class Activator extends AbstractUIPlugin { public static final String PLUGIN_ID = "org.eclipse.cdt.managedbuilder.xlupc.ui"; //$NON-NLS-1$ - private static Activator plugin; - public Activator() { } diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/Messages.java b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/Messages.java index 03d719266e1..c51cc76e54f 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/Messages.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/Messages.java @@ -24,7 +24,8 @@ public class Messages extends NLS { NLS.initializeMessages(BUNDLE_NAME, Messages.class); } - private Messages() {} + private Messages() { + } public static String UpcProjectWizard_0; public static String UpcProjectWizard_1; diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/UpcProjectWizard.java b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/UpcProjectWizard.java index f072da4b296..ee914ce5390 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/UpcProjectWizard.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/UpcProjectWizard.java @@ -29,7 +29,6 @@ import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; - @SuppressWarnings({ "nls", "serial" }) public class UpcProjectWizard extends CDTCommonProjectWizard { @@ -44,34 +43,32 @@ public class UpcProjectWizard extends CDTCommonProjectWizard { private final static String PAGE_NAME = "org.eclipse.cdt.managedbuilder.xlupc.ui.mainpage"; - - private static final Set ALL_TYPES = new HashSet() {{ - add(ARTIFACT_TYPE_UPC_EXE); - add(ARTIFACT_TYPE_UPC_EXE_DEFAULT); - add(ARTIFACT_TYPE_UPC_SO); - add(ARTIFACT_TYPE_UPC_SO_DEFAULT); - add(ARTIFACT_TYPE_UPC_LIB); - add(ARTIFACT_TYPE_UPC_LIB_DEFAULT); - }}; - - + private static final Set ALL_TYPES = new HashSet() { + { + add(ARTIFACT_TYPE_UPC_EXE); + add(ARTIFACT_TYPE_UPC_EXE_DEFAULT); + add(ARTIFACT_TYPE_UPC_SO); + add(ARTIFACT_TYPE_UPC_SO_DEFAULT); + add(ARTIFACT_TYPE_UPC_LIB); + add(ARTIFACT_TYPE_UPC_LIB_DEFAULT); + } + }; public UpcProjectWizard() { super(Messages.UpcProjectWizard_0, Messages.UpcProjectWizard_1); } - @Override - public void addPages() { + public void addPages() { fMainPage = new CDTMainWizardPage(PAGE_NAME) { @Override - public List filterItems(List items) { + public List filterItems(List items) { // filter out all non-UPC project types if (items != null) { Iterator iter = items.iterator(); while (iter.hasNext()) { EntryDescriptor entryDescriptor = iter.next(); - if(!ALL_TYPES.contains(entryDescriptor.getId())) + if (!ALL_TYPES.contains(entryDescriptor.getId())) iter.remove(); } } @@ -84,23 +81,24 @@ public class UpcProjectWizard extends CDTCommonProjectWizard { addPage(fMainPage); } - @Override protected IProject continueCreation(IProject prj) { try { CProjectNature.addCNature(prj, new NullProgressMonitor()); - } catch (CoreException e) {} + } catch (CoreException e) { + } return prj; } - @Override public String[] getNatures() { - return new String[] { CProjectNature.C_NATURE_ID/*, CCProjectNature.CC_NATURE_ID, RemoteNature.REMOTE_NATURE_ID*/}; + return new String[] { + CProjectNature.C_NATURE_ID/*, CCProjectNature.CC_NATURE_ID, RemoteNature.REMOTE_NATURE_ID*/ }; } @Override public String[] getContentTypeIDs() { - return new String[] { CCorePlugin.CONTENT_TYPE_CSOURCE, CCorePlugin.CONTENT_TYPE_CHEADER, UPCLanguage.UPC_CONTENT_TYPE_ID }; + return new String[] { CCorePlugin.CONTENT_TYPE_CSOURCE, CCorePlugin.CONTENT_TYPE_CHEADER, + UPCLanguage.UPC_CONTENT_TYPE_ID }; } } diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/XLUpcSettingsWizardRunnable.java b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/XLUpcSettingsWizardRunnable.java index ed16493e808..39c52c6e8c4 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/XLUpcSettingsWizardRunnable.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlupc.ui/src/org/eclipse/cdt/managedbuilder/xlupc/ui/wizards/XLUpcSettingsWizardRunnable.java @@ -33,12 +33,11 @@ import org.eclipse.core.runtime.content.IContentType; import org.eclipse.core.runtime.content.IContentTypeManager; import org.eclipse.jface.wizard.IWizardPage; - public class XLUpcSettingsWizardRunnable extends XLCSettingsWizardRunnable { - // now add UPC language mapping to the project - private static final String[] CONTENT_TYPE_IDS = { CCorePlugin.CONTENT_TYPE_CHEADER, CCorePlugin.CONTENT_TYPE_CSOURCE }; + private static final String[] CONTENT_TYPE_IDS = { CCorePlugin.CONTENT_TYPE_CHEADER, + CCorePlugin.CONTENT_TYPE_CSOURCE }; public XLUpcSettingsWizardRunnable() { pageId = XLUpcSettingsWizardPage.PAGE_ID; @@ -64,8 +63,8 @@ public class XLUpcSettingsWizardRunnable extends XLCSettingsWizardRunnable { IContentTypeManager contentTypeManager = Platform.getContentTypeManager(); - for(String id : CONTENT_TYPE_IDS) { - if(contentTypeManager.getContentType(id) != null) { + for (String id : CONTENT_TYPE_IDS) { + if (contentTypeManager.getContentType(id) != null) { langConfig.addContentTypeMapping(configDescription, id, UPCLanguage.ID); } } -- cgit v1.2.3