/*
* xtc - The eXTensible Compiler
* Copyright (C) 2009-2011 New York University
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*/
package xtc.lang.cpp;
import xtc.lang.cpp.ForkMergeParser.Subparser;
/**
* This class is generated from grammar annotations and provides semantic
* value and action support.
*/
public abstract class CActionsBase extends Actions {
public ValueType getValueType(int id) {
switch (id) {
case 0: // $end
return ValueType.NODE;
case 1: // error
return ValueType.NODE;
case 2: // $undefined
return ValueType.NODE;
case 3: // AUTO
return ValueType.NODE;
case 4: // DOUBLE
return ValueType.NODE;
case 5: // INT
return ValueType.NODE;
case 6: // STRUCT
return ValueType.NODE;
case 7: // BREAK
return ValueType.NODE;
case 8: // ELSE
return ValueType.NODE;
case 9: // LONG
return ValueType.NODE;
case 10: // SWITCH
return ValueType.NODE;
case 11: // CASE
return ValueType.NODE;
case 12: // ENUM
return ValueType.NODE;
case 13: // REGISTER
return ValueType.NODE;
case 14: // TYPEDEF
return ValueType.NODE;
case 15: // CHAR
return ValueType.NODE;
case 16: // EXTERN
return ValueType.NODE;
case 17: // RETURN
return ValueType.NODE;
case 18: // UNION
return ValueType.NODE;
case 19: // CONST
return ValueType.NODE;
case 20: // FLOAT
return ValueType.NODE;
case 21: // SHORT
return ValueType.NODE;
case 22: // UNSIGNED
return ValueType.NODE;
case 23: // CONTINUE
return ValueType.NODE;
case 24: // FOR
return ValueType.NODE;
case 25: // SIGNED
return ValueType.NODE;
case 26: // VOID
return ValueType.NODE;
case 27: // DEFAULT
return ValueType.NODE;
case 28: // GOTO
return ValueType.NODE;
case 29: // SIZEOF
return ValueType.NODE;
case 30: // VOLATILE
return ValueType.NODE;
case 31: // DO
return ValueType.NODE;
case 32: // IF
return ValueType.NODE;
case 33: // STATIC
return ValueType.NODE;
case 34: // WHILE
return ValueType.NODE;
case 35: // IDENTIFIER
return ValueType.NODE;
case 36: // STRINGliteral
return ValueType.NODE;
case 37: // FLOATINGconstant
return ValueType.NODE;
case 38: // INTEGERconstant
return ValueType.NODE;
case 39: // CHARACTERconstant
return ValueType.NODE;
case 40: // OCTALconstant
return ValueType.NODE;
case 41: // HEXconstant
return ValueType.NODE;
case 42: // TYPEDEFname
return ValueType.NODE;
case 43: // ARROW
return ValueType.NODE;
case 44: // ICR
return ValueType.NODE;
case 45: // DECR
return ValueType.NODE;
case 46: // LS
return ValueType.NODE;
case 47: // RS
return ValueType.NODE;
case 48: // LE
return ValueType.NODE;
case 49: // GE
return ValueType.NODE;
case 50: // EQ
return ValueType.NODE;
case 51: // NE
return ValueType.NODE;
case 52: // ANDAND
return ValueType.NODE;
case 53: // OROR
return ValueType.NODE;
case 54: // ELLIPSIS
return ValueType.NODE;
case 55: // MULTassign
return ValueType.NODE;
case 56: // DIVassign
return ValueType.NODE;
case 57: // MODassign
return ValueType.NODE;
case 58: // PLUSassign
return ValueType.NODE;
case 59: // MINUSassign
return ValueType.NODE;
case 60: // LSassign
return ValueType.NODE;
case 61: // RSassign
return ValueType.NODE;
case 62: // ANDassign
return ValueType.NODE;
case 63: // ERassign
return ValueType.NODE;
case 64: // ORassign
return ValueType.NODE;
case 65: // LPAREN
return ValueType.LAYOUT;
case 66: // RPAREN
return ValueType.LAYOUT;
case 67: // COMMA
return ValueType.LAYOUT;
case 68: // HASH
return ValueType.NODE;
case 69: // DHASH
return ValueType.NODE;
case 70: // LBRACE
return ValueType.LAYOUT;
case 71: // RBRACE
return ValueType.LAYOUT;
case 72: // LBRACK
return ValueType.LAYOUT;
case 73: // RBRACK
return ValueType.LAYOUT;
case 74: // DOT
return ValueType.LAYOUT;
case 75: // AND
return ValueType.NODE;
case 76: // STAR
return ValueType.NODE;
case 77: // PLUS
return ValueType.NODE;
case 78: // MINUS
return ValueType.NODE;
case 79: // NEGATE
return ValueType.NODE;
case 80: // NOT
return ValueType.NODE;
case 81: // DIV
return ValueType.NODE;
case 82: // MOD
return ValueType.NODE;
case 83: // LT
return ValueType.NODE;
case 84: // GT
return ValueType.NODE;
case 85: // XOR
return ValueType.NODE;
case 86: // PIPE
return ValueType.NODE;
case 87: // QUESTION
return ValueType.LAYOUT;
case 88: // COLON
return ValueType.LAYOUT;
case 89: // SEMICOLON
return ValueType.LAYOUT;
case 90: // ASSIGN
return ValueType.LAYOUT;
case 91: // ASMSYM
return ValueType.NODE;
case 92: // _BOOL
return ValueType.NODE;
case 93: // _COMPLEX
return ValueType.NODE;
case 94: // RESTRICT
return ValueType.NODE;
case 95: // __ALIGNOF
return ValueType.NODE;
case 96: // __ALIGNOF__
return ValueType.NODE;
case 97: // ASM
return ValueType.NODE;
case 98: // __ASM
return ValueType.NODE;
case 99: // __ASM__
return ValueType.NODE;
case 100: // AT
return ValueType.NODE;
case 101: // USD
return ValueType.NODE;
case 102: // __ATTRIBUTE
return ValueType.NODE;
case 103: // __ATTRIBUTE__
return ValueType.NODE;
case 104: // __BUILTIN_OFFSETOF
return ValueType.NODE;
case 105: // __BUILTIN_TYPES_COMPATIBLE_P
return ValueType.NODE;
case 106: // __BUILTIN_VA_ARG
return ValueType.NODE;
case 107: // __BUILTIN_VA_LIST
return ValueType.NODE;
case 108: // __COMPLEX__
return ValueType.NODE;
case 109: // __CONST
return ValueType.NODE;
case 110: // __CONST__
return ValueType.NODE;
case 111: // __EXTENSION__
return ValueType.NODE;
case 112: // INLINE
return ValueType.NODE;
case 113: // __INLINE
return ValueType.NODE;
case 114: // __INLINE__
return ValueType.NODE;
case 115: // __LABEL__
return ValueType.NODE;
case 116: // __RESTRICT
return ValueType.NODE;
case 117: // __RESTRICT__
return ValueType.NODE;
case 118: // __SIGNED
return ValueType.NODE;
case 119: // __SIGNED__
return ValueType.NODE;
case 120: // __THREAD
return ValueType.NODE;
case 121: // TYPEOF
return ValueType.NODE;
case 122: // __TYPEOF
return ValueType.NODE;
case 123: // __TYPEOF__
return ValueType.NODE;
case 124: // __VOLATILE
return ValueType.NODE;
case 125: // __VOLATILE__
return ValueType.NODE;
case 126: // PPNUM
return ValueType.NODE;
case 127: // $accept
return ValueType.NODE;
case 128: // TranslationUnit
return ValueType.PASS_THROUGH;
case 129: // ExternalDeclarationList
return ValueType.LIST;
case 130: // ExternalDeclaration
return ValueType.PASS_THROUGH;
case 131: // EmptyDefinition
return ValueType.NODE;
case 132: // FunctionDefinitionExtension
return ValueType.PASS_THROUGH;
case 133: // FunctionDefinition
return ValueType.NODE;
case 134: // FunctionDeclarator
return ValueType.NODE;
case 135: // FunctionOldPrototype
return ValueType.NODE;
case 136: // DeclarationExtension
return ValueType.PASS_THROUGH;
case 137: // Declaration
return ValueType.NODE;
case 138: // DefaultDeclaringList
return ValueType.NODE;
case 139: // DeclaringList
return ValueType.NODE;
case 140: // DeclarationSpecifier
return ValueType.PASS_THROUGH;
case 141: // TypeSpecifier
return ValueType.PASS_THROUGH;
case 142: // DeclarationQualifierList
return ValueType.LIST;
case 143: // TypeQualifierList
return ValueType.LIST;
case 144: // DeclarationQualifier
return ValueType.NODE;
case 145: // TypeQualifier
return ValueType.NODE;
case 146: // ConstQualifier
return ValueType.NODE;
case 147: // VolatileQualifier
return ValueType.NODE;
case 148: // RestrictQualifier
return ValueType.NODE;
case 149: // FunctionSpecifier
return ValueType.NODE;
case 150: // BasicDeclarationSpecifier
return ValueType.NODE;
case 151: // BasicTypeSpecifier
return ValueType.NODE;
case 152: // SUEDeclarationSpecifier
return ValueType.NODE;
case 153: // SUETypeSpecifier
return ValueType.NODE;
case 154: // TypedefDeclarationSpecifier
return ValueType.NODE;
case 155: // TypedefTypeSpecifier
return ValueType.NODE;
case 156: // TypeofDeclarationSpecifier
return ValueType.NODE;
case 157: // TypeofTypeSpecifier
return ValueType.NODE;
case 158: // Typeofspecifier
return ValueType.NODE;
case 159: // Typeofkeyword
return ValueType.NODE;
case 160: // VarArgDeclarationSpecifier
return ValueType.NODE;
case 161: // VarArgTypeSpecifier
return ValueType.NODE;
case 162: // VarArgTypeName
return ValueType.NODE;
case 163: // StorageClass
return ValueType.NODE;
case 164: // BasicTypeName
return ValueType.NODE;
case 165: // SignedKeyword
return ValueType.NODE;
case 166: // ComplexKeyword
return ValueType.NODE;
case 167: // ElaboratedTypeName
return ValueType.NODE;
case 168: // StructOrUnionSpecifier
return ValueType.NODE;
case 169: // StructOrUnion
return ValueType.NODE;
case 170: // StructDeclarationList
return ValueType.LIST;
case 171: // StructDeclaration
return ValueType.NODE;
case 172: // StructDefaultDeclaringList
return ValueType.LIST;
case 173: // StructDeclaringList
return ValueType.LIST;
case 174: // StructDeclarator
return ValueType.NODE;
case 175: // StructIdentifierDeclarator
return ValueType.NODE;
case 176: // BitFieldSizeOpt
return ValueType.NODE;
case 177: // BitFieldSize
return ValueType.NODE;
case 178: // EnumSpecifier
return ValueType.NODE;
case 179: // EnumeratorList
return ValueType.LIST;
case 180: // Enumerator
return ValueType.NODE;
case 181: // EnumeratorValueOpt
return ValueType.NODE;
case 182: // ParameterTypeList
return ValueType.NODE;
case 183: // ParameterList
return ValueType.LIST;
case 184: // ParameterDeclaration
return ValueType.NODE;
case 185: // IdentifierList
return ValueType.LIST;
case 186: // Identifier
return ValueType.NODE;
case 187: // IdentifierOrTypedefName
return ValueType.NODE;
case 188: // TypeName
return ValueType.NODE;
case 189: // InitializerOpt
return ValueType.NODE;
case 190: // DesignatedInitializer
return ValueType.PASS_THROUGH;
case 191: // Initializer
return ValueType.NODE;
case 192: // InitializerList
return ValueType.NODE;
case 193: // MatchedInitializerList
return ValueType.LIST;
case 194: // Designation
return ValueType.NODE;
case 195: // DesignatorList
return ValueType.LIST;
case 196: // Designator
return ValueType.NODE;
case 197: // ObsoleteArrayDesignation
return ValueType.NODE;
case 198: // ObsoleteFieldDesignation
return ValueType.NODE;
case 199: // Declarator
return ValueType.PASS_THROUGH;
case 200: // TypedefDeclarator
return ValueType.PASS_THROUGH;
case 201: // TypedefDeclaratorMain
return ValueType.PASS_THROUGH;
case 202: // ParameterTypedefDeclarator
return ValueType.NODE;
case 203: // CleanTypedefDeclarator
return ValueType.NODE;
case 204: // CleanPostfixTypedefDeclarator
return ValueType.NODE;
case 205: // ParenTypedefDeclarator
return ValueType.PASS_THROUGH;
case 206: // ParenPostfixTypedefDeclarator
return ValueType.NODE;
case 207: // SimpleParenTypedefDeclarator
return ValueType.NODE;
case 208: // IdentifierDeclarator
return ValueType.PASS_THROUGH;
case 209: // IdentifierDeclaratorMain
return ValueType.PASS_THROUGH;
case 210: // UnaryIdentifierDeclarator
return ValueType.PASS_THROUGH;
case 211: // PostfixIdentifierDeclarator
return ValueType.NODE;
case 212: // ParenIdentifierDeclarator
return ValueType.PASS_THROUGH;
case 213: // SimpleDeclarator
return ValueType.NODE;
case 214: // OldFunctionDeclarator
return ValueType.NODE;
case 215: // PostfixOldFunctionDeclarator
return ValueType.NODE;
case 216: // AbstractDeclarator
return ValueType.NODE;
case 217: // PostfixingAbstractDeclarator
return ValueType.NODE;
case 218: // ParameterTypeListOpt
return ValueType.NODE;
case 219: // ArrayAbstractDeclarator
return ValueType.NODE;
case 220: // UnaryAbstractDeclarator
return ValueType.NODE;
case 221: // PostfixAbstractDeclarator
return ValueType.NODE;
case 222: // Statement
return ValueType.PASS_THROUGH;
case 223: // LabeledStatement
return ValueType.NODE;
case 224: // CompoundStatement
return ValueType.NODE;
case 225: // LocalLabelDeclarationListOpt
return ValueType.NODE;
case 226: // LocalLabelDeclarationList
return ValueType.LIST;
case 227: // LocalLabelDeclaration
return ValueType.NODE;
case 228: // LocalLabelList
return ValueType.LIST;
case 229: // DeclarationOrStatementList
return ValueType.LIST;
case 230: // DeclarationOrStatement
return ValueType.PASS_THROUGH;
case 231: // DeclarationList
return ValueType.LIST;
case 232: // ExpressionStatement
return ValueType.NODE;
case 233: // SelectionStatement
return ValueType.NODE;
case 234: // IterationStatement
return ValueType.NODE;
case 235: // JumpStatement
return ValueType.NODE;
case 236: // Constant
return ValueType.NODE;
case 237: // StringLiteralList
return ValueType.LIST;
case 238: // PrimaryExpression
return ValueType.PASS_THROUGH;
case 239: // PrimaryIdentifier
return ValueType.NODE;
case 240: // VariableArgumentAccess
return ValueType.NODE;
case 241: // StatementAsExpression
return ValueType.NODE;
case 242: // PostfixExpression
return ValueType.PASS_THROUGH;
case 243: // CompoundLiteral
return ValueType.NODE;
case 244: // ArgumentExpressionList
return ValueType.LIST;
case 245: // UnaryExpression
return ValueType.PASS_THROUGH;
case 246: // TypeCompatibilityExpression
return ValueType.NODE;
case 247: // OffsetofExpression
return ValueType.NODE;
case 248: // ExtensionExpression
return ValueType.NODE;
case 249: // AlignofExpression
return ValueType.NODE;
case 250: // Alignofkeyword
return ValueType.NODE;
case 251: // LabelAddressExpression
return ValueType.NODE;
case 252: // Unaryoperator
return ValueType.NODE;
case 253: // CastExpression
return ValueType.PASS_THROUGH;
case 254: // MultiplicativeExpression
return ValueType.PASS_THROUGH;
case 255: // AdditiveExpression
return ValueType.PASS_THROUGH;
case 256: // ShiftExpression
return ValueType.PASS_THROUGH;
case 257: // RelationalExpression
return ValueType.PASS_THROUGH;
case 258: // EqualityExpression
return ValueType.PASS_THROUGH;
case 259: // AndExpression
return ValueType.PASS_THROUGH;
case 260: // ExclusiveOrExpression
return ValueType.PASS_THROUGH;
case 261: // InclusiveOrExpression
return ValueType.PASS_THROUGH;
case 262: // LogicalAndExpression
return ValueType.PASS_THROUGH;
case 263: // LogicalORExpression
return ValueType.PASS_THROUGH;
case 264: // ConditionalExpression
return ValueType.PASS_THROUGH;
case 265: // AssignmentExpression
return ValueType.PASS_THROUGH;
case 266: // AssignmentOperator
return ValueType.NODE;
case 267: // Expression
return ValueType.PASS_THROUGH;
case 268: // ConstantExpression
return ValueType.PASS_THROUGH;
case 269: // ExpressionOpt
return ValueType.PASS_THROUGH;
case 270: // AttributeSpecifierListOpt
return ValueType.NODE;
case 271: // AttributeSpecifierList
return ValueType.LIST;
case 272: // AttributeSpecifier
return ValueType.NODE;
case 273: // AttributeKeyword
return ValueType.NODE;
case 274: // AttributeListOpt
return ValueType.NODE;
case 275: // AttributeList
return ValueType.LIST;
case 276: // AttributeExpressionOpt
return ValueType.NODE;
case 277: // Word
return ValueType.NODE;
case 278: // AssemblyDefinition
return ValueType.NODE;
case 279: // AssemblyExpression
return ValueType.NODE;
case 280: // AssemblyExpressionOpt
return ValueType.NODE;
case 281: // AssemblyStatement
return ValueType.NODE;
case 282: // Assemblyargument
return ValueType.NODE;
case 283: // AssemblyoperandsOpt
return ValueType.NODE;
case 284: // Assemblyoperands
return ValueType.LIST;
case 285: // Assemblyoperand
return ValueType.NODE;
case 286: // Assemblyclobbers
return ValueType.NODE;
case 287: // AsmKeyword
return ValueType.NODE;
case 288: // BindIdentifier
return ValueType.ACTION;
case 289: // BindIdentifierInList
return ValueType.ACTION;
case 290: // BindVar
return ValueType.ACTION;
case 291: // BindEnum
return ValueType.ACTION;
case 292: // EnterScope
return ValueType.ACTION;
case 293: // ExitScope
return ValueType.ACTION;
case 294: // ExitReentrantScope
return ValueType.ACTION;
case 295: // ReenterScope
return ValueType.ACTION;
case 296: // KillReentrantScope
return ValueType.ACTION;
default:
throw new RuntimeException();
}
}
public boolean isComplete(int id) {
switch(id) {
case 137: // Declaration
return true;
case 136: // DeclarationExtension
return true;
case 139: // DeclaringList
return true;
case 138: // DefaultDeclaringList
return true;
case 279: // AssemblyExpression
return true;
case 278: // AssemblyDefinition
return true;
case 283: // AssemblyoperandsOpt
return true;
case 129: // ExternalDeclarationList
return true;
case 282: // Assemblyargument
return true;
case 128: // TranslationUnit
return true;
case 281: // AssemblyStatement
return true;
case 131: // EmptyDefinition
return true;
case 280: // AssemblyExpressionOpt
return true;
case 130: // ExternalDeclaration
return true;
case 133: // FunctionDefinition
return true;
case 286: // Assemblyclobbers
return true;
case 132: // FunctionDefinitionExtension
return true;
case 285: // Assemblyoperand
return true;
case 135: // FunctionOldPrototype
return true;
case 284: // Assemblyoperands
return true;
case 134: // FunctionDeclarator
return true;
case 258: // EqualityExpression
return true;
case 259: // AndExpression
return true;
case 256: // ShiftExpression
return true;
case 257: // RelationalExpression
return true;
case 262: // LogicalAndExpression
return true;
case 263: // LogicalORExpression
return true;
case 260: // ExclusiveOrExpression
return true;
case 261: // InclusiveOrExpression
return true;
case 267: // Expression
return true;
case 264: // ConditionalExpression
return true;
case 265: // AssignmentExpression
return true;
case 268: // ConstantExpression
return true;
case 269: // ExpressionOpt
return true;
case 288: // BindIdentifier
return true;
case 186: // Identifier
return true;
case 289: // BindIdentifierInList
return true;
case 290: // BindVar
return true;
case 184: // ParameterDeclaration
return true;
case 291: // BindEnum
return true;
case 185: // IdentifierList
return true;
case 292: // EnterScope
return true;
case 190: // DesignatedInitializer
return true;
case 293: // ExitScope
return true;
case 294: // ExitReentrantScope
return true;
case 295: // ReenterScope
return true;
case 296: // KillReentrantScope
return true;
case 182: // ParameterTypeList
return true;
case 183: // ParameterList
return true;
case 199: // Declarator
return true;
case 193: // MatchedInitializerList
return true;
case 192: // InitializerList
return true;
case 222: // Statement
return true;
case 223: // LabeledStatement
return true;
case 238: // PrimaryExpression
return true;
case 237: // StringLiteralList
return true;
case 235: // JumpStatement
return true;
case 234: // IterationStatement
return true;
case 233: // SelectionStatement
return true;
case 232: // ExpressionStatement
return true;
case 231: // DeclarationList
return true;
case 230: // DeclarationOrStatement
return true;
case 229: // DeclarationOrStatementList
return true;
case 224: // CompoundStatement
return true;
case 254: // MultiplicativeExpression
return true;
case 255: // AdditiveExpression
return true;
case 253: // CastExpression
return true;
case 251: // LabelAddressExpression
return true;
case 248: // ExtensionExpression
return true;
case 249: // AlignofExpression
return true;
case 246: // TypeCompatibilityExpression
return true;
case 247: // OffsetofExpression
return true;
case 244: // ArgumentExpressionList
return true;
case 245: // UnaryExpression
return true;
case 242: // PostfixExpression
return true;
case 243: // CompoundLiteral
return true;
case 240: // VariableArgumentAccess
return true;
case 241: // StatementAsExpression
return true;
default:
return false;
}
}
public void dispatch(int id, Subparser subparser) {
switch(id) {
case 288:
BindIdentifier(subparser);
break;
case 289:
BindIdentifierInList(subparser);
break;
case 290:
BindVar(subparser);
break;
case 291:
BindEnum(subparser);
break;
case 292:
EnterScope(subparser);
break;
case 293:
ExitScope(subparser);
break;
case 294:
ExitReentrantScope(subparser);
break;
case 295:
ReenterScope(subparser);
break;
case 296:
KillReentrantScope(subparser);
break;
default:
// Do nothing
break;
}
}
public abstract void BindIdentifier(Subparser subparser);
public abstract void BindIdentifierInList(Subparser subparser);
public abstract void BindVar(Subparser subparser);
public abstract void BindEnum(Subparser subparser);
public abstract void EnterScope(Subparser subparser);
public abstract void ExitScope(Subparser subparser);
public abstract void ExitReentrantScope(Subparser subparser);
public abstract void ReenterScope(Subparser subparser);
public abstract void KillReentrantScope(Subparser subparser);
}