1 /* A Bison parser, made by GNU Bison 2.3. */ 2 3 /* Skeleton interface for Bison's Yacc-like parsers in C 4 5 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 6 Free Software Foundation, Inc. 7 8 This program is free software; you can redistribute it and/or modify 9 it under the terms of the GNU General Public License as published by 10 the Free Software Foundation; either version 2, or (at your option) 11 any later version. 12 13 This program is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with this program; if not, write to the Free Software 20 Foundation, Inc., 51 Franklin Street, Fifth Floor, 21 Boston, MA 02110-1301, USA. */ 22 23 /* As a special exception, you may create a larger work that contains 24 part or all of the Bison parser skeleton and distribute that work 25 under terms of your choice, so long as that work isn't itself a 26 parser generator using the skeleton or a modified version thereof 27 as a parser skeleton. Alternatively, if you modify or redistribute 28 the parser skeleton itself, you may (at your option) remove this 29 special exception, which will cause the skeleton and the resulting 30 Bison output files to be licensed under the GNU General Public 31 License without this special exception. 32 33 This special exception was added by the Free Software Foundation in 34 version 2.2 of Bison. */ 35 36 /* Tokens. */ 37 #ifndef YYTOKENTYPE 38 # define YYTOKENTYPE 39 /* Put the tokens into the symbol table, so that GDB and other debuggers 40 know about them. */ 41 enum yytokentype { 42 INVARIANT = 258, 43 HIGH_PRECISION = 259, 44 MEDIUM_PRECISION = 260, 45 LOW_PRECISION = 261, 46 PRECISION = 262, 47 ATTRIBUTE = 263, 48 CONST_QUAL = 264, 49 BOOL_TYPE = 265, 50 FLOAT_TYPE = 266, 51 INT_TYPE = 267, 52 BREAK = 268, 53 CONTINUE = 269, 54 DO = 270, 55 ELSE = 271, 56 FOR = 272, 57 IF = 273, 58 DISCARD = 274, 59 RETURN = 275, 60 BVEC2 = 276, 61 BVEC3 = 277, 62 BVEC4 = 278, 63 IVEC2 = 279, 64 IVEC3 = 280, 65 IVEC4 = 281, 66 VEC2 = 282, 67 VEC3 = 283, 68 VEC4 = 284, 69 MATRIX2 = 285, 70 MATRIX3 = 286, 71 MATRIX4 = 287, 72 IN_QUAL = 288, 73 OUT_QUAL = 289, 74 INOUT_QUAL = 290, 75 UNIFORM = 291, 76 VARYING = 292, 77 STRUCT = 293, 78 VOID_TYPE = 294, 79 WHILE = 295, 80 SAMPLER2D = 296, 81 SAMPLERCUBE = 297, 82 IDENTIFIER = 298, 83 TYPE_NAME = 299, 84 FLOATCONSTANT = 300, 85 INTCONSTANT = 301, 86 BOOLCONSTANT = 302, 87 FIELD_SELECTION = 303, 88 LEFT_OP = 304, 89 RIGHT_OP = 305, 90 INC_OP = 306, 91 DEC_OP = 307, 92 LE_OP = 308, 93 GE_OP = 309, 94 EQ_OP = 310, 95 NE_OP = 311, 96 AND_OP = 312, 97 OR_OP = 313, 98 XOR_OP = 314, 99 MUL_ASSIGN = 315, 100 DIV_ASSIGN = 316, 101 ADD_ASSIGN = 317, 102 MOD_ASSIGN = 318, 103 LEFT_ASSIGN = 319, 104 RIGHT_ASSIGN = 320, 105 AND_ASSIGN = 321, 106 XOR_ASSIGN = 322, 107 OR_ASSIGN = 323, 108 SUB_ASSIGN = 324, 109 LEFT_PAREN = 325, 110 RIGHT_PAREN = 326, 111 LEFT_BRACKET = 327, 112 RIGHT_BRACKET = 328, 113 LEFT_BRACE = 329, 114 RIGHT_BRACE = 330, 115 DOT = 331, 116 COMMA = 332, 117 COLON = 333, 118 EQUAL = 334, 119 SEMICOLON = 335, 120 BANG = 336, 121 DASH = 337, 122 TILDE = 338, 123 PLUS = 339, 124 STAR = 340, 125 SLASH = 341, 126 PERCENT = 342, 127 LEFT_ANGLE = 343, 128 RIGHT_ANGLE = 344, 129 VERTICAL_BAR = 345, 130 CARET = 346, 131 AMPERSAND = 347, 132 QUESTION = 348 133 }; 134 #endif 135 /* Tokens. */ 136 #define INVARIANT 258 137 #define HIGH_PRECISION 259 138 #define MEDIUM_PRECISION 260 139 #define LOW_PRECISION 261 140 #define PRECISION 262 141 #define ATTRIBUTE 263 142 #define CONST_QUAL 264 143 #define BOOL_TYPE 265 144 #define FLOAT_TYPE 266 145 #define INT_TYPE 267 146 #define BREAK 268 147 #define CONTINUE 269 148 #define DO 270 149 #define ELSE 271 150 #define FOR 272 151 #define IF 273 152 #define DISCARD 274 153 #define RETURN 275 154 #define BVEC2 276 155 #define BVEC3 277 156 #define BVEC4 278 157 #define IVEC2 279 158 #define IVEC3 280 159 #define IVEC4 281 160 #define VEC2 282 161 #define VEC3 283 162 #define VEC4 284 163 #define MATRIX2 285 164 #define MATRIX3 286 165 #define MATRIX4 287 166 #define IN_QUAL 288 167 #define OUT_QUAL 289 168 #define INOUT_QUAL 290 169 #define UNIFORM 291 170 #define VARYING 292 171 #define STRUCT 293 172 #define VOID_TYPE 294 173 #define WHILE 295 174 #define SAMPLER2D 296 175 #define SAMPLERCUBE 297 176 #define IDENTIFIER 298 177 #define TYPE_NAME 299 178 #define FLOATCONSTANT 300 179 #define INTCONSTANT 301 180 #define BOOLCONSTANT 302 181 #define FIELD_SELECTION 303 182 #define LEFT_OP 304 183 #define RIGHT_OP 305 184 #define INC_OP 306 185 #define DEC_OP 307 186 #define LE_OP 308 187 #define GE_OP 309 188 #define EQ_OP 310 189 #define NE_OP 311 190 #define AND_OP 312 191 #define OR_OP 313 192 #define XOR_OP 314 193 #define MUL_ASSIGN 315 194 #define DIV_ASSIGN 316 195 #define ADD_ASSIGN 317 196 #define MOD_ASSIGN 318 197 #define LEFT_ASSIGN 319 198 #define RIGHT_ASSIGN 320 199 #define AND_ASSIGN 321 200 #define XOR_ASSIGN 322 201 #define OR_ASSIGN 323 202 #define SUB_ASSIGN 324 203 #define LEFT_PAREN 325 204 #define RIGHT_PAREN 326 205 #define LEFT_BRACKET 327 206 #define RIGHT_BRACKET 328 207 #define LEFT_BRACE 329 208 #define RIGHT_BRACE 330 209 #define DOT 331 210 #define COMMA 332 211 #define COLON 333 212 #define EQUAL 334 213 #define SEMICOLON 335 214 #define BANG 336 215 #define DASH 337 216 #define TILDE 338 217 #define PLUS 339 218 #define STAR 340 219 #define SLASH 341 220 #define PERCENT 342 221 #define LEFT_ANGLE 343 222 #define RIGHT_ANGLE 344 223 #define VERTICAL_BAR 345 224 #define CARET 346 225 #define AMPERSAND 347 226 #define QUESTION 348 227 228 229 230 231 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 232 typedef union YYSTYPE 233 234 { 235 struct { 236 TSourceLoc line; 237 union { 238 TString *string; 239 float f; 240 int i; 241 bool b; 242 }; 243 TSymbol* symbol; 244 } lex; 245 struct { 246 TSourceLoc line; 247 TOperator op; 248 union { 249 TIntermNode* intermNode; 250 TIntermNodePair nodePair; 251 TIntermTyped* intermTypedNode; 252 TIntermAggregate* intermAggregate; 253 }; 254 union { 255 TPublicType type; 256 TPrecision precision; 257 TQualifier qualifier; 258 TFunction* function; 259 TParameter param; 260 TTypeLine typeLine; 261 TTypeList* typeList; 262 }; 263 } interm; 264 } 265 /* Line 1489 of yacc.c. */ 266 267 YYSTYPE; 268 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ 269 # define YYSTYPE_IS_DECLARED 1 270 # define YYSTYPE_IS_TRIVIAL 1 271 #endif 272 273 274 275