Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Kucera2008-02-14 22:31:55 +0000
committerMike Kucera2008-02-14 22:31:55 +0000
commit30fa8e597b35db5e992061b9ef222f79f29fddd6 (patch)
tree384ca80efbc192641194595dcce32a38a0e4851d
parent743d1d04ee3f9f6bfabe651daa18dcee09d36fae (diff)
downloadorg.eclipse.cdt-30fa8e597b35db5e992061b9ef222f79f29fddd6.tar.gz
org.eclipse.cdt-30fa8e597b35db5e992061b9ef222f79f29fddd6.tar.xz
org.eclipse.cdt-30fa8e597b35db5e992061b9ef222f79f29fddd6.zip
secondary parser to solve cast ambiguity in C++
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/c99/C99Tests.java17
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/build.xml4
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPNoCastExpressionParser.g36
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/BuildASTParserAction.java21
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java8
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java9
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java2038
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParserprs.java2700
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParsersym.java270
9 files changed, 5085 insertions, 18 deletions
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/c99/C99Tests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/c99/C99Tests.java
index 399ba88e1ab..0ed58333fa0 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/c99/C99Tests.java
+++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/c99/C99Tests.java
@@ -18,6 +18,8 @@ import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.ast.c.ICASTSimpleDeclSpecifier;
import org.eclipse.cdt.core.dom.lrparser.BaseExtensibleLanguage;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
+import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
+import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.AST2Tests;
import org.eclipse.cdt.internal.core.parser.ParserException;
@@ -39,18 +41,21 @@ public class C99Tests extends AST2Tests {
}
- protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException {
- if(lang != ParserLanguage.C)
- return super.parse(code, lang, useGNUExtensions, expectNoProblems);
-
- return ParseHelper.parse(code, getLanguage(), expectNoProblems);
+ @Override
+ protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException {
+ ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language();
+ return ParseHelper.parse(code, language, expectNoProblems);
}
- protected BaseExtensibleLanguage getLanguage() {
+ protected ILanguage getC99Language() {
return C99Language.getDefault();
}
+ protected ILanguage getCPPLanguage() {
+ return ISOCPPLanguage.getDefault();
+ }
+
public void testMultipleHashHash() throws Exception {
String code = "#define TWICE(a) int a##tera; int a##ther; \n TWICE(pan)";
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/build.xml b/lrparser/org.eclipse.cdt.core.lrparser/grammar/build.xml
index 44530494367..21fc2186baf 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/build.xml
+++ b/lrparser/org.eclipse.cdt.core.lrparser/grammar/build.xml
@@ -60,6 +60,10 @@
<antcall target="generate-cpp">
<param name="grammar_name" value="CPPExpressionStatementParser"/>
</antcall>
+ <!-- Generate parser for disambiguating cast expressions vs binary expressions-->
+ <antcall target="generate-cpp">
+ <param name="grammar_name" value="CPPNoCastExpressionParser"/>
+ </antcall>
</target>
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPNoCastExpressionParser.g b/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPNoCastExpressionParser.g
new file mode 100644
index 00000000000..ec9fd912259
--- /dev/null
+++ b/lrparser/org.eclipse.cdt.core.lrparser/grammar/cpp/CPPNoCastExpressionParser.g
@@ -0,0 +1,36 @@
+-----------------------------------------------------------------------------------
+-- Copyright (c) 2006, 2008 IBM Corporation and others.
+-- All rights reserved. This program and the accompanying materials
+-- are made available under the terms of the Eclipse Public License v1.0
+-- which accompanies this distribution, and is available at
+-- http://www.eclipse.org/legal/epl-v10.html
+--
+-- Contributors:
+-- IBM Corporation - initial API and implementation
+-----------------------------------------------------------------------------------
+
+%options la=2
+%options package=org.eclipse.cdt.internal.core.dom.lrparser.cpp
+%options template=btParserTemplateD.g
+
+$Import
+ CPPGrammar.g
+$DropRules
+
+ cast_expression
+ ::= '(' type_id ')' cast_expression
+
+$End
+
+$Start
+ no_cast_start
+$End
+
+$Rules
+
+ no_cast_start
+ ::= expression
+ | ERROR_TOKEN
+ /. $Build consumeExpressionProblem(); $EndBuild ./
+
+$End \ No newline at end of file
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/BuildASTParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/BuildASTParserAction.java
index 38ff5e9e0f7..e951ce908b4 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/BuildASTParserAction.java
+++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/BuildASTParserAction.java
@@ -52,7 +52,6 @@ import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IASTNullStatement;
import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTPointer;
import org.eclipse.cdt.core.dom.ast.IASTPointerOperator;
import org.eclipse.cdt.core.dom.ast.IASTProblem;
import org.eclipse.cdt.core.dom.ast.IASTProblemExpression;
@@ -65,18 +64,12 @@ import org.eclipse.cdt.core.dom.ast.IASTTypeId;
import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
import org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier.IASTEnumerator;
-import org.eclipse.cdt.core.dom.ast.c.ICASTDeclSpecifier;
-import org.eclipse.cdt.core.dom.ast.c.ICASTPointer;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCastExpression;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression;
import org.eclipse.cdt.core.dom.lrparser.IParser;
import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider;
import org.eclipse.cdt.core.dom.lrparser.util.DebugUtil;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99NoCastExpressionParser;
-import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym;
import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
-import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguousExpression;
-import org.eclipse.cdt.internal.core.dom.parser.c.CASTAmbiguity;
/**
@@ -138,6 +131,14 @@ public abstract class BuildASTParserAction {
/**
+ * Expression parser that does not recognize cast expressions,
+ * used to disambiguate casts.
+ */
+ protected abstract IParser getNoCastExpressionParser();
+
+
+
+ /**
* Create a new parser action.
* @param tu Root node of the AST, its list of declarations should be empty.
* @throws NullPointerException if any of the parameters are null
@@ -538,8 +539,6 @@ public abstract class BuildASTParserAction {
/**
* @param operator constant for {@link ICPPASTCastExpression}
- *
- * TODO Remove C99 specific code
*/
public void consumeExpressionCast(int operator) {
if(TRACE_ACTIONS) DebugUtil.printMethodTrace();
@@ -550,7 +549,7 @@ public abstract class BuildASTParserAction {
setOffsetAndLength(expr);
// try parsing as non-cast to resolve ambiguities
- IParser secondaryParser = new C99NoCastExpressionParser(C99Parsersym.orderedTerminalSymbols);
+ IParser secondaryParser = getNoCastExpressionParser();
IASTNode alternateExpr = runSecondaryParser(secondaryParser);
if(alternateExpr == null || alternateExpr instanceof IASTProblemExpression)
@@ -881,7 +880,7 @@ public abstract class BuildASTParserAction {
decl = nodeFactory.newDeclarator(nodeFactory.newName());
for(Object pointer : astStack.closeScope())
- decl.addPointerOperator((IASTPointer)pointer);
+ decl.addPointerOperator((IASTPointerOperator)pointer);
setOffsetAndLength(decl);
astStack.push(decl);
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java
index fd90598e69a..b9e4835e9fc 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java
+++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/c99/C99BuildASTParserAction.java
@@ -143,7 +143,10 @@ public class C99BuildASTParserAction extends BuildASTParserAction {
return new C99ExpressionStatementParser(C99Parsersym.orderedTerminalSymbols);
}
-
+ @Override
+ protected IParser getNoCastExpressionParser() {
+ return new C99NoCastExpressionParser(C99Parsersym.orderedTerminalSymbols);
+ }
@@ -152,6 +155,9 @@ public class C99BuildASTParserAction extends BuildASTParserAction {
********************************************************************/
+
+
+
/**
* postfix_expression ::= postfix_expression '.' ident
* postfix_expression ::= postfix_expression '->' ident
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java
index d88202b8abc..4fd2dfa7a4b 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java
+++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/core/dom/lrparser/action/cpp/CPPBuildASTParserAction.java
@@ -89,6 +89,7 @@ import org.eclipse.cdt.core.dom.lrparser.util.DebugUtil;
import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99ExpressionStatementParser;
import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parsersym;
import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPExpressionStatementParser;
+import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPNoCastExpressionParser;
import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParsersym;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTFunctionDeclarator;
@@ -127,6 +128,12 @@ public class CPPBuildASTParserAction extends BuildASTParserAction {
return new CPPExpressionStatementParser(CPPParsersym.orderedTerminalSymbols);
}
+ @Override
+ protected IParser getNoCastExpressionParser() {
+ return new CPPNoCastExpressionParser(CPPParsersym.orderedTerminalSymbols);
+ }
+
+
// /**
// * Used only for debugging purposes.
// *
@@ -155,6 +162,8 @@ public class CPPBuildASTParserAction extends BuildASTParserAction {
+
+
/**
* new_expression
* ::= dcolon_opt 'new' new_placement_opt new_type_id <openscope-ast> new_array_expressions_op new_initializer_opt
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java
new file mode 100644
index 00000000000..6a85679946e
--- /dev/null
+++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java
@@ -0,0 +1,2038 @@
+/*******************************************************************************
+* Copyright (c) 2006, 2008 IBM Corporation and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl_v10.html
+*
+* Contributors:
+* IBM Corporation - initial API and implementation
+*********************************************************************************/
+
+// This file was generated by LPG
+
+package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
+
+import lpg.lpgjavaruntime.*;
+
+import java.util.*;
+
+import org.eclipse.cdt.core.dom.ast.*;
+import org.eclipse.cdt.core.dom.ast.cpp.*;
+import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPASTNodeFactory;
+import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPBuildASTParserAction;
+import org.eclipse.cdt.core.dom.lrparser.IParser;
+import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider;
+import org.eclipse.cdt.core.dom.lrparser.util.DebugUtil;
+
+import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap;
+import org.eclipse.cdt.core.dom.lrparser.action.TokenMap;
+
+public class CPPNoCastExpressionParser extends PrsStream implements RuleAction , IParserActionTokenProvider, IParser
+{
+ private static ParseTable prs = new CPPNoCastExpressionParserprs();
+ private BacktrackingParser btParser;
+
+ public BacktrackingParser getParser() { return btParser; }
+ private void setResult(Object object) { btParser.setSym1(object); }
+ public Object getRhsSym(int i) { return btParser.getSym(i); }
+
+ public int getRhsTokenIndex(int i) { return btParser.getToken(i); }
+ public IToken getRhsIToken(int i) { return super.getIToken(getRhsTokenIndex(i)); }
+
+ public int getRhsFirstTokenIndex(int i) { return btParser.getFirstToken(i); }
+ public IToken getRhsFirstIToken(int i) { return super.getIToken(getRhsFirstTokenIndex(i)); }
+
+ public int getRhsLastTokenIndex(int i) { return btParser.getLastToken(i); }
+ public IToken getRhsLastIToken(int i) { return super.getIToken(getRhsLastTokenIndex(i)); }
+
+ public int getLeftSpan() { return btParser.getFirstToken(); }
+ public IToken getLeftIToken() { return super.getIToken(getLeftSpan()); }
+
+ public int getRightSpan() { return btParser.getLastToken(); }
+ public IToken getRightIToken() { return super.getIToken(getRightSpan()); }
+
+ public int getRhsErrorTokenIndex(int i)
+ {
+ int index = btParser.getToken(i);
+ IToken err = super.getIToken(index);
+ return (err instanceof ErrorToken ? index : 0);
+ }
+ public ErrorToken getRhsErrorIToken(int i)
+ {
+ int index = btParser.getToken(i);
+ IToken err = super.getIToken(index);
+ return (ErrorToken) (err instanceof ErrorToken ? err : null);
+ }
+
+ public CPPNoCastExpressionParser(LexStream lexStream)
+ {
+ super(lexStream);
+
+ try
+ {
+ super.remapTerminalSymbols(orderedTerminalSymbols(), CPPNoCastExpressionParserprs.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(" " + CPPNoCastExpressionParsersym.orderedTerminalSymbols[id.intValue()]);
+ }
+ System.out.println();
+ }
+ catch(UndefinedEofSymbolException e)
+ {
+ throw new Error(new UndefinedEofSymbolException
+ ("The Lexer does not implement the Eof symbol " +
+ CPPNoCastExpressionParsersym.orderedTerminalSymbols[CPPNoCastExpressionParserprs.EOFT_SYMBOL]));
+ }
+ }
+
+ public String[] orderedTerminalSymbols() { return CPPNoCastExpressionParsersym.orderedTerminalSymbols; }
+ public String getTokenKindName(int kind) { return CPPNoCastExpressionParsersym.orderedTerminalSymbols[kind]; }
+ public int getEOFTokenKind() { return CPPNoCastExpressionParserprs.EOFT_SYMBOL; }
+ public PrsStream getParseStream() { return (PrsStream) this; }
+
+ //
+ // Report error message for given error_token.
+ //
+ public final void reportErrorTokenMessage(int error_token, String msg)
+ {
+ int firsttok = super.getFirstErrorToken(error_token),
+ lasttok = super.getLastErrorToken(error_token);
+ String location = super.getFileName() + ':' +
+ (firsttok > lasttok
+ ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
+ : (super.getLine(error_token) + ":" +
+ super.getColumn(error_token) + ":" +
+ super.getEndLine(error_token) + ":" +
+ super.getEndColumn(error_token)))
+ + ": ";
+ super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE), location, msg);
+ }
+
+ public Object parser()
+ {
+ return parser(null, 0);
+ }
+
+ public Object parser(Monitor monitor)
+ {
+ return parser(monitor, 0);
+ }
+
+ public Object parser(int error_repair_count)
+ {
+ return parser(null, error_repair_count);
+ }
+
+ public Object parser(Monitor monitor, int error_repair_count)
+ {
+ try
+ {
+ btParser = new BacktrackingParser(monitor, (TokenStream) this, prs, (RuleAction) this);
+ }
+ catch (NotBacktrackParseTableException e)
+ {
+ throw new Error(new NotBacktrackParseTableException
+ ("Regenerate CPPNoCastExpressionParserprs.java with -BACKTRACK option"));
+ }
+ catch (BadParseSymFileException e)
+ {
+ throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- CPPNoCastExpressionParsersym.java"));
+ }
+
+ try
+ {
+ return (Object) btParser.parse(error_repair_count);
+ }
+ catch (BadParseException e)
+ {
+ reset(e.error_token); // point to error token
+ DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
+ diagnoseParser.diagnose(e.error_token);
+ }
+
+ return null;
+ }
+
+
+private CPPParserAction action;
+
+// uncomment to use with backtracking parser
+public CPPNoCastExpressionParser() { // constructor
+}
+
+private void initActions(IASTTranslationUnit tu) {
+ // binding resolution actions need access to IASTName nodes, temporary
+ action = new CPPParserAction ();
+ //action.resolver = new C99TypedefTrackerParserAction (this);
+ action.builder = new CPPBuildASTParserAction ( CPPASTNodeFactory.DEFAULT_INSTANCE , this, tu);
+ //action.builder.setTokenMap(CPPParsersym.orderedTerminalSymbols);
+
+ // comment this line to use with backtracking parser
+ //setParserAction(action);
+}
+
+
+public void addToken(IToken token) {
+ token.setKind(mapKind(token.getKind()));
+ super.addToken(token);
+}
+
+
+public IASTCompletionNode parse(IASTTranslationUnit tu) {
+ // this has to be done, or... kaboom!
+ setStreamLength(getSize());
+ initActions(tu);
+
+ final int errorRepairCount = -1; // _1 means full error handling
+ parser(null, errorRepairCount); // do the actual parse
+ super.resetTokenStream(); // allow tokens to be garbage collected
+
+ // the completion node may be null
+ IASTCompletionNode compNode = action.builder.getASTCompletionNode();
+
+ //action = null; // causes getSecondaryParseResult() to fail
+
+ // Comment this line to use with backtracking parser
+ //parserAction = null;
+
+ return compNode;
+}
+
+
+public int getKind(int i) {
+ int kind = super.getKind(i);
+
+ // There used to be a special token kind for zero used to parser pure virtual function declarations.
+ // But it turned out to be easier to just parse them as an init_declarator and programaticaly check
+ // for pure virtual, see consumeMemberDeclaratorWithInitializer().
+
+ //if(kind == CPPParsersym.TK_integer && "0".equals(getTokenText(i))) { //$NON-NLS-1$
+ // kind = CPPParsersym.TK_zero;
+ //}
+
+ // lexer feedback hack!
+ //else if(kind == C99Parsersym.TK_identifier && action.resolver.isTypedef(getTokenText(i))) {
+ // kind = C99Parsersym.TK_TypedefName;
+ //}
+
+ return kind;
+}
+
+
+// uncomment this method to use with backtracking parser
+public List getRuleTokens() {
+ return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1));
+}
+
+
+public IASTNode getSecondaryParseResult() {
+ return action.builder.getSecondaryParseResult();
+}
+
+
+private ITokenMap tokenMap = null;
+
+public void setTokens(List<IToken> tokens) {
+ resetTokenStream();
+ addToken(new Token(null, 0, 0, 0)); // dummy token
+ for(IToken token : tokens) {
+ token.setKind(tokenMap.mapKind(token.getKind()));
+ addToken(token);
+ }
+ addToken(new Token(null, 0, 0, CPPNoCastExpressionParsersym.TK_EOF_TOKEN));
+}
+
+public CPPNoCastExpressionParser(String[] mapFrom) { // constructor
+ tokenMap = new TokenMap(CPPNoCastExpressionParsersym.orderedTerminalSymbols, mapFrom);
+}
+
+
+
+ public void ruleAction(int ruleNumber)
+ {
+ switch (ruleNumber)
+ {
+
+ //
+ // Rule 1: <openscope-ast> ::= $Empty
+ //
+ case 1: { action.builder.
+ openASTScope(); break;
+ }
+
+ //
+ // Rule 4: <placeholder> ::= $Empty
+ //
+ case 4: { action.builder.
+ consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 5: <empty> ::= $Empty
+ //
+ case 5: { action.builder.
+ consumeEmpty(); break;
+ }
+
+ //
+ // Rule 10: translation_unit ::= declaration_seq
+ //
+ case 10: { action.builder.
+ consumeTranslationUnit(); break;
+ }
+
+ //
+ // Rule 11: translation_unit ::= $Empty
+ //
+ case 11: { action.builder.
+ consumeTranslationUnit(); break;
+ }
+
+ //
+ // Rule 12: literal ::= integer
+ //
+ case 12: { action.builder.
+ consumeExpressionLiteral(ICPPASTLiteralExpression.lk_integer_constant); break;
+ }
+
+ //
+ // Rule 13: literal ::= 0
+ //
+ case 13: { action.builder.
+ consumeExpressionLiteral(ICPPASTLiteralExpression.lk_integer_constant); break;
+ }
+
+ //
+ // Rule 14: literal ::= floating
+ //
+ case 14: { action.builder.
+ consumeExpressionLiteral(ICPPASTLiteralExpression.lk_float_constant); break;
+ }
+
+ //
+ // Rule 15: literal ::= charconst
+ //
+ case 15: { action.builder.
+ consumeExpressionLiteral(ICPPASTLiteralExpression.lk_char_constant); break;
+ }
+
+ //
+ // Rule 16: literal ::= stringlit
+ //
+ case 16: { action.builder.
+ consumeExpressionLiteral(ICPPASTLiteralExpression.lk_string_literal); break;
+ }
+
+ //
+ // Rule 17: literal ::= true
+ //
+ case 17: { action.builder.
+ consumeExpressionLiteral(ICPPASTLiteralExpression.lk_true); break;
+ }
+
+ //
+ // Rule 18: literal ::= false
+ //
+ case 18: { action.builder.
+ consumeExpressionLiteral(ICPPASTLiteralExpression.lk_false); break;
+ }
+
+ //
+ // Rule 19: literal ::= this
+ //
+ case 19: { action.builder.
+ consumeExpressionLiteral(ICPPASTLiteralExpression.lk_this); break;
+ }
+
+ //
+ // Rule 21: primary_expression ::= ( expression )
+ //
+ case 21: { action.builder.
+ consumeExpressionBracketed(); break;
+ }
+
+ //
+ // Rule 23: id_expression ::= qualified_or_unqualified_name
+ //
+ case 23: { action.builder.
+ consumeExpressionName(); break;
+ }
+
+ //
+ // Rule 30: unqualified_id_name ::= ~ class_name
+ //
+ case 30: { action.builder.
+ consumeDestructorName(); break;
+ }
+
+ //
+ // Rule 31: identifier_name ::= identifier
+ //
+ case 31: { action.builder.
+ consumeIdentifierName(); break;
+ }
+
+ //
+ // Rule 32: template_opt ::= template
+ //
+ case 32: { action.builder.
+ consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 33: template_opt ::= $Empty
+ //
+ case 33: { action.builder.
+ consumeEmpty(); break;
+ }
+
+ //
+ // Rule 34: dcolon_opt ::= ::
+ //
+ case 34: { action.builder.
+ consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 35: dcolon_opt ::= $Empty
+ //
+ case 35: { action.builder.
+ consumeEmpty(); break;
+ }
+
+ //
+ // Rule 36: qualified_id_name ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name
+ //
+ case 36: { action.builder.
+ consumeQualifiedId(true); break;
+ }
+
+ //
+ // Rule 37: qualified_id_name ::= :: identifier_name
+ //
+ case 37: { action.builder.
+ consumeGlobalQualifiedId(); break;
+ }
+
+ //
+ // Rule 38: qualified_id_name ::= :: operator_function_id_name
+ //
+ case 38: { action.builder.
+ consumeGlobalQualifiedId(); break;
+ }
+
+ //
+ // Rule 39: qualified_id_name ::= :: template_id_name
+ //
+ case 39: { action.builder.
+ consumeGlobalQualifiedId(); break;
+ }
+
+ //
+ // Rule 40: nested_name_specifier ::= class_or_namespace_name :: nested_name_specifier_with_template
+ //
+ case 40: { action.builder.
+ consumeNestedNameSpecifier(true); break;
+ }
+
+ //
+ // Rule 41: nested_name_specifier ::= class_or_namespace_name ::
+ //
+ case 41: { action.builder.
+ consumeNestedNameSpecifier(false); break;
+ }
+
+ //
+ // Rule 42: nested_name_specifier_with_template ::= class_or_namespace_name_with_template :: nested_name_specifier_with_template
+ //
+ case 42: { action.builder.
+ consumeNestedNameSpecifier(true); break;
+ }
+
+ //
+ // Rule 43: nested_name_specifier_with_template ::= class_or_namespace_name_with_template ::
+ //
+ case 43: { action.builder.
+ consumeNestedNameSpecifier(false); break;
+ }
+
+ //
+ // Rule 44: class_or_namespace_name_with_template ::= template_opt class_or_namespace_name
+ //
+ case 44: { action.builder.
+ consumeNameWithTemplateKeyword(); break;
+ }
+
+ //
+ // Rule 46: nested_name_specifier_opt ::= $Empty
+ //
+ case 46: { action.builder.
+ consumeNestedNameSpecifierEmpty(); break;
+ }
+
+ //
+ // Rule 50: postfix_expression ::= postfix_expression [ expression ]
+ //
+ case 50: { action.builder.
+ consumeExpressionArraySubscript(); break;
+ }
+
+ //
+ // Rule 51: postfix_expression ::= postfix_expression ( expression_list_opt )
+ //
+ case 51: { action.builder.
+ consumeExpressionFunctionCall(); break;
+ }
+
+ //
+ // Rule 52: postfix_expression ::= simple_type_specifier ( expression_list_opt )
+ //
+ case 52: { action.builder.
+ consumeExpressionSimpleTypeConstructor(); break;
+ }
+
+ //
+ // Rule 53: postfix_expression ::= typename dcolon_opt nested_name_specifier <empty> identifier_name ( expression_list_opt )
+ //
+ case 53: { action.builder.
+ consumeExpressionTypeName(); break;
+ }
+
+ //
+ // Rule 54: postfix_expression ::= typename dcolon_opt nested_name_specifier template_opt template_id_name ( expression_list_opt )
+ //
+ case 54: { action.builder.
+ consumeExpressionTypeName(); break;
+ }
+
+ //
+ // Rule 55: postfix_expression ::= postfix_expression . qualified_or_unqualified_name
+ //
+ case 55: { action.builder.
+ consumeExpressionFieldReference(false, false); break;
+ }
+
+ //
+ // Rule 56: postfix_expression ::= postfix_expression -> qualified_or_unqualified_name
+ //
+ case 56: { action.builder.
+ consumeExpressionFieldReference(true, false); break;
+ }
+
+ //
+ // Rule 57: postfix_expression ::= postfix_expression . template qualified_or_unqualified_name
+ //
+ case 57: { action.builder.
+ consumeExpressionFieldReference(false, true); break;
+ }
+
+ //
+ // Rule 58: postfix_expression ::= postfix_expression -> template qualified_or_unqualified_name
+ //
+ case 58: { action.builder.
+ consumeExpressionFieldReference(true, true); break;
+ }
+
+ //
+ // Rule 59: postfix_expression ::= postfix_expression . pseudo_destructor_name
+ //
+ case 59: { action.builder.
+ consumeExpressionFieldReference(false, false); break;
+ }
+
+ //
+ // Rule 60: postfix_expression ::= postfix_expression -> pseudo_destructor_name
+ //
+ case 60: { action.builder.
+ consumeExpressionFieldReference(true, false); break;
+ }
+
+ //
+ // Rule 61: postfix_expression ::= postfix_expression ++
+ //
+ case 61: { action.builder.
+ consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); break;
+ }
+
+ //
+ // Rule 62: postfix_expression ::= postfix_expression --
+ //
+ case 62: { action.builder.
+ consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); break;
+ }
+
+ //
+ // Rule 63: postfix_expression ::= dynamic_cast < type_id > ( expression )
+ //
+ case 63: { action.builder.
+ consumeExpressionCast(ICPPASTCastExpression.op_dynamic_cast); break;
+ }
+
+ //
+ // Rule 64: postfix_expression ::= static_cast < type_id > ( expression )
+ //
+ case 64: { action.builder.
+ consumeExpressionCast(ICPPASTCastExpression.op_static_cast); break;
+ }
+
+ //
+ // Rule 65: postfix_expression ::= reinterpret_cast < type_id > ( expression )
+ //
+ case 65: { action.builder.
+ consumeExpressionCast(ICPPASTCastExpression.op_reinterpret_cast); break;
+ }
+
+ //
+ // Rule 66: postfix_expression ::= const_cast < type_id > ( expression )
+ //
+ case 66: { action.builder.
+ consumeExpressionCast(ICPPASTCastExpression.op_const_cast); break;
+ }
+
+ //
+ // Rule 67: postfix_expression ::= typeid ( expression )
+ //
+ case 67: { action.builder.
+ consumeExpressionUnaryOperator(ICPPASTUnaryExpression.op_typeid); break;
+ }
+
+ //
+ // Rule 68: postfix_expression ::= typeid ( type_id )
+ //
+ case 68: { action.builder.
+ consumeExpressionTypeId(ICPPASTTypeIdExpression.op_typeid); break;
+ }
+
+ //
+ // Rule 69: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt type_name :: ~ type_name
+ //
+ case 69: { action.builder.
+ consumePsudoDestructorName(true); break;
+ }
+
+ //
+ // Rule 70: pseudo_destructor_name ::= dcolon_opt nested_name_specifier template template_id_name :: ~ type_name
+ //
+ case 70: { action.builder.
+ consumePsudoDestructorName(true); break;
+ }
+
+ //
+ // Rule 71: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt ~ type_name
+ //
+ case 71: { action.builder.
+ consumePsudoDestructorName(false); break;
+ }
+
+ //
+ // Rule 75: unary_expression ::= ++ cast_expression
+ //
+ case 75: { action.builder.
+ consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); break;
+ }
+
+ //
+ // Rule 76: unary_expression ::= -- cast_expression
+ //
+ case 76: { action.builder.
+ consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); break;
+ }
+
+ //
+ // Rule 77: unary_expression ::= & cast_expression
+ //
+ case 77: { action.builder.
+ consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); break;
+ }
+
+ //
+ // Rule 78: unary_expression ::= * cast_expression
+ //
+ case 78: { action.builder.
+ consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); break;
+ }
+
+ //
+ // Rule 79: unary_expression ::= + cast_expression
+ //
+ case 79: { action.builder.
+ consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); break;
+ }
+
+ //
+ // Rule 80: unary_expression ::= - cast_expression
+ //
+ case 80: { action.builder.
+ consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); break;
+ }
+
+ //
+ // Rule 81: unary_expression ::= ~ cast_expression
+ //
+ case 81: { action.builder.
+ consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); break;
+ }
+
+ //
+ // Rule 82: unary_expression ::= ! cast_expression
+ //
+ case 82: { action.builder.
+ consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); break;
+ }
+
+ //
+ // Rule 83: unary_expression ::= sizeof unary_expression
+ //
+ case 83: { action.builder.
+ consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); break;
+ }
+
+ //
+ // Rule 84: unary_expression ::= sizeof ( type_id )
+ //
+ case 84: { action.builder.
+ consumeExpressionTypeId(ICPPASTTypeIdExpression.op_sizeof); break;
+ }
+
+ //
+ // Rule 85: new_expression ::= dcolon_opt new new_placement_opt new_type_id <openscope-ast> new_array_expressions_opt new_initializer_opt
+ //
+ case 85: { action.builder.
+ consumeExpressionNew(false); break;
+ }
+
+ //
+ // Rule 86: new_expression ::= dcolon_opt new new_placement_opt ( type_id ) new_initializer_opt
+ //
+ case 86: { action.builder.
+ consumeExpressionNew(true); break;
+ }
+
+ //
+ // Rule 89: new_placement_opt ::= $Empty
+ //
+ case 89: { action.builder.
+ consumeEmpty(); break;
+ }
+
+ //
+ // Rule 90: new_type_id ::= type_specifier_seq
+ //
+ case 90: { action.builder.
+ consumeTypeId(false); break;
+ }
+
+ //
+ // Rule 91: new_type_id ::= type_specifier_seq new_declarator
+ //
+ case 91: { action.builder.
+ consumeTypeId(true); break;
+ }
+
+ //
+ // Rule 92: new_declarator ::= <openscope-ast> new_pointer_operators
+ //
+ case 92: { action.builder.
+ consumeNewDeclarator(); break;
+ }
+
+ //
+ // Rule 101: new_initializer_opt ::= $Empty
+ //
+ case 101: { action.builder.
+ consumeEmpty(); break;
+ }
+
+ //
+ // Rule 102: delete_expression ::= dcolon_opt delete cast_expression
+ //
+ case 102: { action.builder.
+ consumeExpressionDelete(false); break;
+ }
+
+ //
+ // Rule 103: delete_expression ::= dcolon_opt delete [ ] cast_expression
+ //
+ case 103: { action.builder.
+ consumeExpressionDelete(true); break;
+ }
+
+ //
+ // Rule 106: pm_expression ::= pm_expression .* cast_expression
+ //
+ case 106: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmdot); break;
+ }
+
+ //
+ // Rule 107: pm_expression ::= pm_expression ->* cast_expression
+ //
+ case 107: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmarrow); break;
+ }
+
+ //
+ // Rule 109: multiplicative_expression ::= multiplicative_expression * pm_expression
+ //
+ case 109: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiply); break;
+ }
+
+ //
+ // Rule 110: multiplicative_expression ::= multiplicative_expression / pm_expression
+ //
+ case 110: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divide); break;
+ }
+
+ //
+ // Rule 111: multiplicative_expression ::= multiplicative_expression % pm_expression
+ //
+ case 111: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_modulo); break;
+ }
+
+ //
+ // Rule 113: additive_expression ::= additive_expression + multiplicative_expression
+ //
+ case 113: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plus); break;
+ }
+
+ //
+ // Rule 114: additive_expression ::= additive_expression - multiplicative_expression
+ //
+ case 114: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minus); break;
+ }
+
+ //
+ // Rule 116: shift_expression ::= shift_expression << additive_expression
+ //
+ case 116: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeft); break;
+ }
+
+ //
+ // Rule 117: shift_expression ::= shift_expression >> additive_expression
+ //
+ case 117: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRight); break;
+ }
+
+ //
+ // Rule 119: relational_expression ::= relational_expression < shift_expression
+ //
+ case 119: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan); break;
+ }
+
+ //
+ // Rule 120: relational_expression ::= relational_expression > shift_expression
+ //
+ case 120: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan); break;
+ }
+
+ //
+ // Rule 121: relational_expression ::= relational_expression <= shift_expression
+ //
+ case 121: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual); break;
+ }
+
+ //
+ // Rule 122: relational_expression ::= relational_expression >= shift_expression
+ //
+ case 122: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual); break;
+ }
+
+ //
+ // Rule 124: equality_expression ::= equality_expression == relational_expression
+ //
+ case 124: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals); break;
+ }
+
+ //
+ // Rule 125: equality_expression ::= equality_expression != relational_expression
+ //
+ case 125: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals); break;
+ }
+
+ //
+ // Rule 127: and_expression ::= and_expression & equality_expression
+ //
+ case 127: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd); break;
+ }
+
+ //
+ // Rule 129: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
+ //
+ case 129: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor); break;
+ }
+
+ //
+ // Rule 131: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
+ //
+ case 131: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr); break;
+ }
+
+ //
+ // Rule 133: logical_and_expression ::= logical_and_expression && inclusive_or_expression
+ //
+ case 133: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd); break;
+ }
+
+ //
+ // Rule 135: logical_or_expression ::= logical_or_expression || logical_and_expression
+ //
+ case 135: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr); break;
+ }
+
+ //
+ // Rule 137: conditional_expression ::= logical_or_expression ? expression : assignment_expression
+ //
+ case 137: { action.builder.
+ consumeExpressionConditional(); break;
+ }
+
+ //
+ // Rule 138: throw_expression ::= throw
+ //
+ case 138: { action.builder.
+ consumeExpressionThrow(false); break;
+ }
+
+ //
+ // Rule 139: throw_expression ::= throw assignment_expression
+ //
+ case 139: { action.builder.
+ consumeExpressionThrow(true); break;
+ }
+
+ //
+ // Rule 142: assignment_expression ::= logical_or_expression = assignment_expression
+ //
+ case 142: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign); break;
+ }
+
+ //
+ // Rule 143: assignment_expression ::= logical_or_expression *= assignment_expression
+ //
+ case 143: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign); break;
+ }
+
+ //
+ // Rule 144: assignment_expression ::= logical_or_expression /= assignment_expression
+ //
+ case 144: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign); break;
+ }
+
+ //
+ // Rule 145: assignment_expression ::= logical_or_expression %= assignment_expression
+ //
+ case 145: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign); break;
+ }
+
+ //
+ // Rule 146: assignment_expression ::= logical_or_expression += assignment_expression
+ //
+ case 146: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign); break;
+ }
+
+ //
+ // Rule 147: assignment_expression ::= logical_or_expression -= assignment_expression
+ //
+ case 147: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign); break;
+ }
+
+ //
+ // Rule 148: assignment_expression ::= logical_or_expression >>= assignment_expression
+ //
+ case 148: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign); break;
+ }
+
+ //
+ // Rule 149: assignment_expression ::= logical_or_expression <<= assignment_expression
+ //
+ case 149: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign); break;
+ }
+
+ //
+ // Rule 150: assignment_expression ::= logical_or_expression &= assignment_expression
+ //
+ case 150: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign); break;
+ }
+
+ //
+ // Rule 151: assignment_expression ::= logical_or_expression ^= assignment_expression
+ //
+ case 151: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign); break;
+ }
+
+ //
+ // Rule 152: assignment_expression ::= logical_or_expression |= assignment_expression
+ //
+ case 152: { action.builder.
+ consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign); break;
+ }
+
+ //
+ // Rule 154: expression ::= ERROR_TOKEN
+ //
+ case 154: { action.builder.
+ consumeExpressionProblem(); break;
+ }
+
+ //
+ // Rule 155: expression_list ::= <openscope-ast> expression_list_actual
+ //
+ case 155: { action.builder.
+ consumeExpressionList(); break;
+ }
+
+ //
+ // Rule 159: expression_list_opt ::= $Empty
+ //
+ case 159: { action.builder.
+ consumeEmpty(); break;
+ }
+
+ //
+ // Rule 161: expression_opt ::= $Empty
+ //
+ case 161: { action.builder.
+ consumeEmpty(); break;
+ }
+
+ //
+ // Rule 164: constant_expression_opt ::= $Empty
+ //
+ case 164: { action.builder.
+ consumeEmpty(); break;
+ }
+
+ //
+ // Rule 173: statement ::= ERROR_TOKEN
+ //
+ case 173: { action.builder.
+ consumeStatementProblem(); break;
+ }
+
+ //
+ // Rule 174: labeled_statement ::= identifier : statement
+ //
+ case 174: { action.builder.
+ consumeStatementLabeled(); break;
+ }
+
+ //
+ // Rule 175: labeled_statement ::= case constant_expression :
+ //
+ case 175: { action.builder.
+ consumeStatementCase(); break;
+ }
+
+ //
+ // Rule 176: labeled_statement ::= default :
+ //
+ case 176: { action.builder.
+ consumeStatementDefault(); break;
+ }
+
+ //
+ // Rule 177: expression_statement ::= expression ;
+ //
+ case 177: { action.builder.
+ consumeStatementExpression(); break;
+ }
+
+ //
+ // Rule 178: expression_statement ::= ;
+ //
+ case 178: { action.builder.
+ consumeStatementNull(); break;
+ }
+
+ //
+ // Rule 179: compound_statement ::= { <openscope-ast> statement_seq }
+ //
+ case 179: { action.builder.
+ consumeStatementCompoundStatement(true); break;
+ }
+
+ //
+ // Rule 180: compound_statement ::= { }
+ //
+ case 180: { action.builder.
+ consumeStatementCompoundStatement(false); break;
+ }
+
+ //
+ // Rule 183: selection_statement ::= if ( condition ) statement
+ //
+ case 183: { action.builder.
+ consumeStatementIf(false); break;
+ }
+
+ //
+ // Rule 184: selection_statement ::= if ( condition ) statement else statement
+ //
+ case 184: { action.builder.
+ consumeStatementIf(true); break;
+ }
+
+ //
+ // Rule 185: selection_statement ::= switch ( condition ) statement
+ //
+ case 185: { action.builder.
+ consumeStatementSwitch(); break;
+ }
+
+ //
+ // Rule 187: condition ::= type_specifier_seq declarator = assignment_expression
+ //
+ case 187: { action.builder.
+ consumeConditionDeclaration(); break;
+ }
+
+ //
+ // Rule 188: iteration_statement ::= while ( condition ) statement
+ //
+ case 188: { action.builder.
+ consumeStatementWhileLoop(); break;
+ }
+
+ //
+ // Rule 189: iteration_statement ::= do statement while ( expression ) ;
+ //
+ case 189: { action.builder.
+ consumeStatementDoLoop(); break;
+ }
+
+ //
+ // Rule 190: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement
+ //
+ case 190: { action.builder.
+ consumeStatementForLoop(); break;
+ }
+
+ //
+ // Rule 191: iteration_statement ::= for ( simple_declaration expression_opt ; expression_opt ) statement
+ //
+ case 191: { action.builder.
+ consumeStatementForLoop(); break;
+ }
+
+ //
+ // Rule 192: jump_statement ::= break ;
+ //
+ case 192: { action.builder.
+ consumeStatementBreak(); break;
+ }
+
+ //
+ // Rule 193: jump_statement ::= continue ;
+ //
+ case 193: { action.builder.
+ consumeStatementContinue(); break;
+ }
+
+ //
+ // Rule 194: jump_statement ::= return expression ;
+ //
+ case 194: { action.builder.
+ consumeStatementReturn(true); break;
+ }
+
+ //
+ // Rule 195: jump_statement ::= return ;
+ //
+ case 195: { action.builder.
+ consumeStatementReturn(false); break;
+ }
+
+ //
+ // Rule 196: jump_statement ::= goto identifier ;
+ //
+ case 196: { action.builder.
+ consumeStatementGoto(); break;
+ }
+
+ //
+ // Rule 197: declaration_statement ::= block_declaration
+ //
+ case 197: { action.builder.
+ consumeStatementDeclaration(); break;
+ }
+
+ //
+ // Rule 214: simple_declaration ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ;
+ //
+ case 214: { action.builder.
+ consumeDeclarationSimple(true); break;
+ }
+
+ //
+ // Rule 215: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
+ //
+ case 215: { action.builder.
+ consumeDeclarationSpecifiersSimple(); break;
+ }
+
+ //
+ // Rule 216: declaration_specifiers ::= <openscope-ast> class_declaration_specifiers
+ //
+ case 216: { action.builder.
+ consumeDeclarationSpecifiersComposite(); break;
+ }
+
+ //
+ // Rule 217: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
+ //
+ case 217: { action.builder.
+ consumeDeclarationSpecifiersComposite(); break;
+ }
+
+ //
+ // Rule 218: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
+ //
+ case 218: { action.builder.
+ consumeDeclarationSpecifiersComposite(); break;
+ }
+
+ //
+ // Rule 219: declaration_specifiers ::= <openscope-ast> type_name_declaration_specifiers
+ //
+ case 219: { action.builder.
+ consumeDeclarationSpecifiersTypeName(); break;
+ }
+
+ //
+ // Rule 221: declaration_specifiers_opt ::= $Empty
+ //
+ case 221: { action.builder.
+ consumeEmpty(); break;
+ }
+
+ //
+ // Rule 225: no_type_declaration_specifier ::= friend
+ //
+ case 225: { action.builder.
+ consumeDeclSpecToken(); break;
+ }
+
+ //
+ // Rule 226: no_type_declaration_specifier ::= typedef
+ //
+ case 226: { action.builder.
+ consumeDeclSpecToken(); break;
+ }
+
+ //
+ // Rule 254: simple_type_specifier ::= simple_type_specifier_token
+ //
+ case 254: { action.builder.
+ consumeDeclSpecToken(); break;
+ }
+
+ //
+ // Rule 270: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name
+ //
+ case 270: { action.builder.
+ consumeQualifiedId(false); break;
+ }
+
+ //
+ // Rule 271: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name
+ //
+ case 271: { action.builder.
+ consumeQualifiedId(false); break;
+ }
+
+ //
+ // Rule 272: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name
+ //
+ case 272: { action.builder.
+ consumeQualifiedId(false); break;
+ }
+
+ //
+ // Rule 273: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
+ //
+ case 273: { action.builder.
+ consumeQualifiedId(true); break;
+ }
+
+ //
+ // Rule 274: elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt identifier_name
+ //
+ case 274: { action.builder.
+ consumeTypeSpecifierElaborated(false); break;
+ }
+
+ //
+ // Rule 275: elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt template_opt template_id_name
+ //
+ case 275: { action.builder.
+ consumeTypeSpecifierElaborated(true); break;
+ }
+
+ //
+ // Rule 276: elaborated_type_specifier ::= enum dcolon_opt nested_name_specifier_opt identifier_name
+ //
+ case 276: { action.builder.
+ consumeTypeSpecifierElaborated(false); break;
+ }
+
+ //
+ // Rule 278: enum_specifier ::= enum { <openscope-ast> enumerator_list_opt }
+ //
+ case 278: { action.builder.
+ consumeTypeSpecifierEnumeration(false); break;
+ }
+
+ //
+ // Rule 279: enum_specifier ::= enum identifier { <openscope-ast> enumerator_list_opt }
+ //
+ case 279: { action.builder.
+ consumeTypeSpecifierEnumeration(true); break;
+ }
+
+ //
+ // Rule 284: enumerator_definition ::= enumerator
+ //
+ case 284: { action.builder.
+ consumeEnumerator(false); break;
+ }
+
+ //
+ // Rule 285: enumerator_definition ::= enumerator = constant_expression
+ //
+ case 285: { action.builder.
+ consumeEnumerator(true); break;
+ }
+
+ //
+ // Rule 294: original_namespace_definition ::= namespace identifier_name { <openscope-ast> declaration_seq_opt }
+ //
+ case 294: { action.builder.
+ consumeNamespaceDefinition(true); break;
+ }
+
+ //
+ // Rule 295: extension_namespace_definition ::= namespace original_namespace_name { <openscope-ast> declaration_seq_opt }
+ //
+ case 295: { action.builder.
+ consumeNamespaceDefinition(true); break;
+ }
+
+ //
+ // Rule 296: unnamed_namespace_definition ::= namespace { <openscope-ast> declaration_seq_opt }
+ //
+ case 296: { action.builder.
+ consumeNamespaceDefinition(false); break;
+ }
+
+ //
+ // Rule 298: namespace_alias_definition ::= namespace identifier = dcolon_opt nested_name_specifier_opt namespace_name ;
+ //
+ case 298: { action.builder.
+ consumeNamespaceAliasDefinition(); break;
+ }
+
+ //
+ // Rule 299: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
+ //
+ case 299: { action.builder.
+ consumeUsingDeclaration(); break;
+ }
+
+ //
+ // Rule 300: typename_opt ::= typename
+ //
+ case 300: { action.builder.
+ consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 301: typename_opt ::= $Empty
+ //
+ case 301: { action.builder.
+ consumeEmpty(); break;
+ }
+
+ //
+ // Rule 302: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
+ //
+ case 302: { action.builder.
+ consumeUsingDirective(); break;
+ }
+
+ //
+ // Rule 303: asm_definition ::= asm ( stringlit ) ;
+ //
+ case 303: { action.builder.
+ consumeDeclarationASM(); break;
+ }
+
+ //
+ // Rule 304: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
+ //
+ case 304: { action.builder.
+ consumeLinkageSpecification(); break;
+ }
+
+ //
+ // Rule 305: linkage_specification ::= extern stringlit <openscope-ast> declaration
+ //
+ case 305: { action.builder.
+ consumeLinkageSpecification(); break;
+ }
+
+ //
+ // Rule 311: init_declarator ::= declarator initializer
+ //
+ case 311: { action.builder.
+ consumeDeclaratorWithInitializer(true); break;
+ }
+
+ //
+ // Rule 313: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
+ //
+ case 313: { action.builder.
+ consumeDeclaratorWithPointer(true); break;
+ }
+
+ //
+ // Rule 317: basic_direct_declarator ::= declarator_id_name
+ //
+ case 317: { action.builder.
+ consumeDirectDeclaratorIdentifier(); break;
+ }
+
+ //
+ // Rule 318: basic_direct_declarator ::= ( declarator )
+ //
+ case 318: { action.builder.
+ consumeDirectDeclaratorBracketed(); break;
+ }
+
+ //
+ // Rule 319: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
+ //
+ case 319: { action.builder.
+ consumeDirectDeclaratorFunctionDeclarator(true); break;
+ }
+
+ //
+ // Rule 320: array_direct_declarator ::= array_direct_declarator array_modifier
+ //
+ case 320: { action.builder.
+ consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
+ //
+ // Rule 321: array_direct_declarator ::= basic_direct_declarator array_modifier
+ //
+ case 321: { action.builder.
+ consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
+ //
+ // Rule 322: array_modifier ::= [ constant_expression ]
+ //
+ case 322: { action.builder.
+ consumeDirectDeclaratorArrayModifier(true); break;
+ }
+
+ //
+ // Rule 323: array_modifier ::= [ ]
+ //
+ case 323: { action.builder.
+ consumeDirectDeclaratorArrayModifier(false); break;
+ }
+
+ //
+ // Rule 324: ptr_operator ::= * <openscope-ast> cv_qualifier_seq_opt
+ //
+ case 324: { action.builder.
+ consumePointer(); break;
+ }
+
+ //
+ // Rule 325: ptr_operator ::= &
+ //
+ case 325: { action.builder.
+ consumeReferenceOperator(); break;
+ }
+
+ //
+ // Rule 326: ptr_operator ::= dcolon_opt nested_name_specifier * <openscope-ast> cv_qualifier_seq_opt
+ //
+ case 326: { action.builder.
+ consumePointerToMember(); break;
+ }
+
+ //
+ // Rule 332: cv_qualifier ::= const
+ //
+ case 332: { action.builder.
+ consumeDeclSpecToken(); break;
+ }
+
+ //
+ // Rule 333: cv_qualifier ::= volatile
+ //
+ case 333: { action.builder.
+ consumeDeclSpecToken(); break;
+ }
+
+ //
+ // Rule 335: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
+ //
+ case 335: { action.builder.
+ consumeQualifiedId(false); break;
+ }
+
+ //
+ // Rule 336: type_id ::= type_specifier_seq
+ //
+ case 336: { action.builder.
+ consumeTypeId(false); break;
+ }
+
+ //
+ // Rule 337: type_id ::= type_specifier_seq abstract_declarator
+ //
+ case 337: { action.builder.
+ consumeTypeId(true); break;
+ }
+
+ //
+ // Rule 340: abstract_declarator ::= <openscope-ast> ptr_operator_seq
+ //
+ case 340: { action.builder.
+ consumeDeclaratorWithPointer(false); break;
+ }
+
+ //
+ // Rule 341: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
+ //
+ case 341: { action.builder.
+ consumeDeclaratorWithPointer(true); break;
+ }
+
+ //
+ // Rule 345: basic_direct_abstract_declarator ::= ( abstract_declarator )
+ //
+ case 345: { action.builder.
+ consumeDirectDeclaratorBracketed(); break;
+ }
+
+ //
+ // Rule 346: array_direct_abstract_declarator ::= array_modifier
+ //
+ case 346: { action.builder.
+ consumeDirectDeclaratorArrayDeclarator(false); break;
+ }
+
+ //
+ // Rule 347: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
+ //
+ case 347: { action.builder.
+ consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
+ //
+ // Rule 348: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
+ //
+ case 348: { action.builder.
+ consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
+ //
+ // Rule 349: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
+ //
+ case 349: { action.builder.
+ consumeDirectDeclaratorFunctionDeclarator(true); break;
+ }
+
+ //
+ // Rule 350: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
+ //
+ case 350: { action.builder.
+ consumeDirectDeclaratorFunctionDeclarator(false); break;
+ }
+
+ //
+ // Rule 351: parameter_declaration_clause ::= parameter_declaration_list_opt ...
+ //
+ case 351: { action.builder.
+ consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 352: parameter_declaration_clause ::= parameter_declaration_list_opt
+ //
+ case 352: { action.builder.
+ consumeEmpty(); break;
+ }
+
+ //
+ // Rule 353: parameter_declaration_clause ::= parameter_declaration_list , ...
+ //
+ case 353: { action.builder.
+ consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 359: abstract_declarator_opt ::= $Empty
+ //
+ case 359: { action.builder.
+ consumeEmpty(); break;
+ }
+
+ //
+ // Rule 360: parameter_declaration ::= declaration_specifiers parameter_init_declarator
+ //
+ case 360: { action.builder.
+ consumeParameterDeclaration(); break;
+ }
+
+ //
+ // Rule 361: parameter_declaration ::= declaration_specifiers
+ //
+ case 361: { action.builder.
+ consumeParameterDeclarationWithoutDeclarator(); break;
+ }
+
+ //
+ // Rule 363: parameter_init_declarator ::= declarator = parameter_initializer
+ //
+ case 363: { action.builder.
+ consumeDeclaratorWithInitializer(true); break;
+ }
+
+ //
+ // Rule 365: parameter_init_declarator ::= abstract_declarator = parameter_initializer
+ //
+ case 365: { action.builder.
+ consumeDeclaratorWithInitializer(true); break;
+ }
+
+ //
+ // Rule 366: parameter_init_declarator ::= = parameter_initializer
+ //
+ case 366: { action.builder.
+ consumeDeclaratorWithInitializer(false); break;
+ }
+
+ //
+ // Rule 367: parameter_initializer ::= assignment_expression
+ //
+ case 367: { action.builder.
+ consumeInitializer(); break;
+ }
+
+ //
+ // Rule 368: function_definition ::= declaration_specifiers_opt function_direct_declarator <openscope-ast> ctor_initializer_list_opt function_body
+ //
+ case 368: { action.builder.
+ consumeFunctionDefinition(false); break;
+ }
+
+ //
+ // Rule 369: function_definition ::= declaration_specifiers_opt function_direct_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
+ //
+ case 369: { action.builder.
+ consumeFunctionDefinition(true); break;
+ }
+
+ //
+ // Rule 372: initializer ::= ( expression_list )
+ //
+ case 372: { action.builder.
+ consumeInitializerConstructor(); break;
+ }
+
+ //
+ // Rule 373: initializer_clause ::= assignment_expression
+ //
+ case 373: { action.builder.
+ consumeInitializer(); break;
+ }
+
+ //
+ // Rule 374: initializer_clause ::= { <openscope-ast> initializer_list , }
+ //
+ case 374: { action.builder.
+ consumeInitializerList(); break;
+ }
+
+ //
+ // Rule 375: initializer_clause ::= { <openscope-ast> initializer_list }
+ //
+ case 375: { action.builder.
+ consumeInitializerList(); break;
+ }
+
+ //
+ // Rule 376: initializer_clause ::= { <openscope-ast> }
+ //
+ case 376: { action.builder.
+ consumeInitializerList(); break;
+ }
+
+ //
+ // Rule 381: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt }
+ //
+ case 381: { action.builder.
+ consumeClassSpecifier(); break;
+ }
+
+ //
+ // Rule 382: class_head ::= class_keyword identifier_name_opt <openscope-ast> base_clause_opt
+ //
+ case 382: { action.builder.
+ consumeClassHead(false); break;
+ }
+
+ //
+ // Rule 383: class_head ::= class_keyword template_id_name <openscope-ast> base_clause_opt
+ //
+ case 383: { action.builder.
+ consumeClassHead(false); break;
+ }
+
+ //
+ // Rule 384: class_head ::= class_keyword nested_name_specifier identifier_name <openscope-ast> base_clause_opt
+ //
+ case 384: { action.builder.
+ consumeClassHead(true); break;
+ }
+
+ //
+ // Rule 385: class_head ::= class_keyword nested_name_specifier template_id_name <openscope-ast> base_clause_opt
+ //
+ case 385: { action.builder.
+ consumeClassHead(true); break;
+ }
+
+ //
+ // Rule 389: identifier_name_opt ::= $Empty
+ //
+ case 389: { action.builder.
+ consumeEmpty(); break;
+ }
+
+ //
+ // Rule 393: visibility_label ::= access_specifier_keyword :
+ //
+ case 393: { action.builder.
+ consumeVisibilityLabel(); break;
+ }
+
+ //
+ // Rule 394: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ;
+ //
+ case 394: { action.builder.
+ consumeDeclarationSimple(true); break;
+ }
+
+ //
+ // Rule 395: member_declaration ::= declaration_specifiers_opt ;
+ //
+ case 395: { action.builder.
+ consumeDeclarationSimple(false); break;
+ }
+
+ //
+ // Rule 398: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;
+ //
+ case 398: { action.builder.
+ consumeMemberDeclarationQualifiedId(); break;
+ }
+
+ //
+ // Rule 409: member_declarator ::= declarator constant_initializer
+ //
+ case 409: { action.builder.
+ consumeMemberDeclaratorWithInitializer(); break;
+ }
+
+ //
+ // Rule 410: member_declarator ::= bit_field_declarator : constant_expression
+ //
+ case 410: { action.builder.
+ consumeBitField(true); break;
+ }
+
+ //
+ // Rule 411: member_declarator ::= : constant_expression
+ //
+ case 411: { action.builder.
+ consumeBitField(false); break;
+ }
+
+ //
+ // Rule 412: bit_field_declarator ::= identifier_name
+ //
+ case 412: { action.builder.
+ consumeDirectDeclaratorIdentifier(); break;
+ }
+
+ //
+ // Rule 419: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name
+ //
+ case 419: { action.builder.
+ consumeBaseSpecifier(false); break;
+ }
+
+ //
+ // Rule 420: base_specifier ::= virtual_opt access_specifier_keyword virtual_opt dcolon_opt nested_name_specifier_opt class_name
+ //
+ case 420: { action.builder.
+ consumeBaseSpecifier(true); break;
+ }
+
+ //
+ // Rule 421: virtual_opt ::= virtual
+ //
+ case 421: { action.builder.
+ consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 422: virtual_opt ::= $Empty
+ //
+ case 422: { action.builder.
+ consumeEmpty(); break;
+ }
+
+ //
+ // Rule 428: conversion_function_id_name ::= operator conversion_type_id
+ //
+ case 428: { action.builder.
+ consumeConversionName(); break;
+ }
+
+ //
+ // Rule 429: conversion_type_id ::= type_specifier_seq conversion_declarator
+ //
+ case 429: { action.builder.
+ consumeTypeId(true); break;
+ }
+
+ //
+ // Rule 430: conversion_type_id ::= type_specifier_seq
+ //
+ case 430: { action.builder.
+ consumeTypeId(false); break;
+ }
+
+ //
+ // Rule 431: conversion_declarator ::= <openscope-ast> ptr_operator_seq
+ //
+ case 431: { action.builder.
+ consumeDeclaratorWithPointer(false); break;
+ }
+
+ //
+ // Rule 437: mem_initializer ::= mem_initializer_name ( expression_list_opt )
+ //
+ case 437: { action.builder.
+ consumeConstructorChainInitializer(); break;
+ }
+
+ //
+ // Rule 438: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
+ //
+ case 438: { action.builder.
+ consumeQualifiedId(false); break;
+ }
+
+ //
+ // Rule 441: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
+ //
+ case 441: { action.builder.
+ consumeTemplateId(); break;
+ }
+
+ //
+ // Rule 442: operator_id_name ::= operator overloadable_operator
+ //
+ case 442: { action.builder.
+ consumeOperatorName(); break;
+ }
+
+ //
+ // Rule 485: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
+ //
+ case 485: { action.builder.
+ consumeTemplateDeclaration(); break;
+ }
+
+ //
+ // Rule 486: export_opt ::= export
+ //
+ case 486: { action.builder.
+ consumePlaceHolder(); break;
+ }
+
+ //
+ // Rule 487: export_opt ::= $Empty
+ //
+ case 487: { action.builder.
+ consumeEmpty(); break;
+ }
+
+ //
+ // Rule 492: type_parameter ::= class identifier_name_opt
+ //
+ case 492: { action.builder.
+ consumeSimpleTypeTemplateParameter(false); break;
+ }
+
+ //
+ // Rule 493: type_parameter ::= class identifier_name_opt = type_id
+ //
+ case 493: { action.builder.
+ consumeSimpleTypeTemplateParameter(true); break;
+ }
+
+ //
+ // Rule 494: type_parameter ::= typename identifier_name_opt
+ //
+ case 494: { action.builder.
+ consumeSimpleTypeTemplateParameter(false); break;
+ }
+
+ //
+ // Rule 495: type_parameter ::= typename identifier_name_opt = type_id
+ //
+ case 495: { action.builder.
+ consumeSimpleTypeTemplateParameter(true); break;
+ }
+
+ //
+ // Rule 496: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
+ //
+ case 496: { action.builder.
+ consumeTemplatedTypeTemplateParameter(false); break;
+ }
+
+ //
+ // Rule 497: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
+ //
+ case 497: { action.builder.
+ consumeTemplatedTypeTemplateParameter(true); break;
+ }
+
+ //
+ // Rule 498: template_id_name ::= template_identifier < <openscope-ast> template_argument_list_opt >
+ //
+ case 498: { action.builder.
+ consumeTemplateId(); break;
+ }
+
+ //
+ // Rule 507: explicit_instantiation ::= template declaration
+ //
+ case 507: { action.builder.
+ consumeTemplateExplicitInstantiation(); break;
+ }
+
+ //
+ // Rule 508: explicit_specialization ::= template < > declaration
+ //
+ case 508: { action.builder.
+ consumeTemplateExplicitSpecialization(); break;
+ }
+
+ //
+ // Rule 509: try_block ::= try compound_statement <openscope-ast> handler_seq
+ //
+ case 509: { action.builder.
+ consumeStatementTryBlock(); break;
+ }
+
+ //
+ // Rule 512: handler ::= catch ( exception_declaration ) compound_statement
+ //
+ case 512: { action.builder.
+ consumeStatementCatchHandler(false); break;
+ }
+
+ //
+ // Rule 513: handler ::= catch ( ... ) compound_statement
+ //
+ case 513: { action.builder.
+ consumeStatementCatchHandler(true); break;
+ }
+
+ //
+ // Rule 514: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
+ //
+ case 514: { action.builder.
+ consumeDeclarationSimple(true); break;
+ }
+
+ //
+ // Rule 515: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
+ //
+ case 515: { action.builder.
+ consumeDeclarationSimple(true); break;
+ }
+
+ //
+ // Rule 516: exception_declaration ::= type_specifier_seq
+ //
+ case 516: { action.builder.
+ consumeDeclarationSimple(false); break;
+ }
+
+ //
+ // Rule 524: no_cast_start ::= ERROR_TOKEN
+ //
+ case 524: { action.builder.
+ consumeExpressionProblem(); break;
+ }
+
+
+ default:
+ break;
+ }
+ return;
+ }
+}
+
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParserprs.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParserprs.java
new file mode 100644
index 00000000000..b991fa2f0b8
--- /dev/null
+++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParserprs.java
@@ -0,0 +1,2700 @@
+/*******************************************************************************
+* Copyright (c) 2006, 2008 IBM Corporation and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl_v10.html
+*
+* Contributors:
+* IBM Corporation - initial API and implementation
+*********************************************************************************/
+
+// This file was generated by LPG
+
+package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
+
+public class CPPNoCastExpressionParserprs implements lpg.lpgjavaruntime.ParseTable, CPPNoCastExpressionParsersym {
+
+ 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
+ };
+ };
+ 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,0,0,0,1,1,1,1,1,
+ 0,1,1,1,1,1,1,1,1,1,
+ 3,1,1,1,1,1,1,1,1,2,
+ 1,1,0,1,0,4,2,2,2,3,
+ 2,3,2,2,1,0,1,1,1,4,
+ 4,4,8,8,3,3,4,4,3,3,
+ 2,2,7,7,7,7,4,4,6,7,
+ 4,1,1,1,2,2,2,2,2,2,
+ 2,2,2,4,7,7,3,1,0,1,
+ 2,2,1,2,3,4,1,0,3,1,
+ 0,3,5,1,1,3,3,1,3,3,
+ 3,1,3,3,1,3,3,1,3,3,
+ 3,3,1,3,3,1,3,1,3,1,
+ 3,1,3,1,3,1,5,1,2,1,
+ 1,3,3,3,3,3,3,3,3,3,
+ 3,3,1,1,2,1,3,1,0,1,
+ 0,1,1,0,1,1,1,1,1,1,
+ 1,1,1,3,3,2,2,1,4,2,
+ 1,2,5,7,5,1,4,5,7,9,
+ 8,2,2,3,2,3,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 2,1,0,4,2,2,2,2,2,1,
+ 0,1,1,1,1,1,1,2,1,2,
+ 2,2,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,1,1,1,3,
+ 4,4,5,4,5,4,1,5,6,1,
+ 3,1,0,1,3,1,1,1,1,1,
+ 1,1,1,6,6,5,1,7,6,1,
+ 0,6,5,6,4,1,3,1,0,1,
+ 2,1,3,1,1,1,1,3,9,2,
+ 2,3,2,3,1,5,1,2,2,1,
+ 0,1,1,1,3,1,2,1,1,2,
+ 3,1,1,1,3,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,5,4,3,1,3,1,1,
+ 5,4,4,5,5,1,0,1,0,1,
+ 1,1,2,4,2,2,1,5,1,1,
+ 1,1,2,1,0,1,3,1,2,3,
+ 2,1,2,2,1,0,1,3,3,6,
+ 1,0,1,1,1,1,0,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,1,
+ 3,1,0,1,1,1,2,4,4,1,
+ 2,5,5,3,3,1,4,3,1,0,
+ 1,3,1,1,-107,0,0,0,-303,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-11,0,0,
+ 0,0,0,0,0,0,0,0,-50,0,
+ 0,0,0,-2,0,0,-134,0,0,0,
+ -4,-54,0,0,0,0,-5,-79,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -6,0,0,0,0,0,-235,-324,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -22,0,0,0,-7,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-183,0,0,
+ 0,0,0,-137,0,0,0,0,0,0,
+ 0,0,0,0,0,-256,0,0,0,0,
+ 0,0,0,-114,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-8,0,0,-222,0,0,-366,0,0,
+ 0,0,-9,0,0,-10,-236,-347,0,0,
+ 0,0,0,0,0,0,0,0,-53,0,
+ -130,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-447,0,
+ 0,0,0,0,-198,0,0,0,0,0,
+ 0,0,-175,0,-192,0,0,0,0,0,
+ 0,0,-76,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -220,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-165,0,0,0,-51,-57,
+ 0,0,0,0,0,-61,0,-362,0,0,
+ -335,0,0,0,-307,0,0,-505,0,0,
+ 0,-59,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,-122,0,0,0,0,0,0,0,-68,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-174,-166,0,0,-349,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-515,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-58,0,0,0,0,-13,0,0,
+ 0,0,0,-15,0,0,0,-363,0,0,
+ 0,-227,0,-16,0,0,0,0,0,0,
+ 0,0,0,0,0,-29,-255,-3,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-181,0,0,0,0,0,0,0,-17,
+ 0,0,0,-30,0,0,0,0,0,-69,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-428,-281,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-31,0,0,0,0,
+ 0,0,0,-336,0,0,-32,0,0,0,
+ 0,0,0,0,-128,-314,0,0,0,-104,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-62,0,0,-33,0,0,0,
+ 0,0,0,0,-133,0,0,-129,0,-315,
+ 0,0,0,-34,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -131,0,0,0,0,0,0,0,0,0,
+ 0,-142,-467,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,
+ -105,0,0,0,-334,-207,-40,0,0,0,
+ -113,0,0,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,-261,0,
+ -42,0,0,0,-352,0,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,-136,0,0,0,0,0,0,0,0,
+ 0,0,-91,0,0,0,-35,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -36,0,0,-258,0,0,-37,0,0,0,
+ -391,0,0,0,-92,0,0,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,0,0,0,0,0,-168,0,
+ 0,0,0,0,0,0,-93,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,-39,0,0,0,0,0,
+ -41,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,-297,0,0,0,0,0,0,0,-199,
+ 0,0,-182,0,0,0,0,-209,0,0,
+ -95,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,-310,0,
+ 0,0,0,0,-184,0,0,0,0,-234,
+ 0,0,-96,0,0,0,-56,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-63,0,0,0,0,
+ -339,0,0,0,0,0,-186,0,0,0,
+ 0,-241,0,0,-97,0,0,0,-64,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-66,0,0,0,0,0,-189,0,
+ 0,0,0,-248,0,0,-98,0,0,0,
+ -67,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-108,0,0,0,0,0,
+ -197,0,0,0,0,-249,0,0,-99,0,
+ 0,0,-109,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-355,0,0,0,0,0,0,0,0,
+ 0,0,-211,0,0,0,0,-250,0,0,
+ -100,0,0,0,-392,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-426,0,0,0,0,0,0,
+ 0,0,0,0,-224,0,0,0,0,-251,
+ 0,0,-101,0,0,0,-284,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-204,0,0,0,0,
+ -110,0,0,0,0,0,-225,0,0,0,
+ 0,-111,0,0,-163,0,0,0,-118,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-353,0,0,
+ 0,0,-112,0,0,0,0,0,-229,0,
+ 0,0,0,-125,-205,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-162,0,0,
+ 0,0,0,0,0,0,0,0,-143,0,
+ 0,0,0,0,0,0,-327,-476,0,-138,
+ 0,0,0,-231,0,0,-345,-500,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-290,0,
+ 0,0,0,0,0,0,-144,0,0,-306,
+ 0,0,0,-269,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-145,0,0,0,-309,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-226,0,
+ 0,-146,0,0,0,-507,0,0,0,-147,
+ 0,0,0,0,0,0,0,-364,-233,0,
+ 0,0,-330,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-453,0,0,0,0,
+ 0,0,0,-148,0,0,0,0,0,0,
+ -350,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-228,0,0,0,0,-365,0,
+ 0,-413,0,0,-149,0,0,0,-140,0,
+ 0,0,-150,0,0,0,0,0,0,0,
+ -466,-356,0,0,0,-351,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-475,
+ 0,0,0,-399,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-151,0,0,0,
+ 0,-152,0,0,-153,0,0,-154,0,0,
+ 0,0,0,0,-155,-254,-156,0,0,0,
+ -337,0,0,0,-157,-158,-246,0,-103,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-179,
+ 0,0,0,0,0,0,-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,-373,0,0,-159,0,0,
+ -88,0,0,0,-273,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,-274,0,-89,0,0,0,-160,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,-52,0,0,0,-206,0,
+ 0,0,0,0,-280,-401,0,0,0,-301,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-85,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-292,-409,-285,-397,-213,-18,0,0,
+ -299,0,0,-240,0,0,0,0,0,0,
+ 0,-232,0,0,0,0,0,0,0,-167,
+ -497,0,0,0,-295,0,0,0,0,0,
+ 0,-293,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-305,0,0,0,0,0,
+ 0,-170,0,0,0,0,0,0,-247,0,
+ 0,0,0,0,-171,0,0,0,0,0,
+ 0,0,0,0,0,0,-410,0,0,0,
+ 0,0,0,-86,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-87,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-318,0,0,0,0,-80,
+ 0,0,0,-172,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-173,0,0,0,-81,0,0,0,
+ -264,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-176,
+ 0,0,0,-82,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,
+ -243,0,0,0,0,0,0,0,0,0,
+ 0,0,-83,0,0,0,-177,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-20,0,
+ 0,0,-319,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-396,-338,0,0,-178,0,0,0,
+ -135,-382,0,0,0,-316,0,-354,0,0,
+ -187,0,0,-287,0,0,0,0,0,0,
+ 0,0,0,0,0,-188,-438,0,0,0,
+ 0,0,0,-84,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-193,0,0,-120,
+ 0,0,0,0,0,0,-194,-200,-203,0,
+ 0,0,0,0,0,-450,-446,-208,-487,0,
+ 0,0,0,-218,-263,-219,-265,-117,0,0,
+ 0,-322,-221,-325,0,0,-434,0,0,0,
+ 0,0,0,0,0,-333,0,0,0,0,
+ 0,0,0,0,0,0,-358,-119,-341,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-359,0,-470,0,0,0,0,-442,-465,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-239,-357,-488,0,0,0,0,0,0,
+ 0,0,0,-242,0,0,0,0,-244,0,
+ 0,0,0,-259,0,-201,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-260,0,
+ 0,0,0,0,0,0,-384,0,0,0,
+ 0,0,0,-472,0,0,0,0,-270,0,
+ 0,0,0,0,-271,0,-415,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-275,-127,0,0,0,-278,-372,-279,
+ 0,0,0,-238,0,0,0,0,0,0,
+ 0,0,-282,0,0,0,0,0,-44,-283,
+ -277,-461,0,0,0,0,-376,-473,0,0,
+ 0,0,0,0,0,0,0,0,0,-45,
+ 0,0,-416,0,-296,0,0,0,0,0,
+ 0,0,0,0,0,0,-139,0,0,0,
+ 0,-464,0,-300,-106,-379,-432,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-245,0,0,-302,0,0,0,0,
+ 0,0,0,0,0,0,-312,0,0,0,
+ 0,0,-411,0,0,0,0,-449,-323,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -499,0,0,0,0,0,0,0,0,0,
+ 0,0,-457,0,-329,0,0,-74,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-331,-49,-360,
+ -460,0,0,-267,0,0,0,0,0,0,
+ 0,0,-417,0,-361,-288,0,0,0,0,
+ 0,-418,0,0,0,0,0,-367,0,-456,
+ -369,0,-371,0,-321,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-377,0,0,
+ 0,0,0,-75,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-380,0,0,0,
+ 0,-262,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-378,-491,0,0,
+ 0,0,0,0,0,-459,0,-272,-70,0,
+ 0,-387,0,-164,0,0,-390,0,0,-422,
+ 0,-289,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-398,-400,0,
+ 0,0,0,-291,0,0,0,0,0,0,
+ 0,0,0,0,0,-77,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-78,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-237,-440,-375,-444,-451,0,0,0,0,
+ 0,0,0,0,0,-452,-463,0,0,0,
+ 0,-469,-21,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-477,-478,-402,-403,-404,0,
+ 0,0,0,0,0,0,0,0,-388,-498,
+ 0,-479,0,-230,0,0,-381,0,0,0,
+ -116,0,-406,0,-169,0,0,0,0,0,
+ -342,0,0,0,0,0,0,0,0,0,
+ -407,-412,0,0,0,0,-414,-43,-1,-492,
+ -483,0,0,0,0,0,0,-419,0,0,
+ 0,0,0,-421,0,-494,0,0,0,0,
+ 0,0,-489,0,0,0,0,0,0,-405,
+ -252,-294,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-423,0,0,0,0,
+ 0,-424,0,0,0,-346,0,0,0,0,
+ -504,0,-132,0,0,0,0,0,0,-253,
+ -431,-425,-427,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-429,
+ 0,0,0,0,0,-490,-430,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -443,0,0,0,0,-509,0,-435,0,-512,
+ 0,0,0,0,0,0,-439,-503,0,0,
+ 0,-506,0,0,-385,0,0,-448,0,-455,
+ -511,0,0,0,0,0,0,0,0,0,
+ -210,0,-462,-481,0,0,0,0,0,-495,
+ 0,0,0,0,0,-445,0,0,0,0,
+ 0,0,-313,0,-14,0,0,-496,0,0,
+ 0,0,-501,0,0,-46,0,0,0,0,
+ 0,-514,0,0,0,0,0,0,0,0,
+ 0,0,0,-374,-268,-320,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -471,0,0,0,0,0,0,-121,0,0,
+ 0,0,0,0,0,0,-185,0,0,0,
+ -47,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,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,0,0,0,0,0,
+ 0,0,-482,-328,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-19,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-486,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-344,-508,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -48,0,0,0,0,-308,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-513,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-516,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,-180,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-23,0,0,0,0,
+ 0,0,0,0,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,-25,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-26,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,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,-28,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-60,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-72,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-73,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-124,0,0,0,0,0,0,
+ -386,0,0,0,0,0,0,0,-298,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ -195,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-408,0,0,0,0,0,
+ 0,0,0,0,-196,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,0,0,0,0,0,0,0,0,0,
+ -420,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-190,0,0,
+ 0,0,-348,0,0,0,0,0,0,0,
+ 0,0,0,0,-468,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-484,-383,
+ -71,0,0,0,0,0,-311,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-266,0,0,0,0,0,
+ -191,0,0,0,0,0,-458,0,0,0,
+ 0,0,0,0,0,0,0,0,-389,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-102,0,-223,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-286,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,-394,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-304,0,0,
+ 0,0,0,0,0,0,0,0,-214,0,
+ 0,0,0,0,-326,0,0,0,-317,0,
+ 0,0,-215,0,0,-216,0,0,0,0,
+ 0,-343,0,0,0,0,0,0,0,0,
+ 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,-368,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-370,0,0,0,0,0,0,
+ 0,-502,0,0,0,0,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,0,0,0,0,0,0,
+ 0,0,-474,0,0,0,-393,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-202,
+ 0,0,0,-340,0,0,0,0,0,0,
+ 0,0,0,0,-212,0,0,0,0,0,
+ -257,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,-433,-436,
+ -395,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-510,0,0,0,0,0,
+ -441,0,0,0,0,-276,0,0,0,0,
+ 0,0,-485,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,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[] = {
+ 169,4,192,193,194,135,79,34,62,39,
+ 195,195,15,15,15,15,15,15,15,15,
+ 16,16,16,14,10,10,8,8,8,8,
+ 8,1,63,63,5,5,11,11,11,11,
+ 47,47,136,136,137,58,58,45,45,17,
+ 17,17,17,17,17,17,17,17,17,17,
+ 17,17,17,17,17,17,17,17,17,138,
+ 138,138,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,19,19,173,170,170,
+ 171,171,174,140,140,175,175,172,172,141,
+ 139,139,20,20,21,22,22,22,24,24,
+ 24,24,25,25,25,26,26,26,27,27,
+ 27,27,27,29,29,29,30,30,32,32,
+ 33,33,35,35,36,36,37,37,41,41,
+ 40,40,40,40,40,40,40,40,40,40,
+ 40,40,40,38,38,28,142,142,102,102,
+ 106,106,97,196,196,71,71,71,71,71,
+ 71,71,71,71,72,72,72,73,73,55,
+ 55,176,176,74,74,74,117,117,75,75,
+ 75,75,76,76,76,76,76,77,82,82,
+ 82,82,82,82,82,51,51,51,51,51,
+ 108,108,109,109,50,23,23,23,23,23,
+ 46,46,93,93,93,93,93,148,148,143,
+ 143,143,143,144,144,144,145,145,145,146,
+ 146,146,147,147,147,94,94,94,94,94,
+ 95,95,95,87,12,13,13,13,13,13,
+ 13,13,13,13,13,13,80,80,80,121,
+ 121,121,121,121,119,119,119,88,120,120,
+ 150,150,149,149,123,123,124,43,43,42,
+ 86,86,89,89,91,92,90,44,53,48,
+ 151,151,54,52,85,85,178,178,177,177,
+ 152,152,81,81,67,67,67,59,59,60,
+ 68,68,69,69,64,64,64,103,103,105,
+ 104,104,57,57,61,61,56,56,49,107,
+ 107,107,98,98,98,99,100,100,100,101,
+ 101,110,110,110,112,112,111,111,197,197,
+ 96,96,180,180,180,180,180,126,65,65,
+ 154,179,179,127,127,127,127,181,181,31,
+ 31,118,128,128,128,128,198,198,113,113,
+ 122,122,122,156,157,157,157,157,157,157,
+ 157,157,184,184,182,182,183,183,158,158,
+ 158,158,159,185,115,114,114,186,186,160,
+ 160,130,130,129,129,129,199,199,9,187,
+ 187,188,161,153,153,162,162,163,164,164,
+ 6,6,7,166,166,166,166,166,166,166,
+ 166,166,166,166,166,166,166,166,166,166,
+ 166,166,166,166,166,166,166,166,166,166,
+ 166,166,166,166,166,166,166,166,166,166,
+ 166,166,166,166,166,66,70,70,167,167,
+ 131,131,132,132,132,132,132,132,2,3,
+ 168,168,165,165,133,133,133,83,84,78,
+ 155,155,116,116,189,189,189,134,134,125,
+ 125,190,190,169,169,1385,1621,1603,968,1308,
+ 3375,27,974,24,28,23,25,2420,254,22,
+ 20,49,996,104,73,74,105,1044,499,1097,
+ 1086,1154,1137,3831,1351,1327,266,1369,1357,46,
+ 1435,1441,140,674,304,156,141,2709,26,29,
+ 968,476,2740,27,974,36,28,64,3211,26,
+ 29,968,224,3749,27,974,24,28,23,25,
+ 891,254,22,20,49,996,104,73,74,105,
+ 1044,146,1097,1086,2044,269,483,3291,2709,26,
+ 29,968,268,267,27,974,1877,28,227,222,
+ 223,3211,1621,1603,968,157,3749,27,974,24,
+ 28,23,25,891,254,22,20,49,996,104,
+ 73,74,81,233,236,239,242,2750,1311,1777,
+ 1735,968,30,1789,1957,26,29,968,1094,4640,
+ 27,974,24,28,58,25,1173,577,3371,2778,
+ 2808,3628,4240,4174,2146,26,29,968,2335,3749,
+ 27,974,24,28,2637,25,891,254,22,20,
+ 49,996,104,73,74,105,1044,338,1097,1086,
+ 1154,1137,673,1351,1327,879,1369,1357,1444,1435,
+ 1441,140,3177,838,504,141,1313,871,2709,26,
+ 29,968,3913,2995,27,974,2008,28,381,2605,
+ 505,2146,26,29,968,2335,3749,27,974,24,
+ 28,2637,25,891,254,22,20,49,996,104,
+ 73,74,105,1044,338,1097,1086,1154,1137,1172,
+ 1351,1327,997,1369,1357,1626,1435,1441,140,717,
+ 180,504,141,2721,2776,2853,379,380,968,2302,
+ 2995,2951,2923,3211,26,29,968,505,3749,27,
+ 974,24,28,23,25,891,254,22,20,49,
+ 996,104,73,74,105,1954,266,500,484,324,
+ 330,2522,26,29,968,2335,3749,27,974,24,
+ 28,2637,25,891,254,22,20,49,996,104,
+ 73,74,105,1044,338,1097,1086,1154,1137,2590,
+ 1351,1327,2687,1369,1357,2804,1435,1441,140,918,
+ 46,504,141,1216,731,270,845,92,2950,388,
+ 2995,2824,268,267,500,2948,4488,505,2564,26,
+ 29,968,2740,3749,27,974,24,28,23,25,
+ 891,254,22,20,49,996,104,73,74,105,
+ 1044,748,1097,1086,1154,1137,2757,1351,1327,2687,
+ 1369,1357,843,1435,1441,140,21,4298,373,141,
+ 2691,26,29,968,347,2987,27,974,24,28,
+ 56,25,2477,1888,2774,968,891,26,29,968,
+ 376,4522,27,974,24,28,334,25,311,91,
+ 2636,26,29,968,501,3749,27,974,24,28,
+ 23,25,891,254,22,20,49,996,104,73,
+ 74,105,1044,2788,1097,1086,1154,1137,1381,1351,
+ 1327,3148,1369,1357,1518,1435,1441,140,2950,388,
+ 373,141,2297,274,1575,2395,315,317,281,2899,
+ 328,529,348,313,1747,377,2700,879,2958,26,
+ 29,968,374,3749,27,974,24,28,23,25,
+ 891,254,22,20,49,996,104,73,74,105,
+ 1044,418,1097,1086,1154,1137,3463,1351,1327,88,
+ 1369,1357,46,1435,1441,140,705,429,156,141,
+ 1862,37,39,968,62,3104,38,974,60,3520,
+ 3314,26,29,968,997,2987,27,974,24,28,
+ 55,25,3052,2958,26,29,968,378,3749,27,
+ 974,24,28,23,25,891,254,22,20,49,
+ 996,104,73,74,105,1044,234,1097,1086,1154,
+ 1137,3197,1351,1327,3450,1369,1357,69,1435,1441,
+ 140,329,330,367,141,2605,2958,26,29,968,
+ 2740,3749,27,974,24,28,23,25,891,254,
+ 22,20,49,996,104,73,74,105,1044,442,
+ 1097,1086,1154,1137,1607,1351,1327,2742,1369,1357,
+ 577,1435,1441,140,68,46,367,141,2605,998,
+ 2958,26,29,968,327,3749,27,974,24,28,
+ 23,25,891,254,22,20,49,996,104,73,
+ 74,105,1044,1480,1097,1086,1154,1137,511,1351,
+ 1327,2605,1369,1357,446,1435,1441,140,59,366,
+ 367,141,2605,2900,26,29,968,567,3749,27,
+ 974,24,28,23,25,891,254,22,20,49,
+ 996,104,73,74,105,1044,871,1097,1086,1154,
+ 1137,3913,1351,1327,1682,1369,1357,445,1435,1441,
+ 140,2740,365,373,141,3440,2605,2480,26,29,
+ 968,2740,3749,27,974,24,28,23,25,891,
+ 254,22,20,49,996,104,73,74,105,1044,
+ 4201,1097,1086,1154,1137,67,1351,1327,3439,1369,
+ 1357,50,1435,1441,140,52,363,139,141,318,
+ 327,2958,26,29,968,3440,3749,27,974,24,
+ 28,23,25,891,254,22,20,49,996,104,
+ 73,74,105,1044,499,1097,1086,1154,1137,4391,
+ 1351,1327,2740,1369,1357,322,1435,1441,140,2230,
+ 371,157,141,2958,26,29,968,1459,3749,27,
+ 974,24,28,23,25,891,254,22,20,49,
+ 996,104,73,74,105,1044,84,1097,1086,1154,
+ 1137,320,1351,1327,2696,1369,1357,1536,1435,1441,
+ 140,1456,3452,152,141,2958,26,29,968,1429,
+ 3749,27,974,24,28,23,25,891,254,22,
+ 20,49,996,104,73,74,105,1044,1808,1097,
+ 1086,1154,1137,396,1351,1327,433,1369,1357,499,
+ 1435,1441,140,3446,4655,151,141,2958,26,29,
+ 968,2740,3749,27,974,24,28,23,25,891,
+ 254,22,20,49,996,104,73,74,105,1044,
+ 1472,1097,1086,1154,1137,939,1351,1327,2079,1369,
+ 1357,1378,1435,1441,140,51,433,150,141,2958,
+ 26,29,968,409,3749,27,974,24,28,23,
+ 25,891,254,22,20,49,996,104,73,74,
+ 105,1044,499,1097,1086,1154,1137,4505,1351,1327,
+ 2740,1369,1357,46,1435,1441,140,4427,2740,149,
+ 141,2958,26,29,968,1583,3749,27,974,24,
+ 28,23,25,891,254,22,20,49,996,104,
+ 73,74,105,1044,87,1097,1086,1154,1137,2605,
+ 1351,1327,345,1369,1357,46,1435,1441,140,1989,
+ 2740,148,141,2958,26,29,968,2698,3749,27,
+ 974,24,28,23,25,891,254,22,20,49,
+ 996,104,73,74,105,1044,1223,1097,1086,1154,
+ 1137,2605,1351,1327,2275,1369,1357,1291,1435,1441,
+ 140,2074,2740,147,141,2958,26,29,968,329,
+ 3749,27,974,24,28,23,25,891,254,22,
+ 20,49,996,104,73,74,105,1044,95,1097,
+ 1086,1154,1137,1453,1351,1327,2345,1369,1357,46,
+ 1435,1441,140,3364,2740,146,141,2958,26,29,
+ 968,1569,3749,27,974,24,28,23,25,891,
+ 254,22,20,49,996,104,73,74,105,1044,
+ 96,1097,1086,1154,1137,1243,1351,1327,66,1369,
+ 1357,46,1435,1441,140,607,2740,145,141,2958,
+ 26,29,968,2190,3749,27,974,24,28,23,
+ 25,891,254,22,20,49,996,104,73,74,
+ 105,1044,499,1097,1086,1154,1137,4574,1351,1327,
+ 65,1369,1357,46,1435,1441,140,3013,2740,144,
+ 141,2958,26,29,968,1587,3749,27,974,24,
+ 28,23,25,891,254,22,20,49,996,104,
+ 73,74,105,1044,499,1097,1086,1154,1137,4591,
+ 1351,1327,64,1369,1357,46,1435,1441,140,2571,
+ 2740,143,141,2958,26,29,968,3373,3749,27,
+ 974,24,28,23,25,891,254,22,20,49,
+ 996,104,73,74,105,1044,2807,1097,1086,1154,
+ 1137,2743,1351,1327,63,1369,1357,46,1435,1441,
+ 140,2777,2802,142,141,3058,26,29,968,1818,
+ 3749,27,974,24,28,23,25,891,254,22,
+ 20,49,996,104,73,74,105,1044,3445,1097,
+ 1086,1154,1137,1448,1351,1327,320,1369,1357,46,
+ 1435,2768,162,3605,861,2958,26,29,968,567,
+ 3749,27,974,24,28,23,25,891,254,22,
+ 20,49,996,104,73,74,105,1044,871,1097,
+ 1086,1154,1137,3913,1351,1327,1472,1369,1357,155,
+ 1435,1441,140,370,323,137,141,1582,2950,388,
+ 1311,379,380,968,2721,276,922,3409,3097,26,
+ 29,968,1236,3749,27,974,24,28,23,25,
+ 891,254,22,20,49,996,104,73,74,105,
+ 1044,30,1097,1086,1154,1137,394,1351,1327,2740,
+ 1369,1357,327,1435,1441,140,398,241,187,141,
+ 3211,26,29,968,1173,3749,27,974,24,28,
+ 23,25,891,254,22,20,49,996,104,73,
+ 74,105,1044,2782,1097,1086,1154,1137,773,1351,
+ 1327,2339,1369,1357,406,1435,2768,162,3211,26,
+ 29,968,368,3749,27,974,24,28,23,25,
+ 891,254,22,20,49,996,104,73,74,105,
+ 1044,3578,1097,1086,1154,1137,278,1351,1327,2761,
+ 1369,1357,492,1435,2768,162,2623,26,29,968,
+ 578,4640,27,974,24,28,23,25,3409,2477,
+ 497,271,968,3211,26,29,968,285,3749,27,
+ 974,24,28,23,25,891,254,22,20,49,
+ 996,104,73,74,105,1044,499,1097,1086,1154,
+ 1137,4623,1351,1327,417,1369,1357,299,1435,2768,
+ 162,3211,26,29,968,1561,3749,27,974,24,
+ 28,23,25,891,254,22,20,49,996,104,
+ 73,74,105,1044,2761,1097,1086,1154,1137,3445,
+ 1351,1327,3445,1369,1357,501,1435,2768,162,1957,
+ 26,29,968,589,4640,27,974,24,28,57,
+ 25,46,836,382,415,998,3211,26,29,968,
+ 411,3749,27,974,24,28,23,25,891,254,
+ 22,20,49,996,104,73,74,105,1044,3423,
+ 1097,1086,1154,1137,370,1351,1327,3303,1369,1357,
+ 3148,1435,2768,162,3250,26,29,968,410,3749,
+ 27,974,24,28,23,25,891,254,22,20,
+ 49,996,104,73,74,105,1044,671,1097,1086,
+ 1154,1137,752,1351,1327,1511,1369,1357,848,1435,
+ 2768,162,287,3416,288,3329,46,3519,383,415,
+ 3432,1311,379,380,968,1773,1865,2769,272,3211,
+ 26,29,968,413,3749,27,974,24,28,23,
+ 25,891,254,22,20,49,996,104,73,74,
+ 105,1044,419,1097,1086,1154,1137,350,1351,1327,
+ 1491,1369,1357,2996,2327,3913,519,3211,26,29,
+ 968,3497,3749,27,974,24,28,23,25,891,
+ 254,22,20,49,996,104,73,74,105,1044,
+ 3244,1097,1086,1154,1137,836,1351,1327,2607,1369,
+ 2268,3211,26,29,968,2632,3749,27,974,24,
+ 28,23,25,891,254,22,20,49,996,104,
+ 73,74,105,1044,328,1097,1086,1154,1137,3148,
+ 1351,1327,2632,2195,3211,26,29,968,1376,3749,
+ 27,974,24,28,23,25,891,254,22,20,
+ 49,996,104,73,74,105,1044,1380,1097,1086,
+ 1154,1137,773,1351,2196,3289,379,380,968,1884,
+ 2924,287,3532,288,3913,46,3409,229,254,3573,
+ 934,26,29,968,3734,4440,27,974,24,28,
+ 334,25,3211,26,29,968,266,3749,27,974,
+ 24,28,23,25,891,254,22,20,49,996,
+ 104,73,74,105,1044,177,1097,1086,1154,1137,
+ 349,2178,224,2740,3409,2631,1,2143,2011,519,
+ 525,3331,998,328,2940,1235,2930,968,346,2395,
+ 315,317,2297,272,86,269,100,312,1747,220,
+ 1651,3445,268,267,153,1607,153,54,227,222,
+ 223,2663,2740,193,2346,178,872,341,923,845,
+ 344,85,3033,100,208,1173,205,197,206,207,
+ 209,167,1954,233,236,239,242,2750,179,2940,
+ 567,271,968,1789,321,1962,53,182,165,166,
+ 168,169,170,171,172,3208,513,3409,3371,2778,
+ 2808,3628,4240,4174,3211,26,29,968,608,3749,
+ 27,974,24,28,23,25,891,254,22,20,
+ 49,996,104,73,74,105,1044,279,1097,1086,
+ 1154,2185,3211,26,29,968,192,3749,27,974,
+ 24,28,23,25,891,254,22,20,49,996,
+ 104,73,74,105,1044,3327,1097,1086,1154,2187,
+ 3211,26,29,968,2189,3749,27,974,24,28,
+ 23,25,891,254,22,20,49,996,104,73,
+ 74,105,1044,2205,1097,1086,2085,3211,26,29,
+ 968,2761,3749,27,974,24,28,23,25,891,
+ 254,22,20,49,996,104,73,74,105,1044,
+ 2818,1097,1086,2093,3211,26,29,968,567,3749,
+ 27,974,24,28,23,25,891,254,22,20,
+ 49,996,104,73,74,105,1044,3409,1097,1086,
+ 2167,1876,26,29,968,3116,4440,27,974,24,
+ 28,334,25,3211,26,29,968,1039,3749,27,
+ 974,24,28,23,25,891,254,22,20,49,
+ 996,104,73,74,105,1044,196,1097,2172,3172,
+ 26,29,968,2740,3749,27,974,24,28,23,
+ 25,891,254,22,20,49,996,83,73,74,
+ 2395,315,317,3038,2740,385,415,1022,312,1747,
+ 346,2053,1311,379,380,968,46,318,70,439,
+ 3381,1359,2950,4557,1949,26,29,968,3606,4440,
+ 27,974,24,28,334,25,2625,3409,99,339,
+ 923,845,344,438,3211,26,29,968,2943,3749,
+ 27,974,24,28,23,25,891,254,22,20,
+ 49,996,104,73,74,105,1044,2816,1097,2175,
+ 2703,2701,1567,968,2866,3637,194,2882,2855,1036,
+ 379,380,968,2395,315,317,3382,3409,562,3294,
+ 2335,312,1747,346,2604,2749,2628,2761,834,2335,
+ 4661,47,46,1936,46,2663,3814,977,3456,220,
+ 266,525,287,48,288,1556,46,648,220,510,
+ 1285,360,339,923,845,344,214,3407,2677,46,
+ 220,1488,4409,2102,208,153,205,198,206,207,
+ 209,3182,46,399,1173,160,2265,40,2758,836,
+ 3456,199,200,3033,2335,224,2879,3101,1062,2842,
+ 1354,400,2869,2740,1173,2879,268,267,210,201,
+ 202,203,204,220,1635,290,291,292,293,3325,
+ 432,3128,3131,1525,2873,224,1175,379,380,968,
+ 567,235,222,223,3621,2824,4409,2929,208,3301,
+ 205,198,206,207,209,511,296,1311,379,380,
+ 968,384,415,2952,3472,199,200,47,2335,1430,
+ 2879,238,222,223,2864,3360,304,2740,287,48,
+ 288,44,210,201,202,203,204,220,420,290,
+ 291,292,293,3293,1309,379,380,968,232,46,
+ 2944,401,403,4181,2853,379,380,968,3621,2844,
+ 4409,437,208,3353,205,198,206,207,209,46,
+ 3357,1939,3409,2335,319,47,3913,46,3480,199,
+ 200,4627,2335,519,2879,266,287,48,288,1556,
+ 46,2747,338,1170,2335,1948,210,201,202,203,
+ 204,220,775,290,291,292,293,1609,379,380,
+ 968,4349,3038,338,2846,2758,46,1181,2995,1848,
+ 2683,525,3621,3198,4409,1645,208,517,205,198,
+ 206,207,209,1445,71,2951,3429,2335,47,2995,
+ 338,268,267,199,200,153,1663,404,2879,287,
+ 48,288,1556,46,1766,186,2621,4271,2740,2862,
+ 210,201,202,203,204,2759,4397,290,291,292,
+ 293,2193,26,29,968,3116,4440,27,974,24,
+ 28,334,25,2740,346,3430,3621,3400,3211,26,
+ 29,968,3322,3749,27,974,24,28,23,25,
+ 891,254,22,20,49,996,104,73,74,105,
+ 1044,94,1859,339,923,845,344,3692,3433,576,
+ 1041,1730,337,998,2477,998,275,968,510,354,
+ 2395,315,317,46,3063,3443,871,2829,312,1747,
+ 346,3913,3454,1909,2854,2859,3511,158,3437,153,
+ 3054,2952,514,2953,2335,1589,26,29,968,160,
+ 4522,27,974,24,28,334,25,2769,3539,339,
+ 923,845,344,338,3211,26,29,968,515,3749,
+ 27,974,24,28,23,25,891,254,22,20,
+ 49,996,104,73,74,105,1044,87,1917,3362,
+ 327,525,1602,26,29,968,4189,4440,27,974,
+ 24,28,334,25,2395,315,317,3547,1173,328,
+ 220,1241,313,1747,346,153,2740,3401,2477,576,
+ 273,968,3137,998,1584,2346,178,3037,3551,3135,
+ 46,395,2099,3033,2766,208,2335,205,197,206,
+ 207,209,167,341,923,845,344,158,3549,3555,
+ 3733,2994,2401,317,2477,2621,3039,968,181,165,
+ 166,168,169,170,171,172,3211,26,29,968,
+ 295,3749,27,974,24,28,23,25,891,254,
+ 22,20,49,996,104,73,74,105,1992,3211,
+ 26,29,968,346,3749,27,974,24,28,23,
+ 25,891,254,22,20,49,996,104,73,74,
+ 105,2000,2387,46,3488,46,46,2992,2335,2830,
+ 2894,1411,339,923,845,344,46,2740,355,3346,
+ 2958,1488,3409,3211,26,29,968,220,3749,27,
+ 974,24,28,23,25,891,254,22,20,49,
+ 996,104,73,74,82,2740,2740,3040,3041,3044,
+ 4409,3774,208,2396,205,198,206,207,209,3374,
+ 3445,303,3583,2335,2859,2866,3051,1105,439,199,
+ 200,1454,4557,3045,2879,905,379,380,968,2421,
+ 3360,1445,220,231,254,2335,485,201,202,203,
+ 204,3048,3050,290,291,292,293,3512,1045,1966,
+ 1173,3409,525,998,2621,4409,47,208,3546,205,
+ 198,206,207,209,3138,512,3409,287,48,288,
+ 1556,338,2397,2740,199,200,153,153,224,2879,
+ 173,576,879,775,525,998,1231,523,42,2758,
+ 4582,507,201,202,203,204,3521,2995,290,291,
+ 292,293,3541,220,1110,302,1527,372,153,158,
+ 2335,2740,294,1377,232,222,223,2335,2346,178,
+ 576,259,2741,1177,998,525,3033,354,208,2621,
+ 205,197,206,207,209,167,338,280,2899,997,
+ 3053,2843,2854,2859,220,3541,46,3557,158,153,
+ 868,3518,165,166,168,169,170,171,172,2346,
+ 178,3562,765,1924,2905,2335,2740,3033,2871,208,
+ 1087,205,197,206,207,209,167,3559,3409,436,
+ 3128,3131,3409,2393,220,3441,326,330,3579,2335,
+ 3556,3409,174,165,166,168,169,170,171,172,
+ 3856,1866,491,3141,3560,2335,3913,4409,338,208,
+ 3558,205,198,206,207,209,3570,4715,564,518,
+ 2335,298,2432,879,2621,2676,199,200,3595,2335,
+ 189,2879,375,3298,2995,5049,46,488,490,220,
+ 2335,521,2740,305,201,202,203,204,338,5049,
+ 290,291,292,293,1527,2859,1866,5049,2335,338,
+ 2335,3913,4409,5049,208,327,205,198,206,207,
+ 209,3464,5049,3100,849,2335,3897,2621,2789,2621,
+ 997,199,200,5049,1651,2995,2879,1609,379,380,
+ 968,46,1771,5049,220,2335,5049,354,508,201,
+ 202,203,204,5049,2339,290,291,292,293,5049,
+ 5049,1572,2854,2859,338,5049,5049,4409,47,208,
+ 327,205,198,206,207,209,5049,2809,330,287,
+ 48,288,1556,5049,45,224,199,200,5049,5049,
+ 2995,2879,345,5049,5049,982,525,1782,5049,5049,
+ 491,5049,354,211,201,202,203,204,5049,3135,
+ 290,291,292,293,5049,220,1572,2854,2859,5049,
+ 153,241,222,223,5049,2973,5049,5049,280,2899,
+ 2346,178,5049,431,871,489,490,525,3033,3913,
+ 208,442,205,197,206,207,209,167,5049,901,
+ 379,380,968,5049,2445,2905,220,5049,5049,5049,
+ 5049,153,428,185,165,166,168,169,170,171,
+ 172,2346,178,5049,517,5049,5049,5049,525,3033,
+ 47,208,5049,205,197,206,207,209,167,5049,
+ 5049,287,48,288,1556,5049,1134,220,327,5049,
+ 5049,5049,153,5049,3583,165,166,168,169,170,
+ 171,172,2346,178,879,603,5049,5049,5049,525,
+ 3033,5049,208,5049,205,197,206,207,209,167,
+ 5049,1175,379,380,968,5049,576,926,220,5049,
+ 998,5049,5049,153,5049,188,165,166,168,169,
+ 170,171,172,2346,178,5049,689,5049,5049,5049,
+ 525,3033,47,208,158,205,197,206,207,209,
+ 167,997,5049,287,48,288,1556,5049,1813,220,
+ 5049,5049,5049,5049,153,5049,184,165,166,168,
+ 169,170,171,172,2346,178,5049,775,5049,5049,
+ 5049,525,3033,5049,208,5049,205,197,206,207,
+ 209,167,5049,1175,379,380,968,5049,2822,330,
+ 220,5049,5049,5049,5049,153,5049,191,165,166,
+ 168,169,170,171,172,2346,178,5049,2684,5049,
+ 5049,5049,5049,3033,47,208,5049,205,197,206,
+ 207,209,167,5049,5049,287,48,288,1556,5049,
+ 2783,5049,5049,5049,5049,5049,5049,5049,190,165,
+ 166,168,169,170,171,172,3211,26,29,968,
+ 5049,3749,27,974,24,28,23,25,891,254,
+ 22,20,49,996,104,73,74,80,3211,26,
+ 29,968,5049,3749,27,974,24,28,23,25,
+ 891,254,22,20,49,996,104,73,74,79,
+ 3211,26,29,968,5049,3749,27,974,24,28,
+ 23,25,891,254,22,20,49,996,104,73,
+ 74,78,3211,26,29,968,5049,3749,27,974,
+ 24,28,23,25,891,254,22,20,49,996,
+ 104,73,74,77,3211,26,29,968,5049,3749,
+ 27,974,24,28,23,25,891,254,22,20,
+ 49,996,104,73,74,76,3211,26,29,968,
+ 5049,3749,27,974,24,28,23,25,891,254,
+ 22,20,49,996,104,73,74,75,2998,26,
+ 29,968,5049,3749,27,974,24,28,23,25,
+ 891,254,22,20,49,996,104,73,74,102,
+ 3211,26,29,968,5049,3749,27,974,24,28,
+ 23,25,891,254,22,20,49,996,104,73,
+ 74,107,3211,26,29,968,5049,3749,27,974,
+ 24,28,23,25,891,254,22,20,49,996,
+ 104,73,74,106,3348,379,380,968,5049,2924,
+ 5049,879,5049,5049,5049,5049,230,254,5049,2609,
+ 3065,29,968,3734,4440,27,974,24,28,334,
+ 25,3211,26,29,968,266,3749,27,974,24,
+ 28,23,25,891,254,22,20,49,996,104,
+ 73,74,103,5049,5049,1685,5049,5049,5049,998,
+ 5049,224,5049,5049,5049,46,5049,5049,997,2335,
+ 3538,5049,5049,5049,5049,5049,5049,5049,2395,315,
+ 317,5049,5049,153,269,5049,312,1747,338,5049,
+ 5049,268,267,2717,195,5049,5049,228,222,223,
+ 1268,1612,26,29,968,3734,4440,27,974,24,
+ 28,334,25,5049,2995,3113,330,5049,5049,5049,
+ 5049,1530,234,237,240,243,2750,224,1309,379,
+ 380,968,1789,2616,3065,29,968,3734,4440,27,
+ 974,24,28,334,25,2200,26,29,968,3734,
+ 4440,27,974,24,28,334,25,5049,5049,47,
+ 2395,315,317,244,222,223,5049,5049,312,1747,
+ 287,48,288,1556,5049,45,5049,406,3098,1775,
+ 576,2056,759,998,998,998,1874,2853,379,380,
+ 968,5049,2395,315,317,5049,5049,5049,5049,5049,
+ 312,1747,1867,5049,2395,315,317,153,158,153,
+ 5049,5049,312,1747,1268,2824,5049,160,266,1192,
+ 4488,1175,379,380,968,5049,759,934,26,29,
+ 968,3734,4440,27,974,24,28,334,25,1619,
+ 26,29,968,4271,4440,27,974,24,28,334,
+ 25,5049,47,306,5049,2101,5049,1528,5049,998,
+ 5049,2335,4661,287,48,288,1556,69,2412,5049,
+ 1309,379,380,968,268,267,5049,5049,2767,3538,
+ 220,5049,2907,153,5049,3528,2395,315,317,5049,
+ 5049,407,3098,2308,312,1747,5049,307,2994,2401,
+ 317,47,46,3182,5049,399,2335,5049,3554,5049,
+ 5049,5049,287,48,288,1556,5049,2535,1309,379,
+ 380,968,1354,400,5049,338,5049,2879,4509,2210,
+ 5049,5049,5049,998,5049,1609,379,380,968,2853,
+ 379,380,968,2255,5049,529,2300,998,5049,47,
+ 998,2995,1309,379,380,968,5049,153,495,5049,
+ 287,48,288,1556,2345,45,47,1614,998,5049,
+ 266,153,5049,5049,153,417,2191,287,48,288,
+ 1556,1656,45,47,1698,5049,2864,1309,379,380,
+ 968,5049,153,718,287,48,288,1556,5049,2807,
+ 5049,3016,1740,5049,1309,379,380,968,5049,5049,
+ 4509,5049,1820,401,402,5049,998,5049,47,335,
+ 5049,3139,379,380,968,5049,268,267,5049,287,
+ 48,288,1556,5049,45,47,5049,5049,5049,666,
+ 153,2775,5049,5049,5049,2692,287,48,288,1556,
+ 160,45,47,3144,379,380,968,2689,5049,5049,
+ 5049,2335,2887,287,48,288,1556,5049,45,5049,
+ 1175,379,380,968,2853,379,380,968,5049,2140,
+ 2621,5049,5049,5049,47,1175,379,380,968,5049,
+ 5049,1175,379,380,968,287,48,288,1556,5049,
+ 45,47,5049,1113,5049,266,5049,525,5049,5049,
+ 5049,2299,287,48,288,1556,47,1134,3516,1249,
+ 1317,46,47,525,525,2335,338,287,48,288,
+ 1556,153,2197,287,48,288,1556,5049,2425,5049,
+ 5049,872,338,338,338,1893,5049,153,153,998,
+ 5049,46,2995,491,70,2335,2390,186,186,1312,
+ 998,268,267,2435,5049,5049,5049,998,4397,4397,
+ 2995,5049,5049,153,338,5049,5049,493,5049,5049,
+ 5049,5049,5049,160,153,5049,5049,5049,488,490,
+ 5049,153,5049,5049,1519,5049,5049,5049,5049,5049,
+ 2995,3461,5049,5049,5049,5049,5049,522,5049,5049,
+ 5049,5049,5049,5049,5049,5049,5049,5049,5049,5049,
+ 5049,5049,5049,5049,3473,5049,5049,5049,5049,5049,
+ 5049,5049,5049,5049,5049,5049,3206,3317,5049,5049,
+ 5049,5049,5049,5049,5049,5049,5049,5049,5049,5049,
+ 5049,3592,5049,0,984,35,0,154,524,0,
+ 440,850,0,31,499,0,984,34,0,2567,
+ 123,0,1,430,0,1824,35,0,444,1105,
+ 0,443,1148,0,1145,89,0,31,289,297,
+ 0,29,380,0,26,379,0,1870,35,0,
+ 1,548,0,1,5314,0,1,5313,0,1,
+ 5312,0,1,5311,0,1,5310,0,1,5309,
+ 0,1,5308,0,1,5307,0,1,5306,0,
+ 1,5305,0,1,5304,0,1,984,35,0,
+ 1,1040,0,1579,35,0,31,277,253,0,
+ 31,499,277,253,0,1579,46,0,41,5081,
+ 0,41,33,0,2567,125,0,2567,124,0,
+ 3099,229,0,23,506,0,5374,431,0,1032,
+ 431,0,1,90,0,45,33,0,1,5083,
+ 0,1,35,0,1,5083,221,0,1,35,
+ 221,0,5080,33,0,5081,43,0,33,43,
+ 0,5548,32,0,5080,5,33,0,5058,397,
+ 0,1,1870,0,1,3575,0,1,2350,0,
+ 5374,93,0,1032,93,0,2696,314,0,3431,
+ 273,0,1,858,0,1,978,0,5080,35,
+ 0,487,3359,0,1,221,0,1,221,3239,
+ 0,5058,221,0,154,173,0,31,289,0,
+ 221,161,0,289,297,0,183,3815,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,37,38,39,
+ 40,41,42,43,44,0,46,47,48,49,
+ 50,51,52,53,54,55,56,57,58,0,
+ 60,0,62,0,64,65,66,67,0,0,
+ 1,71,3,5,74,75,76,77,78,79,
+ 80,81,82,83,84,85,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,68,46,47,48,49,50,51,52,53,
+ 54,55,56,57,58,0,60,2,62,88,
+ 64,65,66,67,0,94,0,89,90,5,
+ 74,75,76,77,78,79,80,81,82,83,
+ 84,85,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,61,46,47,
+ 48,49,50,51,52,53,54,55,56,57,
+ 58,0,60,0,62,4,64,65,66,67,
+ 0,8,9,89,90,5,74,75,76,77,
+ 78,79,80,81,82,83,84,85,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,0,46,47,48,49,50,51,
+ 52,53,54,55,56,57,58,0,60,0,
+ 62,0,64,65,66,67,0,10,0,89,
+ 90,3,74,75,76,77,78,79,80,81,
+ 82,83,84,85,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,61,
+ 46,47,48,49,50,51,52,53,54,55,
+ 56,57,58,0,60,0,62,4,64,65,
+ 66,67,86,87,95,96,0,114,74,75,
+ 76,77,78,79,80,81,82,83,84,85,
+ 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,0,46,47,48,49,
+ 50,51,52,53,54,55,56,57,58,0,
+ 60,0,62,88,64,65,66,67,0,94,
+ 0,3,86,87,74,75,76,77,78,79,
+ 80,81,82,83,84,85,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,0,46,47,48,49,50,51,52,53,
+ 54,55,56,57,58,0,60,0,62,88,
+ 64,65,66,67,0,94,86,87,0,114,
+ 74,75,76,77,78,79,80,81,82,83,
+ 84,85,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,72,46,47,
+ 48,49,50,51,52,53,54,55,56,57,
+ 58,100,60,0,62,88,64,65,66,67,
+ 0,94,0,112,86,87,74,75,76,77,
+ 78,79,80,81,82,83,84,85,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,61,46,47,48,49,50,51,
+ 52,53,54,55,56,57,58,0,60,2,
+ 62,0,64,65,66,67,86,87,0,8,
+ 9,3,74,75,76,77,78,79,80,81,
+ 82,83,84,85,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,61,
+ 46,47,48,49,50,51,52,53,54,55,
+ 56,57,58,0,60,0,62,0,64,65,
+ 66,67,0,1,0,3,2,0,74,75,
+ 76,77,78,79,80,81,82,83,84,85,
+ 0,1,2,3,4,5,6,7,8,9,
+ 0,11,12,3,39,5,43,7,0,46,
+ 47,48,49,50,51,52,53,54,55,56,
+ 0,1,2,3,4,5,6,7,61,57,
+ 0,1,42,43,0,1,46,47,48,49,
+ 50,51,52,53,54,55,56,0,1,59,
+ 3,61,5,63,7,47,48,0,68,69,
+ 70,71,72,0,1,2,3,4,0,6,
+ 40,41,95,96,40,41,86,87,88,89,
+ 90,91,92,93,94,95,96,97,98,99,
+ 100,101,102,103,104,105,106,107,108,109,
+ 110,111,112,113,114,115,0,1,2,3,
+ 4,5,6,7,8,9,10,11,12,13,
+ 14,15,16,17,18,19,20,21,22,23,
+ 24,25,26,27,28,29,30,31,32,33,
+ 34,35,36,37,38,39,40,41,42,43,
+ 44,0,46,47,48,49,50,51,52,53,
+ 54,55,56,0,58,0,1,99,0,4,
+ 0,65,66,67,0,1,2,3,4,5,
+ 6,7,8,9,10,11,12,13,14,15,
+ 16,17,18,19,20,21,22,23,24,25,
+ 26,27,28,29,30,31,32,33,34,35,
+ 36,37,38,39,40,41,0,43,44,68,
+ 46,47,48,49,50,51,52,53,54,55,
+ 56,63,58,63,0,1,68,3,68,65,
+ 66,67,0,1,2,3,4,5,6,7,
+ 8,9,10,11,12,13,14,15,16,17,
+ 18,19,20,21,22,23,24,25,26,27,
+ 28,29,30,31,32,33,34,35,36,37,
+ 38,39,40,41,68,43,44,71,46,47,
+ 48,49,50,51,52,53,54,55,56,0,
+ 58,0,0,2,0,1,0,65,66,67,
+ 0,1,2,3,4,5,6,7,8,9,
+ 10,11,12,13,14,15,16,17,18,19,
+ 20,21,22,23,24,25,26,27,28,29,
+ 30,31,32,33,34,35,36,37,38,39,
+ 40,41,0,43,44,3,46,47,48,49,
+ 50,51,52,53,54,55,56,68,58,63,
+ 69,72,0,71,68,65,66,67,0,1,
+ 2,3,4,5,6,7,8,9,10,11,
+ 12,13,14,15,16,17,18,19,20,21,
+ 22,23,24,25,26,27,28,29,30,31,
+ 32,33,34,35,36,37,38,39,40,41,
+ 0,43,44,3,46,47,48,49,50,51,
+ 52,53,54,55,56,63,58,0,0,1,
+ 0,1,0,65,66,67,0,1,2,3,
+ 4,5,6,7,8,9,10,11,12,13,
+ 14,15,16,17,18,19,20,21,22,23,
+ 24,25,26,27,28,29,30,31,32,33,
+ 34,35,36,37,38,39,40,41,0,43,
+ 44,3,46,47,48,49,50,51,52,53,
+ 54,55,56,61,58,0,0,0,2,0,
+ 0,65,66,67,0,1,2,3,4,5,
+ 6,7,8,9,10,11,12,13,14,15,
+ 16,17,18,19,20,21,22,23,24,25,
+ 26,27,28,29,30,31,32,33,34,35,
+ 36,37,38,39,117,118,119,43,0,0,
+ 46,47,48,49,50,51,52,53,54,55,
+ 56,61,58,0,0,70,69,0,1,65,
+ 66,67,0,0,2,0,1,5,0,7,
+ 8,9,0,11,12,7,13,14,15,16,
+ 17,18,19,20,21,22,23,100,99,102,
+ 103,104,105,106,107,108,109,110,111,112,
+ 0,1,45,3,42,5,43,7,69,46,
+ 47,48,49,50,51,52,53,54,55,56,
+ 0,59,57,61,71,63,72,0,8,9,
+ 68,69,70,71,72,97,0,0,1,2,
+ 3,4,5,6,7,0,10,93,86,87,
+ 88,89,90,91,92,93,94,95,96,97,
+ 98,99,100,101,102,103,104,105,106,107,
+ 108,109,110,111,112,113,114,115,0,42,
+ 2,45,45,5,0,7,8,9,61,11,
+ 12,0,0,0,58,2,0,60,0,1,
+ 2,3,4,5,6,7,10,70,71,0,
+ 73,0,1,2,3,4,0,6,0,1,
+ 42,0,1,2,3,4,0,6,0,1,
+ 2,3,4,42,6,0,1,59,3,61,
+ 5,63,7,98,0,61,68,69,70,71,
+ 72,59,59,42,117,118,119,59,62,68,
+ 0,45,2,42,86,87,88,89,90,91,
+ 92,93,94,95,96,97,98,99,100,101,
+ 102,103,104,105,106,107,108,109,110,111,
+ 112,113,114,115,0,1,2,3,4,5,
+ 6,7,8,9,10,11,12,13,14,15,
+ 16,17,18,19,20,21,22,23,24,25,
+ 26,27,28,29,30,31,32,33,34,35,
+ 36,37,38,39,40,41,42,93,44,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,0,44,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,0,44,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,0,1,44,0,0,1,6,3,97,
+ 5,7,7,0,57,0,1,2,3,4,
+ 5,6,7,0,1,2,3,0,5,2,
+ 7,72,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,59,0,44,72,0,1,
+ 5,3,59,5,69,7,59,0,0,1,
+ 2,3,4,0,6,2,0,1,93,3,
+ 4,0,6,2,72,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,59,61,44,
+ 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,0,1,44,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,45,0,44,
+ 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,0,1,44,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,45,0,0,
+ 2,93,0,1,2,3,4,0,6,0,
+ 1,2,3,4,0,6,2,0,63,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,59,63,44,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,0,1,44,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,45,0,44,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,0,1,44,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,45,0,44,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,0,1,44,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,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,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,0,0,2,0,0,0,1,
+ 2,3,4,0,6,0,1,2,3,4,
+ 57,6,0,1,0,3,4,0,6,2,
+ 0,0,2,2,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,37,38,39,0,0,2,70,4,
+ 5,57,7,8,9,70,11,12,0,59,
+ 0,1,57,3,4,0,6,0,10,0,
+ 25,2,0,1,98,3,71,0,0,1,
+ 11,12,4,0,6,40,41,113,0,43,
+ 0,1,46,47,48,49,50,51,52,53,
+ 54,55,56,45,59,45,61,42,63,0,
+ 0,0,0,68,69,0,58,45,0,1,
+ 2,3,4,5,6,7,59,0,59,2,
+ 0,86,87,88,89,90,91,92,0,1,
+ 95,96,97,98,99,100,101,102,103,104,
+ 105,106,107,108,109,110,111,0,0,2,
+ 42,4,5,45,7,8,9,57,11,12,
+ 101,0,61,0,63,63,0,1,60,69,
+ 4,72,25,45,115,0,59,0,70,71,
+ 63,73,0,0,1,68,3,40,41,72,
+ 70,43,91,92,46,47,48,49,50,51,
+ 52,53,54,55,56,0,59,2,61,0,
+ 63,45,0,1,0,68,69,3,0,1,
+ 45,0,59,2,63,117,118,119,0,46,
+ 0,3,0,86,87,88,89,90,91,92,
+ 63,0,95,96,97,98,99,100,101,102,
+ 103,104,105,106,107,108,109,110,111,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,0,
+ 1,0,70,0,63,75,3,0,1,0,
+ 1,0,0,2,2,0,57,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,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,0,0,2,0,
+ 0,2,2,0,0,2,2,0,1,0,
+ 1,0,0,0,2,0,59,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,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,0,0,0,1,
+ 0,0,2,0,1,0,93,0,1,0,
+ 0,0,0,116,0,0,0,0,0,0,
+ 24,24,0,0,0,24,0,116,0,0,
+ 113,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,
+ 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,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,0,1,
+ 0,3,0,0,0,0,0,0,10,0,
+ 0,13,14,15,16,17,18,19,20,21,
+ 22,23,0,0,1,0,3,4,0,6,
+ 0,0,0,0,0,0,0,1,0,0,
+ 0,43,0,0,46,47,48,49,50,51,
+ 52,53,54,55,56,45,58,0,1,59,
+ 3,59,0,65,66,67,0,10,45,0,
+ 13,14,15,16,17,18,19,20,21,22,
+ 23,45,0,0,1,2,3,4,5,6,
+ 7,0,1,2,3,4,5,6,7,61,
+ 43,63,68,46,47,48,49,50,51,52,
+ 53,54,55,56,74,58,0,1,0,116,
+ 0,5,65,66,67,42,43,120,45,91,
+ 92,69,0,42,43,69,45,68,0,0,
+ 0,59,0,60,61,62,0,64,0,0,
+ 0,60,0,62,0,64,73,0,0,0,
+ 42,45,71,0,73,0,1,2,3,4,
+ 5,6,7,0,1,2,3,4,5,6,
+ 7,0,1,2,3,4,5,6,7,0,
+ 1,2,3,4,5,6,7,0,1,2,
+ 3,4,5,6,7,46,68,42,43,70,
+ 45,57,70,61,68,42,43,69,45,70,
+ 57,0,72,42,43,60,45,62,0,64,
+ 0,42,43,60,45,62,71,64,73,42,
+ 43,60,45,62,71,64,73,0,0,60,
+ 0,62,71,64,73,0,0,60,0,62,
+ 71,64,73,42,0,0,0,0,0,0,
+ 73,0,1,2,3,4,5,6,7,0,
+ 1,2,3,4,5,6,7,57,0,61,
+ 43,63,0,46,47,48,49,50,51,52,
+ 53,54,55,56,0,0,0,57,0,42,
+ 0,0,0,42,43,0,45,69,63,91,
+ 92,42,43,58,45,69,0,0,70,0,
+ 0,60,0,62,70,64,70,69,69,60,
+ 0,62,0,64,73,0,0,0,0,0,
+ 0,0,73,0,0,0,68,0,0,0,
+ 0,0,0,57,72,0,61,0,0,0,
+ 0,0,0,69,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,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,
+ 5049,5027,5024,5024,5024,5024,5024,5024,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,5031,1,3397,1,1,1,1,1,
+ 1,1,1,1,1,1,1,708,1,5049,
+ 1705,108,3392,155,3217,1,1,1,112,5049,
+ 5018,5057,5083,3279,2082,3373,2477,2144,2394,3238,
+ 3430,3349,3391,3348,4225,3347,5049,5027,5024,5024,
+ 5024,5024,5024,5024,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,5031,1,
+ 3397,1281,1,1,1,1,1,1,1,1,
+ 1,1,1,708,1,5049,1705,3398,3392,4130,
+ 3217,1,1,1,114,4152,5049,3256,783,3279,
+ 2082,3373,2477,2144,2394,3238,3430,3349,3391,3348,
+ 4225,3347,5049,5027,5024,5024,5024,5024,5024,5024,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,5031,1,3397,2949,1,1,
+ 1,1,1,1,1,1,1,1,1,708,
+ 1,5049,1705,115,3392,4357,3217,1,1,1,
+ 113,3154,3068,3256,783,3279,2082,3373,2477,2144,
+ 2394,3238,3430,3349,3391,3348,4225,3347,5049,5027,
+ 5024,5024,5024,5024,5024,5024,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 5031,1,3397,5049,1,1,1,1,1,1,
+ 1,1,1,1,1,708,1,301,1705,126,
+ 3392,5049,3217,1,1,1,118,5349,31,3256,
+ 783,4857,2082,3373,2477,2144,2394,3238,3430,3349,
+ 3391,3348,4225,3347,5049,5027,5024,5024,5024,5024,
+ 5024,5024,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,5031,1,3397,499,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,708,1,5049,1705,111,3392,4644,3217,1,
+ 1,1,2633,2724,2512,2484,122,4823,2082,3373,
+ 2477,2144,2394,3238,3430,3349,3391,3348,4225,3347,
+ 5049,5027,5024,5024,5024,5024,5024,5024,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,5031,1,3397,5049,1,1,1,1,
+ 1,1,1,1,1,1,1,708,1,5049,
+ 1705,110,3392,4130,3217,1,1,1,35,4152,
+ 121,5083,2633,2724,2082,3373,2477,2144,2394,3238,
+ 3430,3349,3391,3348,4225,3347,5049,5027,5024,5024,
+ 5024,5024,5024,5024,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,5031,1,
+ 3397,136,1,1,1,1,1,1,1,1,
+ 1,1,1,708,1,1,1705,109,3392,4130,
+ 3217,1,1,1,5049,4152,2633,2724,120,4827,
+ 2082,3373,2477,2144,2394,3238,3430,3349,3391,3348,
+ 4225,3347,5049,5027,5024,5024,5024,5024,5024,5024,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,5031,1,3397,159,1,1,
+ 1,1,1,1,1,1,1,1,1,708,
+ 1,2199,1705,5049,3392,4130,3217,1,1,1,
+ 119,4152,5049,4425,2633,2724,2082,3373,2477,2144,
+ 2394,3238,3430,3349,3391,3348,4225,3347,5049,5027,
+ 5024,5024,5024,5024,5024,5024,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 5031,1,3397,2970,1,1,1,1,1,1,
+ 1,1,1,1,1,708,1,5049,1705,3099,
+ 3392,117,3217,1,1,1,2633,2724,46,3154,
+ 3068,1579,2082,3373,2477,2144,2394,3238,3430,3349,
+ 3391,3348,4225,3347,5049,3239,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,5058,1,3397,1579,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,708,1,216,1705,520,3392,5049,3217,1,
+ 1,1,5049,9170,89,5083,4854,127,2082,3373,
+ 2477,2144,2394,3238,3430,3349,3391,3348,4225,3347,
+ 5049,4916,4916,4916,4916,4916,4916,4916,4916,4916,
+ 35,4916,4916,5083,3133,1032,5297,5374,331,5300,
+ 5381,5382,5294,5301,5274,5299,5298,5295,5296,5275,
+ 5049,4824,2350,1040,1870,1032,3575,5374,3586,1609,
+ 5049,1579,4916,4916,5049,4925,4916,4916,4916,4916,
+ 4916,4916,4916,4916,4916,4916,4916,430,1,4916,
+ 1,4920,4842,4916,4842,5381,5382,5049,4916,4916,
+ 4916,4916,4916,1,4906,2350,4910,1870,134,3575,
+ 4108,856,2512,2484,4108,856,4916,4916,4916,4916,
+ 4916,4916,4916,4916,4916,4916,4916,4916,4916,4916,
+ 4916,4916,4916,4916,4916,4916,4916,4916,4916,4916,
+ 4916,4916,4916,4916,4916,4916,5049,5024,5024,5024,
+ 5024,5024,5024,5024,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,5040,1,
+ 5203,502,1,1,1,1,1,1,1,1,
+ 1,1,1,5049,1,5049,1824,2237,23,2934,
+ 5049,1,1,1,5049,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,5049,1,5203,811,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,4943,1,3304,5049,5018,4943,5083,3604,1,
+ 1,1,5049,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,940,1,5203,5057,1,1,
+ 1,1,1,1,1,1,1,1,1,5049,
+ 1,310,5049,2101,5049,1579,5049,1,1,1,
+ 5049,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,5049,1,5203,2691,1,1,1,1,
+ 1,1,1,1,1,1,1,4721,1,3540,
+ 1193,5056,5049,5057,3604,1,1,1,5049,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,5203,380,1,1,1,1,1,1,
+ 1,1,1,1,1,2452,1,5049,5049,4925,
+ 5049,984,5049,1,1,1,5049,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,388,1,
+ 5203,379,1,1,1,1,1,1,1,1,
+ 1,1,1,3641,1,5049,1,136,4235,135,
+ 5049,1,1,1,35,4845,2398,1040,621,4020,
+ 3575,4042,3998,3976,1399,4086,4064,5306,5304,5313,
+ 5312,5308,5309,5307,5310,5311,5314,5305,5065,3323,
+ 625,716,5067,702,2659,713,5068,5066,601,5061,
+ 5063,5064,5062,1237,5472,5473,5474,5297,130,284,
+ 5300,5381,5382,5294,5301,5274,5299,5298,5295,5296,
+ 5275,559,5439,1,1,1825,1743,5049,9169,902,
+ 5440,5441,380,215,4861,5049,3472,4861,128,4861,
+ 4861,4861,5049,4861,4861,2362,5306,5304,5313,5312,
+ 5308,5309,5307,5310,5311,5314,5305,2199,2237,1701,
+ 1659,1617,1575,1533,1491,1449,1407,1365,1323,4425,
+ 431,35,5081,5083,4861,4949,5297,4946,1920,5300,
+ 5381,5382,5294,5301,5274,5299,5298,5295,5296,5275,
+ 116,4861,3220,4861,5057,4861,357,440,3154,3068,
+ 4861,4861,4861,4861,4861,2304,1,1,4968,221,
+ 4964,221,221,221,221,132,5012,357,4861,4861,
+ 4861,4861,4861,4861,4861,4861,4861,4861,4861,4861,
+ 4861,4861,4861,4861,4861,4861,4861,4861,4861,4861,
+ 4861,4861,4861,4861,4861,4861,4861,4861,379,221,
+ 4864,3115,487,4864,31,4864,4864,4864,4830,4864,
+ 4864,5049,444,1,5015,3214,301,1279,340,4824,
+ 2704,1040,1870,1032,3575,5374,5349,221,405,5049,
+ 5535,1,4906,4997,4910,4991,33,4994,46,4925,
+ 4864,1,4906,2350,4910,1870,5049,3575,1,4906,
+ 4997,4910,4991,5058,4994,90,1,4864,1,4864,
+ 4952,4864,4952,2271,352,4833,4864,4864,4864,4864,
+ 4864,4848,1785,5058,5472,5473,5474,1785,1724,4303,
+ 229,5081,4940,309,4864,4864,4864,4864,4864,4864,
+ 4864,4864,4864,4864,4864,4864,4864,4864,4864,4864,
+ 4864,4864,4864,4864,4864,4864,4864,4864,4864,4864,
+ 4864,4864,4864,4864,5049,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,5058,5400,5203,5049,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,161,131,5203,5049,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,161,5049,5203,5049,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,34,4836,5203,129,1,4961,963,4958,2304,
+ 1032,2362,5374,5049,1483,361,4906,2704,4910,1870,
+ 1,3575,1,340,35,3214,5083,342,1032,1693,
+ 5374,161,5049,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1785,5049,5203,357,93,35,
+ 2186,5083,1785,5003,1063,5000,1785,5049,1,4906,
+ 2704,4910,1870,5049,3575,4499,5049,4824,357,1040,
+ 1870,5049,3575,4513,161,5049,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1785,2784,571,
+ 5049,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,41,4931,5203,5049,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,4928,1,5203,
+ 5049,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,33,4955,5203,1,4906,2398,4910,621,
+ 4020,3575,4042,3998,3976,4870,4086,4064,4897,4903,
+ 4876,4879,4891,4888,4894,4885,4882,4873,4900,5065,
+ 3323,625,716,5067,702,2659,713,5068,5066,601,
+ 5061,5063,5064,5062,1237,35,35,2459,5049,5049,
+ 4516,5402,1,4906,2704,4910,1870,5049,3575,1,
+ 4906,2350,4910,1870,5049,3575,4534,5049,503,5049,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1785,2465,5203,5049,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,5049,4972,5203,5049,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,5081,5049,5203,5049,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,43,4978,5203,5049,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,4975,5049,5203,5049,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,1,1,1,1,
+ 1,1,1,1,1,1,5049,5548,5203,138,
+ 4824,2398,1040,621,4020,3575,4042,3998,3976,548,
+ 4086,4064,5306,5304,5313,5312,5308,5309,5307,5310,
+ 5311,5314,5305,5065,3323,625,716,5067,702,2659,
+ 713,5068,5066,601,5061,5063,5064,5062,1237,35,
+ 35,1,4906,2398,4910,621,4020,3575,4042,3998,
+ 3976,4870,4086,4064,4897,4903,4876,4879,4891,4888,
+ 4894,4885,4882,4873,4900,5065,3323,625,716,5067,
+ 702,2659,713,5068,5066,601,5061,5063,5064,5062,
+ 1237,35,35,35,4824,2398,1040,621,4020,3575,
+ 4042,3998,3976,548,4086,4064,5306,5304,5313,5312,
+ 5308,5309,5307,5310,5311,5314,5305,5065,3323,625,
+ 716,5067,702,2659,713,5068,5066,601,5061,5063,
+ 5064,5062,1237,5049,5049,3431,133,5049,1,4906,
+ 2350,4910,1870,5049,3575,1,4906,2350,4910,1870,
+ 3496,3575,5049,4824,5049,1040,1870,5049,3575,3470,
+ 314,101,5006,3836,5057,35,4824,2398,1040,621,
+ 4020,3575,4042,3998,3976,548,4086,4064,5306,5304,
+ 5313,5312,5308,5309,5307,5310,5311,5314,5305,5065,
+ 3323,625,716,5067,702,2659,713,5068,5066,601,
+ 5061,5063,5064,5062,1237,1,217,572,2013,5504,
+ 5498,1819,5502,5496,5497,2013,5527,5528,1,1785,
+ 5049,4824,3496,1040,4867,397,3575,443,5012,72,
+ 5505,3209,389,4913,2271,5083,5057,5049,5049,984,
+ 5110,5111,1870,5049,3575,1495,1537,5055,5049,5297,
+ 5049,5080,5300,5381,5382,5294,5301,5274,5299,5298,
+ 5295,5296,5275,3115,729,654,5507,4988,5508,5049,
+ 5049,123,5049,5529,5506,5049,5015,35,1,4968,
+ 221,4964,221,221,221,221,4851,1,4351,3214,
+ 416,5518,5517,5530,5499,5500,5523,5524,5049,4984,
+ 5521,5522,5501,5503,5525,5526,5531,5511,5512,5513,
+ 5509,5510,5519,5520,5515,5514,5516,5049,218,572,
+ 221,5504,5498,487,5502,5496,5497,5037,5527,5528,
+ 910,5049,2594,343,4839,2544,33,4955,1279,2036,
+ 4955,5056,5505,5081,1050,45,1785,5049,221,404,
+ 336,5535,5049,422,35,336,5083,1495,1537,336,
+ 4385,5297,2540,578,5300,5381,5382,5294,5301,5274,
+ 5299,5298,5295,5296,5275,5049,729,2696,5507,5049,
+ 5508,2404,5049,1824,5049,5529,5506,3302,283,5335,
+ 2009,273,1785,5009,2563,5472,5473,5474,5049,5470,
+ 5049,2928,5049,5518,5517,5530,5499,5500,5523,5524,
+ 5547,5049,5521,5522,5501,5503,5525,5526,5531,5511,
+ 5512,5513,5509,5510,5519,5520,5515,5514,5516,35,
+ 4824,2398,1040,621,4020,3575,4042,3998,3976,548,
+ 4086,4064,5306,5304,5313,5312,5308,5309,5307,5310,
+ 5311,5314,5305,5065,3323,625,716,5067,702,2659,
+ 713,5068,5066,601,5061,5063,5064,5062,1237,32,
+ 4981,5049,5442,5049,5490,3553,3027,5049,5335,389,
+ 5080,5049,5049,4350,3535,5049,3496,35,4824,2398,
+ 1040,621,4020,3575,4042,3998,3976,548,4086,4064,
+ 5306,5304,5313,5312,5308,5309,5307,5310,5311,5314,
+ 5305,5065,3323,625,716,5067,702,2659,713,5068,
+ 5066,601,5061,5063,5064,5062,1237,35,4824,2398,
+ 1040,621,4020,3575,4042,3998,3976,548,4086,4064,
+ 5306,5304,5313,5312,5308,5309,5307,5310,5311,5314,
+ 5305,5065,3323,625,716,5067,702,2659,713,5068,
+ 5066,601,5061,5063,5064,5062,5049,5049,3414,5049,
+ 5049,2997,4689,5049,5049,2787,4690,5049,2617,5049,
+ 3527,369,5049,1,3130,5049,1181,35,4824,2398,
+ 1040,621,4020,3575,4042,3998,3976,548,4086,4064,
+ 5306,5304,5313,5312,5308,5309,5307,5310,5311,5314,
+ 5305,5065,3323,625,716,5067,702,2659,713,5068,
+ 5066,601,5061,5063,5064,5062,35,4824,2398,1040,
+ 621,4020,3575,4042,3998,3976,548,4086,4064,5306,
+ 5304,5313,5312,5308,5309,5307,5310,5311,5314,5305,
+ 5065,3323,625,716,5067,702,2659,713,5068,5066,
+ 601,5061,5063,5064,5062,1237,5049,5049,5049,6332,
+ 5049,1,4733,5049,6332,5049,3345,5049,3560,5049,
+ 5049,5049,5049,3490,5049,5049,5049,5049,5049,5049,
+ 3122,3038,5049,5049,5049,3212,5049,3490,5049,5049,
+ 5055,35,4824,4673,1040,621,4020,3575,4042,3998,
+ 3976,548,4086,4064,5306,5304,5313,5312,5308,5309,
+ 5307,5310,5311,5314,5305,5065,3323,625,716,5067,
+ 702,2659,713,5068,5066,601,5061,5063,5064,5062,
+ 35,4824,2398,1040,621,4020,3575,4042,3998,3976,
+ 548,4086,4064,5306,5304,5313,5312,5308,5309,5307,
+ 5310,5311,5314,5305,5065,3323,625,716,5067,702,
+ 2659,713,5068,5066,601,5061,5063,5064,5062,35,
+ 4824,2398,1040,621,4020,3575,4042,3998,3976,548,
+ 4086,4064,5306,5304,5313,5312,5308,5309,5307,5310,
+ 5311,5314,5305,5065,3323,625,716,5067,702,2659,
+ 713,5068,5066,601,5061,5063,5064,5062,5049,4845,
+ 98,5083,97,509,5049,5049,5049,183,1304,5049,
+ 5049,5306,5304,5313,5312,5308,5309,5307,5310,5311,
+ 5314,5305,5049,5049,4824,5049,1040,4867,5049,3575,
+ 5049,5049,5049,5049,356,5049,33,4955,125,5049,
+ 1,5297,5049,5049,5300,5381,5382,5294,5301,5274,
+ 5299,5298,5295,5296,5275,2975,5439,5049,4845,4726,
+ 5083,1958,364,902,5440,5441,362,1304,2089,282,
+ 5306,5304,5313,5312,5308,5309,5307,5310,5311,5314,
+ 5305,5081,316,1,5024,221,5024,221,221,221,
+ 221,1,5024,221,5024,221,221,221,221,2594,
+ 5297,4934,3222,5300,5381,5382,5294,5301,5274,5299,
+ 5298,5295,5296,5275,2796,5439,33,4955,5049,3490,
+ 5049,2186,902,5440,5441,221,8715,5046,5021,2540,
+ 578,1106,5049,221,8715,1150,5021,865,414,26,
+ 5049,1785,5049,1705,3408,1361,435,3217,408,434,
+ 1,1705,5049,1361,5049,3217,5535,5049,5049,422,
+ 5058,5081,213,1,5535,1,5024,221,5024,221,
+ 221,221,221,1,5024,221,5024,221,221,221,
+ 221,1,5024,221,5024,221,221,221,221,1,
+ 5024,221,5024,221,221,221,221,1,5024,221,
+ 5024,221,221,221,221,5470,861,221,8715,412,
+ 5021,708,2051,2957,3367,221,8715,2106,5021,2698,
+ 3305,173,5056,221,8715,1705,5021,1361,124,3217,
+ 5049,221,8715,1705,5021,1361,213,3217,5535,221,
+ 8715,1705,5021,1361,212,3217,5535,219,494,1705,
+ 5049,1361,213,3217,5535,5049,492,1705,5049,1361,
+ 213,3217,5535,5034,5049,5049,5049,5049,5049,5049,
+ 5535,1,5024,221,5024,221,221,221,221,1,
+ 5024,221,5024,221,221,221,221,3306,308,2594,
+ 5297,4937,1,5300,5381,5382,5294,5301,5274,5299,
+ 5298,5295,5296,5275,496,5,35,3316,5049,5043,
+ 5049,5049,5049,221,8715,5049,5021,4472,3566,2540,
+ 578,221,8715,1868,5021,4691,5049,5049,5225,5049,
+ 5049,1705,5049,1361,3471,3217,5224,2036,1878,1705,
+ 5049,1361,5049,3217,5535,5049,5049,5049,5049,5049,
+ 5049,5049,5535,5049,5049,5049,4315,5049,5049,5049,
+ 5049,5049,5049,2716,516,5049,33,5049,5049,5049,
+ 5049,5049,5049,1996
+ };
+ };
+ 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,
+ 1007,60,476,60,62,997,277,277,277,277,
+ 57,997,277,842,746,127,1044,1007,1046,477,
+ 477,477,477,477,477,477,477,477,746,752,
+ 757,754,761,759,766,764,768,767,769,223,
+ 770,476,459,29,29,29,29,272,231,1,
+ 744,29,67,378,746,746,1,872,378,913,
+ 28,586,58,274,459,730,730,713,713,231,
+ 1007,477,477,477,477,477,477,477,477,477,
+ 477,477,477,477,477,477,477,477,477,477,
+ 476,476,476,476,476,476,476,476,476,476,
+ 476,1007,477,378,378,104,460,911,911,911,
+ 911,220,378,1,109,719,730,838,730,433,
+ 730,836,730,29,730,57,272,67,67,1,
+ 67,28,476,514,585,378,513,272,515,513,
+ 378,67,754,754,752,752,752,759,759,759,
+ 759,757,757,764,761,761,767,766,768,599,
+ 769,109,291,396,387,386,346,57,1046,997,
+ 997,997,997,272,272,911,135,910,744,272,
+ 740,178,272,436,220,435,435,838,279,272,
+ 272,272,220,911,477,29,750,69,378,58,
+ 272,272,515,586,476,104,67,785,378,398,
+ 400,272,586,1007,1007,1007,1007,997,997,460,
+ 112,740,178,436,436,436,220,436,279,279,
+ 272,220,272,378,750,109,585,272,58,514,
+ 378,391,380,532,400,220,514,378,378,378,
+ 378,231,231,740,119,520,272,178,599,221,
+ 268,591,178,436,436,999,272,279,520,518,
+ 519,272,751,751,750,1007,69,516,58,333,
+ 476,530,530,282,282,272,394,109,644,378,
+ 272,378,378,740,586,277,513,592,342,997,
+ 510,538,1002,272,520,477,272,231,477,67,
+ 272,516,333,476,476,400,272,586,378,398,
+ 380,333,357,514,191,514,790,109,541,477,
+ 599,287,436,436,999,56,272,378,67,272,
+ 529,400,272,333,791,191,514,592,510,477,
+ 477,436,838,57,57,529,378,585,529,910,
+ 277,114,114,791,838,441,538,272,997,272,
+ 997,522,529,191,602,191,909,909,536,442,
+ 57,272,231,272,401,522,331,676,990,997,
+ 837,637,191,29,29,536,441,599,477,599,
+ 791,997,997,997,442,997,272,955,791,791,
+ 990,272,838,440,378,533,524,548,911,990,
+ 331,601,838,838,793,57,910,175,997,599,
+ 442,459,459,458,840,459,791,791,173,536,
+ 29,524,602,601,602,791,286,790,378,601,
+ 601,601,57,272,431,644,378,510,378,955,
+ 791,997,378,536,601,476,797,510,791,520,
+ 601,601,601,272,272,114,378,378,370,442,
+ 173,442,791,955,1007,442,439,520,378,796,
+ 520,520,272,791,791,909,838,838,946,476,
+ 440,1006,791,378,796,791,513,442,378,1006,
+ 791,519,442,378,796,442
+ };
+ };
+ 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,
+ 26,40,27,28,41,6,29,30,31,32,
+ 39,33,34,35,36,37,24,11,12,7,
+ 5,8,9,4,25,63,38,2,49,13,
+ 14,58,47,15,65,50,43,16,51,52,
+ 17,18,53,54,19,20,55,66,56,10,
+ 67,21,22,48,23,46,1,3,0,114,
+ 0,70,72,42,114,68,113,0,94,88,
+ 8,9,89,90,86,87,61,91,92,95,
+ 96,97,98,99,100,112,70,93,69,102,
+ 103,104,105,106,107,108,109,110,111,113,
+ 71,42,114,63,68,72,2,59,1,7,
+ 3,5,0,63,69,68,1,0,6,39,
+ 74,1,4,3,47,48,57,70,93,113,
+ 72,71,42,114,59,2,115,94,101,88,
+ 11,12,7,5,8,9,89,90,86,87,
+ 61,91,92,95,96,97,98,99,100,112,
+ 102,103,104,105,106,107,108,109,110,111,
+ 63,68,69,0,64,62,116,73,6,117,
+ 118,119,60,2,7,5,4,70,71,42,
+ 49,13,14,58,47,15,65,50,43,16,
+ 51,52,17,18,53,54,19,20,55,66,
+ 56,10,67,21,46,22,48,23,3,1,
+ 45,0,63,70,93,68,113,71,42,114,
+ 72,13,14,26,40,15,27,28,16,17,
+ 18,41,29,19,20,30,31,32,39,33,
+ 34,21,22,23,35,36,37,24,2,11,
+ 12,7,5,8,9,25,38,6,4,3,
+ 10,1,0,57,70,3,61,0,1,71,
+ 0,63,93,72,59,2,68,42,69,0,
+ 40,41,113,10,27,31,29,26,34,14,
+ 23,13,19,17,18,20,21,16,15,22,
+ 35,38,36,37,33,28,32,4,6,3,
+ 2,11,12,7,5,8,9,25,30,1,
+ 24,0,47,39,48,63,93,69,68,72,
+ 0,57,70,74,0,13,14,15,16,17,
+ 18,19,20,21,22,23,49,47,50,43,
+ 51,52,53,54,55,56,46,48,42,6,
+ 1,59,2,7,5,4,3,72,0,7,
+ 5,6,4,3,1,2,63,69,68,59,
+ 72,93,0,4,6,2,59,5,7,93,
+ 49,13,14,47,15,65,50,43,16,51,
+ 52,17,18,53,54,19,20,55,66,56,
+ 10,67,21,46,22,48,23,1,3,72,
+ 58,0,45,1,3,57,70,0,116,120,
+ 71,74,60,62,64,76,78,84,82,75,
+ 80,81,83,85,57,77,79,42,44,65,
+ 58,66,67,49,54,55,43,53,52,46,
+ 50,47,48,51,56,39,40,41,10,27,
+ 31,29,26,34,14,23,13,19,17,18,
+ 20,21,16,15,22,35,38,36,37,24,
+ 33,28,32,11,12,8,9,25,30,7,
+ 5,2,3,6,1,4,0,69,68,71,
+ 0,47,48,74,2,57,70,42,39,63,
+ 69,93,72,68,0,116,0,57,68,0,
+ 70,59,2,69,68,42,0,64,49,13,
+ 14,58,47,15,65,50,73,43,16,51,
+ 52,17,18,53,62,54,19,20,55,66,
+ 56,10,67,21,60,46,22,48,23,2,
+ 7,3,42,57,5,6,1,4,45,0,
+ 42,7,5,4,6,2,1,3,70,0,
+ 71,14,58,47,15,65,50,16,51,52,
+ 17,18,53,54,19,20,55,66,56,67,
+ 21,46,22,48,23,13,49,2,7,5,
+ 42,60,64,73,43,45,6,1,4,3,
+ 10,62,0,49,13,14,58,47,15,65,
+ 50,43,16,51,52,17,18,53,54,19,
+ 20,55,66,56,10,67,21,46,22,48,
+ 23,1,3,93,0,14,58,47,15,65,
+ 50,16,51,52,17,18,53,54,19,20,
+ 55,66,56,10,67,21,46,22,48,23,
+ 13,49,2,7,5,42,60,62,64,73,
+ 43,61,6,3,45,4,1,0,14,23,
+ 13,19,17,18,20,21,16,15,22,46,
+ 56,55,54,53,52,51,43,50,49,47,
+ 6,48,4,1,3,115,101,11,12,59,
+ 2,94,88,5,89,90,8,9,87,86,
+ 61,91,92,95,96,7,97,98,99,63,
+ 93,72,114,69,102,103,104,105,106,107,
+ 108,109,110,111,70,113,71,100,112,68,
+ 42,0,69,57,0,71,40,41,39,11,
+ 12,7,5,8,9,4,25,30,2,6,
+ 35,38,36,37,24,33,28,32,14,23,
+ 13,19,17,18,20,21,16,15,22,10,
+ 27,31,29,26,34,3,1,57,0,75,
+ 0,49,13,14,58,47,15,65,50,43,
+ 16,51,52,17,18,53,54,19,20,55,
+ 66,56,10,67,21,46,22,48,23,1,
+ 3,41,40,8,9,5,89,90,97,7,
+ 98,4,25,61,105,106,102,103,104,110,
+ 109,111,87,86,107,108,95,96,91,92,
+ 99,100,11,12,88,101,2,59,69,68,
+ 63,0,40,41,11,12,8,9,25,30,
+ 35,38,36,37,24,33,28,32,14,23,
+ 13,19,17,18,20,21,16,15,22,10,
+ 27,31,29,26,34,7,5,2,59,4,
+ 6,1,3,0,13,14,26,40,15,27,
+ 28,16,17,18,41,29,19,20,30,31,
+ 32,39,33,34,10,21,22,23,35,36,
+ 37,24,11,12,8,9,25,38,44,7,
+ 5,42,4,1,6,3,2,0,1,46,
+ 3,117,118,119,0,72,13,14,26,15,
+ 27,28,16,17,18,29,19,20,30,31,
+ 32,39,33,34,10,21,22,23,35,36,
+ 37,24,2,11,12,7,5,8,9,25,
+ 3,38,44,4,6,1,41,40,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,
+ 201,12,17,12,12,12,12,12,12,12,
+ 112,12,12,213,12,12,8,122,221,17,
+ 17,6,17,17,17,17,17,17,12,12,
+ 12,12,12,12,12,12,12,12,12,17,
+ 12,17,197,164,164,164,164,221,167,131,
+ 37,104,80,206,12,12,131,215,206,17,
+ 40,100,12,12,197,12,12,54,54,167,
+ 122,17,17,17,17,17,17,17,17,17,
+ 17,17,17,17,17,17,17,17,17,17,
+ 17,17,17,17,17,17,17,17,17,17,
+ 17,122,17,206,206,159,1,12,12,12,
+ 12,84,206,15,64,232,233,12,233,143,
+ 233,112,233,225,12,112,221,80,80,15,
+ 80,164,61,175,135,206,174,87,221,174,
+ 206,80,12,12,12,12,12,12,12,12,
+ 12,12,12,12,12,12,12,12,12,12,
+ 12,64,76,159,35,35,12,112,221,12,
+ 12,12,12,10,240,12,12,12,116,221,
+ 131,131,9,131,217,131,12,12,131,217,
+ 221,32,12,12,17,164,131,29,206,12,
+ 218,221,32,100,17,114,80,12,206,208,
+ 131,221,100,122,122,122,122,12,12,15,
+ 12,22,250,131,131,90,99,90,131,195,
+ 240,99,10,206,13,116,135,32,12,10,
+ 206,12,125,12,210,98,10,206,206,206,
+ 206,167,167,131,22,52,221,244,12,12,
+ 71,183,250,90,90,246,10,195,52,12,
+ 12,10,102,102,12,122,116,12,12,131,
+ 17,12,12,35,35,221,125,64,210,206,
+ 10,206,206,22,100,12,112,235,131,12,
+ 127,12,255,217,52,17,195,167,17,80,
+ 32,12,22,17,17,131,32,100,206,208,
+ 170,131,12,175,131,217,244,64,12,17,
+ 12,69,131,67,44,46,87,206,80,32,
+ 131,210,221,22,244,210,175,235,172,17,
+ 17,67,82,139,112,94,206,100,131,12,
+ 12,42,42,244,82,24,12,217,12,217,
+ 12,131,94,210,190,131,12,12,131,178,
+ 139,87,167,87,204,22,12,190,184,12,
+ 73,71,210,164,164,133,119,12,17,12,
+ 244,12,12,12,120,12,12,242,244,244,
+ 131,12,92,12,206,206,131,131,12,127,
+ 12,131,12,12,12,112,12,59,12,12,
+ 120,163,163,154,12,163,244,244,12,131,
+ 164,94,190,131,190,244,27,12,206,149,
+ 131,131,112,217,12,164,206,127,206,156,
+ 244,12,206,133,149,61,17,127,244,52,
+ 190,149,149,217,96,42,206,206,131,120,
+ 12,120,244,156,122,120,59,52,206,131,
+ 52,52,96,244,12,12,92,92,125,17,
+ 12,156,244,206,48,244,174,120,206,156,
+ 244,52,120,206,48,120
+ };
+ };
+ 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,
+ 148,146,122,145,144,5,12,7,1,3,
+ 2,0,175,0,49,4,5,7,3,12,
+ 0,57,0,4,62,0,179,0,4,174,
+ 0,3,80,0,69,0,4,188,0,170,
+ 0,113,0,5,160,130,0,12,3,7,
+ 5,62,0,5,3,7,138,0,116,0,
+ 4,28,0,5,103,0,153,0,185,0,
+ 151,0,1,42,0,12,3,7,5,79,
+ 0,154,0,135,63,0,3,31,0,114,
+ 0,55,0,125,0,43,0,135,1,63,
+ 0,139,0,3,148,147,146,122,145,144,
+ 143,5,0,100,99,5,64,0,62,46,
+ 71,4,38,0,100,99,68,5,3,7,
+ 4,0,155,0,63,137,136,0,164,5,
+ 163,0,1,2,3,5,47,0,108,4,
+ 46,70,0,46,50,4,106,0,99,100,
+ 4,0,117,4,49,0,4,102,0,100,
+ 99,68,64,5,7,3,0,4,46,38,
+ 176,0,39,5,7,3,4,60,0,4,
+ 46,70,82,0,124,0,4,49,38,0,
+ 4,169,0,49,4,34,0,5,103,23,
+ 4,0,4,49,166,0,58,3,45,0,
+ 3,45,47,0,3,5,122,118,119,120,
+ 121,12,93,0,68,5,3,7,4,1,
+ 0,4,38,39,0,5,130,186,0,4,
+ 46,70,65,5,129,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,
+ 115,2,32,14,11,81,10,12,13,102,
+ 8,9,50,54,62,70,76,77,88,89,
+ 104,107,109,114,15,57,63,69,86,90,
+ 92,96,99,101,111,112,113,46,97,60,
+ 80,122,68,123,95,106,56,108,49,66,
+ 72,75,78,85,91,100,3,55,1,105,
+ 20,79,21,48,65,93,103,45,34,31,
+ 121,120,67,98,110,51,52,58,59,61,
+ 71,73,74,87,94,18,19,7,16,17,
+ 22,23,33,5,24,25,26,27,28,29,
+ 6,35,36,37,38,39,40,41,42,43,
+ 44,30,119,124,4,53,82,83,84,64,
+ 116,117,118
+ };
+ };
+ 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,
+ 135,137,238,0,0,136,234,134,0,133,
+ 0,145,0,132,0,0,144,149,0,0,
+ 150,159,180,160,161,162,163,152,164,165,
+ 138,166,167,127,168,169,0,131,129,170,
+ 0,197,143,0,140,0,139,0,153,177,
+ 0,0,0,0,173,147,187,0,203,204,
+ 0,128,0,156,179,0,201,205,206,0,
+ 172,0,0,0,0,0,0,0,126,148,
+ 176,178,0,0,0,0,0,0,0,0,
+ 0,0,186,0,0,212,158,208,209,210,
+ 0,0,202,0,0,0,207,130,0,0,
+ 0,211,0,0,0,241,175,189,190,191,
+ 192,193,195,196,0,214,217,219,220,0,
+ 237,0,240,0,0,141,142,146,0,155,
+ 0,171,181,182,183,184,185,188,0,194,
+ 0,199,0,215,216,0,221,224,226,228,
+ 0,231,232,233,0,235,236,239,125,0,
+ 151,0,0,154,157,174,0,198,200,213,
+ 218,0,222,223,225,227,229,230,242,243,
+ 0,0,0,0,0,0,0,0,0
+ };
+ };
+ public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
+ public final int nonterminalIndex(int index) { return nonterminalIndex[index]; }
+
+ public interface ScopePrefix {
+ public final static char scopePrefix[] = {
+ 138,574,593,359,525,541,552,563,339,71,
+ 244,258,280,286,292,42,269,384,422,468,
+ 146,582,367,20,51,77,114,174,275,298,
+ 309,320,250,264,27,493,349,320,601,27,
+ 196,223,1,14,61,93,128,303,316,325,
+ 332,440,461,486,517,521,611,615,619,84,
+ 7,84,128,402,418,431,451,508,431,477,
+ 532,548,559,570,186,373,56,56,135,201,
+ 204,56,218,239,204,56,336,446,458,465,
+ 135,634,97,211,406,56,103,103,211,56,
+ 393,211,156,91,444,623,630,623,630,65,
+ 412,121,91,91,228
+ };
+ };
+ public final static char scopePrefix[] = ScopePrefix.scopePrefix;
+ public final int scopePrefix(int index) { return scopePrefix[index]; }
+
+ public interface ScopeSuffix {
+ public final static char scopeSuffix[] = {
+ 18,5,5,346,5,5,5,5,346,59,
+ 119,82,119,119,119,48,255,390,428,474,
+ 152,67,354,25,25,82,119,179,119,119,
+ 314,314,255,88,38,498,354,588,606,32,
+ 190,190,5,18,5,82,119,307,307,307,
+ 82,119,221,5,5,5,5,5,221,632,
+ 11,88,132,346,346,346,455,498,435,481,
+ 536,536,536,536,190,377,59,59,5,5,
+ 207,209,221,5,242,209,82,449,5,221,
+ 5,5,100,329,409,490,106,110,214,512,
+ 396,502,159,82,82,625,625,627,627,67,
+ 414,123,181,166,230
+ };
+ };
+ public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
+ public final int scopeSuffix(int index) { return scopeSuffix[index]; }
+
+ public interface ScopeLhs {
+ public final static char scopeLhs[] = {
+ 65,17,17,75,17,17,17,17,75,160,
+ 85,48,92,91,120,66,53,75,74,19,
+ 65,17,75,2,6,157,118,65,90,120,
+ 119,121,54,48,132,138,75,17,17,132,
+ 101,60,134,78,163,157,127,119,119,121,
+ 50,55,175,18,17,17,17,17,17,11,
+ 116,157,127,75,74,74,37,138,74,19,
+ 17,17,17,17,101,75,164,160,179,99,
+ 107,61,69,59,81,121,76,72,141,175,
+ 173,16,157,121,117,138,128,128,64,138,
+ 75,138,65,157,73,136,47,136,47,163,
+ 117,118,65,65,60
+ };
+ };
+ public final static char scopeLhs[] = ScopeLhs.scopeLhs;
+ public final int scopeLhs(int index) { return scopeLhs[index]; }
+
+ public interface ScopeLa {
+ public final static byte scopeLa[] = {
+ 116,72,72,72,72,72,72,72,72,1,
+ 71,42,71,71,71,63,1,72,120,72,
+ 57,2,42,63,63,42,71,57,71,71,
+ 1,1,1,1,63,3,42,1,1,63,
+ 72,72,72,116,72,42,71,1,1,1,
+ 42,71,113,72,72,72,72,72,113,1,
+ 72,1,68,72,72,72,70,3,72,2,
+ 63,63,63,63,72,42,1,1,72,72,
+ 2,1,113,72,1,1,42,70,72,113,
+ 72,72,1,45,69,4,1,1,5,1,
+ 75,45,74,42,42,3,3,3,3,2,
+ 1,57,1,1,2
+ };
+ };
+ public final static byte scopeLa[] = ScopeLa.scopeLa;
+ public final int scopeLa(int index) { return scopeLa[index]; }
+
+ public interface ScopeStateSet {
+ public final static char scopeStateSet[] = {
+ 82,239,239,105,239,239,239,239,105,63,
+ 23,94,23,23,149,82,96,105,105,239,
+ 82,239,105,175,217,91,149,82,23,149,
+ 149,149,96,94,56,144,105,239,239,56,
+ 136,66,33,105,37,91,300,149,149,149,
+ 12,40,80,239,239,239,239,239,239,221,
+ 7,91,300,105,105,105,270,144,105,239,
+ 239,239,239,239,136,105,37,63,1,136,
+ 138,66,132,66,70,149,105,105,60,80,
+ 147,239,91,149,3,144,149,149,119,144,
+ 105,144,82,91,105,116,153,116,153,37,
+ 3,149,82,82,66
+ };
+ };
+ 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,
+ 313,2,39,0,127,0,312,2,116,0,
+ 127,173,0,127,178,74,0,216,0,288,
+ 127,61,126,0,21,0,290,127,61,45,
+ 0,21,55,0,34,132,0,21,55,0,
+ 0,290,127,61,45,193,0,21,178,0,
+ 288,127,61,130,0,181,128,0,138,0,
+ 225,2,287,0,287,0,2,0,127,0,
+ 181,128,253,252,253,0,131,186,170,128,
+ 0,129,0,186,170,128,0,134,129,0,
+ 169,0,306,127,169,0,127,169,0,222,
+ 129,0,170,245,0,137,0,0,0,135,
+ 0,0,0,305,127,57,251,0,128,0,
+ 251,0,3,0,0,128,0,304,127,57,
+ 0,45,128,0,151,2,0,127,277,276,
+ 127,74,183,169,0,276,127,74,183,169,
+ 0,215,0,216,0,183,169,0,98,0,
+ 0,215,0,216,0,204,98,0,0,215,
+ 0,216,0,276,127,183,169,0,215,0,
+ 204,0,0,215,0,233,127,2,0,127,
+ 0,0,0,0,0,233,127,2,222,0,
+ 230,2,0,226,127,0,208,0,148,0,
+ 170,128,0,11,0,0,0,220,59,0,
+ 126,0,233,127,2,182,0,182,0,2,
+ 0,0,127,0,0,0,0,0,204,2,
+ 0,201,0,232,127,57,24,43,0,181,
+ 128,62,60,0,143,129,0,131,181,128,
+ 274,60,0,181,128,274,60,0,181,128,
+ 69,1,62,0,232,127,57,62,0,232,
+ 127,57,165,62,0,232,127,57,124,62,
+ 0,272,127,57,1,65,0,272,127,57,
+ 65,0,181,128,65,0,135,0,186,181,
+ 128,245,0,137,0,181,128,245,0,186,
+ 170,128,10,0,170,128,10,0,95,137,
+ 0,300,127,169,0,161,84,0,229,162,
+ 229,173,2,81,0,127,172,0,229,173,
+ 2,81,0,129,0,127,172,0,229,162,
+ 229,162,229,2,81,0,229,162,229,2,
+ 81,0,229,2,81,0,129,0,129,0,
+ 127,172,0,161,2,75,194,80,0,127,
+ 129,0,194,80,0,110,2,131,127,129,
+ 0,240,2,75,0,204,172,0,34,170,
+ 0,172,0,176,34,170,0,240,2,85,
+ 0,194,157,240,2,83,0,64,172,0,
+ 240,2,83,0,127,172,64,172,0,299,
+ 127,57,0,161,0,220,77,0,31,0,
+ 161,112,159,0,31,170,0,225,2,0,
+ 220,59,298,0,161,59,0,179,2,293,
+ 41,128,0,127,0,0,293,41,128,0,
+ 2,147,127,0,0,179,2,30,0,14,
+ 148,0,125,45,170,128,0,32,14,148,
+ 0,95,137,32,14,148,0,203,181,128,
+ 0,148,32,14,148,0,179,2,34,0,
+ 161,2,34,0,161,2,63,179,61,26,
+ 0,179,61,26,0,21,2,131,127,0,
+ 161,2,63,179,61,29,0,179,61,29,
+ 0,161,2,63,179,61,31,0,179,61,
+ 31,0,161,2,63,179,61,27,0,179,
+ 61,27,0,225,2,125,186,170,128,10,
+ 0,125,186,170,128,10,0,137,2,0,
+ 127,0,225,2,124,258,170,128,10,0,
+ 258,170,128,10,0,135,2,0,127,0,
+ 225,2,135,0,225,2,140,0,161,59,
+ 140,0,260,0,32,0,32,141,0,168,
+ 0,134,0,161,2,0
+ };
+ };
+ public final static char scopeRhs[] = ScopeRhs.scopeRhs;
+ public final int scopeRhs(int index) { return scopeRhs[index]; }
+
+ public interface ScopeState {
+ public final static char scopeState[] = {0,
+ 759,0,4690,4689,2997,0,2769,2992,1062,2683,
+ 0,3897,3856,3815,3774,3733,3692,2787,3471,3430,
+ 2396,3177,2958,2894,3621,2830,2766,3566,3511,3359,
+ 3304,0,2829,2265,2102,0,3367,2698,0,3897,
+ 3856,3815,3360,2421,3774,3733,3692,3471,2082,3430,
+ 2396,3177,2079,1808,0,4627,3604,3456,0,2302,
+ 2275,0,861,4385,0,4409,926,3135,3182,3051,
+ 4315,4397,4271,4303,2350,4189,2704,2621,0,607,
+ 0,2958,2894,3621,2830,2766,3566,3511,3359,3304,
+ 2775,4427,0,2775,4427,2958,2894,3621,2830,2766,
+ 3566,3511,3359,3304,3897,3856,3815,3774,3733,3692,
+ 3471,3430,2396,3177,0,3302,2691,0,926,3734,
+ 3135,3606,3116,2951,717,3551,2339,2230,1848,1216,
+ 0,2395,1747,923,845,3135,2339,3051,2704,2621,
+ 3214,2995,0,1050,910,0,856,0,4174,525,
+ 2335,0,4623,4591,4574,4557,4522,4505,4488,4440,
+ 4661,4655,4640,4391,4298,3637,3913,3375,2987,2924,
+ 2750,3831,3749,0,4623,4591,2887,2692,4574,4557,
+ 4522,4644,2191,4505,4509,4357,4488,3244,4440,3208,
+ 3104,4661,2459,2404,2934,2009,4655,2759,4640,2866,
+ 775,4391,4298,3637,648,3913,922,3375,2987,1870,
+ 2924,4174,2750,2335,3831,3749,718,608,567,1040,
+ 1996,3051,4315,4397,4271,4409,926,4303,3135,2350,
+ 4189,2704,3182,2621,2089,654,1050,910,4201,2199,
+ 2237,2304,2271,2512,2484,2362,2724,2633,2594,2567,
+ 2540,578,3279,3256,783,3154,3068,4152,4130,4108,
+ 4086,4064,4042,4020,3998,3976,621,3323,2659,1878,
+ 2144,2106,2051,2013,1150,1106,1958,1920,1063,811,
+ 1825,1785,731,674,525,1743,1701,1659,1617,1575,
+ 1533,1491,1449,1407,1365,1323,1281,1237,998,940,
+ 868,1193,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,292,127,44,265,34,26,29,31,27,
+ 10,135,126,6,130,1,3,2,128,30,
+ 25,4,9,8,5,7,12,11,140,145,
+ 148,147,150,149,153,152,156,155,158,39,
+ 159,68,2,61,61,61,61,128,2,61,
+ 172,127,59,2,40,41,61,6,161,40,
+ 41,170,168,1,2,125,124,101,115,2,
+ 59,88,94,9,8,90,89,5,92,91,
+ 63,61,86,87,7,96,95,98,97,99,
+ 111,110,109,108,107,106,105,104,103,102,
+ 69,112,100,179,161,172,127,179,179,179,
+ 179,170,225,127,127,266,267,251,268,245,
+ 269,65,270,271,1,10,128,59,59,127,
+ 59,293,2,186,3,179,45,4,128,45,
+ 225,161,147,147,145,145,145,149,149,149,
+ 149,148,148,152,150,150,155,153,156,161,
+ 158,127,59,2,223,222,135,10,128,63,
+ 63,63,63,186,258,288,133,291,226,128,
+ 5,57,170,236,128,125,124,1,57,128,
+ 128,181,170,288,202,2,294,172,151,260,
+ 186,128,181,170,70,226,220,159,230,127,
+ 2,128,170,2,2,2,2,125,124,68,
+ 170,127,127,125,124,127,181,127,57,127,
+ 181,170,45,179,127,127,3,4,203,45,
+ 233,234,146,235,127,170,45,161,161,161,
+ 161,2,2,5,180,305,128,188,252,193,
+ 60,169,307,127,127,70,186,127,272,247,
+ 273,186,157,295,298,59,187,3,125,157,
+ 69,230,204,191,182,128,2,127,68,233,
+ 186,225,225,127,170,45,274,127,183,182,
+ 2,309,253,128,272,69,68,2,59,161,
+ 4,3,127,69,69,2,181,170,204,127,
+ 226,157,125,186,61,128,306,127,124,70,
+ 282,204,74,127,68,252,181,225,220,4,
+ 227,127,128,127,131,127,181,68,226,70,
+ 69,127,276,70,253,127,233,170,227,290,
+ 45,10,58,131,276,57,286,128,287,128,
+ 39,157,127,68,63,61,236,236,277,127,
+ 68,181,2,181,2,127,43,45,169,64,
+ 62,60,127,69,69,127,299,79,77,1,
+ 161,85,83,81,80,75,82,84,78,76,
+ 169,62,74,44,225,313,227,24,61,127,
+ 2,57,165,124,1,62,290,278,116,220,
+ 70,2,2,2,194,2,1,161,1,178,
+ 68,127,127,57,63,300,204,301,24,127,
+ 57,57,69,128,63,2,240,172,240,173,
+ 229,75,240,127,127,2,69,68,157,232,
+ 231,127,127,128,181,58,93,312,172,157,
+ 204,157,229,162,2,157,278,232,151,57,
+ 232,232,181,166,1,236,157,157,127,69,
+ 194,162,229,161,127,166,69,120,229,162,
+ 157,304,157,229,68,157
+ };
+ };
+ public final static char inSymb[] = InSymb.inSymb;
+ public final int inSymb(int index) { return inSymb[index]; }
+
+ public interface Name {
+ public final static String name[] = {
+ "",
+ "[",
+ "(",
+ "{",
+ ".",
+ ".*",
+ "->",
+ "->*",
+ "++",
+ "--",
+ "&",
+ "*",
+ "+",
+ "-",
+ "~",
+ "!",
+ "/",
+ "%",
+ ">>",
+ "<<",
+ "<",
+ ">",
+ "<=",
+ ">=",
+ "==",
+ "!=",
+ "^",
+ "|",
+ "&&",
+ "||",
+ "?",
+ ":",
+ "::",
+ "...",
+ "=",
+ "*=",
+ "/=",
+ "%=",
+ "+=",
+ "-=",
+ ">>=",
+ "<<=",
+ "&=",
+ "^=",
+ "|=",
+ ",",
+ "0",
+ "$empty",
+ "asm",
+ "auto",
+ "bool",
+ "break",
+ "case",
+ "catch",
+ "char",
+ "class",
+ "const",
+ "const_cast",
+ "continue",
+ "default",
+ "delete",
+ "do",
+ "double",
+ "dynamic_cast",
+ "else",
+ "enum",
+ "explicit",
+ "export",
+ "extern",
+ "false",
+ "float",
+ "for",
+ "friend",
+ "goto",
+ "if",
+ "inline",
+ "int",
+ "long",
+ "mutable",
+ "namespace",
+ "new",
+ "operator",
+ "private",
+ "protected",
+ "public",
+ "register",
+ "reinterpret_cast",
+ "return",
+ "short",
+ "signed",
+ "sizeof",
+ "static",
+ "static_cast",
+ "struct",
+ "switch",
+ "template",
+ "this",
+ "throw",
+ "try",
+ "true",
+ "typedef",
+ "typeid",
+ "typename",
+ "union",
+ "unsigned",
+ "using",
+ "virtual",
+ "void",
+ "volatile",
+ "wchar_t",
+ "while",
+ "integer",
+ "floating",
+ "charconst",
+ "stringlit",
+ "identifier",
+ "Completion",
+ "EndOfCompletion",
+ "Invalid",
+ "RightBracket",
+ "RightParen",
+ "RightBrace",
+ "SemiColon",
+ "ERROR_TOKEN",
+ "EOF_TOKEN",
+ "no_cast_start",
+ "]",
+ ")",
+ "}",
+ ";",
+ "declaration_seq",
+ "expression",
+ "id_expression",
+ "qualified_or_unqualified_name",
+ "unqualified_id_name",
+ "identifier_name",
+ "operator_function_id_name",
+ "template_id_name",
+ "class_name",
+ "nested_name_specifier",
+ "class_or_namespace_name",
+ "nested_name_specifier_with_tem" +
+ "plate",
+ "class_or_namespace_name_with_t" +
+ "emplate",
+ "namespace_name",
+ "postfix_expression",
+ "simple_type_specifier",
+ "pseudo_destructor_name",
+ "type_id",
+ "type_name",
+ "unary_expression",
+ "cast_expression",
+ "new_type_id",
+ "expression_list",
+ "type_specifier_seq",
+ "new_declarator",
+ "new_pointer_operators",
+ "ptr_operator",
+ "new_array_expressions",
+ "constant_expression",
+ "pm_expression",
+ "multiplicative_expression",
+ "additive_expression",
+ "shift_expression",
+ "relational_expression",
+ "equality_expression",
+ "and_expression",
+ "exclusive_or_expression",
+ "inclusive_or_expression",
+ "logical_and_expression",
+ "logical_or_expression",
+ "assignment_expression",
+ "expression_list_actual",
+ "statement",
+ "compound_statement",
+ "statement_seq",
+ "condition",
+ "declarator",
+ "simple_declaration",
+ "declaration",
+ "function_definition",
+ "declaration_specifiers",
+ "simple_declaration_specifiers",
+ "class_declaration_specifiers",
+ "elaborated_declaration_specifi" +
+ "ers",
+ "enum_declaration_specifiers",
+ "type_name_declaration_specifie" +
+ "rs",
+ "no_type_declaration_specifier",
+ "cv_qualifier",
+ "no_type_declaration_specifiers",
+ "class_specifier",
+ "elaborated_type_specifier",
+ "enum_specifier",
+ "type_name_specifier",
+ "class_keyword",
+ "enumerator_list",
+ "enumerator_definition",
+ "enumerator",
+ "original_namespace_name",
+ "init_declarator_list",
+ "init_declarator",
+ "initializer",
+ "direct_declarator",
+ "ptr_operator_seq",
+ "basic_direct_declarator",
+ "function_direct_declarator",
+ "array_direct_declarator",
+ "array_modifier",
+ "abstract_declarator",
+ "direct_abstract_declarator",
+ "basic_direct_abstract_declarat" +
+ "or",
+ "array_direct_abstract_declarat" +
+ "or",
+ "parameter_declaration_list",
+ "parameter_declaration",
+ "parameter_init_declarator",
+ "parameter_initializer",
+ "function_body",
+ "handler_seq",
+ "initializer_clause",
+ "initializer_list",
+ "class_head",
+ "access_specifier_keyword",
+ "member_declaration",
+ "member_declarator_list",
+ "member_declaration_list",
+ "member_declarator",
+ "constant_initializer",
+ "bit_field_declarator",
+ "base_specifier_list",
+ "base_specifier",
+ "conversion_type_id",
+ "conversion_declarator",
+ "mem_initializer_list",
+ "mem_initializer",
+ "mem_initializer_name",
+ "operator_id_name",
+ "overloadable_operator",
+ "template_parameter_list",
+ "template_parameter",
+ "template_identifier",
+ "template_argument_list",
+ "template_argument",
+ "handler",
+ "exception_declaration",
+ "type_id_list"
+ };
+ };
+ public final static String name[] = Name.name;
+ public final String name(int index) { return name[index]; }
+
+ public final static int
+ ERROR_SYMBOL = 44,
+ SCOPE_UBOUND = 114,
+ SCOPE_SIZE = 115,
+ MAX_NAME_LENGTH = 37;
+
+ public final int getErrorSymbol() { return ERROR_SYMBOL; }
+ public final int getScopeUbound() { return SCOPE_UBOUND; }
+ public final int getScopeSize() { return SCOPE_SIZE; }
+ public final int getMaxNameLength() { return MAX_NAME_LENGTH; }
+
+ public final static int
+ NUM_STATES = 516,
+ NT_OFFSET = 123,
+ LA_STATE_OFFSET = 5573,
+ MAX_LA = 2147483647,
+ NUM_RULES = 524,
+ NUM_NONTERMINALS = 199,
+ NUM_SYMBOLS = 322,
+ SEGMENT_SIZE = 8192,
+ START_STATE = 3399,
+ IDENTIFIER_SYMBOL = 0,
+ EOFT_SYMBOL = 114,
+ EOLT_SYMBOL = 114,
+ ACCEPT_ACTION = 4823,
+ ERROR_ACTION = 5049;
+
+ public final static boolean BACKTRACK = true;
+
+ public final int getNumStates() { return NUM_STATES; }
+ public final int getNtOffset() { return NT_OFFSET; }
+ public final int getLaStateOffset() { return LA_STATE_OFFSET; }
+ public final int getMaxLa() { return MAX_LA; }
+ public final int getNumRules() { return NUM_RULES; }
+ public final int getNumNonterminals() { return NUM_NONTERMINALS; }
+ public final int getNumSymbols() { return NUM_SYMBOLS; }
+ public final int getSegmentSize() { return SEGMENT_SIZE; }
+ public final int getStartState() { return START_STATE; }
+ public final int getStartSymbol() { return lhs[0]; }
+ public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
+ public final int getEoftSymbol() { return EOFT_SYMBOL; }
+ public final int getEoltSymbol() { return EOLT_SYMBOL; }
+ public final int getAcceptAction() { return ACCEPT_ACTION; }
+ public final int getErrorAction() { return ERROR_ACTION; }
+ public final boolean isValidForParser() { return isValidForParser; }
+ public final boolean getBacktrack() { return BACKTRACK; }
+
+ public final int originalState(int state) {
+ return -baseCheck[state];
+ }
+ public final int asi(int state) {
+ return asb[originalState(state)];
+ }
+ public final int nasi(int state) {
+ return nasb[originalState(state)];
+ }
+ public final int inSymbol(int state) {
+ return inSymb[originalState(state)];
+ }
+
+ public final int ntAction(int state, int sym) {
+ return baseAction[state + sym];
+ }
+
+ public final int tAction(int state, int sym) {
+ int i = baseAction[state],
+ k = i + sym;
+ return termAction[termCheck[k] == sym ? k : i];
+ }
+ public final int lookAhead(int la_state, int sym) {
+ int k = la_state + sym;
+ return termAction[termCheck[k] == sym ? k : la_state];
+ }
+}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParsersym.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParsersym.java
new file mode 100644
index 00000000000..7b7794eda96
--- /dev/null
+++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParsersym.java
@@ -0,0 +1,270 @@
+/*******************************************************************************
+* Copyright (c) 2006, 2008 IBM Corporation and others.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl_v10.html
+*
+* Contributors:
+* IBM Corporation - initial API and implementation
+*********************************************************************************/
+
+// This file was generated by LPG
+
+package org.eclipse.cdt.internal.core.dom.lrparser.cpp;
+
+public interface CPPNoCastExpressionParsersym {
+ public final static int
+ TK_asm = 64,
+ TK_auto = 49,
+ TK_bool = 13,
+ TK_break = 76,
+ TK_case = 77,
+ TK_catch = 116,
+ TK_char = 14,
+ TK_class = 58,
+ TK_const = 47,
+ TK_const_cast = 26,
+ TK_continue = 78,
+ TK_default = 79,
+ TK_delete = 40,
+ TK_do = 80,
+ TK_double = 15,
+ TK_dynamic_cast = 27,
+ TK_else = 120,
+ TK_enum = 65,
+ TK_explicit = 50,
+ TK_export = 73,
+ TK_extern = 43,
+ TK_false = 28,
+ TK_float = 16,
+ TK_for = 81,
+ TK_friend = 51,
+ TK_goto = 82,
+ TK_if = 83,
+ TK_inline = 52,
+ TK_int = 17,
+ TK_long = 18,
+ TK_mutable = 53,
+ TK_namespace = 62,
+ TK_new = 41,
+ TK_operator = 6,
+ TK_private = 117,
+ TK_protected = 118,
+ TK_public = 119,
+ TK_register = 54,
+ TK_reinterpret_cast = 29,
+ TK_return = 84,
+ TK_short = 19,
+ TK_signed = 20,
+ TK_sizeof = 30,
+ TK_static = 55,
+ TK_static_cast = 31,
+ TK_struct = 66,
+ TK_switch = 85,
+ TK_template = 45,
+ TK_this = 32,
+ TK_throw = 39,
+ TK_try = 74,
+ TK_true = 33,
+ TK_typedef = 56,
+ TK_typeid = 34,
+ TK_typename = 10,
+ TK_union = 67,
+ TK_unsigned = 21,
+ TK_using = 60,
+ TK_virtual = 46,
+ TK_void = 22,
+ TK_volatile = 48,
+ TK_wchar_t = 23,
+ TK_while = 75,
+ TK_integer = 35,
+ TK_floating = 36,
+ TK_charconst = 37,
+ TK_stringlit = 24,
+ TK_identifier = 1,
+ TK_Completion = 121,
+ TK_EndOfCompletion = 122,
+ TK_Invalid = 123,
+ TK_LeftBracket = 59,
+ TK_LeftParen = 2,
+ TK_LeftBrace = 57,
+ TK_Dot = 115,
+ TK_DotStar = 94,
+ TK_Arrow = 101,
+ TK_ArrowStar = 88,
+ TK_PlusPlus = 11,
+ TK_MinusMinus = 12,
+ TK_And = 7,
+ TK_Star = 5,
+ TK_Plus = 8,
+ TK_Minus = 9,
+ TK_Tilde = 4,
+ TK_Bang = 25,
+ TK_Slash = 89,
+ TK_Percent = 90,
+ TK_RightShift = 86,
+ TK_LeftShift = 87,
+ TK_LT = 61,
+ TK_GT = 63,
+ TK_LE = 91,
+ TK_GE = 92,
+ TK_EQ = 95,
+ TK_NE = 96,
+ TK_Caret = 97,
+ TK_Or = 98,
+ TK_AndAnd = 99,
+ TK_OrOr = 100,
+ TK_Question = 112,
+ TK_Colon = 70,
+ TK_ColonColon = 3,
+ TK_DotDotDot = 93,
+ TK_Assign = 69,
+ TK_StarAssign = 102,
+ TK_SlashAssign = 103,
+ TK_PercentAssign = 104,
+ TK_PlusAssign = 105,
+ TK_MinusAssign = 106,
+ TK_RightShiftAssign = 107,
+ TK_LeftShiftAssign = 108,
+ TK_AndAssign = 109,
+ TK_CaretAssign = 110,
+ TK_OrAssign = 111,
+ TK_Comma = 68,
+ TK_zero = 38,
+ TK_RightBracket = 113,
+ TK_RightParen = 72,
+ TK_RightBrace = 71,
+ TK_SemiColon = 42,
+ TK_ERROR_TOKEN = 44,
+ TK_EOF_TOKEN = 114;
+
+ public final static String orderedTerminalSymbols[] = {
+ "",
+ "identifier",
+ "LeftParen",
+ "ColonColon",
+ "Tilde",
+ "Star",
+ "operator",
+ "And",
+ "Plus",
+ "Minus",
+ "typename",
+ "PlusPlus",
+ "MinusMinus",
+ "bool",
+ "char",
+ "double",
+ "float",
+ "int",
+ "long",
+ "short",
+ "signed",
+ "unsigned",
+ "void",
+ "wchar_t",
+ "stringlit",
+ "Bang",
+ "const_cast",
+ "dynamic_cast",
+ "false",
+ "reinterpret_cast",
+ "sizeof",
+ "static_cast",
+ "this",
+ "true",
+ "typeid",
+ "integer",
+ "floating",
+ "charconst",
+ "zero",
+ "throw",
+ "delete",
+ "new",
+ "SemiColon",
+ "extern",
+ "ERROR_TOKEN",
+ "template",
+ "virtual",
+ "const",
+ "volatile",
+ "auto",
+ "explicit",
+ "friend",
+ "inline",
+ "mutable",
+ "register",
+ "static",
+ "typedef",
+ "LeftBrace",
+ "class",
+ "LeftBracket",
+ "using",
+ "LT",
+ "namespace",
+ "GT",
+ "asm",
+ "enum",
+ "struct",
+ "union",
+ "Comma",
+ "Assign",
+ "Colon",
+ "RightBrace",
+ "RightParen",
+ "export",
+ "try",
+ "while",
+ "break",
+ "case",
+ "continue",
+ "default",
+ "do",
+ "for",
+ "goto",
+ "if",
+ "return",
+ "switch",
+ "RightShift",
+ "LeftShift",
+ "ArrowStar",
+ "Slash",
+ "Percent",
+ "LE",
+ "GE",
+ "DotDotDot",
+ "DotStar",
+ "EQ",
+ "NE",
+ "Caret",
+ "Or",
+ "AndAnd",
+ "OrOr",
+ "Arrow",
+ "StarAssign",
+ "SlashAssign",
+ "PercentAssign",
+ "PlusAssign",
+ "MinusAssign",
+ "RightShiftAssign",
+ "LeftShiftAssign",
+ "AndAssign",
+ "CaretAssign",
+ "OrAssign",
+ "Question",
+ "RightBracket",
+ "EOF_TOKEN",
+ "Dot",
+ "catch",
+ "private",
+ "protected",
+ "public",
+ "else",
+ "Completion",
+ "EndOfCompletion",
+ "Invalid"
+ };
+
+ public final static boolean isValidForParser = true;
+}

Back to the top