1 /*
2 * My changes over the original lempar.c from SQLite are encased in
3 * #if __MOJOSHADER__ blocks. --ryan.
4 */
5 #ifndef __MOJOSHADER__
6 #define __MOJOSHADER__ 1
7 #endif
8
9 #if !__MOJOSHADER__
10 #define LEMON_SUPPORT_TRACING (!defined(NDEBUG))
11 #endif
12
13 /* Driver template for the LEMON parser generator.
14 ** The original author(s) of lempar.c disclaim copyright to this source code.
15 ** However, changes made for MojoShader fall under the same license as the
16 ** rest of MojoShader. Please see the file LICENSE.txt in the source's root
17 ** directory.
18 */
19 /* First off, code is included that follows the "include" declaration
20 ** in the input grammar file. */
21 #include <stdio.h>
22 #line 31 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
23
24 #ifndef __MOJOSHADER_HLSL_COMPILER__
25 #error Do not compile this file directly.
26 #endif
27 #line 28 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
28 /* Next is all token values, in a form suitable for use by makeheaders.
29 ** This section will be null unless lemon is run with the -m switch.
30 */
31 /*
32 ** These constants (all generated automatically by the parser generator)
33 ** specify the various kinds of tokens (terminals) that the parser
34 ** understands.
35 **
36 ** Each symbol here is a terminal symbol in the grammar.
37 */
38 #define TOKEN_HLSL_COMMA 1
39 #define TOKEN_HLSL_ASSIGN 2
40 #define TOKEN_HLSL_ADDASSIGN 3
41 #define TOKEN_HLSL_SUBASSIGN 4
42 #define TOKEN_HLSL_MULASSIGN 5
43 #define TOKEN_HLSL_DIVASSIGN 6
44 #define TOKEN_HLSL_MODASSIGN 7
45 #define TOKEN_HLSL_LSHIFTASSIGN 8
46 #define TOKEN_HLSL_RSHIFTASSIGN 9
47 #define TOKEN_HLSL_ANDASSIGN 10
48 #define TOKEN_HLSL_ORASSIGN 11
49 #define TOKEN_HLSL_XORASSIGN 12
50 #define TOKEN_HLSL_QUESTION 13
51 #define TOKEN_HLSL_OROR 14
52 #define TOKEN_HLSL_ANDAND 15
53 #define TOKEN_HLSL_OR 16
54 #define TOKEN_HLSL_XOR 17
55 #define TOKEN_HLSL_AND 18
56 #define TOKEN_HLSL_EQL 19
57 #define TOKEN_HLSL_NEQ 20
58 #define TOKEN_HLSL_LT 21
59 #define TOKEN_HLSL_LEQ 22
60 #define TOKEN_HLSL_GT 23
61 #define TOKEN_HLSL_GEQ 24
62 #define TOKEN_HLSL_LSHIFT 25
63 #define TOKEN_HLSL_RSHIFT 26
64 #define TOKEN_HLSL_PLUS 27
65 #define TOKEN_HLSL_MINUS 28
66 #define TOKEN_HLSL_STAR 29
67 #define TOKEN_HLSL_SLASH 30
68 #define TOKEN_HLSL_PERCENT 31
69 #define TOKEN_HLSL_TYPECAST 32
70 #define TOKEN_HLSL_EXCLAMATION 33
71 #define TOKEN_HLSL_COMPLEMENT 34
72 #define TOKEN_HLSL_MINUSMINUS 35
73 #define TOKEN_HLSL_PLUSPLUS 36
74 #define TOKEN_HLSL_DOT 37
75 #define TOKEN_HLSL_LBRACKET 38
76 #define TOKEN_HLSL_RBRACKET 39
77 #define TOKEN_HLSL_LPAREN 40
78 #define TOKEN_HLSL_RPAREN 41
79 #define TOKEN_HLSL_ELSE 42
80 #define TOKEN_HLSL_SEMICOLON 43
81 #define TOKEN_HLSL_TYPEDEF 44
82 #define TOKEN_HLSL_CONST 45
83 #define TOKEN_HLSL_IDENTIFIER 46
84 #define TOKEN_HLSL_VOID 47
85 #define TOKEN_HLSL_INLINE 48
86 #define TOKEN_HLSL_IN 49
87 #define TOKEN_HLSL_INOUT 50
88 #define TOKEN_HLSL_OUT 51
89 #define TOKEN_HLSL_UNIFORM 52
90 #define TOKEN_HLSL_COLON 53
91 #define TOKEN_HLSL_LINEAR 54
92 #define TOKEN_HLSL_CENTROID 55
93 #define TOKEN_HLSL_NOINTERPOLATION 56
94 #define TOKEN_HLSL_NOPERSPECTIVE 57
95 #define TOKEN_HLSL_SAMPLE 58
96 #define TOKEN_HLSL_EXTERN 59
97 #define TOKEN_HLSL_SHARED 60
98 #define TOKEN_HLSL_STATIC 61
99 #define TOKEN_HLSL_VOLATILE 62
100 #define TOKEN_HLSL_ROWMAJOR 63
101 #define TOKEN_HLSL_COLUMNMAJOR 64
102 #define TOKEN_HLSL_LBRACE 65
103 #define TOKEN_HLSL_RBRACE 66
104 #define TOKEN_HLSL_STRUCT 67
105 #define TOKEN_HLSL_PACKOFFSET 68
106 #define TOKEN_HLSL_REGISTER 69
107 #define TOKEN_HLSL_USERTYPE 70
108 #define TOKEN_HLSL_SAMPLER 71
109 #define TOKEN_HLSL_SAMPLER1D 72
110 #define TOKEN_HLSL_SAMPLER2D 73
111 #define TOKEN_HLSL_SAMPLER3D 74
112 #define TOKEN_HLSL_SAMPLERCUBE 75
113 #define TOKEN_HLSL_SAMPLER_STATE 76
114 #define TOKEN_HLSL_SAMPLERSTATE 77
115 #define TOKEN_HLSL_SAMPLERCOMPARISONSTATE 78
116 #define TOKEN_HLSL_BOOL 79
117 #define TOKEN_HLSL_INT 80
118 #define TOKEN_HLSL_UINT 81
119 #define TOKEN_HLSL_HALF 82
120 #define TOKEN_HLSL_FLOAT 83
121 #define TOKEN_HLSL_DOUBLE 84
122 #define TOKEN_HLSL_STRING 85
123 #define TOKEN_HLSL_SNORM 86
124 #define TOKEN_HLSL_UNORM 87
125 #define TOKEN_HLSL_BUFFER 88
126 #define TOKEN_HLSL_VECTOR 89
127 #define TOKEN_HLSL_INT_CONSTANT 90
128 #define TOKEN_HLSL_MATRIX 91
129 #define TOKEN_HLSL_ISOLATE 92
130 #define TOKEN_HLSL_MAXINSTRUCTIONCOUNT 93
131 #define TOKEN_HLSL_NOEXPRESSIONOPTIMIZATIONS 94
132 #define TOKEN_HLSL_REMOVEUNUSEDINPUTS 95
133 #define TOKEN_HLSL_UNUSED 96
134 #define TOKEN_HLSL_XPS 97
135 #define TOKEN_HLSL_BREAK 98
136 #define TOKEN_HLSL_CONTINUE 99
137 #define TOKEN_HLSL_DISCARD 100
138 #define TOKEN_HLSL_DO 101
139 #define TOKEN_HLSL_WHILE 102
140 #define TOKEN_HLSL_RETURN 103
141 #define TOKEN_HLSL_UNROLL 104
142 #define TOKEN_HLSL_LOOP 105
143 #define TOKEN_HLSL_FOR 106
144 #define TOKEN_HLSL_BRANCH 107
145 #define TOKEN_HLSL_IF 108
146 #define TOKEN_HLSL_FLATTEN 109
147 #define TOKEN_HLSL_IFALL 110
148 #define TOKEN_HLSL_IFANY 111
149 #define TOKEN_HLSL_PREDICATE 112
150 #define TOKEN_HLSL_PREDICATEBLOCK 113
151 #define TOKEN_HLSL_SWITCH 114
152 #define TOKEN_HLSL_FORCECASE 115
153 #define TOKEN_HLSL_CALL 116
154 #define TOKEN_HLSL_CASE 117
155 #define TOKEN_HLSL_DEFAULT 118
156 #define TOKEN_HLSL_FLOAT_CONSTANT 119
157 #define TOKEN_HLSL_STRING_LITERAL 120
158 #define TOKEN_HLSL_TRUE 121
159 #define TOKEN_HLSL_FALSE 122
160 /* Make sure the INTERFACE macro is defined.
161 */
162 #ifndef INTERFACE
163 # define INTERFACE 1
164 #endif
165 /* The next thing included is series of defines which control
166 ** various aspects of the generated parser.
167 ** YYCODETYPE is the data type used for storing terminal
168 ** and nonterminal numbers. "unsigned char" is
169 ** used if there are fewer than 250 terminals
170 ** and nonterminals. "int" is used otherwise.
171 ** YYNOCODE is a number of type YYCODETYPE which corresponds
172 ** to no legal terminal or nonterminal number. This
173 ** number is used to fill in empty slots of the hash
174 ** table.
175 ** YYFALLBACK If defined, this indicates that one or more tokens
176 ** have fall-back values which should be used if the
177 ** original value of the token will not parse.
178 ** YYACTIONTYPE is the data type used for storing terminal
179 ** and nonterminal numbers. "unsigned char" is
180 ** used if there are fewer than 250 rules and
181 ** states combined. "int" is used otherwise.
182 ** ParseHLSLTOKENTYPE is the data type used for minor tokens given
183 ** directly to the parser from the tokenizer.
184 ** YYMINORTYPE is the data type used for all minor tokens.
185 ** This is typically a union of many types, one of
186 ** which is ParseHLSLTOKENTYPE. The entry in the union
187 ** for base tokens is called "yy0".
188 ** YYSTACKDEPTH is the maximum depth of the parser's stack. If
189 ** zero the stack is dynamically sized using realloc()
190 ** ParseHLSLARG_SDECL A static variable declaration for the %extra_argument
191 ** ParseHLSLARG_PDECL A parameter declaration for the %extra_argument
192 ** ParseHLSLARG_STORE Code to store %extra_argument into yypParser
193 ** ParseHLSLARG_FETCH Code to extract %extra_argument from yypParser
194 ** YYNSTATE the combined number of states.
195 ** YYNRULE the number of rules in the grammar
196 ** YYERRORSYMBOL is the code number of the error symbol. If not
197 ** defined, then do no error processing.
198 */
199 #define YYCODETYPE unsigned char
200 #define YYNOCODE 198
201 #define YYACTIONTYPE unsigned short int
202 #define ParseHLSLTOKENTYPE TokenData
203 typedef union {
204 int yyinit;
205 ParseHLSLTOKENTYPE yy0;
206 MOJOSHADER_astPackOffset * yy8;
207 MOJOSHADER_astVariableDeclaration * yy24;
208 MOJOSHADER_astArguments * yy26;
209 const MOJOSHADER_astDataType * yy37;
210 MOJOSHADER_astTypedef * yy71;
211 MOJOSHADER_astInputModifier yy75;
212 MOJOSHADER_astVariableLowLevel * yy82;
213 MOJOSHADER_astInterpolationModifier yy111;
214 MOJOSHADER_astCompilationUnit * yy139;
215 MOJOSHADER_astSwitchCases * yy165;
216 MOJOSHADER_astFunctionStorageClass yy175;
217 MOJOSHADER_astStatement * yy233;
218 MOJOSHADER_astStructDeclaration * yy249;
219 MOJOSHADER_astAnnotations * yy268;
220 int yy270;
221 const char * yy306;
222 MOJOSHADER_astFunctionParameters * yy307;
223 MOJOSHADER_astExpression * yy322;
224 MOJOSHADER_astStructMembers * yy346;
225 MOJOSHADER_astFunctionSignature * yy364;
226 MOJOSHADER_astScalarOrArray * yy380;
227 } YYMINORTYPE;
228 #ifndef YYSTACKDEPTH
229 #define YYSTACKDEPTH 100
230 #endif
231 #define ParseHLSLARG_SDECL Context *ctx ;
232 #define ParseHLSLARG_PDECL , Context *ctx
233 #define ParseHLSLARG_FETCH Context *ctx = yypParser->ctx
234 #define ParseHLSLARG_STORE yypParser->ctx = ctx
235 #define YYNSTATE 525
236 #define YYNRULE 288
237 #define YY_NO_ACTION (YYNSTATE+YYNRULE+2)
238 #define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1)
239 #define YY_ERROR_ACTION (YYNSTATE+YYNRULE)
240
241 /* The yyzerominor constant is used to initialize instances of
242 ** YYMINORTYPE objects to zero. */
243 static const YYMINORTYPE yyzerominor = { 0 };
244
245 /* Define the yytestcase() macro to be a no-op if is not already defined
246 ** otherwise.
247 **
248 ** Applications can choose to define yytestcase() in the %include section
249 ** to a macro that can assist in verifying code coverage. For production
250 ** code the yytestcase() macro should be turned off. But it is useful
251 ** for testing.
252 */
253 #ifndef yytestcase
254 # define yytestcase(X)
255 #endif
256
257
258 /* Next are the tables used to determine what action to take based on the
259 ** current state and lookahead token. These tables are used to implement
260 ** functions that take a state number and lookahead value and return an
261 ** action integer.
262 **
263 ** Suppose the action integer is N. Then the action is determined as
264 ** follows
265 **
266 ** 0 <= N < YYNSTATE Shift N. That is, push the lookahead
267 ** token onto the stack and goto state N.
268 **
269 ** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE.
270 **
271 ** N == YYNSTATE+YYNRULE A syntax error has occurred.
272 **
273 ** N == YYNSTATE+YYNRULE+1 The parser accepts its input.
274 **
275 ** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused
276 ** slots in the yy_action[] table.
277 **
278 ** The action table is constructed as a single large table named yy_action[].
279 ** Given state S and lookahead X, the action is computed as
280 **
281 ** yy_action[ yy_shift_ofst[S] + X ]
282 **
283 ** If the index value yy_shift_ofst[S]+X is out of range or if the value
284 ** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S]
285 ** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table
286 ** and that yy_default[S] should be used instead.
287 **
288 ** The formula above is for computing the action when the lookahead is
289 ** a terminal symbol. If the lookahead is a non-terminal (as occurs after
290 ** a reduce action) then the yy_reduce_ofst[] array is used in place of
291 ** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of
292 ** YY_SHIFT_USE_DFLT.
293 **
294 ** The following are the tables generated in this section:
295 **
296 ** yy_action[] A single table containing all actions.
297 ** yy_lookahead[] A table containing the lookahead for each entry in
298 ** yy_action. Used to detect hash collisions.
299 ** yy_shift_ofst[] For each state, the offset into yy_action for
300 ** shifting terminals.
301 ** yy_reduce_ofst[] For each state, the offset into yy_action for
302 ** shifting non-terminals after a reduce.
303 ** yy_default[] Default action for each state.
304 */
305 #define YY_ACTTAB_COUNT (5407)
306 static const YYACTIONTYPE yy_action[] = {
307 /* 0 */ 86, 85, 446, 447, 264, 46, 83, 84, 90, 91,
308 /* 10 */ 39, 123, 88, 47, 27, 114, 344, 97, 405, 143,
309 /* 20 */ 104, 422, 82, 81, 80, 407, 348, 140, 139, 410,
310 /* 30 */ 78, 77, 411, 409, 408, 406, 404, 403, 1, 383,
311 /* 40 */ 249, 495, 60, 511, 510, 509, 508, 507, 506, 505,
312 /* 50 */ 504, 503, 502, 501, 500, 499, 498, 497, 496, 295,
313 /* 60 */ 294, 293, 282, 482, 278, 250, 398, 397, 396, 395,
314 /* 70 */ 394, 248, 247, 246, 334, 338, 37, 40, 214, 336,
315 /* 80 */ 518, 333, 74, 72, 73, 71, 39, 332, 494, 100,
316 /* 90 */ 86, 85, 481, 480, 479, 478, 83, 84, 90, 91,
317 /* 100 */ 186, 123, 413, 47, 27, 115, 344, 97, 405, 143,
318 /* 110 */ 362, 429, 70, 69, 432, 407, 361, 140, 139, 410,
319 /* 120 */ 140, 139, 411, 409, 408, 406, 404, 403, 1, 384,
320 /* 130 */ 249, 76, 75, 511, 510, 509, 508, 507, 506, 505,
321 /* 140 */ 504, 503, 502, 501, 500, 499, 498, 497, 496, 295,
322 /* 150 */ 294, 293, 282, 482, 278, 146, 398, 397, 396, 395,
323 /* 160 */ 394, 248, 247, 246, 334, 338, 37, 369, 371, 336,
324 /* 170 */ 119, 333, 370, 366, 368, 132, 310, 332, 367, 100,
325 /* 180 */ 86, 85, 481, 480, 479, 478, 83, 84, 90, 91,
326 /* 190 */ 180, 123, 413, 47, 113, 423, 344, 97, 405, 143,
327 /* 200 */ 416, 140, 139, 493, 417, 407, 140, 139, 100, 410,
328 /* 210 */ 140, 139, 411, 409, 408, 406, 404, 403, 1, 181,
329 /* 220 */ 249, 413, 60, 511, 510, 509, 508, 507, 506, 505,
330 /* 230 */ 504, 503, 502, 501, 500, 499, 498, 497, 496, 295,
331 /* 240 */ 294, 293, 282, 482, 278, 63, 436, 117, 418, 138,
332 /* 250 */ 492, 248, 247, 246, 334, 338, 37, 415, 122, 336,
333 /* 260 */ 121, 333, 477, 140, 139, 62, 63, 332, 263, 259,
334 /* 270 */ 86, 85, 481, 480, 479, 478, 83, 84, 90, 91,
335 /* 280 */ 391, 261, 24, 47, 61, 434, 33, 515, 405, 143,
336 /* 290 */ 512, 517, 516, 514, 513, 407, 363, 365, 100, 410,
337 /* 300 */ 438, 364, 411, 409, 408, 406, 404, 403, 48, 181,
338 /* 310 */ 249, 413, 60, 511, 510, 509, 508, 507, 506, 505,
339 /* 320 */ 504, 503, 502, 501, 500, 499, 498, 497, 496, 295,
340 /* 330 */ 294, 293, 282, 482, 278, 263, 259, 352, 118, 340,
341 /* 340 */ 345, 109, 102, 130, 306, 122, 474, 428, 443, 122,
342 /* 350 */ 475, 152, 241, 94, 360, 399, 491, 421, 400, 252,
343 /* 360 */ 359, 296, 481, 480, 479, 478, 170, 24, 60, 515,
344 /* 370 */ 38, 79, 512, 517, 516, 514, 513, 18, 346, 60,
345 /* 380 */ 223, 219, 218, 216, 251, 339, 135, 402, 60, 476,
346 /* 390 */ 150, 401, 60, 450, 145, 467, 157, 199, 198, 149,
347 /* 400 */ 191, 272, 271, 269, 267, 189, 462, 352, 220, 340,
348 /* 410 */ 345, 109, 102, 502, 501, 500, 499, 498, 497, 496,
349 /* 420 */ 295, 294, 60, 94, 100, 399, 390, 522, 21, 252,
350 /* 430 */ 490, 3, 426, 489, 343, 38, 170, 437, 60, 515,
351 /* 440 */ 60, 296, 512, 517, 516, 514, 513, 5, 346, 1,
352 /* 450 */ 223, 219, 218, 216, 318, 339, 135, 296, 27, 476,
353 /* 460 */ 150, 27, 20, 450, 145, 467, 157, 199, 198, 149,
354 /* 470 */ 191, 272, 271, 269, 267, 189, 462, 105, 215, 285,
355 /* 480 */ 105, 352, 341, 340, 345, 109, 102, 502, 501, 500,
356 /* 490 */ 499, 498, 497, 496, 295, 294, 101, 94, 488, 399,
357 /* 500 */ 126, 487, 112, 252, 320, 40, 214, 103, 414, 184,
358 /* 510 */ 170, 283, 154, 515, 140, 139, 512, 517, 516, 514,
359 /* 520 */ 513, 4, 346, 486, 223, 219, 218, 216, 60, 339,
360 /* 530 */ 135, 60, 213, 476, 150, 134, 125, 450, 145, 467,
361 /* 540 */ 157, 199, 198, 149, 191, 272, 271, 269, 267, 189,
362 /* 550 */ 462, 352, 137, 340, 345, 109, 102, 280, 60, 515,
363 /* 560 */ 60, 60, 512, 517, 516, 514, 513, 94, 485, 399,
364 /* 570 */ 36, 17, 179, 252, 292, 291, 290, 289, 288, 287,
365 /* 580 */ 170, 286, 284, 515, 60, 124, 512, 517, 516, 514,
366 /* 590 */ 513, 60, 222, 60, 223, 219, 218, 216, 14, 339,
367 /* 600 */ 135, 12, 31, 476, 150, 144, 60, 450, 145, 467,
368 /* 610 */ 157, 199, 198, 149, 191, 272, 271, 269, 267, 189,
369 /* 620 */ 462, 27, 133, 312, 279, 352, 35, 340, 345, 109,
370 /* 630 */ 102, 10, 515, 9, 276, 512, 517, 516, 514, 513,
371 /* 640 */ 60, 94, 275, 399, 131, 308, 274, 252, 29, 420,
372 /* 650 */ 138, 273, 484, 68, 170, 67, 65, 515, 64, 448,
373 /* 660 */ 512, 517, 516, 514, 513, 262, 350, 185, 223, 219,
374 /* 670 */ 218, 216, 184, 339, 135, 209, 260, 476, 150, 259,
375 /* 680 */ 6, 450, 145, 467, 157, 199, 198, 149, 191, 272,
376 /* 690 */ 271, 269, 267, 189, 462, 352, 435, 340, 345, 109,
377 /* 700 */ 102, 258, 515, 257, 433, 512, 517, 516, 514, 513,
378 /* 710 */ 60, 94, 263, 399, 419, 89, 389, 252, 436, 385,
379 /* 720 */ 381, 380, 379, 244, 170, 377, 243, 515, 136, 239,
380 /* 730 */ 512, 517, 516, 514, 513, 153, 217, 240, 223, 219,
381 /* 740 */ 218, 216, 151, 339, 135, 177, 176, 476, 150, 141,
382 /* 750 */ 234, 450, 145, 467, 157, 199, 198, 149, 191, 272,
383 /* 760 */ 271, 269, 267, 189, 462, 232, 358, 357, 230, 352,
384 /* 770 */ 356, 340, 345, 109, 102, 228, 515, 355, 226, 512,
385 /* 780 */ 517, 516, 514, 513, 224, 94, 22, 399, 354, 353,
386 /* 790 */ 44, 252, 221, 43, 351, 42, 19, 41, 170, 120,
387 /* 800 */ 2, 515, 212, 88, 512, 517, 516, 514, 513, 316,
388 /* 810 */ 349, 93, 223, 219, 218, 216, 107, 339, 135, 106,
389 /* 820 */ 305, 476, 150, 303, 204, 450, 145, 467, 157, 199,
390 /* 830 */ 198, 149, 191, 272, 271, 269, 267, 189, 462, 352,
391 /* 840 */ 87, 340, 345, 109, 102, 300, 520, 296, 483, 38,
392 /* 850 */ 439, 256, 431, 430, 27, 94, 255, 399, 253, 388,
393 /* 860 */ 250, 252, 474, 337, 372, 23, 317, 1, 170, 313,
394 /* 870 */ 311, 515, 521, 309, 512, 517, 516, 514, 513, 307,
395 /* 880 */ 382, 281, 223, 219, 218, 216, 347, 339, 135, 242,
396 /* 890 */ 184, 476, 150, 158, 299, 450, 145, 467, 157, 199,
397 /* 900 */ 198, 149, 191, 272, 271, 269, 267, 189, 462, 815,
398 /* 910 */ 815, 277, 815, 352, 815, 340, 345, 109, 102, 815,
399 /* 920 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 94,
400 /* 930 */ 815, 399, 815, 815, 815, 252, 815, 815, 815, 815,
401 /* 940 */ 815, 815, 170, 815, 815, 515, 815, 815, 512, 517,
402 /* 950 */ 516, 514, 513, 815, 335, 815, 223, 219, 218, 216,
403 /* 960 */ 815, 339, 135, 815, 815, 476, 150, 815, 815, 450,
404 /* 970 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
405 /* 980 */ 267, 189, 462, 352, 815, 340, 345, 109, 102, 815,
406 /* 990 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 94,
407 /* 1000 */ 815, 399, 815, 815, 815, 252, 815, 815, 815, 815,
408 /* 1010 */ 815, 815, 170, 815, 815, 515, 815, 815, 512, 517,
409 /* 1020 */ 516, 514, 513, 815, 331, 815, 223, 219, 218, 216,
410 /* 1030 */ 815, 339, 135, 815, 815, 476, 150, 815, 815, 450,
411 /* 1040 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
412 /* 1050 */ 267, 189, 462, 815, 815, 815, 815, 352, 815, 340,
413 /* 1060 */ 345, 109, 102, 815, 815, 815, 815, 815, 815, 815,
414 /* 1070 */ 815, 815, 815, 94, 815, 399, 815, 815, 815, 252,
415 /* 1080 */ 815, 815, 815, 815, 815, 815, 170, 815, 815, 515,
416 /* 1090 */ 815, 815, 512, 517, 516, 514, 513, 815, 330, 815,
417 /* 1100 */ 223, 219, 218, 216, 815, 339, 135, 815, 815, 476,
418 /* 1110 */ 150, 815, 815, 450, 145, 467, 157, 199, 198, 149,
419 /* 1120 */ 191, 272, 271, 269, 267, 189, 462, 352, 815, 340,
420 /* 1130 */ 345, 109, 102, 815, 815, 815, 815, 815, 815, 815,
421 /* 1140 */ 815, 815, 815, 94, 815, 399, 815, 815, 815, 252,
422 /* 1150 */ 815, 815, 815, 815, 815, 815, 170, 815, 815, 515,
423 /* 1160 */ 815, 815, 512, 517, 516, 514, 513, 815, 329, 815,
424 /* 1170 */ 223, 219, 218, 216, 815, 339, 135, 815, 815, 476,
425 /* 1180 */ 150, 815, 815, 450, 145, 467, 157, 199, 198, 149,
426 /* 1190 */ 191, 272, 271, 269, 267, 189, 462, 815, 815, 815,
427 /* 1200 */ 815, 352, 815, 340, 345, 109, 102, 815, 815, 815,
428 /* 1210 */ 815, 815, 815, 815, 815, 815, 815, 94, 815, 399,
429 /* 1220 */ 815, 815, 815, 252, 815, 815, 815, 815, 815, 815,
430 /* 1230 */ 170, 815, 815, 515, 815, 815, 512, 517, 516, 514,
431 /* 1240 */ 513, 815, 328, 815, 223, 219, 218, 216, 815, 339,
432 /* 1250 */ 135, 815, 815, 476, 150, 815, 815, 450, 145, 467,
433 /* 1260 */ 157, 199, 198, 149, 191, 272, 271, 269, 267, 189,
434 /* 1270 */ 462, 352, 815, 340, 345, 109, 102, 815, 815, 815,
435 /* 1280 */ 815, 815, 815, 815, 815, 815, 815, 94, 815, 399,
436 /* 1290 */ 815, 815, 815, 252, 815, 815, 815, 815, 815, 815,
437 /* 1300 */ 170, 815, 815, 515, 815, 815, 512, 517, 516, 514,
438 /* 1310 */ 513, 815, 327, 815, 223, 219, 218, 216, 815, 339,
439 /* 1320 */ 135, 815, 815, 476, 150, 815, 815, 450, 145, 467,
440 /* 1330 */ 157, 199, 198, 149, 191, 272, 271, 269, 267, 189,
441 /* 1340 */ 462, 815, 815, 815, 815, 352, 815, 340, 345, 109,
442 /* 1350 */ 102, 815, 815, 815, 815, 815, 815, 815, 815, 815,
443 /* 1360 */ 815, 94, 815, 399, 815, 815, 815, 252, 815, 815,
444 /* 1370 */ 815, 815, 815, 815, 170, 815, 815, 515, 815, 815,
445 /* 1380 */ 512, 517, 516, 514, 513, 815, 326, 815, 223, 219,
446 /* 1390 */ 218, 216, 815, 339, 135, 815, 815, 476, 150, 815,
447 /* 1400 */ 815, 450, 145, 467, 157, 199, 198, 149, 191, 272,
448 /* 1410 */ 271, 269, 267, 189, 462, 352, 815, 340, 345, 109,
449 /* 1420 */ 102, 815, 815, 815, 815, 815, 815, 815, 815, 815,
450 /* 1430 */ 815, 94, 815, 399, 815, 815, 815, 252, 815, 815,
451 /* 1440 */ 815, 815, 815, 815, 170, 815, 815, 515, 815, 815,
452 /* 1450 */ 512, 517, 516, 514, 513, 815, 325, 815, 223, 219,
453 /* 1460 */ 218, 216, 815, 339, 135, 815, 815, 476, 150, 815,
454 /* 1470 */ 815, 450, 145, 467, 157, 199, 198, 149, 191, 272,
455 /* 1480 */ 271, 269, 267, 189, 462, 815, 815, 815, 815, 352,
456 /* 1490 */ 815, 340, 345, 109, 102, 815, 815, 815, 815, 815,
457 /* 1500 */ 815, 815, 815, 815, 815, 94, 815, 399, 815, 815,
458 /* 1510 */ 815, 252, 815, 815, 815, 815, 815, 815, 170, 815,
459 /* 1520 */ 815, 515, 815, 815, 512, 517, 516, 514, 513, 815,
460 /* 1530 */ 324, 815, 223, 219, 218, 216, 815, 339, 135, 815,
461 /* 1540 */ 815, 476, 150, 815, 815, 450, 145, 467, 157, 199,
462 /* 1550 */ 198, 149, 191, 272, 271, 269, 267, 189, 462, 352,
463 /* 1560 */ 815, 340, 345, 109, 102, 815, 815, 815, 815, 815,
464 /* 1570 */ 815, 815, 815, 815, 815, 94, 815, 399, 815, 815,
465 /* 1580 */ 815, 252, 815, 815, 815, 815, 815, 815, 170, 815,
466 /* 1590 */ 815, 515, 815, 815, 512, 517, 516, 514, 513, 815,
467 /* 1600 */ 323, 815, 223, 219, 218, 216, 815, 339, 135, 815,
468 /* 1610 */ 815, 476, 150, 815, 815, 450, 145, 467, 157, 199,
469 /* 1620 */ 198, 149, 191, 272, 271, 269, 267, 189, 462, 815,
470 /* 1630 */ 815, 815, 815, 352, 815, 340, 345, 109, 102, 815,
471 /* 1640 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 94,
472 /* 1650 */ 815, 399, 815, 815, 815, 252, 815, 815, 815, 815,
473 /* 1660 */ 815, 815, 170, 815, 815, 515, 815, 815, 512, 517,
474 /* 1670 */ 516, 514, 513, 815, 322, 815, 223, 219, 218, 216,
475 /* 1680 */ 815, 339, 135, 815, 815, 476, 150, 815, 815, 450,
476 /* 1690 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
477 /* 1700 */ 267, 189, 462, 352, 815, 340, 345, 109, 102, 815,
478 /* 1710 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 94,
479 /* 1720 */ 815, 399, 815, 815, 815, 252, 815, 815, 815, 815,
480 /* 1730 */ 815, 815, 170, 525, 815, 515, 815, 815, 512, 517,
481 /* 1740 */ 516, 514, 513, 815, 321, 815, 223, 219, 218, 216,
482 /* 1750 */ 815, 339, 135, 815, 815, 476, 150, 815, 815, 450,
483 /* 1760 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
484 /* 1770 */ 267, 189, 462, 815, 815, 815, 815, 97, 405, 815,
485 /* 1780 */ 205, 298, 815, 815, 815, 407, 815, 815, 815, 410,
486 /* 1790 */ 815, 815, 411, 409, 408, 406, 404, 403, 815, 815,
487 /* 1800 */ 249, 815, 815, 511, 510, 509, 508, 507, 506, 505,
488 /* 1810 */ 504, 503, 502, 501, 500, 499, 498, 497, 496, 295,
489 /* 1820 */ 294, 293, 282, 815, 278, 86, 85, 815, 815, 815,
490 /* 1830 */ 815, 83, 84, 90, 91, 815, 815, 519, 47, 815,
491 /* 1840 */ 815, 815, 815, 815, 143, 815, 815, 86, 85, 815,
492 /* 1850 */ 815, 815, 815, 83, 84, 90, 91, 815, 815, 815,
493 /* 1860 */ 47, 444, 815, 815, 815, 815, 143, 815, 511, 510,
494 /* 1870 */ 509, 508, 507, 506, 505, 504, 503, 502, 501, 500,
495 /* 1880 */ 499, 498, 497, 496, 295, 294, 293, 282, 482, 278,
496 /* 1890 */ 511, 510, 509, 508, 507, 506, 505, 504, 503, 502,
497 /* 1900 */ 501, 500, 499, 498, 497, 496, 295, 294, 293, 282,
498 /* 1910 */ 482, 278, 815, 815, 815, 86, 85, 481, 480, 479,
499 /* 1920 */ 478, 83, 84, 90, 91, 815, 815, 815, 47, 815,
500 /* 1930 */ 815, 342, 815, 815, 143, 815, 815, 86, 85, 481,
501 /* 1940 */ 480, 479, 478, 83, 84, 90, 91, 815, 815, 815,
502 /* 1950 */ 47, 815, 815, 34, 815, 815, 143, 815, 511, 510,
503 /* 1960 */ 509, 508, 507, 506, 505, 504, 503, 502, 501, 500,
504 /* 1970 */ 499, 498, 497, 496, 295, 294, 293, 282, 482, 278,
505 /* 1980 */ 511, 510, 509, 508, 507, 506, 505, 504, 503, 502,
506 /* 1990 */ 501, 500, 499, 498, 497, 496, 295, 294, 293, 282,
507 /* 2000 */ 482, 278, 815, 815, 815, 86, 85, 481, 480, 479,
508 /* 2010 */ 478, 83, 84, 90, 91, 815, 815, 815, 47, 16,
509 /* 2020 */ 815, 815, 815, 815, 143, 815, 815, 86, 85, 481,
510 /* 2030 */ 480, 479, 478, 83, 84, 90, 91, 815, 815, 815,
511 /* 2040 */ 47, 15, 815, 815, 815, 815, 143, 815, 511, 510,
512 /* 2050 */ 509, 508, 507, 506, 505, 504, 503, 502, 501, 500,
513 /* 2060 */ 499, 498, 497, 496, 295, 294, 293, 282, 482, 278,
514 /* 2070 */ 511, 510, 509, 508, 507, 506, 505, 504, 503, 502,
515 /* 2080 */ 501, 500, 499, 498, 497, 496, 295, 294, 293, 282,
516 /* 2090 */ 482, 278, 815, 815, 815, 86, 85, 481, 480, 479,
517 /* 2100 */ 478, 83, 84, 90, 91, 815, 815, 815, 47, 815,
518 /* 2110 */ 815, 32, 815, 815, 143, 815, 815, 86, 85, 481,
519 /* 2120 */ 480, 479, 478, 83, 84, 90, 91, 815, 815, 815,
520 /* 2130 */ 47, 13, 815, 815, 815, 815, 143, 815, 511, 510,
521 /* 2140 */ 509, 508, 507, 506, 505, 504, 503, 502, 501, 500,
522 /* 2150 */ 499, 498, 497, 496, 295, 294, 293, 282, 482, 278,
523 /* 2160 */ 511, 510, 509, 508, 507, 506, 505, 504, 503, 502,
524 /* 2170 */ 501, 500, 499, 498, 497, 496, 295, 294, 293, 282,
525 /* 2180 */ 482, 278, 815, 815, 815, 86, 85, 481, 480, 479,
526 /* 2190 */ 478, 83, 84, 90, 91, 815, 815, 815, 47, 11,
527 /* 2200 */ 815, 815, 815, 815, 143, 815, 815, 86, 85, 481,
528 /* 2210 */ 480, 479, 478, 83, 84, 90, 91, 815, 815, 815,
529 /* 2220 */ 47, 815, 815, 28, 815, 815, 143, 815, 511, 510,
530 /* 2230 */ 509, 508, 507, 506, 505, 504, 503, 502, 501, 500,
531 /* 2240 */ 499, 498, 497, 496, 295, 294, 293, 282, 482, 278,
532 /* 2250 */ 511, 510, 509, 508, 507, 506, 505, 504, 503, 502,
533 /* 2260 */ 501, 500, 499, 498, 497, 496, 295, 294, 293, 282,
534 /* 2270 */ 482, 278, 815, 815, 815, 86, 85, 481, 480, 479,
535 /* 2280 */ 478, 83, 84, 90, 91, 815, 815, 815, 47, 8,
536 /* 2290 */ 815, 815, 815, 815, 143, 815, 815, 86, 85, 481,
537 /* 2300 */ 480, 479, 478, 83, 84, 90, 91, 815, 815, 815,
538 /* 2310 */ 47, 7, 815, 815, 815, 815, 143, 815, 511, 510,
539 /* 2320 */ 509, 508, 507, 506, 505, 504, 503, 502, 501, 500,
540 /* 2330 */ 499, 498, 497, 496, 295, 294, 293, 282, 482, 278,
541 /* 2340 */ 511, 510, 509, 508, 507, 506, 505, 504, 503, 502,
542 /* 2350 */ 501, 500, 499, 498, 497, 496, 295, 294, 293, 282,
543 /* 2360 */ 482, 278, 815, 815, 815, 86, 85, 481, 480, 479,
544 /* 2370 */ 478, 83, 84, 90, 91, 815, 815, 815, 47, 815,
545 /* 2380 */ 815, 815, 815, 815, 143, 815, 815, 815, 815, 481,
546 /* 2390 */ 480, 479, 478, 815, 815, 815, 815, 815, 815, 815,
547 /* 2400 */ 815, 815, 815, 26, 815, 815, 815, 815, 511, 510,
548 /* 2410 */ 509, 508, 507, 506, 505, 504, 503, 502, 501, 500,
549 /* 2420 */ 499, 498, 497, 496, 295, 294, 293, 282, 482, 278,
550 /* 2430 */ 815, 86, 85, 815, 121, 815, 815, 83, 84, 90,
551 /* 2440 */ 91, 815, 815, 96, 47, 815, 815, 815, 815, 815,
552 /* 2450 */ 143, 815, 92, 386, 387, 815, 815, 481, 480, 479,
553 /* 2460 */ 478, 515, 815, 815, 512, 517, 516, 514, 513, 25,
554 /* 2470 */ 815, 815, 815, 815, 511, 510, 509, 508, 507, 506,
555 /* 2480 */ 505, 504, 503, 502, 501, 500, 499, 498, 497, 496,
556 /* 2490 */ 295, 294, 293, 282, 482, 278, 815, 86, 85, 815,
557 /* 2500 */ 815, 815, 815, 83, 84, 90, 91, 815, 815, 815,
558 /* 2510 */ 45, 815, 815, 815, 815, 815, 143, 815, 815, 815,
559 /* 2520 */ 815, 815, 815, 481, 480, 479, 478, 59, 55, 54,
560 /* 2530 */ 58, 57, 56, 53, 52, 51, 49, 50, 815, 815,
561 /* 2540 */ 511, 510, 509, 508, 507, 506, 505, 504, 503, 502,
562 /* 2550 */ 501, 500, 499, 498, 497, 496, 295, 294, 293, 282,
563 /* 2560 */ 482, 278, 815, 815, 815, 815, 815, 815, 86, 85,
564 /* 2570 */ 815, 208, 815, 815, 83, 84, 90, 91, 314, 98,
565 /* 2580 */ 815, 47, 815, 815, 815, 815, 815, 143, 815, 481,
566 /* 2590 */ 480, 479, 478, 815, 815, 815, 815, 815, 515, 815,
567 /* 2600 */ 815, 512, 517, 516, 514, 513, 815, 815, 815, 815,
568 /* 2610 */ 815, 511, 510, 509, 508, 507, 506, 505, 504, 503,
569 /* 2620 */ 502, 501, 500, 499, 498, 497, 496, 295, 294, 293,
570 /* 2630 */ 282, 482, 278, 815, 378, 245, 376, 375, 374, 373,
571 /* 2640 */ 815, 815, 815, 815, 815, 815, 178, 238, 815, 237,
572 /* 2650 */ 815, 236, 235, 233, 231, 229, 815, 227, 225, 815,
573 /* 2660 */ 481, 480, 479, 478, 97, 405, 815, 205, 298, 815,
574 /* 2670 */ 815, 815, 407, 815, 815, 815, 410, 815, 815, 411,
575 /* 2680 */ 409, 408, 406, 404, 403, 815, 815, 249, 815, 815,
576 /* 2690 */ 511, 510, 509, 508, 507, 506, 505, 504, 503, 502,
577 /* 2700 */ 501, 500, 499, 498, 497, 496, 295, 294, 293, 282,
578 /* 2710 */ 405, 278, 815, 815, 815, 815, 815, 407, 815, 815,
579 /* 2720 */ 815, 410, 815, 815, 411, 409, 408, 406, 404, 403,
580 /* 2730 */ 815, 815, 815, 815, 815, 511, 510, 509, 508, 507,
581 /* 2740 */ 506, 505, 504, 503, 502, 501, 500, 499, 498, 497,
582 /* 2750 */ 496, 295, 294, 293, 282, 30, 278, 815, 815, 111,
583 /* 2760 */ 102, 815, 815, 815, 815, 815, 815, 815, 815, 121,
584 /* 2770 */ 815, 94, 815, 399, 815, 815, 815, 252, 96, 815,
585 /* 2780 */ 815, 815, 815, 815, 168, 815, 815, 515, 392, 387,
586 /* 2790 */ 512, 517, 516, 514, 513, 815, 515, 815, 815, 512,
587 /* 2800 */ 517, 516, 514, 513, 815, 815, 815, 476, 150, 815,
588 /* 2810 */ 815, 450, 145, 467, 157, 199, 198, 149, 191, 272,
589 /* 2820 */ 271, 269, 267, 189, 462, 815, 398, 397, 396, 395,
590 /* 2830 */ 394, 815, 815, 815, 815, 815, 815, 815, 393, 815,
591 /* 2840 */ 815, 815, 511, 510, 509, 508, 507, 506, 505, 504,
592 /* 2850 */ 503, 502, 501, 500, 499, 498, 497, 496, 295, 294,
593 /* 2860 */ 293, 282, 815, 278, 815, 815, 398, 397, 396, 395,
594 /* 2870 */ 394, 815, 815, 815, 815, 815, 815, 815, 815, 815,
595 /* 2880 */ 815, 815, 511, 510, 509, 508, 507, 506, 505, 504,
596 /* 2890 */ 503, 502, 501, 500, 499, 498, 497, 496, 295, 294,
597 /* 2900 */ 293, 282, 315, 278, 207, 304, 206, 302, 815, 815,
598 /* 2910 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
599 /* 2920 */ 815, 815, 815, 815, 815, 511, 510, 509, 508, 507,
600 /* 2930 */ 506, 505, 504, 503, 502, 501, 500, 499, 498, 497,
601 /* 2940 */ 496, 295, 294, 293, 282, 815, 278, 207, 304, 206,
602 /* 2950 */ 302, 815, 815, 815, 815, 815, 815, 815, 815, 815,
603 /* 2960 */ 815, 815, 815, 815, 815, 815, 815, 815, 511, 510,
604 /* 2970 */ 509, 508, 507, 506, 505, 504, 503, 502, 501, 500,
605 /* 2980 */ 499, 498, 497, 496, 295, 294, 293, 282, 142, 278,
606 /* 2990 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
607 /* 3000 */ 208, 815, 815, 815, 815, 211, 210, 301, 98, 815,
608 /* 3010 */ 815, 815, 424, 815, 815, 515, 815, 425, 512, 517,
609 /* 3020 */ 516, 514, 513, 815, 815, 815, 815, 515, 815, 142,
610 /* 3030 */ 512, 517, 516, 514, 513, 476, 150, 815, 815, 450,
611 /* 3040 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
612 /* 3050 */ 267, 189, 462, 254, 815, 815, 515, 182, 815, 512,
613 /* 3060 */ 517, 516, 514, 513, 815, 815, 815, 815, 815, 815,
614 /* 3070 */ 142, 815, 815, 815, 815, 815, 476, 150, 815, 815,
615 /* 3080 */ 450, 145, 467, 157, 199, 198, 149, 191, 272, 271,
616 /* 3090 */ 269, 267, 189, 462, 254, 815, 815, 515, 183, 815,
617 /* 3100 */ 512, 517, 516, 514, 513, 815, 815, 815, 815, 815,
618 /* 3110 */ 815, 142, 815, 815, 815, 815, 815, 476, 150, 815,
619 /* 3120 */ 815, 450, 145, 467, 157, 199, 198, 149, 191, 272,
620 /* 3130 */ 271, 269, 267, 189, 462, 254, 815, 815, 515, 427,
621 /* 3140 */ 815, 512, 517, 516, 514, 513, 815, 815, 815, 815,
622 /* 3150 */ 815, 815, 127, 815, 815, 815, 815, 815, 476, 150,
623 /* 3160 */ 815, 815, 450, 145, 467, 157, 199, 198, 149, 191,
624 /* 3170 */ 272, 271, 269, 267, 189, 462, 201, 815, 815, 515,
625 /* 3180 */ 815, 815, 512, 517, 516, 514, 513, 815, 815, 815,
626 /* 3190 */ 815, 815, 815, 142, 815, 815, 815, 815, 815, 476,
627 /* 3200 */ 150, 815, 815, 450, 145, 467, 157, 199, 198, 149,
628 /* 3210 */ 191, 272, 271, 269, 267, 189, 462, 200, 815, 815,
629 /* 3220 */ 515, 815, 815, 512, 517, 516, 514, 513, 815, 815,
630 /* 3230 */ 815, 815, 815, 815, 142, 815, 815, 815, 815, 815,
631 /* 3240 */ 476, 150, 815, 815, 450, 145, 467, 157, 199, 198,
632 /* 3250 */ 149, 191, 272, 271, 269, 267, 189, 462, 201, 815,
633 /* 3260 */ 815, 515, 815, 815, 512, 517, 516, 514, 513, 815,
634 /* 3270 */ 815, 815, 815, 815, 815, 142, 815, 815, 815, 815,
635 /* 3280 */ 815, 476, 150, 815, 815, 450, 145, 467, 157, 199,
636 /* 3290 */ 198, 149, 191, 272, 271, 269, 267, 189, 462, 175,
637 /* 3300 */ 815, 815, 515, 815, 815, 512, 517, 516, 514, 513,
638 /* 3310 */ 815, 815, 815, 815, 815, 815, 142, 815, 815, 815,
639 /* 3320 */ 815, 815, 476, 150, 815, 815, 450, 145, 467, 157,
640 /* 3330 */ 199, 198, 149, 191, 272, 271, 269, 267, 189, 462,
641 /* 3340 */ 174, 815, 815, 515, 815, 815, 512, 517, 516, 514,
642 /* 3350 */ 513, 815, 815, 815, 815, 815, 815, 142, 815, 815,
643 /* 3360 */ 815, 815, 815, 476, 150, 815, 815, 450, 145, 467,
644 /* 3370 */ 157, 199, 198, 149, 191, 272, 271, 269, 267, 189,
645 /* 3380 */ 462, 173, 815, 815, 515, 815, 815, 512, 517, 516,
646 /* 3390 */ 514, 513, 815, 815, 815, 815, 815, 815, 142, 815,
647 /* 3400 */ 815, 815, 815, 815, 476, 150, 815, 815, 450, 145,
648 /* 3410 */ 467, 157, 199, 198, 149, 191, 272, 271, 269, 267,
649 /* 3420 */ 189, 462, 172, 815, 815, 515, 815, 815, 512, 517,
650 /* 3430 */ 516, 514, 513, 815, 815, 815, 815, 815, 815, 142,
651 /* 3440 */ 815, 815, 815, 815, 815, 476, 150, 815, 815, 450,
652 /* 3450 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
653 /* 3460 */ 267, 189, 462, 171, 815, 815, 515, 815, 815, 512,
654 /* 3470 */ 517, 516, 514, 513, 815, 815, 815, 815, 815, 815,
655 /* 3480 */ 142, 815, 815, 815, 815, 815, 476, 150, 815, 815,
656 /* 3490 */ 450, 145, 467, 157, 199, 198, 149, 191, 272, 271,
657 /* 3500 */ 269, 267, 189, 462, 202, 815, 815, 515, 815, 815,
658 /* 3510 */ 512, 517, 516, 514, 513, 815, 815, 815, 815, 815,
659 /* 3520 */ 142, 815, 815, 815, 815, 815, 815, 476, 150, 815,
660 /* 3530 */ 815, 450, 145, 467, 157, 199, 198, 149, 191, 272,
661 /* 3540 */ 271, 269, 267, 189, 462, 815, 815, 515, 815, 815,
662 /* 3550 */ 512, 517, 516, 514, 513, 815, 815, 815, 815, 815,
663 /* 3560 */ 815, 142, 815, 815, 815, 815, 815, 476, 150, 815,
664 /* 3570 */ 187, 441, 145, 467, 157, 199, 198, 149, 191, 272,
665 /* 3580 */ 271, 269, 267, 189, 462, 169, 815, 815, 515, 815,
666 /* 3590 */ 815, 512, 517, 516, 514, 513, 815, 815, 815, 815,
667 /* 3600 */ 815, 815, 142, 815, 815, 815, 815, 815, 476, 150,
668 /* 3610 */ 815, 815, 450, 145, 467, 157, 199, 198, 149, 191,
669 /* 3620 */ 272, 271, 269, 267, 189, 462, 167, 815, 815, 515,
670 /* 3630 */ 815, 815, 512, 517, 516, 514, 513, 815, 815, 815,
671 /* 3640 */ 815, 815, 815, 142, 815, 815, 815, 815, 815, 476,
672 /* 3650 */ 150, 815, 815, 450, 145, 467, 157, 199, 198, 149,
673 /* 3660 */ 191, 272, 271, 269, 267, 189, 462, 166, 815, 815,
674 /* 3670 */ 515, 815, 815, 512, 517, 516, 514, 513, 815, 815,
675 /* 3680 */ 815, 815, 815, 815, 142, 815, 815, 815, 815, 815,
676 /* 3690 */ 476, 150, 815, 815, 450, 145, 467, 157, 199, 198,
677 /* 3700 */ 149, 191, 272, 271, 269, 267, 189, 462, 165, 815,
678 /* 3710 */ 815, 515, 815, 815, 512, 517, 516, 514, 513, 815,
679 /* 3720 */ 815, 815, 815, 815, 815, 142, 815, 815, 815, 815,
680 /* 3730 */ 815, 476, 150, 815, 815, 450, 145, 467, 157, 199,
681 /* 3740 */ 198, 149, 191, 272, 271, 269, 267, 189, 462, 163,
682 /* 3750 */ 815, 815, 515, 815, 815, 512, 517, 516, 514, 513,
683 /* 3760 */ 815, 815, 815, 815, 815, 815, 142, 815, 815, 815,
684 /* 3770 */ 815, 815, 476, 150, 815, 815, 450, 145, 467, 157,
685 /* 3780 */ 199, 198, 149, 191, 272, 271, 269, 267, 189, 462,
686 /* 3790 */ 164, 815, 815, 515, 815, 815, 512, 517, 516, 514,
687 /* 3800 */ 513, 815, 815, 815, 815, 815, 815, 142, 815, 815,
688 /* 3810 */ 815, 815, 815, 476, 150, 815, 815, 450, 145, 467,
689 /* 3820 */ 157, 199, 198, 149, 191, 272, 271, 269, 267, 189,
690 /* 3830 */ 462, 162, 815, 815, 515, 815, 815, 512, 517, 516,
691 /* 3840 */ 514, 513, 815, 815, 815, 815, 815, 815, 142, 815,
692 /* 3850 */ 815, 815, 815, 815, 476, 150, 815, 815, 450, 145,
693 /* 3860 */ 467, 157, 199, 198, 149, 191, 272, 271, 269, 267,
694 /* 3870 */ 189, 462, 161, 815, 815, 515, 815, 815, 512, 517,
695 /* 3880 */ 516, 514, 513, 815, 815, 815, 815, 815, 815, 142,
696 /* 3890 */ 815, 815, 815, 815, 815, 476, 150, 815, 815, 450,
697 /* 3900 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
698 /* 3910 */ 267, 189, 462, 160, 815, 815, 515, 815, 815, 512,
699 /* 3920 */ 517, 516, 514, 513, 815, 815, 815, 815, 815, 815,
700 /* 3930 */ 142, 815, 815, 815, 815, 815, 476, 150, 815, 815,
701 /* 3940 */ 450, 145, 467, 157, 199, 198, 149, 191, 272, 271,
702 /* 3950 */ 269, 267, 189, 462, 159, 815, 815, 515, 815, 815,
703 /* 3960 */ 512, 517, 516, 514, 513, 815, 815, 815, 815, 815,
704 /* 3970 */ 142, 815, 815, 815, 815, 815, 815, 476, 150, 815,
705 /* 3980 */ 815, 450, 145, 467, 157, 199, 198, 149, 191, 272,
706 /* 3990 */ 271, 269, 267, 189, 462, 815, 815, 515, 815, 815,
707 /* 4000 */ 512, 517, 516, 514, 513, 815, 815, 815, 142, 815,
708 /* 4010 */ 815, 815, 815, 815, 815, 815, 815, 476, 150, 815,
709 /* 4020 */ 815, 440, 145, 467, 157, 199, 198, 149, 191, 272,
710 /* 4030 */ 271, 269, 267, 189, 462, 515, 815, 815, 512, 517,
711 /* 4040 */ 516, 514, 513, 815, 815, 815, 142, 815, 815, 815,
712 /* 4050 */ 815, 815, 815, 815, 815, 476, 150, 815, 815, 461,
713 /* 4060 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
714 /* 4070 */ 267, 189, 462, 515, 815, 815, 512, 517, 516, 514,
715 /* 4080 */ 513, 815, 815, 815, 142, 815, 815, 815, 815, 815,
716 /* 4090 */ 815, 815, 815, 476, 150, 815, 815, 460, 145, 467,
717 /* 4100 */ 157, 199, 198, 149, 191, 272, 271, 269, 267, 189,
718 /* 4110 */ 462, 515, 815, 815, 512, 517, 516, 514, 513, 815,
719 /* 4120 */ 815, 815, 142, 815, 815, 815, 815, 815, 815, 815,
720 /* 4130 */ 815, 476, 150, 815, 815, 459, 145, 467, 157, 199,
721 /* 4140 */ 198, 149, 191, 272, 271, 269, 267, 189, 462, 515,
722 /* 4150 */ 815, 815, 512, 517, 516, 514, 513, 815, 815, 815,
723 /* 4160 */ 142, 815, 815, 815, 815, 815, 815, 815, 815, 476,
724 /* 4170 */ 150, 815, 815, 458, 145, 467, 157, 199, 198, 149,
725 /* 4180 */ 191, 272, 271, 269, 267, 189, 462, 515, 815, 815,
726 /* 4190 */ 512, 517, 516, 514, 513, 815, 815, 815, 142, 815,
727 /* 4200 */ 815, 815, 815, 815, 815, 815, 815, 476, 150, 815,
728 /* 4210 */ 815, 457, 145, 467, 157, 199, 198, 149, 191, 272,
729 /* 4220 */ 271, 269, 267, 189, 462, 515, 815, 815, 512, 517,
730 /* 4230 */ 516, 514, 513, 815, 815, 815, 142, 815, 815, 815,
731 /* 4240 */ 815, 815, 815, 815, 815, 476, 150, 815, 815, 456,
732 /* 4250 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
733 /* 4260 */ 267, 189, 462, 515, 815, 815, 512, 517, 516, 514,
734 /* 4270 */ 513, 815, 815, 815, 142, 815, 815, 815, 815, 815,
735 /* 4280 */ 815, 815, 815, 476, 150, 815, 815, 455, 145, 467,
736 /* 4290 */ 157, 199, 198, 149, 191, 272, 271, 269, 267, 189,
737 /* 4300 */ 462, 515, 815, 815, 512, 517, 516, 514, 513, 815,
738 /* 4310 */ 815, 815, 142, 815, 815, 815, 815, 815, 815, 815,
739 /* 4320 */ 815, 476, 150, 815, 815, 454, 145, 467, 157, 199,
740 /* 4330 */ 198, 149, 191, 272, 271, 269, 267, 189, 462, 515,
741 /* 4340 */ 815, 815, 512, 517, 516, 514, 513, 815, 815, 815,
742 /* 4350 */ 142, 815, 815, 815, 815, 815, 815, 815, 815, 476,
743 /* 4360 */ 150, 815, 815, 453, 145, 467, 157, 199, 198, 149,
744 /* 4370 */ 191, 272, 271, 269, 267, 189, 462, 515, 815, 815,
745 /* 4380 */ 512, 517, 516, 514, 513, 815, 815, 815, 142, 815,
746 /* 4390 */ 815, 815, 815, 815, 815, 815, 815, 476, 150, 815,
747 /* 4400 */ 815, 452, 145, 467, 157, 199, 198, 149, 191, 272,
748 /* 4410 */ 271, 269, 267, 189, 462, 515, 815, 815, 512, 517,
749 /* 4420 */ 516, 514, 513, 815, 815, 815, 142, 815, 815, 815,
750 /* 4430 */ 815, 815, 815, 815, 815, 476, 150, 815, 815, 451,
751 /* 4440 */ 145, 467, 157, 199, 198, 149, 191, 272, 271, 269,
752 /* 4450 */ 267, 189, 462, 515, 815, 815, 512, 517, 516, 514,
753 /* 4460 */ 513, 815, 815, 815, 815, 815, 99, 815, 815, 815,
754 /* 4470 */ 815, 815, 815, 476, 150, 815, 815, 442, 145, 467,
755 /* 4480 */ 157, 199, 198, 149, 191, 272, 271, 269, 267, 189,
756 /* 4490 */ 462, 511, 510, 509, 508, 507, 506, 505, 504, 503,
757 /* 4500 */ 502, 501, 500, 499, 498, 497, 496, 295, 294, 293,
758 /* 4510 */ 282, 815, 278, 815, 205, 815, 815, 815, 815, 815,
759 /* 4520 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
760 /* 4530 */ 142, 815, 815, 815, 815, 815, 815, 511, 510, 509,
761 /* 4540 */ 508, 507, 506, 505, 504, 503, 502, 501, 500, 499,
762 /* 4550 */ 498, 497, 496, 295, 294, 293, 282, 515, 278, 815,
763 /* 4560 */ 512, 517, 516, 514, 513, 815, 815, 815, 815, 815,
764 /* 4570 */ 815, 815, 815, 815, 815, 815, 815, 476, 150, 815,
765 /* 4580 */ 815, 815, 468, 467, 157, 199, 198, 149, 191, 272,
766 /* 4590 */ 271, 269, 267, 189, 463, 815, 815, 815, 815, 815,
767 /* 4600 */ 815, 511, 510, 509, 508, 507, 506, 505, 504, 503,
768 /* 4610 */ 502, 501, 500, 499, 498, 497, 496, 295, 294, 293,
769 /* 4620 */ 282, 142, 278, 815, 814, 66, 297, 523, 128, 815,
770 /* 4630 */ 319, 108, 110, 815, 95, 129, 815, 815, 815, 815,
771 /* 4640 */ 815, 815, 815, 94, 815, 399, 815, 815, 515, 252,
772 /* 4650 */ 815, 512, 517, 516, 514, 513, 815, 815, 815, 515,
773 /* 4660 */ 815, 815, 512, 517, 516, 514, 513, 815, 476, 150,
774 /* 4670 */ 142, 815, 815, 468, 467, 157, 199, 198, 149, 191,
775 /* 4680 */ 272, 271, 269, 267, 188, 815, 815, 815, 815, 815,
776 /* 4690 */ 815, 815, 815, 815, 815, 815, 815, 515, 815, 815,
777 /* 4700 */ 512, 517, 516, 514, 513, 815, 815, 815, 815, 815,
778 /* 4710 */ 142, 815, 815, 815, 815, 815, 815, 476, 150, 815,
779 /* 4720 */ 116, 815, 468, 467, 157, 199, 198, 149, 191, 272,
780 /* 4730 */ 271, 269, 265, 412, 815, 815, 815, 515, 815, 815,
781 /* 4740 */ 512, 517, 516, 514, 513, 142, 815, 515, 815, 815,
782 /* 4750 */ 512, 517, 516, 514, 513, 815, 815, 476, 150, 815,
783 /* 4760 */ 815, 815, 468, 467, 157, 199, 198, 149, 191, 272,
784 /* 4770 */ 271, 266, 515, 815, 815, 512, 517, 516, 514, 513,
785 /* 4780 */ 815, 142, 815, 815, 815, 815, 815, 815, 815, 815,
786 /* 4790 */ 815, 815, 476, 150, 815, 815, 815, 468, 467, 157,
787 /* 4800 */ 199, 198, 149, 191, 272, 268, 815, 815, 515, 815,
788 /* 4810 */ 815, 512, 517, 516, 514, 513, 815, 815, 815, 815,
789 /* 4820 */ 815, 815, 815, 815, 815, 815, 815, 815, 476, 150,
790 /* 4830 */ 815, 815, 815, 468, 467, 157, 199, 198, 149, 191,
791 /* 4840 */ 270, 815, 815, 815, 524, 523, 128, 815, 319, 108,
792 /* 4850 */ 110, 815, 95, 129, 815, 815, 815, 815, 142, 815,
793 /* 4860 */ 815, 94, 815, 399, 815, 815, 815, 252, 815, 815,
794 /* 4870 */ 142, 815, 815, 815, 815, 815, 815, 515, 815, 815,
795 /* 4880 */ 512, 517, 516, 514, 513, 515, 815, 815, 512, 517,
796 /* 4890 */ 516, 514, 513, 815, 815, 815, 815, 515, 815, 815,
797 /* 4900 */ 512, 517, 516, 514, 513, 476, 150, 815, 142, 815,
798 /* 4910 */ 468, 467, 157, 199, 198, 149, 190, 476, 150, 815,
799 /* 4920 */ 815, 815, 468, 467, 157, 199, 198, 148, 815, 815,
800 /* 4930 */ 815, 815, 815, 815, 815, 515, 815, 815, 512, 517,
801 /* 4940 */ 516, 514, 513, 815, 142, 815, 815, 815, 815, 815,
802 /* 4950 */ 815, 815, 815, 815, 815, 476, 150, 815, 815, 815,
803 /* 4960 */ 468, 467, 157, 199, 198, 147, 815, 815, 815, 815,
804 /* 4970 */ 815, 515, 815, 815, 512, 517, 516, 514, 513, 142,
805 /* 4980 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
806 /* 4990 */ 815, 476, 150, 815, 815, 815, 468, 467, 157, 199,
807 /* 5000 */ 195, 815, 815, 815, 815, 815, 515, 815, 815, 512,
808 /* 5010 */ 517, 516, 514, 513, 142, 815, 815, 815, 815, 815,
809 /* 5020 */ 815, 815, 815, 815, 142, 815, 476, 150, 815, 815,
810 /* 5030 */ 815, 468, 467, 157, 199, 194, 815, 815, 815, 815,
811 /* 5040 */ 815, 515, 815, 815, 512, 517, 516, 514, 513, 815,
812 /* 5050 */ 815, 515, 815, 815, 512, 517, 516, 514, 513, 142,
813 /* 5060 */ 815, 476, 150, 815, 815, 815, 468, 467, 157, 199,
814 /* 5070 */ 193, 476, 150, 815, 815, 815, 468, 467, 157, 199,
815 /* 5080 */ 192, 815, 815, 815, 815, 815, 515, 815, 142, 512,
816 /* 5090 */ 517, 516, 514, 513, 815, 815, 815, 142, 815, 815,
817 /* 5100 */ 815, 815, 815, 815, 815, 815, 476, 150, 815, 815,
818 /* 5110 */ 815, 468, 467, 157, 197, 515, 815, 815, 512, 517,
819 /* 5120 */ 516, 514, 513, 815, 515, 142, 815, 512, 517, 516,
820 /* 5130 */ 514, 513, 815, 815, 815, 476, 150, 815, 815, 815,
821 /* 5140 */ 468, 467, 157, 196, 476, 150, 815, 815, 815, 468,
822 /* 5150 */ 467, 156, 515, 815, 815, 512, 517, 516, 514, 513,
823 /* 5160 */ 208, 815, 815, 815, 815, 203, 210, 301, 98, 815,
824 /* 5170 */ 815, 815, 476, 150, 142, 815, 815, 468, 467, 155,
825 /* 5180 */ 815, 815, 815, 815, 142, 815, 815, 515, 815, 815,
826 /* 5190 */ 512, 517, 516, 514, 513, 815, 815, 815, 815, 815,
827 /* 5200 */ 815, 515, 815, 815, 512, 517, 516, 514, 513, 815,
828 /* 5210 */ 815, 515, 142, 815, 512, 517, 516, 514, 513, 815,
829 /* 5220 */ 815, 476, 150, 142, 815, 815, 468, 472, 815, 815,
830 /* 5230 */ 815, 476, 150, 815, 815, 815, 468, 471, 815, 515,
831 /* 5240 */ 815, 815, 512, 517, 516, 514, 513, 142, 815, 815,
832 /* 5250 */ 515, 815, 815, 512, 517, 516, 514, 513, 142, 476,
833 /* 5260 */ 150, 815, 815, 815, 468, 470, 815, 815, 815, 815,
834 /* 5270 */ 476, 150, 815, 815, 515, 468, 469, 512, 517, 516,
835 /* 5280 */ 514, 513, 142, 815, 815, 515, 815, 815, 512, 517,
836 /* 5290 */ 516, 514, 513, 142, 476, 150, 815, 815, 815, 468,
837 /* 5300 */ 466, 815, 815, 815, 815, 476, 150, 815, 815, 515,
838 /* 5310 */ 468, 465, 512, 517, 516, 514, 513, 142, 815, 815,
839 /* 5320 */ 515, 815, 815, 512, 517, 516, 514, 513, 815, 476,
840 /* 5330 */ 150, 815, 815, 815, 468, 464, 815, 815, 815, 815,
841 /* 5340 */ 476, 150, 815, 815, 515, 468, 445, 512, 517, 516,
842 /* 5350 */ 514, 513, 815, 815, 142, 815, 815, 815, 815, 815,
843 /* 5360 */ 815, 815, 815, 815, 476, 150, 815, 815, 815, 449,
844 /* 5370 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
845 /* 5380 */ 815, 515, 815, 815, 512, 517, 516, 514, 513, 815,
846 /* 5390 */ 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
847 /* 5400 */ 815, 476, 150, 815, 815, 815, 473,
848 };
849 static const YYCODETYPE yy_lookahead[] = {
850 /* 0 */ 27, 28, 35, 36, 37, 38, 33, 34, 35, 36,
851 /* 10 */ 38, 38, 40, 40, 2, 142, 43, 44, 45, 46,
852 /* 20 */ 147, 148, 29, 30, 31, 52, 66, 154, 155, 56,
853 /* 30 */ 27, 28, 59, 60, 61, 62, 63, 64, 65, 66,
854 /* 40 */ 67, 83, 1, 70, 71, 72, 73, 74, 75, 76,
855 /* 50 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
856 /* 60 */ 87, 88, 89, 90, 91, 53, 54, 55, 56, 57,
857 /* 70 */ 58, 98, 99, 100, 101, 102, 103, 117, 118, 106,
858 /* 80 */ 39, 108, 21, 22, 23, 24, 38, 114, 83, 133,
859 /* 90 */ 27, 28, 119, 120, 121, 122, 33, 34, 35, 36,
860 /* 100 */ 144, 38, 146, 40, 2, 142, 43, 44, 45, 46,
861 /* 110 */ 108, 148, 19, 20, 148, 52, 114, 154, 155, 56,
862 /* 120 */ 154, 155, 59, 60, 61, 62, 63, 64, 65, 66,
863 /* 130 */ 67, 25, 26, 70, 71, 72, 73, 74, 75, 76,
864 /* 140 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
865 /* 150 */ 87, 88, 89, 90, 91, 21, 54, 55, 56, 57,
866 /* 160 */ 58, 98, 99, 100, 101, 102, 103, 101, 102, 106,
867 /* 170 */ 136, 108, 106, 101, 102, 141, 142, 114, 106, 133,
868 /* 180 */ 27, 28, 119, 120, 121, 122, 33, 34, 35, 36,
869 /* 190 */ 144, 38, 146, 40, 142, 148, 43, 44, 45, 46,
870 /* 200 */ 148, 154, 155, 23, 148, 52, 154, 155, 133, 56,
871 /* 210 */ 154, 155, 59, 60, 61, 62, 63, 64, 65, 144,
872 /* 220 */ 67, 146, 1, 70, 71, 72, 73, 74, 75, 76,
873 /* 230 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
874 /* 240 */ 87, 88, 89, 90, 91, 14, 46, 157, 158, 159,
875 /* 250 */ 23, 98, 99, 100, 101, 102, 103, 148, 1, 106,
876 /* 260 */ 132, 108, 41, 154, 155, 13, 14, 114, 68, 69,
877 /* 270 */ 27, 28, 119, 120, 121, 122, 33, 34, 35, 36,
878 /* 280 */ 152, 37, 1, 40, 53, 41, 43, 159, 45, 46,
879 /* 290 */ 162, 163, 164, 165, 166, 52, 101, 102, 133, 56,
880 /* 300 */ 43, 106, 59, 60, 61, 62, 63, 64, 1, 144,
881 /* 310 */ 67, 146, 1, 70, 71, 72, 73, 74, 75, 76,
882 /* 320 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
883 /* 330 */ 87, 88, 89, 90, 91, 68, 69, 127, 136, 129,
884 /* 340 */ 130, 131, 132, 141, 142, 1, 181, 66, 41, 1,
885 /* 350 */ 39, 39, 40, 143, 108, 145, 23, 23, 43, 149,
886 /* 360 */ 114, 46, 119, 120, 121, 122, 156, 1, 1, 159,
887 /* 370 */ 40, 41, 162, 163, 164, 165, 166, 167, 168, 1,
888 /* 380 */ 170, 171, 172, 173, 1, 175, 176, 43, 1, 179,
889 /* 390 */ 180, 43, 1, 183, 184, 185, 186, 187, 188, 189,
890 /* 400 */ 190, 191, 192, 193, 194, 195, 196, 127, 41, 129,
891 /* 410 */ 130, 131, 132, 79, 80, 81, 82, 83, 84, 85,
892 /* 420 */ 86, 87, 1, 143, 133, 145, 43, 43, 41, 149,
893 /* 430 */ 23, 53, 66, 23, 43, 40, 156, 146, 1, 159,
894 /* 440 */ 1, 46, 162, 163, 164, 165, 166, 167, 168, 65,
895 /* 450 */ 170, 171, 172, 173, 43, 175, 176, 46, 2, 179,
896 /* 460 */ 180, 2, 41, 183, 184, 185, 186, 187, 188, 189,
897 /* 470 */ 190, 191, 192, 193, 194, 195, 196, 21, 41, 83,
898 /* 480 */ 21, 127, 43, 129, 130, 131, 132, 79, 80, 81,
899 /* 490 */ 82, 83, 84, 85, 86, 87, 136, 143, 23, 145,
900 /* 500 */ 174, 23, 142, 149, 178, 117, 118, 147, 148, 53,
901 /* 510 */ 156, 83, 53, 159, 154, 155, 162, 163, 164, 165,
902 /* 520 */ 166, 167, 168, 23, 170, 171, 172, 173, 1, 175,
903 /* 530 */ 176, 1, 132, 179, 180, 135, 21, 183, 184, 185,
904 /* 540 */ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
905 /* 550 */ 196, 127, 133, 129, 130, 131, 132, 1, 1, 159,
906 /* 560 */ 1, 1, 162, 163, 164, 165, 166, 143, 23, 145,
907 /* 570 */ 43, 41, 153, 149, 79, 80, 81, 82, 83, 84,
908 /* 580 */ 156, 86, 87, 159, 1, 21, 162, 163, 164, 165,
909 /* 590 */ 166, 1, 168, 1, 170, 171, 172, 173, 41, 175,
910 /* 600 */ 176, 41, 43, 179, 180, 132, 1, 183, 184, 185,
911 /* 610 */ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
912 /* 620 */ 196, 2, 141, 142, 90, 127, 43, 129, 130, 131,
913 /* 630 */ 132, 41, 159, 41, 1, 162, 163, 164, 165, 166,
914 /* 640 */ 1, 143, 90, 145, 141, 142, 1, 149, 43, 158,
915 /* 650 */ 159, 90, 23, 18, 156, 17, 16, 159, 15, 46,
916 /* 660 */ 162, 163, 164, 165, 166, 40, 168, 46, 170, 171,
917 /* 670 */ 172, 173, 53, 175, 176, 132, 46, 179, 180, 69,
918 /* 680 */ 41, 183, 184, 185, 186, 187, 188, 189, 190, 191,
919 /* 690 */ 192, 193, 194, 195, 196, 127, 41, 129, 130, 131,
920 /* 700 */ 132, 40, 159, 46, 41, 162, 163, 164, 165, 166,
921 /* 710 */ 1, 143, 68, 145, 43, 65, 46, 149, 46, 46,
922 /* 720 */ 43, 43, 43, 40, 156, 41, 90, 159, 39, 41,
923 /* 730 */ 162, 163, 164, 165, 166, 39, 168, 90, 170, 171,
924 /* 740 */ 172, 173, 39, 175, 176, 39, 39, 179, 180, 132,
925 /* 750 */ 39, 183, 184, 185, 186, 187, 188, 189, 190, 191,
926 /* 760 */ 192, 193, 194, 195, 196, 39, 108, 108, 39, 127,
927 /* 770 */ 108, 129, 130, 131, 132, 39, 159, 108, 39, 162,
928 /* 780 */ 163, 164, 165, 166, 39, 143, 101, 145, 114, 114,
929 /* 790 */ 40, 149, 102, 40, 43, 40, 42, 40, 156, 65,
930 /* 800 */ 53, 159, 46, 40, 162, 163, 164, 165, 166, 41,
931 /* 810 */ 168, 1, 170, 171, 172, 173, 46, 175, 176, 46,
932 /* 820 */ 51, 179, 180, 49, 46, 183, 184, 185, 186, 187,
933 /* 830 */ 188, 189, 190, 191, 192, 193, 194, 195, 196, 127,
934 /* 840 */ 40, 129, 130, 131, 132, 41, 133, 46, 181, 40,
935 /* 850 */ 133, 53, 155, 154, 2, 143, 53, 145, 142, 136,
936 /* 860 */ 53, 149, 181, 177, 129, 40, 136, 65, 156, 142,
937 /* 870 */ 142, 159, 129, 142, 162, 163, 164, 165, 166, 142,
938 /* 880 */ 168, 159, 170, 171, 172, 173, 178, 175, 176, 169,
939 /* 890 */ 53, 179, 180, 46, 136, 183, 184, 185, 186, 187,
940 /* 900 */ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
941 /* 910 */ 197, 159, 197, 127, 197, 129, 130, 131, 132, 197,
942 /* 920 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 143,
943 /* 930 */ 197, 145, 197, 197, 197, 149, 197, 197, 197, 197,
944 /* 940 */ 197, 197, 156, 197, 197, 159, 197, 197, 162, 163,
945 /* 950 */ 164, 165, 166, 197, 168, 197, 170, 171, 172, 173,
946 /* 960 */ 197, 175, 176, 197, 197, 179, 180, 197, 197, 183,
947 /* 970 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
948 /* 980 */ 194, 195, 196, 127, 197, 129, 130, 131, 132, 197,
949 /* 990 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 143,
950 /* 1000 */ 197, 145, 197, 197, 197, 149, 197, 197, 197, 197,
951 /* 1010 */ 197, 197, 156, 197, 197, 159, 197, 197, 162, 163,
952 /* 1020 */ 164, 165, 166, 197, 168, 197, 170, 171, 172, 173,
953 /* 1030 */ 197, 175, 176, 197, 197, 179, 180, 197, 197, 183,
954 /* 1040 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
955 /* 1050 */ 194, 195, 196, 197, 197, 197, 197, 127, 197, 129,
956 /* 1060 */ 130, 131, 132, 197, 197, 197, 197, 197, 197, 197,
957 /* 1070 */ 197, 197, 197, 143, 197, 145, 197, 197, 197, 149,
958 /* 1080 */ 197, 197, 197, 197, 197, 197, 156, 197, 197, 159,
959 /* 1090 */ 197, 197, 162, 163, 164, 165, 166, 197, 168, 197,
960 /* 1100 */ 170, 171, 172, 173, 197, 175, 176, 197, 197, 179,
961 /* 1110 */ 180, 197, 197, 183, 184, 185, 186, 187, 188, 189,
962 /* 1120 */ 190, 191, 192, 193, 194, 195, 196, 127, 197, 129,
963 /* 1130 */ 130, 131, 132, 197, 197, 197, 197, 197, 197, 197,
964 /* 1140 */ 197, 197, 197, 143, 197, 145, 197, 197, 197, 149,
965 /* 1150 */ 197, 197, 197, 197, 197, 197, 156, 197, 197, 159,
966 /* 1160 */ 197, 197, 162, 163, 164, 165, 166, 197, 168, 197,
967 /* 1170 */ 170, 171, 172, 173, 197, 175, 176, 197, 197, 179,
968 /* 1180 */ 180, 197, 197, 183, 184, 185, 186, 187, 188, 189,
969 /* 1190 */ 190, 191, 192, 193, 194, 195, 196, 197, 197, 197,
970 /* 1200 */ 197, 127, 197, 129, 130, 131, 132, 197, 197, 197,
971 /* 1210 */ 197, 197, 197, 197, 197, 197, 197, 143, 197, 145,
972 /* 1220 */ 197, 197, 197, 149, 197, 197, 197, 197, 197, 197,
973 /* 1230 */ 156, 197, 197, 159, 197, 197, 162, 163, 164, 165,
974 /* 1240 */ 166, 197, 168, 197, 170, 171, 172, 173, 197, 175,
975 /* 1250 */ 176, 197, 197, 179, 180, 197, 197, 183, 184, 185,
976 /* 1260 */ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
977 /* 1270 */ 196, 127, 197, 129, 130, 131, 132, 197, 197, 197,
978 /* 1280 */ 197, 197, 197, 197, 197, 197, 197, 143, 197, 145,
979 /* 1290 */ 197, 197, 197, 149, 197, 197, 197, 197, 197, 197,
980 /* 1300 */ 156, 197, 197, 159, 197, 197, 162, 163, 164, 165,
981 /* 1310 */ 166, 197, 168, 197, 170, 171, 172, 173, 197, 175,
982 /* 1320 */ 176, 197, 197, 179, 180, 197, 197, 183, 184, 185,
983 /* 1330 */ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
984 /* 1340 */ 196, 197, 197, 197, 197, 127, 197, 129, 130, 131,
985 /* 1350 */ 132, 197, 197, 197, 197, 197, 197, 197, 197, 197,
986 /* 1360 */ 197, 143, 197, 145, 197, 197, 197, 149, 197, 197,
987 /* 1370 */ 197, 197, 197, 197, 156, 197, 197, 159, 197, 197,
988 /* 1380 */ 162, 163, 164, 165, 166, 197, 168, 197, 170, 171,
989 /* 1390 */ 172, 173, 197, 175, 176, 197, 197, 179, 180, 197,
990 /* 1400 */ 197, 183, 184, 185, 186, 187, 188, 189, 190, 191,
991 /* 1410 */ 192, 193, 194, 195, 196, 127, 197, 129, 130, 131,
992 /* 1420 */ 132, 197, 197, 197, 197, 197, 197, 197, 197, 197,
993 /* 1430 */ 197, 143, 197, 145, 197, 197, 197, 149, 197, 197,
994 /* 1440 */ 197, 197, 197, 197, 156, 197, 197, 159, 197, 197,
995 /* 1450 */ 162, 163, 164, 165, 166, 197, 168, 197, 170, 171,
996 /* 1460 */ 172, 173, 197, 175, 176, 197, 197, 179, 180, 197,
997 /* 1470 */ 197, 183, 184, 185, 186, 187, 188, 189, 190, 191,
998 /* 1480 */ 192, 193, 194, 195, 196, 197, 197, 197, 197, 127,
999 /* 1490 */ 197, 129, 130, 131, 132, 197, 197, 197, 197, 197,
1000 /* 1500 */ 197, 197, 197, 197, 197, 143, 197, 145, 197, 197,
1001 /* 1510 */ 197, 149, 197, 197, 197, 197, 197, 197, 156, 197,
1002 /* 1520 */ 197, 159, 197, 197, 162, 163, 164, 165, 166, 197,
1003 /* 1530 */ 168, 197, 170, 171, 172, 173, 197, 175, 176, 197,
1004 /* 1540 */ 197, 179, 180, 197, 197, 183, 184, 185, 186, 187,
1005 /* 1550 */ 188, 189, 190, 191, 192, 193, 194, 195, 196, 127,
1006 /* 1560 */ 197, 129, 130, 131, 132, 197, 197, 197, 197, 197,
1007 /* 1570 */ 197, 197, 197, 197, 197, 143, 197, 145, 197, 197,
1008 /* 1580 */ 197, 149, 197, 197, 197, 197, 197, 197, 156, 197,
1009 /* 1590 */ 197, 159, 197, 197, 162, 163, 164, 165, 166, 197,
1010 /* 1600 */ 168, 197, 170, 171, 172, 173, 197, 175, 176, 197,
1011 /* 1610 */ 197, 179, 180, 197, 197, 183, 184, 185, 186, 187,
1012 /* 1620 */ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
1013 /* 1630 */ 197, 197, 197, 127, 197, 129, 130, 131, 132, 197,
1014 /* 1640 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 143,
1015 /* 1650 */ 197, 145, 197, 197, 197, 149, 197, 197, 197, 197,
1016 /* 1660 */ 197, 197, 156, 197, 197, 159, 197, 197, 162, 163,
1017 /* 1670 */ 164, 165, 166, 197, 168, 197, 170, 171, 172, 173,
1018 /* 1680 */ 197, 175, 176, 197, 197, 179, 180, 197, 197, 183,
1019 /* 1690 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
1020 /* 1700 */ 194, 195, 196, 127, 197, 129, 130, 131, 132, 197,
1021 /* 1710 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 143,
1022 /* 1720 */ 197, 145, 197, 197, 197, 149, 197, 197, 197, 197,
1023 /* 1730 */ 197, 197, 156, 0, 197, 159, 197, 197, 162, 163,
1024 /* 1740 */ 164, 165, 166, 197, 168, 197, 170, 171, 172, 173,
1025 /* 1750 */ 197, 175, 176, 197, 197, 179, 180, 197, 197, 183,
1026 /* 1760 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
1027 /* 1770 */ 194, 195, 196, 197, 197, 197, 197, 44, 45, 197,
1028 /* 1780 */ 47, 48, 197, 197, 197, 52, 197, 197, 197, 56,
1029 /* 1790 */ 197, 197, 59, 60, 61, 62, 63, 64, 197, 197,
1030 /* 1800 */ 67, 197, 197, 70, 71, 72, 73, 74, 75, 76,
1031 /* 1810 */ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
1032 /* 1820 */ 87, 88, 89, 197, 91, 27, 28, 197, 197, 197,
1033 /* 1830 */ 197, 33, 34, 35, 36, 197, 197, 39, 40, 197,
1034 /* 1840 */ 197, 197, 197, 197, 46, 197, 197, 27, 28, 197,
1035 /* 1850 */ 197, 197, 197, 33, 34, 35, 36, 197, 197, 197,
1036 /* 1860 */ 40, 41, 197, 197, 197, 197, 46, 197, 70, 71,
1037 /* 1870 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
1038 /* 1880 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
1039 /* 1890 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1040 /* 1900 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
1041 /* 1910 */ 90, 91, 197, 197, 197, 27, 28, 119, 120, 121,
1042 /* 1920 */ 122, 33, 34, 35, 36, 197, 197, 197, 40, 197,
1043 /* 1930 */ 197, 43, 197, 197, 46, 197, 197, 27, 28, 119,
1044 /* 1940 */ 120, 121, 122, 33, 34, 35, 36, 197, 197, 197,
1045 /* 1950 */ 40, 197, 197, 43, 197, 197, 46, 197, 70, 71,
1046 /* 1960 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
1047 /* 1970 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
1048 /* 1980 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1049 /* 1990 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
1050 /* 2000 */ 90, 91, 197, 197, 197, 27, 28, 119, 120, 121,
1051 /* 2010 */ 122, 33, 34, 35, 36, 197, 197, 197, 40, 41,
1052 /* 2020 */ 197, 197, 197, 197, 46, 197, 197, 27, 28, 119,
1053 /* 2030 */ 120, 121, 122, 33, 34, 35, 36, 197, 197, 197,
1054 /* 2040 */ 40, 41, 197, 197, 197, 197, 46, 197, 70, 71,
1055 /* 2050 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
1056 /* 2060 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
1057 /* 2070 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1058 /* 2080 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
1059 /* 2090 */ 90, 91, 197, 197, 197, 27, 28, 119, 120, 121,
1060 /* 2100 */ 122, 33, 34, 35, 36, 197, 197, 197, 40, 197,
1061 /* 2110 */ 197, 43, 197, 197, 46, 197, 197, 27, 28, 119,
1062 /* 2120 */ 120, 121, 122, 33, 34, 35, 36, 197, 197, 197,
1063 /* 2130 */ 40, 41, 197, 197, 197, 197, 46, 197, 70, 71,
1064 /* 2140 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
1065 /* 2150 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
1066 /* 2160 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1067 /* 2170 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
1068 /* 2180 */ 90, 91, 197, 197, 197, 27, 28, 119, 120, 121,
1069 /* 2190 */ 122, 33, 34, 35, 36, 197, 197, 197, 40, 41,
1070 /* 2200 */ 197, 197, 197, 197, 46, 197, 197, 27, 28, 119,
1071 /* 2210 */ 120, 121, 122, 33, 34, 35, 36, 197, 197, 197,
1072 /* 2220 */ 40, 197, 197, 43, 197, 197, 46, 197, 70, 71,
1073 /* 2230 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
1074 /* 2240 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
1075 /* 2250 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1076 /* 2260 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
1077 /* 2270 */ 90, 91, 197, 197, 197, 27, 28, 119, 120, 121,
1078 /* 2280 */ 122, 33, 34, 35, 36, 197, 197, 197, 40, 41,
1079 /* 2290 */ 197, 197, 197, 197, 46, 197, 197, 27, 28, 119,
1080 /* 2300 */ 120, 121, 122, 33, 34, 35, 36, 197, 197, 197,
1081 /* 2310 */ 40, 41, 197, 197, 197, 197, 46, 197, 70, 71,
1082 /* 2320 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
1083 /* 2330 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
1084 /* 2340 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1085 /* 2350 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
1086 /* 2360 */ 90, 91, 197, 197, 197, 27, 28, 119, 120, 121,
1087 /* 2370 */ 122, 33, 34, 35, 36, 197, 197, 197, 40, 197,
1088 /* 2380 */ 197, 197, 197, 197, 46, 197, 197, 197, 197, 119,
1089 /* 2390 */ 120, 121, 122, 197, 197, 197, 197, 197, 197, 197,
1090 /* 2400 */ 197, 197, 197, 65, 197, 197, 197, 197, 70, 71,
1091 /* 2410 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
1092 /* 2420 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
1093 /* 2430 */ 197, 27, 28, 197, 132, 197, 197, 33, 34, 35,
1094 /* 2440 */ 36, 197, 197, 141, 40, 197, 197, 197, 197, 197,
1095 /* 2450 */ 46, 197, 150, 151, 152, 197, 197, 119, 120, 121,
1096 /* 2460 */ 122, 159, 197, 197, 162, 163, 164, 165, 166, 65,
1097 /* 2470 */ 197, 197, 197, 197, 70, 71, 72, 73, 74, 75,
1098 /* 2480 */ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
1099 /* 2490 */ 86, 87, 88, 89, 90, 91, 197, 27, 28, 197,
1100 /* 2500 */ 197, 197, 197, 33, 34, 35, 36, 197, 197, 197,
1101 /* 2510 */ 40, 197, 197, 197, 197, 197, 46, 197, 197, 197,
1102 /* 2520 */ 197, 197, 197, 119, 120, 121, 122, 2, 3, 4,
1103 /* 2530 */ 5, 6, 7, 8, 9, 10, 11, 12, 197, 197,
1104 /* 2540 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1105 /* 2550 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
1106 /* 2560 */ 90, 91, 197, 197, 197, 197, 197, 197, 27, 28,
1107 /* 2570 */ 197, 132, 197, 197, 33, 34, 35, 36, 139, 140,
1108 /* 2580 */ 197, 40, 197, 197, 197, 197, 197, 46, 197, 119,
1109 /* 2590 */ 120, 121, 122, 197, 197, 197, 197, 197, 159, 197,
1110 /* 2600 */ 197, 162, 163, 164, 165, 166, 197, 197, 197, 197,
1111 /* 2610 */ 197, 70, 71, 72, 73, 74, 75, 76, 77, 78,
1112 /* 2620 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
1113 /* 2630 */ 89, 90, 91, 197, 92, 93, 94, 95, 96, 97,
1114 /* 2640 */ 197, 197, 197, 197, 197, 197, 104, 105, 197, 107,
1115 /* 2650 */ 197, 109, 110, 111, 112, 113, 197, 115, 116, 197,
1116 /* 2660 */ 119, 120, 121, 122, 44, 45, 197, 47, 48, 197,
1117 /* 2670 */ 197, 197, 52, 197, 197, 197, 56, 197, 197, 59,
1118 /* 2680 */ 60, 61, 62, 63, 64, 197, 197, 67, 197, 197,
1119 /* 2690 */ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1120 /* 2700 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
1121 /* 2710 */ 45, 91, 197, 197, 197, 197, 197, 52, 197, 197,
1122 /* 2720 */ 197, 56, 197, 197, 59, 60, 61, 62, 63, 64,
1123 /* 2730 */ 197, 197, 197, 197, 197, 70, 71, 72, 73, 74,
1124 /* 2740 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1125 /* 2750 */ 85, 86, 87, 88, 89, 127, 91, 197, 197, 131,
1126 /* 2760 */ 132, 197, 197, 197, 197, 197, 197, 197, 197, 132,
1127 /* 2770 */ 197, 143, 197, 145, 197, 197, 197, 149, 141, 197,
1128 /* 2780 */ 197, 197, 197, 197, 156, 197, 197, 159, 151, 152,
1129 /* 2790 */ 162, 163, 164, 165, 166, 197, 159, 197, 197, 162,
1130 /* 2800 */ 163, 164, 165, 166, 197, 197, 197, 179, 180, 197,
1131 /* 2810 */ 197, 183, 184, 185, 186, 187, 188, 189, 190, 191,
1132 /* 2820 */ 192, 193, 194, 195, 196, 197, 54, 55, 56, 57,
1133 /* 2830 */ 58, 197, 197, 197, 197, 197, 197, 197, 66, 197,
1134 /* 2840 */ 197, 197, 70, 71, 72, 73, 74, 75, 76, 77,
1135 /* 2850 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
1136 /* 2860 */ 88, 89, 197, 91, 197, 197, 54, 55, 56, 57,
1137 /* 2870 */ 58, 197, 197, 197, 197, 197, 197, 197, 197, 197,
1138 /* 2880 */ 197, 197, 70, 71, 72, 73, 74, 75, 76, 77,
1139 /* 2890 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
1140 /* 2900 */ 88, 89, 47, 91, 49, 50, 51, 52, 197, 197,
1141 /* 2910 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
1142 /* 2920 */ 197, 197, 197, 197, 197, 70, 71, 72, 73, 74,
1143 /* 2930 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1144 /* 2940 */ 85, 86, 87, 88, 89, 197, 91, 49, 50, 51,
1145 /* 2950 */ 52, 197, 197, 197, 197, 197, 197, 197, 197, 197,
1146 /* 2960 */ 197, 197, 197, 197, 197, 197, 197, 197, 70, 71,
1147 /* 2970 */ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
1148 /* 2980 */ 82, 83, 84, 85, 86, 87, 88, 89, 132, 91,
1149 /* 2990 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
1150 /* 3000 */ 132, 197, 197, 197, 197, 137, 138, 139, 140, 197,
1151 /* 3010 */ 197, 197, 156, 197, 197, 159, 197, 161, 162, 163,
1152 /* 3020 */ 164, 165, 166, 197, 197, 197, 197, 159, 197, 132,
1153 /* 3030 */ 162, 163, 164, 165, 166, 179, 180, 197, 197, 183,
1154 /* 3040 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
1155 /* 3050 */ 194, 195, 196, 156, 197, 197, 159, 160, 197, 162,
1156 /* 3060 */ 163, 164, 165, 166, 197, 197, 197, 197, 197, 197,
1157 /* 3070 */ 132, 197, 197, 197, 197, 197, 179, 180, 197, 197,
1158 /* 3080 */ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
1159 /* 3090 */ 193, 194, 195, 196, 156, 197, 197, 159, 160, 197,
1160 /* 3100 */ 162, 163, 164, 165, 166, 197, 197, 197, 197, 197,
1161 /* 3110 */ 197, 132, 197, 197, 197, 197, 197, 179, 180, 197,
1162 /* 3120 */ 197, 183, 184, 185, 186, 187, 188, 189, 190, 191,
1163 /* 3130 */ 192, 193, 194, 195, 196, 156, 197, 197, 159, 160,
1164 /* 3140 */ 197, 162, 163, 164, 165, 166, 197, 197, 197, 197,
1165 /* 3150 */ 197, 197, 132, 197, 197, 197, 197, 197, 179, 180,
1166 /* 3160 */ 197, 197, 183, 184, 185, 186, 187, 188, 189, 190,
1167 /* 3170 */ 191, 192, 193, 194, 195, 196, 156, 197, 197, 159,
1168 /* 3180 */ 197, 197, 162, 163, 164, 165, 166, 197, 197, 197,
1169 /* 3190 */ 197, 197, 197, 132, 197, 197, 197, 197, 197, 179,
1170 /* 3200 */ 180, 197, 197, 183, 184, 185, 186, 187, 188, 189,
1171 /* 3210 */ 190, 191, 192, 193, 194, 195, 196, 156, 197, 197,
1172 /* 3220 */ 159, 197, 197, 162, 163, 164, 165, 166, 197, 197,
1173 /* 3230 */ 197, 197, 197, 197, 132, 197, 197, 197, 197, 197,
1174 /* 3240 */ 179, 180, 197, 197, 183, 184, 185, 186, 187, 188,
1175 /* 3250 */ 189, 190, 191, 192, 193, 194, 195, 196, 156, 197,
1176 /* 3260 */ 197, 159, 197, 197, 162, 163, 164, 165, 166, 197,
1177 /* 3270 */ 197, 197, 197, 197, 197, 132, 197, 197, 197, 197,
1178 /* 3280 */ 197, 179, 180, 197, 197, 183, 184, 185, 186, 187,
1179 /* 3290 */ 188, 189, 190, 191, 192, 193, 194, 195, 196, 156,
1180 /* 3300 */ 197, 197, 159, 197, 197, 162, 163, 164, 165, 166,
1181 /* 3310 */ 197, 197, 197, 197, 197, 197, 132, 197, 197, 197,
1182 /* 3320 */ 197, 197, 179, 180, 197, 197, 183, 184, 185, 186,
1183 /* 3330 */ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
1184 /* 3340 */ 156, 197, 197, 159, 197, 197, 162, 163, 164, 165,
1185 /* 3350 */ 166, 197, 197, 197, 197, 197, 197, 132, 197, 197,
1186 /* 3360 */ 197, 197, 197, 179, 180, 197, 197, 183, 184, 185,
1187 /* 3370 */ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
1188 /* 3380 */ 196, 156, 197, 197, 159, 197, 197, 162, 163, 164,
1189 /* 3390 */ 165, 166, 197, 197, 197, 197, 197, 197, 132, 197,
1190 /* 3400 */ 197, 197, 197, 197, 179, 180, 197, 197, 183, 184,
1191 /* 3410 */ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1192 /* 3420 */ 195, 196, 156, 197, 197, 159, 197, 197, 162, 163,
1193 /* 3430 */ 164, 165, 166, 197, 197, 197, 197, 197, 197, 132,
1194 /* 3440 */ 197, 197, 197, 197, 197, 179, 180, 197, 197, 183,
1195 /* 3450 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
1196 /* 3460 */ 194, 195, 196, 156, 197, 197, 159, 197, 197, 162,
1197 /* 3470 */ 163, 164, 165, 166, 197, 197, 197, 197, 197, 197,
1198 /* 3480 */ 132, 197, 197, 197, 197, 197, 179, 180, 197, 197,
1199 /* 3490 */ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
1200 /* 3500 */ 193, 194, 195, 196, 156, 197, 197, 159, 197, 197,
1201 /* 3510 */ 162, 163, 164, 165, 166, 197, 197, 197, 197, 197,
1202 /* 3520 */ 132, 197, 197, 197, 197, 197, 197, 179, 180, 197,
1203 /* 3530 */ 197, 183, 184, 185, 186, 187, 188, 189, 190, 191,
1204 /* 3540 */ 192, 193, 194, 195, 196, 197, 197, 159, 197, 197,
1205 /* 3550 */ 162, 163, 164, 165, 166, 197, 197, 197, 197, 197,
1206 /* 3560 */ 197, 132, 197, 197, 197, 197, 197, 179, 180, 197,
1207 /* 3570 */ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
1208 /* 3580 */ 192, 193, 194, 195, 196, 156, 197, 197, 159, 197,
1209 /* 3590 */ 197, 162, 163, 164, 165, 166, 197, 197, 197, 197,
1210 /* 3600 */ 197, 197, 132, 197, 197, 197, 197, 197, 179, 180,
1211 /* 3610 */ 197, 197, 183, 184, 185, 186, 187, 188, 189, 190,
1212 /* 3620 */ 191, 192, 193, 194, 195, 196, 156, 197, 197, 159,
1213 /* 3630 */ 197, 197, 162, 163, 164, 165, 166, 197, 197, 197,
1214 /* 3640 */ 197, 197, 197, 132, 197, 197, 197, 197, 197, 179,
1215 /* 3650 */ 180, 197, 197, 183, 184, 185, 186, 187, 188, 189,
1216 /* 3660 */ 190, 191, 192, 193, 194, 195, 196, 156, 197, 197,
1217 /* 3670 */ 159, 197, 197, 162, 163, 164, 165, 166, 197, 197,
1218 /* 3680 */ 197, 197, 197, 197, 132, 197, 197, 197, 197, 197,
1219 /* 3690 */ 179, 180, 197, 197, 183, 184, 185, 186, 187, 188,
1220 /* 3700 */ 189, 190, 191, 192, 193, 194, 195, 196, 156, 197,
1221 /* 3710 */ 197, 159, 197, 197, 162, 163, 164, 165, 166, 197,
1222 /* 3720 */ 197, 197, 197, 197, 197, 132, 197, 197, 197, 197,
1223 /* 3730 */ 197, 179, 180, 197, 197, 183, 184, 185, 186, 187,
1224 /* 3740 */ 188, 189, 190, 191, 192, 193, 194, 195, 196, 156,
1225 /* 3750 */ 197, 197, 159, 197, 197, 162, 163, 164, 165, 166,
1226 /* 3760 */ 197, 197, 197, 197, 197, 197, 132, 197, 197, 197,
1227 /* 3770 */ 197, 197, 179, 180, 197, 197, 183, 184, 185, 186,
1228 /* 3780 */ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
1229 /* 3790 */ 156, 197, 197, 159, 197, 197, 162, 163, 164, 165,
1230 /* 3800 */ 166, 197, 197, 197, 197, 197, 197, 132, 197, 197,
1231 /* 3810 */ 197, 197, 197, 179, 180, 197, 197, 183, 184, 185,
1232 /* 3820 */ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
1233 /* 3830 */ 196, 156, 197, 197, 159, 197, 197, 162, 163, 164,
1234 /* 3840 */ 165, 166, 197, 197, 197, 197, 197, 197, 132, 197,
1235 /* 3850 */ 197, 197, 197, 197, 179, 180, 197, 197, 183, 184,
1236 /* 3860 */ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1237 /* 3870 */ 195, 196, 156, 197, 197, 159, 197, 197, 162, 163,
1238 /* 3880 */ 164, 165, 166, 197, 197, 197, 197, 197, 197, 132,
1239 /* 3890 */ 197, 197, 197, 197, 197, 179, 180, 197, 197, 183,
1240 /* 3900 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
1241 /* 3910 */ 194, 195, 196, 156, 197, 197, 159, 197, 197, 162,
1242 /* 3920 */ 163, 164, 165, 166, 197, 197, 197, 197, 197, 197,
1243 /* 3930 */ 132, 197, 197, 197, 197, 197, 179, 180, 197, 197,
1244 /* 3940 */ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
1245 /* 3950 */ 193, 194, 195, 196, 156, 197, 197, 159, 197, 197,
1246 /* 3960 */ 162, 163, 164, 165, 166, 197, 197, 197, 197, 197,
1247 /* 3970 */ 132, 197, 197, 197, 197, 197, 197, 179, 180, 197,
1248 /* 3980 */ 197, 183, 184, 185, 186, 187, 188, 189, 190, 191,
1249 /* 3990 */ 192, 193, 194, 195, 196, 197, 197, 159, 197, 197,
1250 /* 4000 */ 162, 163, 164, 165, 166, 197, 197, 197, 132, 197,
1251 /* 4010 */ 197, 197, 197, 197, 197, 197, 197, 179, 180, 197,
1252 /* 4020 */ 197, 183, 184, 185, 186, 187, 188, 189, 190, 191,
1253 /* 4030 */ 192, 193, 194, 195, 196, 159, 197, 197, 162, 163,
1254 /* 4040 */ 164, 165, 166, 197, 197, 197, 132, 197, 197, 197,
1255 /* 4050 */ 197, 197, 197, 197, 197, 179, 180, 197, 197, 183,
1256 /* 4060 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
1257 /* 4070 */ 194, 195, 196, 159, 197, 197, 162, 163, 164, 165,
1258 /* 4080 */ 166, 197, 197, 197, 132, 197, 197, 197, 197, 197,
1259 /* 4090 */ 197, 197, 197, 179, 180, 197, 197, 183, 184, 185,
1260 /* 4100 */ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
1261 /* 4110 */ 196, 159, 197, 197, 162, 163, 164, 165, 166, 197,
1262 /* 4120 */ 197, 197, 132, 197, 197, 197, 197, 197, 197, 197,
1263 /* 4130 */ 197, 179, 180, 197, 197, 183, 184, 185, 186, 187,
1264 /* 4140 */ 188, 189, 190, 191, 192, 193, 194, 195, 196, 159,
1265 /* 4150 */ 197, 197, 162, 163, 164, 165, 166, 197, 197, 197,
1266 /* 4160 */ 132, 197, 197, 197, 197, 197, 197, 197, 197, 179,
1267 /* 4170 */ 180, 197, 197, 183, 184, 185, 186, 187, 188, 189,
1268 /* 4180 */ 190, 191, 192, 193, 194, 195, 196, 159, 197, 197,
1269 /* 4190 */ 162, 163, 164, 165, 166, 197, 197, 197, 132, 197,
1270 /* 4200 */ 197, 197, 197, 197, 197, 197, 197, 179, 180, 197,
1271 /* 4210 */ 197, 183, 184, 185, 186, 187, 188, 189, 190, 191,
1272 /* 4220 */ 192, 193, 194, 195, 196, 159, 197, 197, 162, 163,
1273 /* 4230 */ 164, 165, 166, 197, 197, 197, 132, 197, 197, 197,
1274 /* 4240 */ 197, 197, 197, 197, 197, 179, 180, 197, 197, 183,
1275 /* 4250 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
1276 /* 4260 */ 194, 195, 196, 159, 197, 197, 162, 163, 164, 165,
1277 /* 4270 */ 166, 197, 197, 197, 132, 197, 197, 197, 197, 197,
1278 /* 4280 */ 197, 197, 197, 179, 180, 197, 197, 183, 184, 185,
1279 /* 4290 */ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
1280 /* 4300 */ 196, 159, 197, 197, 162, 163, 164, 165, 166, 197,
1281 /* 4310 */ 197, 197, 132, 197, 197, 197, 197, 197, 197, 197,
1282 /* 4320 */ 197, 179, 180, 197, 197, 183, 184, 185, 186, 187,
1283 /* 4330 */ 188, 189, 190, 191, 192, 193, 194, 195, 196, 159,
1284 /* 4340 */ 197, 197, 162, 163, 164, 165, 166, 197, 197, 197,
1285 /* 4350 */ 132, 197, 197, 197, 197, 197, 197, 197, 197, 179,
1286 /* 4360 */ 180, 197, 197, 183, 184, 185, 186, 187, 188, 189,
1287 /* 4370 */ 190, 191, 192, 193, 194, 195, 196, 159, 197, 197,
1288 /* 4380 */ 162, 163, 164, 165, 166, 197, 197, 197, 132, 197,
1289 /* 4390 */ 197, 197, 197, 197, 197, 197, 197, 179, 180, 197,
1290 /* 4400 */ 197, 183, 184, 185, 186, 187, 188, 189, 190, 191,
1291 /* 4410 */ 192, 193, 194, 195, 196, 159, 197, 197, 162, 163,
1292 /* 4420 */ 164, 165, 166, 197, 197, 197, 132, 197, 197, 197,
1293 /* 4430 */ 197, 197, 197, 197, 197, 179, 180, 197, 197, 183,
1294 /* 4440 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
1295 /* 4450 */ 194, 195, 196, 159, 197, 197, 162, 163, 164, 165,
1296 /* 4460 */ 166, 197, 197, 197, 197, 197, 45, 197, 197, 197,
1297 /* 4470 */ 197, 197, 197, 179, 180, 197, 197, 183, 184, 185,
1298 /* 4480 */ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
1299 /* 4490 */ 196, 70, 71, 72, 73, 74, 75, 76, 77, 78,
1300 /* 4500 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
1301 /* 4510 */ 89, 197, 91, 197, 47, 197, 197, 197, 197, 197,
1302 /* 4520 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
1303 /* 4530 */ 132, 197, 197, 197, 197, 197, 197, 70, 71, 72,
1304 /* 4540 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
1305 /* 4550 */ 83, 84, 85, 86, 87, 88, 89, 159, 91, 197,
1306 /* 4560 */ 162, 163, 164, 165, 166, 197, 197, 197, 197, 197,
1307 /* 4570 */ 197, 197, 197, 197, 197, 197, 197, 179, 180, 197,
1308 /* 4580 */ 197, 197, 184, 185, 186, 187, 188, 189, 190, 191,
1309 /* 4590 */ 192, 193, 194, 195, 196, 197, 197, 197, 197, 197,
1310 /* 4600 */ 197, 70, 71, 72, 73, 74, 75, 76, 77, 78,
1311 /* 4610 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
1312 /* 4620 */ 89, 132, 91, 197, 124, 125, 126, 127, 128, 197,
1313 /* 4630 */ 130, 131, 132, 197, 134, 135, 197, 197, 197, 197,
1314 /* 4640 */ 197, 197, 197, 143, 197, 145, 197, 197, 159, 149,
1315 /* 4650 */ 197, 162, 163, 164, 165, 166, 197, 197, 197, 159,
1316 /* 4660 */ 197, 197, 162, 163, 164, 165, 166, 197, 179, 180,
1317 /* 4670 */ 132, 197, 197, 184, 185, 186, 187, 188, 189, 190,
1318 /* 4680 */ 191, 192, 193, 194, 195, 197, 197, 197, 197, 197,
1319 /* 4690 */ 197, 197, 197, 197, 197, 197, 197, 159, 197, 197,
1320 /* 4700 */ 162, 163, 164, 165, 166, 197, 197, 197, 197, 197,
1321 /* 4710 */ 132, 197, 197, 197, 197, 197, 197, 179, 180, 197,
1322 /* 4720 */ 132, 197, 184, 185, 186, 187, 188, 189, 190, 191,
1323 /* 4730 */ 192, 193, 194, 145, 197, 197, 197, 159, 197, 197,
1324 /* 4740 */ 162, 163, 164, 165, 166, 132, 197, 159, 197, 197,
1325 /* 4750 */ 162, 163, 164, 165, 166, 197, 197, 179, 180, 197,
1326 /* 4760 */ 197, 197, 184, 185, 186, 187, 188, 189, 190, 191,
1327 /* 4770 */ 192, 193, 159, 197, 197, 162, 163, 164, 165, 166,
1328 /* 4780 */ 197, 132, 197, 197, 197, 197, 197, 197, 197, 197,
1329 /* 4790 */ 197, 197, 179, 180, 197, 197, 197, 184, 185, 186,
1330 /* 4800 */ 187, 188, 189, 190, 191, 192, 197, 197, 159, 197,
1331 /* 4810 */ 197, 162, 163, 164, 165, 166, 197, 197, 197, 197,
1332 /* 4820 */ 197, 197, 197, 197, 197, 197, 197, 197, 179, 180,
1333 /* 4830 */ 197, 197, 197, 184, 185, 186, 187, 188, 189, 190,
1334 /* 4840 */ 191, 197, 197, 197, 126, 127, 128, 197, 130, 131,
1335 /* 4850 */ 132, 197, 134, 135, 197, 197, 197, 197, 132, 197,
1336 /* 4860 */ 197, 143, 197, 145, 197, 197, 197, 149, 197, 197,
1337 /* 4870 */ 132, 197, 197, 197, 197, 197, 197, 159, 197, 197,
1338 /* 4880 */ 162, 163, 164, 165, 166, 159, 197, 197, 162, 163,
1339 /* 4890 */ 164, 165, 166, 197, 197, 197, 197, 159, 197, 197,
1340 /* 4900 */ 162, 163, 164, 165, 166, 179, 180, 197, 132, 197,
1341 /* 4910 */ 184, 185, 186, 187, 188, 189, 190, 179, 180, 197,
1342 /* 4920 */ 197, 197, 184, 185, 186, 187, 188, 189, 197, 197,
1343 /* 4930 */ 197, 197, 197, 197, 197, 159, 197, 197, 162, 163,
1344 /* 4940 */ 164, 165, 166, 197, 132, 197, 197, 197, 197, 197,
1345 /* 4950 */ 197, 197, 197, 197, 197, 179, 180, 197, 197, 197,
1346 /* 4960 */ 184, 185, 186, 187, 188, 189, 197, 197, 197, 197,
1347 /* 4970 */ 197, 159, 197, 197, 162, 163, 164, 165, 166, 132,
1348 /* 4980 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
1349 /* 4990 */ 197, 179, 180, 197, 197, 197, 184, 185, 186, 187,
1350 /* 5000 */ 188, 197, 197, 197, 197, 197, 159, 197, 197, 162,
1351 /* 5010 */ 163, 164, 165, 166, 132, 197, 197, 197, 197, 197,
1352 /* 5020 */ 197, 197, 197, 197, 132, 197, 179, 180, 197, 197,
1353 /* 5030 */ 197, 184, 185, 186, 187, 188, 197, 197, 197, 197,
1354 /* 5040 */ 197, 159, 197, 197, 162, 163, 164, 165, 166, 197,
1355 /* 5050 */ 197, 159, 197, 197, 162, 163, 164, 165, 166, 132,
1356 /* 5060 */ 197, 179, 180, 197, 197, 197, 184, 185, 186, 187,
1357 /* 5070 */ 188, 179, 180, 197, 197, 197, 184, 185, 186, 187,
1358 /* 5080 */ 188, 197, 197, 197, 197, 197, 159, 197, 132, 162,
1359 /* 5090 */ 163, 164, 165, 166, 197, 197, 197, 132, 197, 197,
1360 /* 5100 */ 197, 197, 197, 197, 197, 197, 179, 180, 197, 197,
1361 /* 5110 */ 197, 184, 185, 186, 187, 159, 197, 197, 162, 163,
1362 /* 5120 */ 164, 165, 166, 197, 159, 132, 197, 162, 163, 164,
1363 /* 5130 */ 165, 166, 197, 197, 197, 179, 180, 197, 197, 197,
1364 /* 5140 */ 184, 185, 186, 187, 179, 180, 197, 197, 197, 184,
1365 /* 5150 */ 185, 186, 159, 197, 197, 162, 163, 164, 165, 166,
1366 /* 5160 */ 132, 197, 197, 197, 197, 137, 138, 139, 140, 197,
1367 /* 5170 */ 197, 197, 179, 180, 132, 197, 197, 184, 185, 186,
1368 /* 5180 */ 197, 197, 197, 197, 132, 197, 197, 159, 197, 197,
1369 /* 5190 */ 162, 163, 164, 165, 166, 197, 197, 197, 197, 197,
1370 /* 5200 */ 197, 159, 197, 197, 162, 163, 164, 165, 166, 197,
1371 /* 5210 */ 197, 159, 132, 197, 162, 163, 164, 165, 166, 197,
1372 /* 5220 */ 197, 179, 180, 132, 197, 197, 184, 185, 197, 197,
1373 /* 5230 */ 197, 179, 180, 197, 197, 197, 184, 185, 197, 159,
1374 /* 5240 */ 197, 197, 162, 163, 164, 165, 166, 132, 197, 197,
1375 /* 5250 */ 159, 197, 197, 162, 163, 164, 165, 166, 132, 179,
1376 /* 5260 */ 180, 197, 197, 197, 184, 185, 197, 197, 197, 197,
1377 /* 5270 */ 179, 180, 197, 197, 159, 184, 185, 162, 163, 164,
1378 /* 5280 */ 165, 166, 132, 197, 197, 159, 197, 197, 162, 163,
1379 /* 5290 */ 164, 165, 166, 132, 179, 180, 197, 197, 197, 184,
1380 /* 5300 */ 185, 197, 197, 197, 197, 179, 180, 197, 197, 159,
1381 /* 5310 */ 184, 185, 162, 163, 164, 165, 166, 132, 197, 197,
1382 /* 5320 */ 159, 197, 197, 162, 163, 164, 165, 166, 197, 179,
1383 /* 5330 */ 180, 197, 197, 197, 184, 185, 197, 197, 197, 197,
1384 /* 5340 */ 179, 180, 197, 197, 159, 184, 185, 162, 163, 164,
1385 /* 5350 */ 165, 166, 197, 197, 132, 197, 197, 197, 197, 197,
1386 /* 5360 */ 197, 197, 197, 197, 179, 180, 197, 197, 197, 184,
1387 /* 5370 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
1388 /* 5380 */ 197, 159, 197, 197, 162, 163, 164, 165, 166, 197,
1389 /* 5390 */ 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
1390 /* 5400 */ 197, 179, 180, 197, 197, 197, 184,
1391 };
1392 #define YY_SHIFT_USE_DFLT (-43)
1393 #define YY_SHIFT_COUNT (296)
1394 #define YY_SHIFT_MIN (-42)
1395 #define YY_SHIFT_MAX (4531)
1396 static const short yy_shift_ofst[] = {
1397 /* 0 */ 2620, 63, 153, 153, -27, 153, 153, 153, 153, 153,
1398 /* 10 */ 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
1399 /* 20 */ 153, 153, 153, 243, 2404, 2404, 2404, 2338, 2270, 2248,
1400 /* 30 */ 2180, 2158, 2090, 2068, 2000, 1978, 1910, 1888, 1820, 1798,
1401 /* 40 */ 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541,
1402 /* 50 */ 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541,
1403 /* 60 */ 2541, 2541, 2541, 2541, 2541, 2541, 1733, 2541, 2541, 2541,
1404 /* 70 */ 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2541,
1405 /* 80 */ 2541, 2541, 2541, 2541, 2541, 2541, 2541, 2855, 2855, 2812,
1406 /* 90 */ 2470, 2470, 2772, 2898, 2665, 4467, 4531, 4421, 4531, 4531,
1407 /* 100 */ 459, 456, 395, 619, 619, 408, 12, 12, 411, 315,
1408 /* 110 */ 847, 801, 837, 837, 837, 837, 801, 334, 102, 102,
1409 /* 120 */ 388, 801, 801, 2542, 408, 408, -40, 330, 384, 807,
1410 /* 130 */ 852, 852, 852, 852, 807, 825, 802, 807, 852, 803,
1411 /* 140 */ 798, 801, 809, 809, 801, 2525, 495, 61, 61, 61,
1412 /* 150 */ -33, 195, 72, 66, 200, -7, -7, -7, -28, 639,
1413 /* 160 */ 592, 605, 590, 559, 560, 557, 530, 583, 527, 439,
1414 /* 170 */ 391, 378, 437, 421, 387, 367, 246, 2, 312, 383,
1415 /* 180 */ 348, 344, 366, 281, 267, 244, 257, 307, 231, 252,
1416 /* 190 */ 93, 93, 106, 106, 106, 106, 3, 3, 106, 3,
1417 /* 200 */ 311, 221, 41, 804, 800, 778, 774, 769, 773, 770,
1418 /* 210 */ 810, 768, 763, 756, 747, 734, 757, 754, 755, 753,
1419 /* 220 */ 751, 750, 690, 685, 675, 745, 674, 739, 669, 736,
1420 /* 230 */ 662, 729, 659, 726, 658, 711, 707, 706, 703, 696,
1421 /* 240 */ 688, 647, 689, 684, 636, 683, 679, 678, 677, 673,
1422 /* 250 */ 672, 670, 650, 671, 709, 644, 610, 663, 657, 661,
1423 /* 260 */ 655, 630, 621, 625, 613, 643, 640, 643, 638, 640,
1424 /* 270 */ 635, 638, 635, 629, 561, 645, 552, 633, 564, 545,
1425 /* 280 */ 534, 556, 515, 500, 428, 478, 396, 475, 410, 407,
1426 /* 290 */ 333, 227, 180, 134, 5, -42, 48,
1427 };
1428 #define YY_REDUCE_USE_DFLT (-128)
1429 #define YY_REDUCE_COUNT (144)
1430 #define YY_REDUCE_MIN (-127)
1431 #define YY_REDUCE_MAX (5222)
1432 static const short yy_reduce_ofst[] = {
1433 /* 0 */ 4500, 354, 280, 210, 712, 712, 1576, 1506, 1432, 1362,
1434 /* 10 */ 1288, 1218, 1144, 1074, 1000, 930, 856, 786, 712, 642,
1435 /* 20 */ 568, 498, 424, 2628, 2979, 2938, 2897, 2856, 3798, 3757,
1436 /* 30 */ 3716, 3675, 3634, 3593, 3552, 3511, 3470, 3429, 3388, 3348,
1437 /* 40 */ 3307, 3266, 3225, 3184, 3143, 3102, 3061, 3020, 4294, 4256,
1438 /* 50 */ 4218, 4180, 4142, 4104, 4066, 4028, 3990, 3952, 3914, 3876,
1439 /* 60 */ 3838, 4398, 4489, 4538, 4578, 4613, 4718, 4649, 4726, 4776,
1440 /* 70 */ 4738, 4892, 4882, 4847, 4812, 4956, 4927, 4993, 4965, 5161,
1441 /* 80 */ 5150, 5126, 5115, 5091, 5080, 5052, 5042, 5028, 2868, 2302,
1442 /* 90 */ 5222, 5185, 2637, 2439, 4588, 400, 128, 617, 543, 473,
1443 /* 100 */ 360, -127, 165, 52, -37, 90, 202, 34, 46, 46,
1444 /* 110 */ 75, 46, 109, 56, 47, -34, -44, 491, 503, 481,
1445 /* 120 */ 326, 419, 291, 720, 752, 722, 708, 681, 743, 758,
1446 /* 130 */ 737, 731, 728, 727, 730, 686, 735, 723, 716, 699,
1447 /* 140 */ 697, 717, 681, 667, 713,
1448 };
1449 static const YYACTIONTYPE yy_default[] = {
1450 /* 0 */ 813, 813, 741, 739, 813, 740, 813, 813, 813, 813,
1451 /* 10 */ 813, 813, 813, 813, 813, 813, 813, 813, 738, 813,
1452 /* 20 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1453 /* 30 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1454 /* 40 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1455 /* 50 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1456 /* 60 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1457 /* 70 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1458 /* 80 */ 813, 813, 813, 813, 813, 813, 813, 544, 544, 813,
1459 /* 90 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1460 /* 100 */ 606, 598, 813, 602, 594, 813, 562, 554, 813, 813,
1461 /* 110 */ 813, 813, 604, 600, 596, 592, 813, 813, 558, 550,
1462 /* 120 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 538,
1463 /* 130 */ 560, 556, 552, 548, 536, 813, 813, 614, 813, 620,
1464 /* 140 */ 619, 813, 813, 742, 813, 767, 813, 786, 785, 784,
1465 /* 150 */ 760, 813, 813, 813, 813, 775, 774, 773, 623, 813,
1466 /* 160 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1467 /* 170 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1468 /* 180 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 797,
1469 /* 190 */ 788, 787, 783, 782, 781, 780, 778, 777, 779, 776,
1470 /* 200 */ 813, 813, 813, 813, 813, 813, 565, 563, 813, 813,
1471 /* 210 */ 543, 813, 813, 813, 813, 813, 813, 689, 813, 813,
1472 /* 220 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1473 /* 230 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1474 /* 240 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1475 /* 250 */ 813, 813, 813, 813, 631, 813, 813, 813, 813, 813,
1476 /* 260 */ 813, 813, 813, 813, 813, 796, 794, 795, 792, 793,
1477 /* 270 */ 790, 791, 789, 813, 813, 813, 813, 813, 813, 813,
1478 /* 280 */ 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1479 /* 290 */ 813, 813, 813, 813, 813, 813, 623, 526, 541, 537,
1480 /* 300 */ 540, 545, 568, 567, 564, 566, 561, 559, 557, 555,
1481 /* 310 */ 553, 551, 549, 547, 546, 542, 539, 535, 532, 531,
1482 /* 320 */ 736, 718, 717, 719, 716, 712, 711, 710, 709, 714,
1483 /* 330 */ 713, 715, 735, 730, 723, 708, 707, 703, 702, 698,
1484 /* 340 */ 697, 696, 695, 694, 693, 692, 673, 737, 691, 690,
1485 /* 350 */ 688, 687, 685, 734, 733, 729, 728, 727, 726, 731,
1486 /* 360 */ 725, 732, 724, 722, 706, 701, 721, 705, 700, 720,
1487 /* 370 */ 704, 699, 684, 680, 679, 678, 677, 676, 675, 683,
1488 /* 380 */ 682, 681, 674, 672, 671, 608, 609, 612, 615, 616,
1489 /* 390 */ 613, 611, 610, 607, 574, 573, 572, 571, 570, 578,
1490 /* 400 */ 686, 577, 576, 588, 587, 586, 585, 584, 583, 582,
1491 /* 410 */ 581, 580, 579, 589, 605, 603, 601, 599, 628, 630,
1492 /* 420 */ 629, 627, 597, 595, 636, 635, 634, 633, 632, 593,
1493 /* 430 */ 618, 617, 591, 626, 625, 624, 569, 590, 575, 534,
1494 /* 440 */ 812, 758, 759, 757, 756, 768, 755, 754, 753, 761,
1495 /* 450 */ 811, 810, 809, 808, 807, 806, 805, 804, 803, 802,
1496 /* 460 */ 801, 800, 799, 798, 772, 771, 770, 769, 767, 766,
1497 /* 470 */ 765, 764, 763, 762, 752, 750, 749, 748, 747, 746,
1498 /* 480 */ 745, 744, 743, 751, 670, 669, 668, 667, 666, 665,
1499 /* 490 */ 664, 663, 662, 661, 660, 659, 658, 657, 656, 655,
1500 /* 500 */ 654, 653, 652, 651, 650, 649, 648, 647, 646, 645,
1501 /* 510 */ 644, 643, 642, 641, 640, 639, 638, 637, 622, 621,
1502 /* 520 */ 533, 530, 529, 528, 527,
1503 };
1504
1505 /* The next table maps tokens into fallback tokens. If a construct
1506 ** like the following:
1507 **
1508 ** %fallback ID X Y Z.
1509 **
1510 ** appears in the grammar, then ID becomes a fallback token for X, Y,
1511 ** and Z. Whenever one of the tokens X, Y, or Z is input to the parser
1512 ** but it does not parse, the type of the token is changed to ID and
1513 ** the parse is retried before an error is thrown.
1514 */
1515 #ifdef YYFALLBACK
1516 static const YYCODETYPE yyFallback[] = {
1517 };
1518 #endif /* YYFALLBACK */
1519
1520 /* The following structure represents a single element of the
1521 ** parser's stack. Information stored includes:
1522 **
1523 ** + The state number for the parser at this level of the stack.
1524 **
1525 ** + The value of the token stored at this level of the stack.
1526 ** (In other words, the "major" token.)
1527 **
1528 ** + The semantic value stored at this level of the stack. This is
1529 ** the information used by the action routines in the grammar.
1530 ** It is sometimes called the "minor" token.
1531 */
1532 struct yyStackEntry {
1533 YYACTIONTYPE stateno; /* The state-number */
1534 YYCODETYPE major; /* The major token value. This is the code
1535 ** number for the token at this stack level */
1536 YYMINORTYPE minor; /* The user-supplied minor token value. This
1537 ** is the value of the token */
1538 };
1539 typedef struct yyStackEntry yyStackEntry;
1540
1541 /* The state of the parser is completely contained in an instance of
1542 ** the following structure */
1543 struct yyParser {
1544 int yyidx; /* Index of top element in stack */
1545 #ifdef YYTRACKMAXSTACKDEPTH
1546 int yyidxMax; /* Maximum value of yyidx */
1547 #endif
1548 int yyerrcnt; /* Shifts left before out of the error */
1549 ParseHLSLARG_SDECL /* A place to hold %extra_argument */
1550 #if YYSTACKDEPTH<=0
1551 int yystksz; /* Current side of the stack */
1552 yyStackEntry *yystack; /* The parser's stack */
1553 #else
1554 yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */
1555 #endif
1556 };
1557 typedef struct yyParser yyParser;
1558
1559 #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
1560 #include <stdio.h>
1561 static FILE *yyTraceFILE = 0;
1562 static char *yyTracePrompt = 0;
1563 #endif /* NDEBUG */
1564
1565 #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
1566 /*
1567 ** Turn parser tracing on by giving a stream to which to write the trace
1568 ** and a prompt to preface each trace message. Tracing is turned off
1569 ** by making either argument NULL
1570 **
1571 ** Inputs:
1572 ** <ul>
1573 ** <li> A FILE* to which trace output should be written.
1574 ** If NULL, then tracing is turned off.
1575 ** <li> A prefix string written at the beginning of every
1576 ** line of trace output. If NULL, then tracing is
1577 ** turned off.
1578 ** </ul>
1579 **
1580 ** Outputs:
1581 ** None.
1582 */
1583 #if __MOJOSHADER__
1584 static
1585 #endif
ParseHLSLTrace(FILE * TraceFILE,char * zTracePrompt)1586 void ParseHLSLTrace(FILE *TraceFILE, char *zTracePrompt){
1587 yyTraceFILE = TraceFILE;
1588 yyTracePrompt = zTracePrompt;
1589 if( yyTraceFILE==0 ) yyTracePrompt = 0;
1590 else if( yyTracePrompt==0 ) yyTraceFILE = 0;
1591 }
1592 #endif /* NDEBUG */
1593
1594 #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
1595 /* For tracing shifts, the names of all terminals and nonterminals
1596 ** are required. The following table supplies these names */
1597 static const char *const yyTokenName[] = {
1598 "$", "COMMA", "ASSIGN", "ADDASSIGN",
1599 "SUBASSIGN", "MULASSIGN", "DIVASSIGN", "MODASSIGN",
1600 "LSHIFTASSIGN", "RSHIFTASSIGN", "ANDASSIGN", "ORASSIGN",
1601 "XORASSIGN", "QUESTION", "OROR", "ANDAND",
1602 "OR", "XOR", "AND", "EQL",
1603 "NEQ", "LT", "LEQ", "GT",
1604 "GEQ", "LSHIFT", "RSHIFT", "PLUS",
1605 "MINUS", "STAR", "SLASH", "PERCENT",
1606 "TYPECAST", "EXCLAMATION", "COMPLEMENT", "MINUSMINUS",
1607 "PLUSPLUS", "DOT", "LBRACKET", "RBRACKET",
1608 "LPAREN", "RPAREN", "ELSE", "SEMICOLON",
1609 "TYPEDEF", "CONST", "IDENTIFIER", "VOID",
1610 "INLINE", "IN", "INOUT", "OUT",
1611 "UNIFORM", "COLON", "LINEAR", "CENTROID",
1612 "NOINTERPOLATION", "NOPERSPECTIVE", "SAMPLE", "EXTERN",
1613 "SHARED", "STATIC", "VOLATILE", "ROWMAJOR",
1614 "COLUMNMAJOR", "LBRACE", "RBRACE", "STRUCT",
1615 "PACKOFFSET", "REGISTER", "USERTYPE", "SAMPLER",
1616 "SAMPLER1D", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE",
1617 "SAMPLER_STATE", "SAMPLERSTATE", "SAMPLERCOMPARISONSTATE", "BOOL",
1618 "INT", "UINT", "HALF", "FLOAT",
1619 "DOUBLE", "STRING", "SNORM", "UNORM",
1620 "BUFFER", "VECTOR", "INT_CONSTANT", "MATRIX",
1621 "ISOLATE", "MAXINSTRUCTIONCOUNT", "NOEXPRESSIONOPTIMIZATIONS", "REMOVEUNUSEDINPUTS",
1622 "UNUSED", "XPS", "BREAK", "CONTINUE",
1623 "DISCARD", "DO", "WHILE", "RETURN",
1624 "UNROLL", "LOOP", "FOR", "BRANCH",
1625 "IF", "FLATTEN", "IFALL", "IFANY",
1626 "PREDICATE", "PREDICATEBLOCK", "SWITCH", "FORCECASE",
1627 "CALL", "CASE", "DEFAULT", "FLOAT_CONSTANT",
1628 "STRING_LITERAL", "TRUE", "FALSE", "error",
1629 "shader", "compilation_units", "compilation_unit", "variable_declaration",
1630 "function_signature", "statement_block", "typedef", "struct_declaration",
1631 "datatype", "scalar_or_array", "function_storageclass", "function_details",
1632 "semantic", "function_parameters", "function_parameter_list", "function_parameter",
1633 "input_modifier", "interpolation_mod", "initializer", "variable_attribute_list",
1634 "variable_declaration_details_list", "variable_attribute", "variable_declaration_details", "annotations",
1635 "variable_lowlevel", "struct_intro", "struct_member_list", "struct_member",
1636 "struct_member_details", "struct_member_item_list", "packoffset", "register",
1637 "expression", "annotation_list", "annotation", "datatype_scalar",
1638 "initializer_block_list", "initializer_block", "intrinsic_datatype", "datatype_vector",
1639 "datatype_matrix", "datatype_sampler", "datatype_buffer", "statement_list",
1640 "statement", "statement_attribute", "do_intro", "while_intro",
1641 "if_intro", "switch_intro", "switch_case_list", "for_statement",
1642 "for_intro", "for_details", "switch_case", "primary_expr",
1643 "postfix_expr", "arguments", "argument_list", "assignment_expr",
1644 "unary_expr", "cast_expr", "multiplicative_expr", "additive_expr",
1645 "shift_expr", "relational_expr", "equality_expr", "and_expr",
1646 "exclusive_or_expr", "inclusive_or_expr", "logical_and_expr", "logical_or_expr",
1647 "conditional_expr",
1648 };
1649 #endif /* NDEBUG */
1650
1651 #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
1652 /* For tracing reduce actions, the names of all rules are required.
1653 */
1654 static const char *const yyRuleName[] = {
1655 /* 0 */ "shader ::= compilation_units",
1656 /* 1 */ "compilation_units ::= compilation_unit",
1657 /* 2 */ "compilation_units ::= compilation_units compilation_unit",
1658 /* 3 */ "compilation_unit ::= variable_declaration",
1659 /* 4 */ "compilation_unit ::= function_signature SEMICOLON",
1660 /* 5 */ "compilation_unit ::= function_signature statement_block",
1661 /* 6 */ "compilation_unit ::= typedef",
1662 /* 7 */ "compilation_unit ::= struct_declaration SEMICOLON",
1663 /* 8 */ "typedef ::= TYPEDEF CONST datatype scalar_or_array",
1664 /* 9 */ "typedef ::= TYPEDEF datatype scalar_or_array",
1665 /* 10 */ "function_signature ::= function_storageclass function_details semantic",
1666 /* 11 */ "function_signature ::= function_storageclass function_details",
1667 /* 12 */ "function_signature ::= function_details semantic",
1668 /* 13 */ "function_signature ::= function_details",
1669 /* 14 */ "function_details ::= datatype IDENTIFIER LPAREN function_parameters RPAREN",
1670 /* 15 */ "function_details ::= VOID IDENTIFIER LPAREN function_parameters RPAREN",
1671 /* 16 */ "function_storageclass ::= INLINE",
1672 /* 17 */ "function_parameters ::= VOID",
1673 /* 18 */ "function_parameters ::= function_parameter_list",
1674 /* 19 */ "function_parameters ::=",
1675 /* 20 */ "function_parameter_list ::= function_parameter",
1676 /* 21 */ "function_parameter_list ::= function_parameter_list COMMA function_parameter",
1677 /* 22 */ "function_parameter ::= input_modifier datatype IDENTIFIER semantic interpolation_mod initializer",
1678 /* 23 */ "function_parameter ::= input_modifier datatype IDENTIFIER semantic interpolation_mod",
1679 /* 24 */ "function_parameter ::= input_modifier datatype IDENTIFIER semantic initializer",
1680 /* 25 */ "function_parameter ::= input_modifier datatype IDENTIFIER semantic",
1681 /* 26 */ "function_parameter ::= input_modifier datatype IDENTIFIER interpolation_mod initializer",
1682 /* 27 */ "function_parameter ::= input_modifier datatype IDENTIFIER interpolation_mod",
1683 /* 28 */ "function_parameter ::= input_modifier datatype IDENTIFIER initializer",
1684 /* 29 */ "function_parameter ::= input_modifier datatype IDENTIFIER",
1685 /* 30 */ "function_parameter ::= datatype IDENTIFIER semantic interpolation_mod initializer",
1686 /* 31 */ "function_parameter ::= datatype IDENTIFIER semantic interpolation_mod",
1687 /* 32 */ "function_parameter ::= datatype IDENTIFIER semantic initializer",
1688 /* 33 */ "function_parameter ::= datatype IDENTIFIER semantic",
1689 /* 34 */ "function_parameter ::= datatype IDENTIFIER interpolation_mod initializer",
1690 /* 35 */ "function_parameter ::= datatype IDENTIFIER interpolation_mod",
1691 /* 36 */ "function_parameter ::= datatype IDENTIFIER initializer",
1692 /* 37 */ "function_parameter ::= datatype IDENTIFIER",
1693 /* 38 */ "input_modifier ::= IN",
1694 /* 39 */ "input_modifier ::= INOUT",
1695 /* 40 */ "input_modifier ::= OUT",
1696 /* 41 */ "input_modifier ::= IN OUT",
1697 /* 42 */ "input_modifier ::= OUT IN",
1698 /* 43 */ "input_modifier ::= UNIFORM",
1699 /* 44 */ "semantic ::= COLON IDENTIFIER",
1700 /* 45 */ "interpolation_mod ::= LINEAR",
1701 /* 46 */ "interpolation_mod ::= CENTROID",
1702 /* 47 */ "interpolation_mod ::= NOINTERPOLATION",
1703 /* 48 */ "interpolation_mod ::= NOPERSPECTIVE",
1704 /* 49 */ "interpolation_mod ::= SAMPLE",
1705 /* 50 */ "variable_declaration ::= variable_attribute_list datatype variable_declaration_details_list SEMICOLON",
1706 /* 51 */ "variable_declaration ::= datatype variable_declaration_details_list SEMICOLON",
1707 /* 52 */ "variable_declaration ::= struct_declaration variable_declaration_details_list SEMICOLON",
1708 /* 53 */ "variable_attribute_list ::= variable_attribute",
1709 /* 54 */ "variable_attribute_list ::= variable_attribute_list variable_attribute",
1710 /* 55 */ "variable_attribute ::= EXTERN",
1711 /* 56 */ "variable_attribute ::= NOINTERPOLATION",
1712 /* 57 */ "variable_attribute ::= SHARED",
1713 /* 58 */ "variable_attribute ::= STATIC",
1714 /* 59 */ "variable_attribute ::= UNIFORM",
1715 /* 60 */ "variable_attribute ::= VOLATILE",
1716 /* 61 */ "variable_attribute ::= CONST",
1717 /* 62 */ "variable_attribute ::= ROWMAJOR",
1718 /* 63 */ "variable_attribute ::= COLUMNMAJOR",
1719 /* 64 */ "variable_declaration_details_list ::= variable_declaration_details",
1720 /* 65 */ "variable_declaration_details_list ::= variable_declaration_details_list COMMA variable_declaration_details",
1721 /* 66 */ "variable_declaration_details ::= scalar_or_array semantic annotations initializer variable_lowlevel",
1722 /* 67 */ "variable_declaration_details ::= scalar_or_array semantic annotations initializer",
1723 /* 68 */ "variable_declaration_details ::= scalar_or_array semantic annotations variable_lowlevel",
1724 /* 69 */ "variable_declaration_details ::= scalar_or_array semantic annotations",
1725 /* 70 */ "variable_declaration_details ::= scalar_or_array semantic initializer variable_lowlevel",
1726 /* 71 */ "variable_declaration_details ::= scalar_or_array semantic initializer",
1727 /* 72 */ "variable_declaration_details ::= scalar_or_array semantic variable_lowlevel",
1728 /* 73 */ "variable_declaration_details ::= scalar_or_array semantic",
1729 /* 74 */ "variable_declaration_details ::= scalar_or_array annotations initializer variable_lowlevel",
1730 /* 75 */ "variable_declaration_details ::= scalar_or_array annotations initializer",
1731 /* 76 */ "variable_declaration_details ::= scalar_or_array annotations variable_lowlevel",
1732 /* 77 */ "variable_declaration_details ::= scalar_or_array annotations",
1733 /* 78 */ "variable_declaration_details ::= scalar_or_array initializer variable_lowlevel",
1734 /* 79 */ "variable_declaration_details ::= scalar_or_array initializer",
1735 /* 80 */ "variable_declaration_details ::= scalar_or_array variable_lowlevel",
1736 /* 81 */ "variable_declaration_details ::= scalar_or_array",
1737 /* 82 */ "struct_declaration ::= struct_intro LBRACE struct_member_list RBRACE",
1738 /* 83 */ "struct_intro ::= STRUCT IDENTIFIER",
1739 /* 84 */ "struct_member_list ::= struct_member",
1740 /* 85 */ "struct_member_list ::= struct_member_list struct_member",
1741 /* 86 */ "struct_member ::= interpolation_mod struct_member_details",
1742 /* 87 */ "struct_member ::= struct_member_details",
1743 /* 88 */ "struct_member_details ::= datatype struct_member_item_list SEMICOLON",
1744 /* 89 */ "struct_member_item_list ::= scalar_or_array",
1745 /* 90 */ "struct_member_item_list ::= scalar_or_array semantic",
1746 /* 91 */ "struct_member_item_list ::= struct_member_item_list COMMA IDENTIFIER",
1747 /* 92 */ "variable_lowlevel ::= packoffset register",
1748 /* 93 */ "variable_lowlevel ::= register packoffset",
1749 /* 94 */ "variable_lowlevel ::= packoffset",
1750 /* 95 */ "variable_lowlevel ::= register",
1751 /* 96 */ "scalar_or_array ::= IDENTIFIER LBRACKET RBRACKET",
1752 /* 97 */ "scalar_or_array ::= IDENTIFIER LBRACKET expression RBRACKET",
1753 /* 98 */ "scalar_or_array ::= IDENTIFIER",
1754 /* 99 */ "packoffset ::= COLON PACKOFFSET LPAREN IDENTIFIER DOT IDENTIFIER RPAREN",
1755 /* 100 */ "packoffset ::= COLON PACKOFFSET LPAREN IDENTIFIER RPAREN",
1756 /* 101 */ "register ::= COLON REGISTER LPAREN IDENTIFIER RPAREN",
1757 /* 102 */ "annotations ::= LT annotation_list GT",
1758 /* 103 */ "annotation_list ::= annotation",
1759 /* 104 */ "annotation_list ::= annotation_list annotation",
1760 /* 105 */ "annotation ::= datatype_scalar initializer SEMICOLON",
1761 /* 106 */ "initializer_block_list ::= expression",
1762 /* 107 */ "initializer_block_list ::= LBRACE initializer_block_list RBRACE",
1763 /* 108 */ "initializer_block_list ::= initializer_block_list COMMA initializer_block_list",
1764 /* 109 */ "initializer_block ::= LBRACE initializer_block_list RBRACE",
1765 /* 110 */ "initializer ::= ASSIGN initializer_block",
1766 /* 111 */ "initializer ::= ASSIGN expression",
1767 /* 112 */ "intrinsic_datatype ::= datatype_vector",
1768 /* 113 */ "intrinsic_datatype ::= datatype_matrix",
1769 /* 114 */ "intrinsic_datatype ::= datatype_scalar",
1770 /* 115 */ "intrinsic_datatype ::= datatype_sampler",
1771 /* 116 */ "intrinsic_datatype ::= datatype_buffer",
1772 /* 117 */ "datatype ::= intrinsic_datatype",
1773 /* 118 */ "datatype ::= USERTYPE",
1774 /* 119 */ "datatype_sampler ::= SAMPLER",
1775 /* 120 */ "datatype_sampler ::= SAMPLER1D",
1776 /* 121 */ "datatype_sampler ::= SAMPLER2D",
1777 /* 122 */ "datatype_sampler ::= SAMPLER3D",
1778 /* 123 */ "datatype_sampler ::= SAMPLERCUBE",
1779 /* 124 */ "datatype_sampler ::= SAMPLER_STATE",
1780 /* 125 */ "datatype_sampler ::= SAMPLERSTATE",
1781 /* 126 */ "datatype_sampler ::= SAMPLERCOMPARISONSTATE",
1782 /* 127 */ "datatype_scalar ::= BOOL",
1783 /* 128 */ "datatype_scalar ::= INT",
1784 /* 129 */ "datatype_scalar ::= UINT",
1785 /* 130 */ "datatype_scalar ::= HALF",
1786 /* 131 */ "datatype_scalar ::= FLOAT",
1787 /* 132 */ "datatype_scalar ::= DOUBLE",
1788 /* 133 */ "datatype_scalar ::= STRING",
1789 /* 134 */ "datatype_scalar ::= SNORM FLOAT",
1790 /* 135 */ "datatype_scalar ::= UNORM FLOAT",
1791 /* 136 */ "datatype_buffer ::= BUFFER LT BOOL GT",
1792 /* 137 */ "datatype_buffer ::= BUFFER LT INT GT",
1793 /* 138 */ "datatype_buffer ::= BUFFER LT UINT GT",
1794 /* 139 */ "datatype_buffer ::= BUFFER LT HALF GT",
1795 /* 140 */ "datatype_buffer ::= BUFFER LT FLOAT GT",
1796 /* 141 */ "datatype_buffer ::= BUFFER LT DOUBLE GT",
1797 /* 142 */ "datatype_buffer ::= BUFFER LT SNORM FLOAT GT",
1798 /* 143 */ "datatype_buffer ::= BUFFER LT UNORM FLOAT GT",
1799 /* 144 */ "datatype_vector ::= VECTOR LT datatype_scalar COMMA INT_CONSTANT GT",
1800 /* 145 */ "datatype_matrix ::= MATRIX LT datatype_scalar COMMA INT_CONSTANT COMMA INT_CONSTANT GT",
1801 /* 146 */ "statement_block ::= LBRACE RBRACE",
1802 /* 147 */ "statement_block ::= LBRACE statement_list RBRACE",
1803 /* 148 */ "statement_list ::= statement",
1804 /* 149 */ "statement_list ::= statement_list statement",
1805 /* 150 */ "statement_attribute ::= ISOLATE",
1806 /* 151 */ "statement_attribute ::= MAXINSTRUCTIONCOUNT LPAREN INT_CONSTANT RPAREN",
1807 /* 152 */ "statement_attribute ::= NOEXPRESSIONOPTIMIZATIONS",
1808 /* 153 */ "statement_attribute ::= REMOVEUNUSEDINPUTS",
1809 /* 154 */ "statement_attribute ::= UNUSED",
1810 /* 155 */ "statement_attribute ::= XPS",
1811 /* 156 */ "statement ::= BREAK SEMICOLON",
1812 /* 157 */ "statement ::= CONTINUE SEMICOLON",
1813 /* 158 */ "statement ::= DISCARD SEMICOLON",
1814 /* 159 */ "statement ::= LBRACKET statement_attribute RBRACKET statement_block",
1815 /* 160 */ "statement ::= variable_declaration",
1816 /* 161 */ "statement ::= struct_declaration SEMICOLON",
1817 /* 162 */ "statement ::= do_intro DO statement WHILE LPAREN expression RPAREN SEMICOLON",
1818 /* 163 */ "statement ::= while_intro LPAREN expression RPAREN statement",
1819 /* 164 */ "statement ::= if_intro LPAREN expression RPAREN statement",
1820 /* 165 */ "statement ::= if_intro LPAREN expression RPAREN statement ELSE statement",
1821 /* 166 */ "statement ::= switch_intro LPAREN expression RPAREN LBRACE switch_case_list RBRACE",
1822 /* 167 */ "statement ::= typedef",
1823 /* 168 */ "statement ::= SEMICOLON",
1824 /* 169 */ "statement ::= expression SEMICOLON",
1825 /* 170 */ "statement ::= RETURN SEMICOLON",
1826 /* 171 */ "statement ::= RETURN expression SEMICOLON",
1827 /* 172 */ "statement ::= statement_block",
1828 /* 173 */ "statement ::= for_statement",
1829 /* 174 */ "while_intro ::= LBRACKET UNROLL LPAREN INT_CONSTANT RPAREN RBRACKET WHILE",
1830 /* 175 */ "while_intro ::= LBRACKET UNROLL RBRACKET WHILE",
1831 /* 176 */ "while_intro ::= LBRACKET LOOP RBRACKET WHILE",
1832 /* 177 */ "while_intro ::= WHILE",
1833 /* 178 */ "for_statement ::= for_intro for_details",
1834 /* 179 */ "for_intro ::= LBRACKET UNROLL LPAREN INT_CONSTANT RPAREN RBRACKET FOR",
1835 /* 180 */ "for_intro ::= LBRACKET UNROLL RBRACKET FOR",
1836 /* 181 */ "for_intro ::= LBRACKET LOOP RBRACKET FOR",
1837 /* 182 */ "for_intro ::= FOR",
1838 /* 183 */ "for_details ::= LPAREN expression SEMICOLON expression SEMICOLON expression RPAREN statement",
1839 /* 184 */ "for_details ::= LPAREN SEMICOLON SEMICOLON RPAREN statement",
1840 /* 185 */ "for_details ::= LPAREN SEMICOLON SEMICOLON expression RPAREN statement",
1841 /* 186 */ "for_details ::= LPAREN SEMICOLON expression SEMICOLON RPAREN statement",
1842 /* 187 */ "for_details ::= LPAREN SEMICOLON expression SEMICOLON expression RPAREN statement",
1843 /* 188 */ "for_details ::= LPAREN expression SEMICOLON SEMICOLON RPAREN statement",
1844 /* 189 */ "for_details ::= LPAREN expression SEMICOLON SEMICOLON expression RPAREN statement",
1845 /* 190 */ "for_details ::= LPAREN expression SEMICOLON expression SEMICOLON RPAREN statement",
1846 /* 191 */ "for_details ::= LPAREN variable_declaration expression SEMICOLON expression RPAREN statement",
1847 /* 192 */ "for_details ::= LPAREN variable_declaration SEMICOLON RPAREN statement",
1848 /* 193 */ "for_details ::= LPAREN variable_declaration SEMICOLON expression RPAREN statement",
1849 /* 194 */ "for_details ::= LPAREN variable_declaration expression SEMICOLON RPAREN statement",
1850 /* 195 */ "do_intro ::= LBRACKET UNROLL LPAREN INT_CONSTANT RPAREN RBRACKET DO",
1851 /* 196 */ "do_intro ::= LBRACKET UNROLL RBRACKET DO",
1852 /* 197 */ "do_intro ::= LBRACKET LOOP RBRACKET DO",
1853 /* 198 */ "do_intro ::= DO",
1854 /* 199 */ "if_intro ::= LBRACKET BRANCH RBRACKET IF",
1855 /* 200 */ "if_intro ::= LBRACKET FLATTEN RBRACKET IF",
1856 /* 201 */ "if_intro ::= LBRACKET IFALL RBRACKET IF",
1857 /* 202 */ "if_intro ::= LBRACKET IFANY RBRACKET IF",
1858 /* 203 */ "if_intro ::= LBRACKET PREDICATE RBRACKET IF",
1859 /* 204 */ "if_intro ::= LBRACKET PREDICATEBLOCK RBRACKET IF",
1860 /* 205 */ "if_intro ::= IF",
1861 /* 206 */ "switch_intro ::= LBRACKET FLATTEN RBRACKET SWITCH",
1862 /* 207 */ "switch_intro ::= LBRACKET BRANCH RBRACKET SWITCH",
1863 /* 208 */ "switch_intro ::= LBRACKET FORCECASE RBRACKET SWITCH",
1864 /* 209 */ "switch_intro ::= LBRACKET CALL RBRACKET SWITCH",
1865 /* 210 */ "switch_intro ::= SWITCH",
1866 /* 211 */ "switch_case_list ::= switch_case",
1867 /* 212 */ "switch_case_list ::= switch_case_list switch_case",
1868 /* 213 */ "switch_case ::= CASE expression COLON statement_list",
1869 /* 214 */ "switch_case ::= CASE expression COLON",
1870 /* 215 */ "switch_case ::= DEFAULT COLON statement_list",
1871 /* 216 */ "switch_case ::= DEFAULT COLON",
1872 /* 217 */ "primary_expr ::= IDENTIFIER",
1873 /* 218 */ "primary_expr ::= INT_CONSTANT",
1874 /* 219 */ "primary_expr ::= FLOAT_CONSTANT",
1875 /* 220 */ "primary_expr ::= STRING_LITERAL",
1876 /* 221 */ "primary_expr ::= TRUE",
1877 /* 222 */ "primary_expr ::= FALSE",
1878 /* 223 */ "primary_expr ::= LPAREN expression RPAREN",
1879 /* 224 */ "postfix_expr ::= primary_expr",
1880 /* 225 */ "postfix_expr ::= postfix_expr LBRACKET expression RBRACKET",
1881 /* 226 */ "postfix_expr ::= IDENTIFIER arguments",
1882 /* 227 */ "postfix_expr ::= datatype arguments",
1883 /* 228 */ "postfix_expr ::= postfix_expr DOT IDENTIFIER",
1884 /* 229 */ "postfix_expr ::= postfix_expr PLUSPLUS",
1885 /* 230 */ "postfix_expr ::= postfix_expr MINUSMINUS",
1886 /* 231 */ "arguments ::= LPAREN RPAREN",
1887 /* 232 */ "arguments ::= LPAREN argument_list RPAREN",
1888 /* 233 */ "argument_list ::= assignment_expr",
1889 /* 234 */ "argument_list ::= argument_list COMMA assignment_expr",
1890 /* 235 */ "unary_expr ::= postfix_expr",
1891 /* 236 */ "unary_expr ::= PLUSPLUS unary_expr",
1892 /* 237 */ "unary_expr ::= MINUSMINUS unary_expr",
1893 /* 238 */ "unary_expr ::= PLUS cast_expr",
1894 /* 239 */ "unary_expr ::= MINUS cast_expr",
1895 /* 240 */ "unary_expr ::= COMPLEMENT cast_expr",
1896 /* 241 */ "unary_expr ::= EXCLAMATION cast_expr",
1897 /* 242 */ "cast_expr ::= unary_expr",
1898 /* 243 */ "cast_expr ::= LPAREN datatype RPAREN cast_expr",
1899 /* 244 */ "multiplicative_expr ::= cast_expr",
1900 /* 245 */ "multiplicative_expr ::= multiplicative_expr STAR cast_expr",
1901 /* 246 */ "multiplicative_expr ::= multiplicative_expr SLASH cast_expr",
1902 /* 247 */ "multiplicative_expr ::= multiplicative_expr PERCENT cast_expr",
1903 /* 248 */ "additive_expr ::= multiplicative_expr",
1904 /* 249 */ "additive_expr ::= additive_expr PLUS multiplicative_expr",
1905 /* 250 */ "additive_expr ::= additive_expr MINUS multiplicative_expr",
1906 /* 251 */ "shift_expr ::= additive_expr",
1907 /* 252 */ "shift_expr ::= shift_expr LSHIFT additive_expr",
1908 /* 253 */ "shift_expr ::= shift_expr RSHIFT additive_expr",
1909 /* 254 */ "relational_expr ::= shift_expr",
1910 /* 255 */ "relational_expr ::= relational_expr LT shift_expr",
1911 /* 256 */ "relational_expr ::= relational_expr GT shift_expr",
1912 /* 257 */ "relational_expr ::= relational_expr LEQ shift_expr",
1913 /* 258 */ "relational_expr ::= relational_expr GEQ shift_expr",
1914 /* 259 */ "equality_expr ::= relational_expr",
1915 /* 260 */ "equality_expr ::= equality_expr EQL relational_expr",
1916 /* 261 */ "equality_expr ::= equality_expr NEQ relational_expr",
1917 /* 262 */ "and_expr ::= equality_expr",
1918 /* 263 */ "and_expr ::= and_expr AND equality_expr",
1919 /* 264 */ "exclusive_or_expr ::= and_expr",
1920 /* 265 */ "exclusive_or_expr ::= exclusive_or_expr XOR and_expr",
1921 /* 266 */ "inclusive_or_expr ::= exclusive_or_expr",
1922 /* 267 */ "inclusive_or_expr ::= inclusive_or_expr OR exclusive_or_expr",
1923 /* 268 */ "logical_and_expr ::= inclusive_or_expr",
1924 /* 269 */ "logical_and_expr ::= logical_and_expr ANDAND inclusive_or_expr",
1925 /* 270 */ "logical_or_expr ::= logical_and_expr",
1926 /* 271 */ "logical_or_expr ::= logical_or_expr OROR logical_and_expr",
1927 /* 272 */ "conditional_expr ::= logical_or_expr",
1928 /* 273 */ "conditional_expr ::= logical_or_expr QUESTION logical_or_expr COLON conditional_expr",
1929 /* 274 */ "assignment_expr ::= conditional_expr",
1930 /* 275 */ "assignment_expr ::= unary_expr ASSIGN assignment_expr",
1931 /* 276 */ "assignment_expr ::= unary_expr MULASSIGN assignment_expr",
1932 /* 277 */ "assignment_expr ::= unary_expr DIVASSIGN assignment_expr",
1933 /* 278 */ "assignment_expr ::= unary_expr MODASSIGN assignment_expr",
1934 /* 279 */ "assignment_expr ::= unary_expr ADDASSIGN assignment_expr",
1935 /* 280 */ "assignment_expr ::= unary_expr SUBASSIGN assignment_expr",
1936 /* 281 */ "assignment_expr ::= unary_expr LSHIFTASSIGN assignment_expr",
1937 /* 282 */ "assignment_expr ::= unary_expr RSHIFTASSIGN assignment_expr",
1938 /* 283 */ "assignment_expr ::= unary_expr ANDASSIGN assignment_expr",
1939 /* 284 */ "assignment_expr ::= unary_expr XORASSIGN assignment_expr",
1940 /* 285 */ "assignment_expr ::= unary_expr ORASSIGN assignment_expr",
1941 /* 286 */ "expression ::= assignment_expr",
1942 /* 287 */ "expression ::= expression COMMA assignment_expr",
1943 };
1944 #endif /* NDEBUG */
1945
1946
1947 #if YYSTACKDEPTH<=0
1948 /*
1949 ** Try to increase the size of the parser stack.
1950 */
yyGrowStack(yyParser * p)1951 static void yyGrowStack(yyParser *p){
1952 int newSize;
1953 yyStackEntry *pNew;
1954
1955 newSize = p->yystksz*2 + 100;
1956 pNew = realloc(p->yystack, newSize*sizeof(pNew[0]));
1957 if( pNew ){
1958 p->yystack = pNew;
1959 p->yystksz = newSize;
1960 #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
1961 if( yyTraceFILE ){
1962 fprintf(yyTraceFILE,"%sStack grows to %d entries!\n",
1963 yyTracePrompt, p->yystksz);
1964 }
1965 #endif
1966 }
1967 }
1968 #endif
1969
1970 /*
1971 ** This function allocates a new parser.
1972 ** The only argument is a pointer to a function which works like
1973 ** malloc.
1974 **
1975 ** Inputs:
1976 ** A pointer to the function used to allocate memory.
1977 **
1978 ** Outputs:
1979 ** A pointer to a parser. This pointer is used in subsequent calls
1980 ** to ParseHLSL and ParseHLSLFree.
1981 */
1982 #if __MOJOSHADER__
ParseHLSLAlloc(void * (* mallocProc)(int,void *),void * malloc_data)1983 static void *ParseHLSLAlloc(void *(*mallocProc)(int,void *), void *malloc_data){
1984 yyParser *pParser;
1985 pParser = (yyParser*)(*mallocProc)( (int)sizeof(yyParser), malloc_data );
1986 #else
1987 void *ParseHLSLAlloc(void *(*mallocProc)(size_t)){
1988 yyParser *pParser;
1989 pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) );
1990 #endif
1991 if( pParser ){
1992 pParser->yyidx = -1;
1993 #ifdef YYTRACKMAXSTACKDEPTH
1994 pParser->yyidxMax = 0;
1995 #endif
1996 #if YYSTACKDEPTH<=0
1997 pParser->yystack = NULL;
1998 pParser->yystksz = 0;
1999 yyGrowStack(pParser);
2000 #endif
2001 }
2002 return pParser;
2003 }
2004
2005 /* The following function deletes the value associated with a
2006 ** symbol. The symbol can be either a terminal or nonterminal.
2007 ** "yymajor" is the symbol code, and "yypminor" is a pointer to
2008 ** the value.
2009 */
2010 static void yy_destructor(
2011 yyParser *yypParser, /* The parser */
2012 YYCODETYPE yymajor, /* Type code for object to destroy */
2013 YYMINORTYPE *yypminor /* The object to be destroyed */
2014 ){
2015 ParseHLSLARG_FETCH;
2016 switch( yymajor ){
2017 /* Here is inserted the actions which take place when a
2018 ** terminal or non-terminal is destroyed. This can happen
2019 ** when the symbol is popped from the stack during a
2020 ** reduce or during error processing or when a parser is
2021 ** being destroyed before it is finished parsing.
2022 **
2023 ** Note: during a reduce, the only symbols destroyed are those
2024 ** which appear on the RHS of the rule, but which are not used
2025 ** inside the C code.
2026 */
2027 case 125: /* compilation_units */
2028 case 126: /* compilation_unit */
2029 {
2030 #line 81 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2031 delete_compilation_unit(ctx, (yypminor->yy139));
2032 #line 2033 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2033 }
2034 break;
2035 case 127: /* variable_declaration */
2036 case 144: /* variable_declaration_details_list */
2037 case 146: /* variable_declaration_details */
2038 {
2039 #line 175 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2040 delete_variable_declaration(ctx, (yypminor->yy24));
2041 #line 2042 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2042 }
2043 break;
2044 case 128: /* function_signature */
2045 case 135: /* function_details */
2046 {
2047 #line 102 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2048 delete_function_signature(ctx, (yypminor->yy364));
2049 #line 2050 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2050 }
2051 break;
2052 case 129: /* statement_block */
2053 case 167: /* statement_list */
2054 case 168: /* statement */
2055 case 175: /* for_statement */
2056 case 177: /* for_details */
2057 {
2058 #line 354 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2059 delete_statement(ctx, (yypminor->yy233));
2060 #line 2061 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2061 }
2062 break;
2063 case 130: /* typedef */
2064 {
2065 #line 96 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2066 delete_typedef(ctx, (yypminor->yy71));
2067 #line 2068 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2068 }
2069 break;
2070 case 131: /* struct_declaration */
2071 {
2072 #line 224 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2073 delete_struct_declaration(ctx, (yypminor->yy249));
2074 #line 2075 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2075 }
2076 break;
2077 case 133: /* scalar_or_array */
2078 {
2079 #line 260 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2080 delete_scalar_or_array(ctx, (yypminor->yy380));
2081 #line 2082 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2082 }
2083 break;
2084 case 137: /* function_parameters */
2085 case 138: /* function_parameter_list */
2086 case 139: /* function_parameter */
2087 {
2088 #line 124 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2089 delete_function_params(ctx, (yypminor->yy307));
2090 #line 2091 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2091 }
2092 break;
2093 case 142: /* initializer */
2094 case 156: /* expression */
2095 case 160: /* initializer_block_list */
2096 case 161: /* initializer_block */
2097 case 179: /* primary_expr */
2098 case 180: /* postfix_expr */
2099 case 183: /* assignment_expr */
2100 case 184: /* unary_expr */
2101 case 185: /* cast_expr */
2102 case 186: /* multiplicative_expr */
2103 case 187: /* additive_expr */
2104 case 188: /* shift_expr */
2105 case 189: /* relational_expr */
2106 case 190: /* equality_expr */
2107 case 191: /* and_expr */
2108 case 192: /* exclusive_or_expr */
2109 case 193: /* inclusive_or_expr */
2110 case 194: /* logical_and_expr */
2111 case 195: /* logical_or_expr */
2112 case 196: /* conditional_expr */
2113 {
2114 #line 301 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2115 delete_expr(ctx, (yypminor->yy322));
2116 #line 2117 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2117 }
2118 break;
2119 case 147: /* annotations */
2120 case 157: /* annotation_list */
2121 case 158: /* annotation */
2122 {
2123 #line 277 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2124 delete_annotation(ctx, (yypminor->yy268));
2125 #line 2126 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2126 }
2127 break;
2128 case 148: /* variable_lowlevel */
2129 {
2130 #line 252 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2131 delete_variable_lowlevel(ctx, (yypminor->yy82));
2132 #line 2133 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2133 }
2134 break;
2135 case 150: /* struct_member_list */
2136 case 151: /* struct_member */
2137 case 152: /* struct_member_details */
2138 case 153: /* struct_member_item_list */
2139 {
2140 #line 232 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2141 delete_struct_member(ctx, (yypminor->yy346));
2142 #line 2143 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2143 }
2144 break;
2145 case 154: /* packoffset */
2146 {
2147 #line 266 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2148 delete_pack_offset(ctx, (yypminor->yy8));
2149 #line 2150 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2150 }
2151 break;
2152 case 174: /* switch_case_list */
2153 case 178: /* switch_case */
2154 {
2155 #line 450 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2156 delete_switch_case(ctx, (yypminor->yy165));
2157 #line 2158 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2158 }
2159 break;
2160 case 181: /* arguments */
2161 case 182: /* argument_list */
2162 {
2163 #line 485 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2164 delete_arguments(ctx, (yypminor->yy26));
2165 #line 2166 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2166 }
2167 break;
2168 default: break; /* If no destructor action specified: do nothing */
2169 }
2170 }
2171
2172 /*
2173 ** Pop the parser's stack once.
2174 **
2175 ** If there is a destructor routine associated with the token which
2176 ** is popped from the stack, then call it.
2177 **
2178 ** Return the major token number for the symbol popped.
2179 */
2180 static int yy_pop_parser_stack(yyParser *pParser){
2181 YYCODETYPE yymajor;
2182 yyStackEntry *yytos = &pParser->yystack[pParser->yyidx];
2183
2184 if( pParser->yyidx<0 ) return 0;
2185 #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
2186 if( yyTraceFILE && pParser->yyidx>=0 ){
2187 fprintf(yyTraceFILE,"%sPopping %s\n",
2188 yyTracePrompt,
2189 yyTokenName[yytos->major]);
2190 }
2191 #endif
2192 yymajor = yytos->major;
2193 yy_destructor(pParser, yymajor, &yytos->minor);
2194 pParser->yyidx--;
2195 return yymajor;
2196 }
2197
2198 /*
2199 ** Deallocate and destroy a parser. Destructors are all called for
2200 ** all stack elements before shutting the parser down.
2201 **
2202 ** Inputs:
2203 ** <ul>
2204 ** <li> A pointer to the parser. This should be a pointer
2205 ** obtained from ParseHLSLAlloc.
2206 ** <li> A pointer to a function used to reclaim memory obtained
2207 ** from malloc.
2208 ** </ul>
2209 */
2210 #if __MOJOSHADER__
2211 static
2212 #endif
2213 void ParseHLSLFree(
2214 void *p, /* The parser to be deleted */
2215 #if __MOJOSHADER__
2216 void (*freeProc)(void*,void*), /* Function used to reclaim memory */
2217 void *malloc_data
2218 #else
2219 void (*freeProc)(void*) /* Function used to reclaim memory */
2220 #endif
2221 ){
2222 yyParser *pParser = (yyParser*)p;
2223 if( pParser==0 ) return;
2224 while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser);
2225 #if YYSTACKDEPTH<=0
2226 free(pParser->yystack);
2227 #endif
2228 #if __MOJOSHADER__
2229 (*freeProc)((void*)pParser, malloc_data);
2230 #else
2231 (*freeProc)((void*)pParser);
2232 #endif
2233 }
2234
2235 /*
2236 ** Return the peak depth of the stack for a parser.
2237 */
2238 #ifdef YYTRACKMAXSTACKDEPTH
2239 static int ParseHLSLStackPeak(void *p){
2240 yyParser *pParser = (yyParser*)p;
2241 return pParser->yyidxMax;
2242 }
2243 #endif
2244
2245 /*
2246 ** Find the appropriate action for a parser given the terminal
2247 ** look-ahead token iLookAhead.
2248 **
2249 ** If the look-ahead token is YYNOCODE, then check to see if the action is
2250 ** independent of the look-ahead. If it is, return the action, otherwise
2251 ** return YY_NO_ACTION.
2252 */
2253 static int yy_find_shift_action(
2254 yyParser *pParser, /* The parser */
2255 YYCODETYPE iLookAhead /* The look-ahead token */
2256 ){
2257 int i;
2258 int stateno = pParser->yystack[pParser->yyidx].stateno;
2259
2260 if( stateno>YY_SHIFT_COUNT
2261 || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){
2262 return yy_default[stateno];
2263 }
2264 assert( iLookAhead!=YYNOCODE );
2265 i += iLookAhead;
2266 if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){
2267 if( iLookAhead>0 ){
2268 #ifdef YYFALLBACK
2269 YYCODETYPE iFallback; /* Fallback token */
2270 if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
2271 && (iFallback = yyFallback[iLookAhead])!=0 ){
2272 #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
2273 if( yyTraceFILE ){
2274 fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
2275 yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
2276 }
2277 #endif
2278 return yy_find_shift_action(pParser, iFallback);
2279 }
2280 #endif
2281 #ifdef YYWILDCARD
2282 {
2283 int j = i - iLookAhead + YYWILDCARD;
2284 if(
2285 #if YY_SHIFT_MIN+YYWILDCARD<0
2286 j>=0 &&
2287 #endif
2288 #if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT
2289 j<YY_ACTTAB_COUNT &&
2290 #endif
2291 yy_lookahead[j]==YYWILDCARD
2292 ){
2293 #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
2294 if( yyTraceFILE ){
2295 fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n",
2296 yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]);
2297 }
2298 #endif /* NDEBUG */
2299 return yy_action[j];
2300 }
2301 }
2302 #endif /* YYWILDCARD */
2303 }
2304 return yy_default[stateno];
2305 }else{
2306 return yy_action[i];
2307 }
2308 }
2309
2310 /*
2311 ** Find the appropriate action for a parser given the non-terminal
2312 ** look-ahead token iLookAhead.
2313 **
2314 ** If the look-ahead token is YYNOCODE, then check to see if the action is
2315 ** independent of the look-ahead. If it is, return the action, otherwise
2316 ** return YY_NO_ACTION.
2317 */
2318 static int yy_find_reduce_action(
2319 int stateno, /* Current state number */
2320 YYCODETYPE iLookAhead /* The look-ahead token */
2321 ){
2322 int i;
2323 #ifdef YYERRORSYMBOL
2324 if( stateno>YY_REDUCE_COUNT ){
2325 return yy_default[stateno];
2326 }
2327 #else
2328 assert( stateno<=YY_REDUCE_COUNT );
2329 #endif
2330 i = yy_reduce_ofst[stateno];
2331 assert( i!=YY_REDUCE_USE_DFLT );
2332 assert( iLookAhead!=YYNOCODE );
2333 i += iLookAhead;
2334 #ifdef YYERRORSYMBOL
2335 if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){
2336 return yy_default[stateno];
2337 }
2338 #else
2339 assert( i>=0 && i<YY_ACTTAB_COUNT );
2340 assert( yy_lookahead[i]==iLookAhead );
2341 #endif
2342 return yy_action[i];
2343 }
2344
2345 /*
2346 ** The following routine is called if the stack overflows.
2347 */
2348 static void yyStackOverflow(yyParser *yypParser, YYMINORTYPE *yypMinor){
2349 ParseHLSLARG_FETCH;
2350 yypParser->yyidx--;
2351 #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
2352 if( yyTraceFILE ){
2353 fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
2354 }
2355 #endif
2356 while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
2357 /* Here code is inserted which will execute if the parser
2358 ** stack every overflows */
2359 #line 47 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2360
2361 // !!! FIXME: make this a proper fail() function.
2362 fail(ctx, "Giving up. Parser stack overflow");
2363 #line 2364 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2364 ParseHLSLARG_STORE; /* Suppress warning about unused %extra_argument var */
2365 }
2366
2367 /*
2368 ** Perform a shift action.
2369 */
2370 static void yy_shift(
2371 yyParser *yypParser, /* The parser to be shifted */
2372 int yyNewState, /* The new state to shift in */
2373 int yyMajor, /* The major token to shift in */
2374 YYMINORTYPE *yypMinor /* Pointer to the minor token to shift in */
2375 ){
2376 yyStackEntry *yytos;
2377 yypParser->yyidx++;
2378 #ifdef YYTRACKMAXSTACKDEPTH
2379 if( yypParser->yyidx>yypParser->yyidxMax ){
2380 yypParser->yyidxMax = yypParser->yyidx;
2381 }
2382 #endif
2383 #if YYSTACKDEPTH>0
2384 if( yypParser->yyidx>=YYSTACKDEPTH ){
2385 yyStackOverflow(yypParser, yypMinor);
2386 return;
2387 }
2388 #else
2389 if( yypParser->yyidx>=yypParser->yystksz ){
2390 yyGrowStack(yypParser);
2391 if( yypParser->yyidx>=yypParser->yystksz ){
2392 yyStackOverflow(yypParser, yypMinor);
2393 return;
2394 }
2395 }
2396 #endif
2397 yytos = &yypParser->yystack[yypParser->yyidx];
2398 yytos->stateno = (YYACTIONTYPE)yyNewState;
2399 yytos->major = (YYCODETYPE)yyMajor;
2400 yytos->minor = *yypMinor;
2401 #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
2402 if( yyTraceFILE && yypParser->yyidx>0 ){
2403 int i;
2404 fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState);
2405 fprintf(yyTraceFILE,"%sStack:",yyTracePrompt);
2406 for(i=1; i<=yypParser->yyidx; i++)
2407 fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]);
2408 fprintf(yyTraceFILE,"\n");
2409 }
2410 #endif
2411 }
2412
2413 /* The following table contains information about every rule that
2414 ** is used during the reduce.
2415 */
2416 static const struct {
2417 YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */
2418 unsigned char nrhs; /* Number of right-hand side symbols in the rule */
2419 } yyRuleInfo[] = {
2420 { 124, 1 },
2421 { 125, 1 },
2422 { 125, 2 },
2423 { 126, 1 },
2424 { 126, 2 },
2425 { 126, 2 },
2426 { 126, 1 },
2427 { 126, 2 },
2428 { 130, 4 },
2429 { 130, 3 },
2430 { 128, 3 },
2431 { 128, 2 },
2432 { 128, 2 },
2433 { 128, 1 },
2434 { 135, 5 },
2435 { 135, 5 },
2436 { 134, 1 },
2437 { 137, 1 },
2438 { 137, 1 },
2439 { 137, 0 },
2440 { 138, 1 },
2441 { 138, 3 },
2442 { 139, 6 },
2443 { 139, 5 },
2444 { 139, 5 },
2445 { 139, 4 },
2446 { 139, 5 },
2447 { 139, 4 },
2448 { 139, 4 },
2449 { 139, 3 },
2450 { 139, 5 },
2451 { 139, 4 },
2452 { 139, 4 },
2453 { 139, 3 },
2454 { 139, 4 },
2455 { 139, 3 },
2456 { 139, 3 },
2457 { 139, 2 },
2458 { 140, 1 },
2459 { 140, 1 },
2460 { 140, 1 },
2461 { 140, 2 },
2462 { 140, 2 },
2463 { 140, 1 },
2464 { 136, 2 },
2465 { 141, 1 },
2466 { 141, 1 },
2467 { 141, 1 },
2468 { 141, 1 },
2469 { 141, 1 },
2470 { 127, 4 },
2471 { 127, 3 },
2472 { 127, 3 },
2473 { 143, 1 },
2474 { 143, 2 },
2475 { 145, 1 },
2476 { 145, 1 },
2477 { 145, 1 },
2478 { 145, 1 },
2479 { 145, 1 },
2480 { 145, 1 },
2481 { 145, 1 },
2482 { 145, 1 },
2483 { 145, 1 },
2484 { 144, 1 },
2485 { 144, 3 },
2486 { 146, 5 },
2487 { 146, 4 },
2488 { 146, 4 },
2489 { 146, 3 },
2490 { 146, 4 },
2491 { 146, 3 },
2492 { 146, 3 },
2493 { 146, 2 },
2494 { 146, 4 },
2495 { 146, 3 },
2496 { 146, 3 },
2497 { 146, 2 },
2498 { 146, 3 },
2499 { 146, 2 },
2500 { 146, 2 },
2501 { 146, 1 },
2502 { 131, 4 },
2503 { 149, 2 },
2504 { 150, 1 },
2505 { 150, 2 },
2506 { 151, 2 },
2507 { 151, 1 },
2508 { 152, 3 },
2509 { 153, 1 },
2510 { 153, 2 },
2511 { 153, 3 },
2512 { 148, 2 },
2513 { 148, 2 },
2514 { 148, 1 },
2515 { 148, 1 },
2516 { 133, 3 },
2517 { 133, 4 },
2518 { 133, 1 },
2519 { 154, 7 },
2520 { 154, 5 },
2521 { 155, 5 },
2522 { 147, 3 },
2523 { 157, 1 },
2524 { 157, 2 },
2525 { 158, 3 },
2526 { 160, 1 },
2527 { 160, 3 },
2528 { 160, 3 },
2529 { 161, 3 },
2530 { 142, 2 },
2531 { 142, 2 },
2532 { 162, 1 },
2533 { 162, 1 },
2534 { 162, 1 },
2535 { 162, 1 },
2536 { 162, 1 },
2537 { 132, 1 },
2538 { 132, 1 },
2539 { 165, 1 },
2540 { 165, 1 },
2541 { 165, 1 },
2542 { 165, 1 },
2543 { 165, 1 },
2544 { 165, 1 },
2545 { 165, 1 },
2546 { 165, 1 },
2547 { 159, 1 },
2548 { 159, 1 },
2549 { 159, 1 },
2550 { 159, 1 },
2551 { 159, 1 },
2552 { 159, 1 },
2553 { 159, 1 },
2554 { 159, 2 },
2555 { 159, 2 },
2556 { 166, 4 },
2557 { 166, 4 },
2558 { 166, 4 },
2559 { 166, 4 },
2560 { 166, 4 },
2561 { 166, 4 },
2562 { 166, 5 },
2563 { 166, 5 },
2564 { 163, 6 },
2565 { 164, 8 },
2566 { 129, 2 },
2567 { 129, 3 },
2568 { 167, 1 },
2569 { 167, 2 },
2570 { 169, 1 },
2571 { 169, 4 },
2572 { 169, 1 },
2573 { 169, 1 },
2574 { 169, 1 },
2575 { 169, 1 },
2576 { 168, 2 },
2577 { 168, 2 },
2578 { 168, 2 },
2579 { 168, 4 },
2580 { 168, 1 },
2581 { 168, 2 },
2582 { 168, 8 },
2583 { 168, 5 },
2584 { 168, 5 },
2585 { 168, 7 },
2586 { 168, 7 },
2587 { 168, 1 },
2588 { 168, 1 },
2589 { 168, 2 },
2590 { 168, 2 },
2591 { 168, 3 },
2592 { 168, 1 },
2593 { 168, 1 },
2594 { 171, 7 },
2595 { 171, 4 },
2596 { 171, 4 },
2597 { 171, 1 },
2598 { 175, 2 },
2599 { 176, 7 },
2600 { 176, 4 },
2601 { 176, 4 },
2602 { 176, 1 },
2603 { 177, 8 },
2604 { 177, 5 },
2605 { 177, 6 },
2606 { 177, 6 },
2607 { 177, 7 },
2608 { 177, 6 },
2609 { 177, 7 },
2610 { 177, 7 },
2611 { 177, 7 },
2612 { 177, 5 },
2613 { 177, 6 },
2614 { 177, 6 },
2615 { 170, 7 },
2616 { 170, 4 },
2617 { 170, 4 },
2618 { 170, 1 },
2619 { 172, 4 },
2620 { 172, 4 },
2621 { 172, 4 },
2622 { 172, 4 },
2623 { 172, 4 },
2624 { 172, 4 },
2625 { 172, 1 },
2626 { 173, 4 },
2627 { 173, 4 },
2628 { 173, 4 },
2629 { 173, 4 },
2630 { 173, 1 },
2631 { 174, 1 },
2632 { 174, 2 },
2633 { 178, 4 },
2634 { 178, 3 },
2635 { 178, 3 },
2636 { 178, 2 },
2637 { 179, 1 },
2638 { 179, 1 },
2639 { 179, 1 },
2640 { 179, 1 },
2641 { 179, 1 },
2642 { 179, 1 },
2643 { 179, 3 },
2644 { 180, 1 },
2645 { 180, 4 },
2646 { 180, 2 },
2647 { 180, 2 },
2648 { 180, 3 },
2649 { 180, 2 },
2650 { 180, 2 },
2651 { 181, 2 },
2652 { 181, 3 },
2653 { 182, 1 },
2654 { 182, 3 },
2655 { 184, 1 },
2656 { 184, 2 },
2657 { 184, 2 },
2658 { 184, 2 },
2659 { 184, 2 },
2660 { 184, 2 },
2661 { 184, 2 },
2662 { 185, 1 },
2663 { 185, 4 },
2664 { 186, 1 },
2665 { 186, 3 },
2666 { 186, 3 },
2667 { 186, 3 },
2668 { 187, 1 },
2669 { 187, 3 },
2670 { 187, 3 },
2671 { 188, 1 },
2672 { 188, 3 },
2673 { 188, 3 },
2674 { 189, 1 },
2675 { 189, 3 },
2676 { 189, 3 },
2677 { 189, 3 },
2678 { 189, 3 },
2679 { 190, 1 },
2680 { 190, 3 },
2681 { 190, 3 },
2682 { 191, 1 },
2683 { 191, 3 },
2684 { 192, 1 },
2685 { 192, 3 },
2686 { 193, 1 },
2687 { 193, 3 },
2688 { 194, 1 },
2689 { 194, 3 },
2690 { 195, 1 },
2691 { 195, 3 },
2692 { 196, 1 },
2693 { 196, 5 },
2694 { 183, 1 },
2695 { 183, 3 },
2696 { 183, 3 },
2697 { 183, 3 },
2698 { 183, 3 },
2699 { 183, 3 },
2700 { 183, 3 },
2701 { 183, 3 },
2702 { 183, 3 },
2703 { 183, 3 },
2704 { 183, 3 },
2705 { 183, 3 },
2706 { 156, 1 },
2707 { 156, 3 },
2708 };
2709
2710 static void yy_accept(yyParser*); /* Forward Declaration */
2711
2712 /*
2713 ** Perform a reduce action and the shift that must immediately
2714 ** follow the reduce.
2715 */
2716 static void yy_reduce(
2717 yyParser *yypParser, /* The parser */
2718 int yyruleno /* Number of the rule by which to reduce */
2719 ){
2720 int yygoto; /* The next state */
2721 int yyact; /* The next action */
2722 YYMINORTYPE yygotominor; /* The LHS of the rule reduced */
2723 yyStackEntry *yymsp; /* The top of the parser's stack */
2724 int yysize; /* Amount to pop the stack */
2725 ParseHLSLARG_FETCH;
2726 yymsp = &yypParser->yystack[yypParser->yyidx];
2727 #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
2728 if( yyTraceFILE && yyruleno>=0
2729 && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){
2730 fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt,
2731 yyRuleName[yyruleno]);
2732 }
2733 #endif /* NDEBUG */
2734
2735 /* Silence complaints from purify about yygotominor being uninitialized
2736 ** in some cases when it is copied into the stack after the following
2737 ** switch. yygotominor is uninitialized when a rule reduces that does
2738 ** not set the value of its left-hand side nonterminal. Leaving the
2739 ** value of the nonterminal uninitialized is utterly harmless as long
2740 ** as the value is never used. So really the only thing this code
2741 ** accomplishes is to quieten purify.
2742 **
2743 ** 2007-01-16: The wireshark project (www.wireshark.org) reports that
2744 ** without this code, their parser segfaults. I'm not sure what there
2745 ** parser is doing to make this happen. This is the second bug report
2746 ** from wireshark this week. Clearly they are stressing Lemon in ways
2747 ** that it has not been previously stressed... (SQLite ticket #2172)
2748 */
2749 /*memset(&yygotominor, 0, sizeof(yygotominor));*/
2750 yygotominor = yyzerominor;
2751
2752
2753 switch( yyruleno ){
2754 /* Beginning here are the reduction cases. A typical example
2755 ** follows:
2756 ** case 0:
2757 ** #line <lineno> <grammarfile>
2758 ** { ... } // User supplied code
2759 ** #line <lineno> <thisfile>
2760 ** break;
2761 */
2762 case 0: /* shader ::= compilation_units */
2763 #line 78 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2764 { assert(ctx->ast == NULL); REVERSE_LINKED_LIST(MOJOSHADER_astCompilationUnit, yymsp[0].minor.yy139); ctx->ast = (MOJOSHADER_astNode *) yymsp[0].minor.yy139; }
2765 #line 2766 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2766 break;
2767 case 1: /* compilation_units ::= compilation_unit */
2768 #line 82 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2769 { yygotominor.yy139 = yymsp[0].minor.yy139; }
2770 #line 2771 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2771 break;
2772 case 2: /* compilation_units ::= compilation_units compilation_unit */
2773 #line 83 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2774 { if (yymsp[0].minor.yy139) { yymsp[0].minor.yy139->next = yymsp[-1].minor.yy139; yygotominor.yy139 = yymsp[0].minor.yy139; } }
2775 #line 2776 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2776 break;
2777 case 3: /* compilation_unit ::= variable_declaration */
2778 #line 88 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2779 { yygotominor.yy139 = new_global_variable(ctx, yymsp[0].minor.yy24); }
2780 #line 2781 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2781 break;
2782 case 4: /* compilation_unit ::= function_signature SEMICOLON */
2783 #line 89 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2784 { yygotominor.yy139 = new_function(ctx, yymsp[-1].minor.yy364, NULL); }
2785 #line 2786 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2786 break;
2787 case 5: /* compilation_unit ::= function_signature statement_block */
2788 #line 90 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2789 { yygotominor.yy139 = new_function(ctx, yymsp[-1].minor.yy364, yymsp[0].minor.yy233); }
2790 #line 2791 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2791 break;
2792 case 6: /* compilation_unit ::= typedef */
2793 #line 91 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2794 { yygotominor.yy139 = new_global_typedef(ctx, yymsp[0].minor.yy71); }
2795 #line 2796 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2796 break;
2797 case 7: /* compilation_unit ::= struct_declaration SEMICOLON */
2798 #line 92 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2799 { yygotominor.yy139 = new_global_struct(ctx, yymsp[-1].minor.yy249); }
2800 #line 2801 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2801 break;
2802 case 8: /* typedef ::= TYPEDEF CONST datatype scalar_or_array */
2803 #line 98 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2804 { yygotominor.yy71 = new_typedef(ctx, 1, yymsp[-1].minor.yy37, yymsp[0].minor.yy380); push_usertype(ctx, yymsp[0].minor.yy380->identifier, yygotominor.yy71->datatype); }
2805 #line 2806 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2806 break;
2807 case 9: /* typedef ::= TYPEDEF datatype scalar_or_array */
2808 #line 99 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2809 { yygotominor.yy71 = new_typedef(ctx, 0, yymsp[-1].minor.yy37, yymsp[0].minor.yy380); push_usertype(ctx, yymsp[0].minor.yy380->identifier, yygotominor.yy71->datatype); }
2810 #line 2811 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2811 break;
2812 case 10: /* function_signature ::= function_storageclass function_details semantic */
2813 #line 103 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2814 { yygotominor.yy364 = yymsp[-1].minor.yy364; yygotominor.yy364->storage_class = yymsp[-2].minor.yy175; yygotominor.yy364->semantic = yymsp[0].minor.yy306; }
2815 #line 2816 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2816 break;
2817 case 11: /* function_signature ::= function_storageclass function_details */
2818 #line 104 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2819 { yygotominor.yy364 = yymsp[0].minor.yy364; yygotominor.yy364->storage_class = yymsp[-1].minor.yy175; }
2820 #line 2821 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2821 break;
2822 case 12: /* function_signature ::= function_details semantic */
2823 #line 105 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2824 { yygotominor.yy364 = yymsp[-1].minor.yy364; yygotominor.yy364->semantic = yymsp[0].minor.yy306; }
2825 #line 2826 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2826 break;
2827 case 13: /* function_signature ::= function_details */
2828 #line 106 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2829 { yygotominor.yy364 = yymsp[0].minor.yy364; }
2830 #line 2831 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2831 break;
2832 case 14: /* function_details ::= datatype IDENTIFIER LPAREN function_parameters RPAREN */
2833 #line 110 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2834 { yygotominor.yy364 = new_function_signature(ctx, yymsp[-4].minor.yy37, yymsp[-3].minor.yy0.string, yymsp[-1].minor.yy307); }
2835 #line 2836 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2836 break;
2837 case 15: /* function_details ::= VOID IDENTIFIER LPAREN function_parameters RPAREN */
2838 #line 111 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2839 { yygotominor.yy364 = new_function_signature(ctx, NULL, yymsp[-3].minor.yy0.string, yymsp[-1].minor.yy307); }
2840 #line 2841 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2841 break;
2842 case 16: /* function_storageclass ::= INLINE */
2843 #line 121 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2844 { yygotominor.yy175 = MOJOSHADER_AST_FNSTORECLS_INLINE; }
2845 #line 2846 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2846 break;
2847 case 17: /* function_parameters ::= VOID */
2848 case 19: /* function_parameters ::= */ yytestcase(yyruleno==19);
2849 #line 125 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2850 { yygotominor.yy307 = NULL; }
2851 #line 2852 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2852 break;
2853 case 18: /* function_parameters ::= function_parameter_list */
2854 #line 126 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2855 { REVERSE_LINKED_LIST(MOJOSHADER_astFunctionParameters, yymsp[0].minor.yy307); yygotominor.yy307 = yymsp[0].minor.yy307; }
2856 #line 2857 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2857 break;
2858 case 20: /* function_parameter_list ::= function_parameter */
2859 #line 131 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2860 { yygotominor.yy307 = yymsp[0].minor.yy307; }
2861 #line 2862 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2862 break;
2863 case 21: /* function_parameter_list ::= function_parameter_list COMMA function_parameter */
2864 #line 132 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2865 { yymsp[0].minor.yy307->next = yymsp[-2].minor.yy307; yygotominor.yy307 = yymsp[0].minor.yy307; }
2866 #line 2867 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2867 break;
2868 case 22: /* function_parameter ::= input_modifier datatype IDENTIFIER semantic interpolation_mod initializer */
2869 #line 138 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2870 { yygotominor.yy307 = new_function_param(ctx, yymsp[-5].minor.yy75, yymsp[-4].minor.yy37, yymsp[-3].minor.yy0.string, yymsp[-2].minor.yy306, yymsp[-1].minor.yy111, yymsp[0].minor.yy322); }
2871 #line 2872 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2872 break;
2873 case 23: /* function_parameter ::= input_modifier datatype IDENTIFIER semantic interpolation_mod */
2874 #line 139 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2875 { yygotominor.yy307 = new_function_param(ctx, yymsp[-4].minor.yy75, yymsp[-3].minor.yy37, yymsp[-2].minor.yy0.string, yymsp[-1].minor.yy306, yymsp[0].minor.yy111, NULL); }
2876 #line 2877 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2877 break;
2878 case 24: /* function_parameter ::= input_modifier datatype IDENTIFIER semantic initializer */
2879 #line 140 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2880 { yygotominor.yy307 = new_function_param(ctx, yymsp[-4].minor.yy75, yymsp[-3].minor.yy37, yymsp[-2].minor.yy0.string, yymsp[-1].minor.yy306, MOJOSHADER_AST_INTERPMOD_NONE, yymsp[0].minor.yy322); }
2881 #line 2882 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2882 break;
2883 case 25: /* function_parameter ::= input_modifier datatype IDENTIFIER semantic */
2884 #line 141 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2885 { yygotominor.yy307 = new_function_param(ctx, yymsp[-3].minor.yy75, yymsp[-2].minor.yy37, yymsp[-1].minor.yy0.string, yymsp[0].minor.yy306, MOJOSHADER_AST_INTERPMOD_NONE, NULL); }
2886 #line 2887 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2887 break;
2888 case 26: /* function_parameter ::= input_modifier datatype IDENTIFIER interpolation_mod initializer */
2889 #line 142 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2890 { yygotominor.yy307 = new_function_param(ctx, yymsp[-4].minor.yy75, yymsp[-3].minor.yy37, yymsp[-2].minor.yy0.string, NULL, yymsp[-1].minor.yy111, yymsp[0].minor.yy322); }
2891 #line 2892 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2892 break;
2893 case 27: /* function_parameter ::= input_modifier datatype IDENTIFIER interpolation_mod */
2894 #line 143 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2895 { yygotominor.yy307 = new_function_param(ctx, yymsp[-3].minor.yy75, yymsp[-2].minor.yy37, yymsp[-1].minor.yy0.string, NULL, yymsp[0].minor.yy111, NULL); }
2896 #line 2897 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2897 break;
2898 case 28: /* function_parameter ::= input_modifier datatype IDENTIFIER initializer */
2899 #line 144 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2900 { yygotominor.yy307 = new_function_param(ctx, yymsp[-3].minor.yy75, yymsp[-2].minor.yy37, yymsp[-1].minor.yy0.string, NULL, MOJOSHADER_AST_INTERPMOD_NONE, yymsp[0].minor.yy322); }
2901 #line 2902 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2902 break;
2903 case 29: /* function_parameter ::= input_modifier datatype IDENTIFIER */
2904 #line 145 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2905 { yygotominor.yy307 = new_function_param(ctx, yymsp[-2].minor.yy75, yymsp[-1].minor.yy37, yymsp[0].minor.yy0.string, NULL, MOJOSHADER_AST_INTERPMOD_NONE, NULL); }
2906 #line 2907 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2907 break;
2908 case 30: /* function_parameter ::= datatype IDENTIFIER semantic interpolation_mod initializer */
2909 #line 146 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2910 { yygotominor.yy307 = new_function_param(ctx, MOJOSHADER_AST_INPUTMOD_NONE, yymsp[-4].minor.yy37, yymsp[-3].minor.yy0.string, yymsp[-2].minor.yy306, yymsp[-1].minor.yy111, yymsp[0].minor.yy322); }
2911 #line 2912 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2912 break;
2913 case 31: /* function_parameter ::= datatype IDENTIFIER semantic interpolation_mod */
2914 #line 147 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2915 { yygotominor.yy307 = new_function_param(ctx, MOJOSHADER_AST_INPUTMOD_NONE, yymsp[-3].minor.yy37, yymsp[-2].minor.yy0.string, yymsp[-1].minor.yy306, yymsp[0].minor.yy111, NULL); }
2916 #line 2917 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2917 break;
2918 case 32: /* function_parameter ::= datatype IDENTIFIER semantic initializer */
2919 #line 148 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2920 { yygotominor.yy307 = new_function_param(ctx, MOJOSHADER_AST_INPUTMOD_NONE, yymsp[-3].minor.yy37, yymsp[-2].minor.yy0.string, yymsp[-1].minor.yy306, MOJOSHADER_AST_INTERPMOD_NONE, yymsp[0].minor.yy322); }
2921 #line 2922 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2922 break;
2923 case 33: /* function_parameter ::= datatype IDENTIFIER semantic */
2924 #line 149 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2925 { yygotominor.yy307 = new_function_param(ctx, MOJOSHADER_AST_INPUTMOD_NONE, yymsp[-2].minor.yy37, yymsp[-1].minor.yy0.string, yymsp[0].minor.yy306, MOJOSHADER_AST_INTERPMOD_NONE, NULL); }
2926 #line 2927 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2927 break;
2928 case 34: /* function_parameter ::= datatype IDENTIFIER interpolation_mod initializer */
2929 #line 150 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2930 { yygotominor.yy307 = new_function_param(ctx, MOJOSHADER_AST_INPUTMOD_NONE, yymsp[-3].minor.yy37, yymsp[-2].minor.yy0.string, NULL, yymsp[-1].minor.yy111, yymsp[0].minor.yy322); }
2931 #line 2932 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2932 break;
2933 case 35: /* function_parameter ::= datatype IDENTIFIER interpolation_mod */
2934 #line 151 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2935 { yygotominor.yy307 = new_function_param(ctx, MOJOSHADER_AST_INPUTMOD_NONE, yymsp[-2].minor.yy37, yymsp[-1].minor.yy0.string, NULL, yymsp[0].minor.yy111, NULL); }
2936 #line 2937 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2937 break;
2938 case 36: /* function_parameter ::= datatype IDENTIFIER initializer */
2939 #line 152 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2940 { yygotominor.yy307 = new_function_param(ctx, MOJOSHADER_AST_INPUTMOD_NONE, yymsp[-2].minor.yy37, yymsp[-1].minor.yy0.string, NULL, MOJOSHADER_AST_INTERPMOD_NONE, yymsp[0].minor.yy322); }
2941 #line 2942 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2942 break;
2943 case 37: /* function_parameter ::= datatype IDENTIFIER */
2944 #line 153 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2945 { yygotominor.yy307 = new_function_param(ctx, MOJOSHADER_AST_INPUTMOD_NONE, yymsp[-1].minor.yy37, yymsp[0].minor.yy0.string, NULL, MOJOSHADER_AST_INTERPMOD_NONE, NULL); }
2946 #line 2947 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2947 break;
2948 case 38: /* input_modifier ::= IN */
2949 #line 156 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2950 { yygotominor.yy75 = MOJOSHADER_AST_INPUTMOD_IN; }
2951 #line 2952 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2952 break;
2953 case 39: /* input_modifier ::= INOUT */
2954 case 41: /* input_modifier ::= IN OUT */ yytestcase(yyruleno==41);
2955 case 42: /* input_modifier ::= OUT IN */ yytestcase(yyruleno==42);
2956 #line 157 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2957 { yygotominor.yy75 = MOJOSHADER_AST_INPUTMOD_INOUT; }
2958 #line 2959 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2959 break;
2960 case 40: /* input_modifier ::= OUT */
2961 #line 158 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2962 { yygotominor.yy75 = MOJOSHADER_AST_INPUTMOD_OUT; }
2963 #line 2964 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2964 break;
2965 case 43: /* input_modifier ::= UNIFORM */
2966 #line 161 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2967 { yygotominor.yy75 = MOJOSHADER_AST_INPUTMOD_UNIFORM; }
2968 #line 2969 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2969 break;
2970 case 44: /* semantic ::= COLON IDENTIFIER */
2971 #line 164 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2972 { yygotominor.yy306 = yymsp[0].minor.yy0.string; }
2973 #line 2974 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2974 break;
2975 case 45: /* interpolation_mod ::= LINEAR */
2976 #line 168 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2977 { yygotominor.yy111 = MOJOSHADER_AST_INTERPMOD_LINEAR; }
2978 #line 2979 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2979 break;
2980 case 46: /* interpolation_mod ::= CENTROID */
2981 #line 169 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2982 { yygotominor.yy111 = MOJOSHADER_AST_INTERPMOD_CENTROID; }
2983 #line 2984 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2984 break;
2985 case 47: /* interpolation_mod ::= NOINTERPOLATION */
2986 #line 170 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2987 { yygotominor.yy111 = MOJOSHADER_AST_INTERPMOD_NOINTERPOLATION; }
2988 #line 2989 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2989 break;
2990 case 48: /* interpolation_mod ::= NOPERSPECTIVE */
2991 #line 171 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2992 { yygotominor.yy111 = MOJOSHADER_AST_INTERPMOD_NOPERSPECTIVE; }
2993 #line 2994 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2994 break;
2995 case 49: /* interpolation_mod ::= SAMPLE */
2996 #line 172 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
2997 { yygotominor.yy111 = MOJOSHADER_AST_INTERPMOD_SAMPLE; }
2998 #line 2999 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
2999 break;
3000 case 50: /* variable_declaration ::= variable_attribute_list datatype variable_declaration_details_list SEMICOLON */
3001 #line 176 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3002 { REVERSE_LINKED_LIST(MOJOSHADER_astVariableDeclaration, yymsp[-1].minor.yy24); yygotominor.yy24 = yymsp[-1].minor.yy24; yygotominor.yy24->attributes = yymsp[-3].minor.yy270; yygotominor.yy24->datatype = yymsp[-2].minor.yy37; }
3003 #line 3004 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3004 break;
3005 case 51: /* variable_declaration ::= datatype variable_declaration_details_list SEMICOLON */
3006 #line 177 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3007 { REVERSE_LINKED_LIST(MOJOSHADER_astVariableDeclaration, yymsp[-1].minor.yy24); yygotominor.yy24 = yymsp[-1].minor.yy24; yygotominor.yy24->datatype = yymsp[-2].minor.yy37; }
3008 #line 3009 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3009 break;
3010 case 52: /* variable_declaration ::= struct_declaration variable_declaration_details_list SEMICOLON */
3011 #line 179 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3012 { REVERSE_LINKED_LIST(MOJOSHADER_astVariableDeclaration, yymsp[-1].minor.yy24); yygotominor.yy24 = yymsp[-1].minor.yy24; yygotominor.yy24->anonymous_datatype = yymsp[-2].minor.yy249; }
3013 #line 3014 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3014 break;
3015 case 53: /* variable_attribute_list ::= variable_attribute */
3016 #line 182 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3017 { yygotominor.yy270 = yymsp[0].minor.yy270; }
3018 #line 3019 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3019 break;
3020 case 54: /* variable_attribute_list ::= variable_attribute_list variable_attribute */
3021 #line 183 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3022 { yygotominor.yy270 = yymsp[-1].minor.yy270 | yymsp[0].minor.yy270; }
3023 #line 3024 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3024 break;
3025 case 55: /* variable_attribute ::= EXTERN */
3026 #line 186 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3027 { yygotominor.yy270 = MOJOSHADER_AST_VARATTR_EXTERN; }
3028 #line 3029 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3029 break;
3030 case 56: /* variable_attribute ::= NOINTERPOLATION */
3031 #line 187 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3032 { yygotominor.yy270 = MOJOSHADER_AST_VARATTR_NOINTERPOLATION; }
3033 #line 3034 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3034 break;
3035 case 57: /* variable_attribute ::= SHARED */
3036 #line 188 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3037 { yygotominor.yy270 = MOJOSHADER_AST_VARATTR_SHARED; }
3038 #line 3039 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3039 break;
3040 case 58: /* variable_attribute ::= STATIC */
3041 #line 189 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3042 { yygotominor.yy270 = MOJOSHADER_AST_VARATTR_STATIC; }
3043 #line 3044 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3044 break;
3045 case 59: /* variable_attribute ::= UNIFORM */
3046 #line 190 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3047 { yygotominor.yy270 = MOJOSHADER_AST_VARATTR_UNIFORM; }
3048 #line 3049 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3049 break;
3050 case 60: /* variable_attribute ::= VOLATILE */
3051 #line 191 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3052 { yygotominor.yy270 = MOJOSHADER_AST_VARATTR_VOLATILE; }
3053 #line 3054 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3054 break;
3055 case 61: /* variable_attribute ::= CONST */
3056 #line 192 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3057 { yygotominor.yy270 = MOJOSHADER_AST_VARATTR_CONST; }
3058 #line 3059 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3059 break;
3060 case 62: /* variable_attribute ::= ROWMAJOR */
3061 #line 193 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3062 { yygotominor.yy270 = MOJOSHADER_AST_VARATTR_ROWMAJOR; }
3063 #line 3064 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3064 break;
3065 case 63: /* variable_attribute ::= COLUMNMAJOR */
3066 #line 194 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3067 { yygotominor.yy270 = MOJOSHADER_AST_VARATTR_COLUMNMAJOR; }
3068 #line 3069 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3069 break;
3070 case 64: /* variable_declaration_details_list ::= variable_declaration_details */
3071 #line 198 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3072 { yygotominor.yy24 = yymsp[0].minor.yy24; }
3073 #line 3074 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3074 break;
3075 case 65: /* variable_declaration_details_list ::= variable_declaration_details_list COMMA variable_declaration_details */
3076 #line 199 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3077 { yygotominor.yy24 = yymsp[0].minor.yy24; yygotominor.yy24->next = yymsp[-2].minor.yy24; }
3078 #line 3079 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3079 break;
3080 case 66: /* variable_declaration_details ::= scalar_or_array semantic annotations initializer variable_lowlevel */
3081 #line 203 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3082 { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-4].minor.yy380, yymsp[-3].minor.yy306, yymsp[-2].minor.yy268, yymsp[-1].minor.yy322, yymsp[0].minor.yy82); }
3083 #line 3084 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3084 break;
3085 case 67: /* variable_declaration_details ::= scalar_or_array semantic annotations initializer */
3086 #line 204 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3087 { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-3].minor.yy380, yymsp[-2].minor.yy306, yymsp[-1].minor.yy268, yymsp[0].minor.yy322, NULL); }
3088 #line 3089 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3089 break;
3090 case 68: /* variable_declaration_details ::= scalar_or_array semantic annotations variable_lowlevel */
3091 #line 205 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3092 { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-3].minor.yy380, yymsp[-2].minor.yy306, yymsp[-1].minor.yy268, NULL, yymsp[0].minor.yy82); }
3093 #line 3094 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3094 break;
3095 case 69: /* variable_declaration_details ::= scalar_or_array semantic annotations */
3096 #line 206 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3097 { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-2].minor.yy380, yymsp[-1].minor.yy306, yymsp[0].minor.yy268, NULL, NULL); }
3098 #line 3099 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3099 break;
3100 case 70: /* variable_declaration_details ::= scalar_or_array semantic initializer variable_lowlevel */
3101 #line 207 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3102 { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-3].minor.yy380, yymsp[-2].minor.yy306, NULL, yymsp[-1].minor.yy322, yymsp[0].minor.yy82); }
3103 #line 3104 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3104 break;
3105 case 71: /* variable_declaration_details ::= scalar_or_array semantic initializer */
3106 #line 208 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3107 { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-2].minor.yy380, yymsp[-1].minor.yy306, NULL, yymsp[0].minor.yy322, NULL); }
3108 #line 3109 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3109 break;
3110 case 72: /* variable_declaration_details ::= scalar_or_array semantic variable_lowlevel */
3111 #line 209 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3112 { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-2].minor.yy380, yymsp[-1].minor.yy306, NULL, NULL, yymsp[0].minor.yy82); }
3113 #line 3114 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3114 break;
3115 case 73: /* variable_declaration_details ::= scalar_or_array semantic */
3116 #line 210 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3117 { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-1].minor.yy380, yymsp[0].minor.yy306, NULL, NULL, NULL); }
3118 #line 3119 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3119 break;
3120 case 74: /* variable_declaration_details ::= scalar_or_array annotations initializer variable_lowlevel */
3121 #line 211 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3122 { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-3].minor.yy380, NULL, yymsp[-2].minor.yy268, yymsp[-1].minor.yy322, yymsp[0].minor.yy82); }
3123 #line 3124 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3124 break;
3125 case 75: /* variable_declaration_details ::= scalar_or_array annotations initializer */
3126 #line 212 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3127 { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-2].minor.yy380, NULL, yymsp[-1].minor.yy268, yymsp[0].minor.yy322, NULL); }
3128 #line 3129 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3129 break;
3130 case 76: /* variable_declaration_details ::= scalar_or_array annotations variable_lowlevel */
3131 #line 213 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3132 { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-2].minor.yy380, NULL, yymsp[-1].minor.yy268, NULL, yymsp[0].minor.yy82); }
3133 #line 3134 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3134 break;
3135 case 77: /* variable_declaration_details ::= scalar_or_array annotations */
3136 #line 214 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3137 { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-1].minor.yy380, NULL, yymsp[0].minor.yy268, NULL, NULL); }
3138 #line 3139 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3139 break;
3140 case 78: /* variable_declaration_details ::= scalar_or_array initializer variable_lowlevel */
3141 #line 215 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3142 { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-2].minor.yy380, NULL, NULL, yymsp[-1].minor.yy322, yymsp[0].minor.yy82); }
3143 #line 3144 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3144 break;
3145 case 79: /* variable_declaration_details ::= scalar_or_array initializer */
3146 #line 216 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3147 { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-1].minor.yy380, NULL, NULL, yymsp[0].minor.yy322, NULL); }
3148 #line 3149 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3149 break;
3150 case 80: /* variable_declaration_details ::= scalar_or_array variable_lowlevel */
3151 #line 217 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3152 { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[-1].minor.yy380, NULL, NULL, NULL, yymsp[0].minor.yy82); }
3153 #line 3154 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3154 break;
3155 case 81: /* variable_declaration_details ::= scalar_or_array */
3156 #line 218 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3157 { yygotominor.yy24 = new_variable_declaration(ctx, yymsp[0].minor.yy380, NULL, NULL, NULL, NULL); }
3158 #line 3159 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3159 break;
3160 case 82: /* struct_declaration ::= struct_intro LBRACE struct_member_list RBRACE */
3161 #line 225 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3162 { REVERSE_LINKED_LIST(MOJOSHADER_astStructMembers, yymsp[-1].minor.yy346); yygotominor.yy249 = new_struct_declaration(ctx, yymsp[-3].minor.yy306, yymsp[-1].minor.yy346); }
3163 #line 3164 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3164 break;
3165 case 83: /* struct_intro ::= STRUCT IDENTIFIER */
3166 #line 229 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3167 { yygotominor.yy306 = yymsp[0].minor.yy0.string; push_usertype(ctx, yygotominor.yy306, &ctx->dt_none); }
3168 #line 3169 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3169 break;
3170 case 84: /* struct_member_list ::= struct_member */
3171 case 87: /* struct_member ::= struct_member_details */ yytestcase(yyruleno==87);
3172 #line 233 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3173 { yygotominor.yy346 = yymsp[0].minor.yy346; }
3174 #line 3175 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3175 break;
3176 case 85: /* struct_member_list ::= struct_member_list struct_member */
3177 #line 234 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3178 { yygotominor.yy346 = yymsp[0].minor.yy346; MOJOSHADER_astStructMembers *i = yygotominor.yy346; while (i->next) { i = i->next; } i->next = yymsp[-1].minor.yy346; }
3179 #line 3180 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3180 break;
3181 case 86: /* struct_member ::= interpolation_mod struct_member_details */
3182 #line 238 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3183 { MOJOSHADER_astStructMembers *i = yymsp[0].minor.yy346; yygotominor.yy346 = yymsp[0].minor.yy346; while (i) { i->interpolation_mod = yymsp[-1].minor.yy111; i = i->next; } }
3184 #line 3185 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3185 break;
3186 case 88: /* struct_member_details ::= datatype struct_member_item_list SEMICOLON */
3187 #line 243 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3188 { MOJOSHADER_astStructMembers *i = yymsp[-1].minor.yy346; yygotominor.yy346 = yymsp[-1].minor.yy346; while (i) { i->datatype = yymsp[-2].minor.yy37; i = i->next; } }
3189 #line 3190 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3190 break;
3191 case 89: /* struct_member_item_list ::= scalar_or_array */
3192 #line 247 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3193 { yygotominor.yy346 = new_struct_member(ctx, yymsp[0].minor.yy380, NULL); }
3194 #line 3195 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3195 break;
3196 case 90: /* struct_member_item_list ::= scalar_or_array semantic */
3197 #line 248 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3198 { yygotominor.yy346 = new_struct_member(ctx, yymsp[-1].minor.yy380, yymsp[0].minor.yy306); }
3199 #line 3200 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3200 break;
3201 case 91: /* struct_member_item_list ::= struct_member_item_list COMMA IDENTIFIER */
3202 #line 249 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3203 { yygotominor.yy346 = new_struct_member(ctx, new_scalar_or_array(ctx, yymsp[0].minor.yy0.string, 0, NULL), NULL); yygotominor.yy346->next = yymsp[-2].minor.yy346; yygotominor.yy346->semantic = yymsp[-2].minor.yy346->semantic; }
3204 #line 3205 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3205 break;
3206 case 92: /* variable_lowlevel ::= packoffset register */
3207 #line 253 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3208 { yygotominor.yy82 = new_variable_lowlevel(ctx, yymsp[-1].minor.yy8, yymsp[0].minor.yy306); }
3209 #line 3210 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3210 break;
3211 case 93: /* variable_lowlevel ::= register packoffset */
3212 #line 254 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3213 { yygotominor.yy82 = new_variable_lowlevel(ctx, yymsp[0].minor.yy8, yymsp[-1].minor.yy306); }
3214 #line 3215 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3215 break;
3216 case 94: /* variable_lowlevel ::= packoffset */
3217 #line 255 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3218 { yygotominor.yy82 = new_variable_lowlevel(ctx, yymsp[0].minor.yy8, NULL); }
3219 #line 3220 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3220 break;
3221 case 95: /* variable_lowlevel ::= register */
3222 #line 256 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3223 { yygotominor.yy82 = new_variable_lowlevel(ctx, NULL, yymsp[0].minor.yy306); }
3224 #line 3225 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3225 break;
3226 case 96: /* scalar_or_array ::= IDENTIFIER LBRACKET RBRACKET */
3227 #line 261 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3228 { yygotominor.yy380 = new_scalar_or_array(ctx, yymsp[-2].minor.yy0.string, 1, NULL); }
3229 #line 3230 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3230 break;
3231 case 97: /* scalar_or_array ::= IDENTIFIER LBRACKET expression RBRACKET */
3232 #line 262 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3233 { yygotominor.yy380 = new_scalar_or_array(ctx, yymsp[-3].minor.yy0.string, 1, yymsp[-1].minor.yy322); }
3234 #line 3235 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3235 break;
3236 case 98: /* scalar_or_array ::= IDENTIFIER */
3237 #line 263 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3238 { yygotominor.yy380 = new_scalar_or_array(ctx, yymsp[0].minor.yy0.string, 0, NULL); }
3239 #line 3240 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3240 break;
3241 case 99: /* packoffset ::= COLON PACKOFFSET LPAREN IDENTIFIER DOT IDENTIFIER RPAREN */
3242 #line 267 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3243 { yygotominor.yy8 = new_pack_offset(ctx, yymsp[-3].minor.yy0.string, yymsp[-1].minor.yy0.string); }
3244 #line 3245 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3245 break;
3246 case 100: /* packoffset ::= COLON PACKOFFSET LPAREN IDENTIFIER RPAREN */
3247 #line 268 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3248 { yygotominor.yy8 = new_pack_offset(ctx, yymsp[-1].minor.yy0.string, NULL); }
3249 #line 3250 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3250 break;
3251 case 101: /* register ::= COLON REGISTER LPAREN IDENTIFIER RPAREN */
3252 #line 274 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3253 { yygotominor.yy306 = yymsp[-1].minor.yy0.string; }
3254 #line 3255 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3255 break;
3256 case 102: /* annotations ::= LT annotation_list GT */
3257 #line 278 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3258 { REVERSE_LINKED_LIST(MOJOSHADER_astAnnotations, yymsp[-1].minor.yy268); yygotominor.yy268 = yymsp[-1].minor.yy268; }
3259 #line 3260 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3260 break;
3261 case 103: /* annotation_list ::= annotation */
3262 #line 282 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3263 { yygotominor.yy268 = yymsp[0].minor.yy268; }
3264 #line 3265 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3265 break;
3266 case 104: /* annotation_list ::= annotation_list annotation */
3267 #line 283 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3268 { yygotominor.yy268 = yymsp[0].minor.yy268; yygotominor.yy268->next = yymsp[-1].minor.yy268; }
3269 #line 3270 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3270 break;
3271 case 105: /* annotation ::= datatype_scalar initializer SEMICOLON */
3272 #line 288 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3273 { yygotominor.yy268 = new_annotation(ctx, yymsp[-2].minor.yy37, yymsp[-1].minor.yy322); }
3274 #line 3275 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3275 break;
3276 case 106: /* initializer_block_list ::= expression */
3277 case 110: /* initializer ::= ASSIGN initializer_block */ yytestcase(yyruleno==110);
3278 case 111: /* initializer ::= ASSIGN expression */ yytestcase(yyruleno==111);
3279 case 224: /* postfix_expr ::= primary_expr */ yytestcase(yyruleno==224);
3280 case 235: /* unary_expr ::= postfix_expr */ yytestcase(yyruleno==235);
3281 case 238: /* unary_expr ::= PLUS cast_expr */ yytestcase(yyruleno==238);
3282 case 242: /* cast_expr ::= unary_expr */ yytestcase(yyruleno==242);
3283 case 244: /* multiplicative_expr ::= cast_expr */ yytestcase(yyruleno==244);
3284 case 248: /* additive_expr ::= multiplicative_expr */ yytestcase(yyruleno==248);
3285 case 251: /* shift_expr ::= additive_expr */ yytestcase(yyruleno==251);
3286 case 254: /* relational_expr ::= shift_expr */ yytestcase(yyruleno==254);
3287 case 259: /* equality_expr ::= relational_expr */ yytestcase(yyruleno==259);
3288 case 262: /* and_expr ::= equality_expr */ yytestcase(yyruleno==262);
3289 case 264: /* exclusive_or_expr ::= and_expr */ yytestcase(yyruleno==264);
3290 case 266: /* inclusive_or_expr ::= exclusive_or_expr */ yytestcase(yyruleno==266);
3291 case 268: /* logical_and_expr ::= inclusive_or_expr */ yytestcase(yyruleno==268);
3292 case 270: /* logical_or_expr ::= logical_and_expr */ yytestcase(yyruleno==270);
3293 case 272: /* conditional_expr ::= logical_or_expr */ yytestcase(yyruleno==272);
3294 case 274: /* assignment_expr ::= conditional_expr */ yytestcase(yyruleno==274);
3295 case 286: /* expression ::= assignment_expr */ yytestcase(yyruleno==286);
3296 #line 292 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3297 { yygotominor.yy322 = yymsp[0].minor.yy322; }
3298 #line 3299 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3299 break;
3300 case 107: /* initializer_block_list ::= LBRACE initializer_block_list RBRACE */
3301 case 109: /* initializer_block ::= LBRACE initializer_block_list RBRACE */ yytestcase(yyruleno==109);
3302 case 223: /* primary_expr ::= LPAREN expression RPAREN */ yytestcase(yyruleno==223);
3303 #line 293 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3304 { yygotominor.yy322 = yymsp[-1].minor.yy322; }
3305 #line 3306 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3306 break;
3307 case 108: /* initializer_block_list ::= initializer_block_list COMMA initializer_block_list */
3308 case 287: /* expression ::= expression COMMA assignment_expr */ yytestcase(yyruleno==287);
3309 #line 294 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3310 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_COMMA, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3311 #line 3312 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3312 break;
3313 case 112: /* intrinsic_datatype ::= datatype_vector */
3314 case 113: /* intrinsic_datatype ::= datatype_matrix */ yytestcase(yyruleno==113);
3315 case 114: /* intrinsic_datatype ::= datatype_scalar */ yytestcase(yyruleno==114);
3316 case 115: /* intrinsic_datatype ::= datatype_sampler */ yytestcase(yyruleno==115);
3317 case 116: /* intrinsic_datatype ::= datatype_buffer */ yytestcase(yyruleno==116);
3318 case 117: /* datatype ::= intrinsic_datatype */ yytestcase(yyruleno==117);
3319 #line 306 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3320 { yygotominor.yy37 = yymsp[0].minor.yy37; }
3321 #line 3322 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3322 break;
3323 case 118: /* datatype ::= USERTYPE */
3324 #line 314 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3325 { yygotominor.yy37 = yymsp[0].minor.yy0.datatype; }
3326 #line 3327 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3327 break;
3328 case 119: /* datatype_sampler ::= SAMPLER */
3329 case 121: /* datatype_sampler ::= SAMPLER2D */ yytestcase(yyruleno==121);
3330 #line 317 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3331 { yygotominor.yy37 = &ctx->dt_sampler2d; }
3332 #line 3333 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3333 break;
3334 case 120: /* datatype_sampler ::= SAMPLER1D */
3335 #line 318 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3336 { yygotominor.yy37 = &ctx->dt_sampler1d; }
3337 #line 3338 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3338 break;
3339 case 122: /* datatype_sampler ::= SAMPLER3D */
3340 #line 320 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3341 { yygotominor.yy37 = &ctx->dt_sampler3d; }
3342 #line 3343 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3343 break;
3344 case 123: /* datatype_sampler ::= SAMPLERCUBE */
3345 #line 321 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3346 { yygotominor.yy37 = &ctx->dt_samplercube; }
3347 #line 3348 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3348 break;
3349 case 124: /* datatype_sampler ::= SAMPLER_STATE */
3350 case 125: /* datatype_sampler ::= SAMPLERSTATE */ yytestcase(yyruleno==125);
3351 #line 322 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3352 { yygotominor.yy37 = &ctx->dt_samplerstate; }
3353 #line 3354 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3354 break;
3355 case 126: /* datatype_sampler ::= SAMPLERCOMPARISONSTATE */
3356 #line 324 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3357 { yygotominor.yy37 = &ctx->dt_samplercompstate; }
3358 #line 3359 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3359 break;
3360 case 127: /* datatype_scalar ::= BOOL */
3361 #line 327 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3362 { yygotominor.yy37 = &ctx->dt_bool; }
3363 #line 3364 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3364 break;
3365 case 128: /* datatype_scalar ::= INT */
3366 #line 328 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3367 { yygotominor.yy37 = &ctx->dt_int; }
3368 #line 3369 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3369 break;
3370 case 129: /* datatype_scalar ::= UINT */
3371 #line 329 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3372 { yygotominor.yy37 = &ctx->dt_uint; }
3373 #line 3374 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3374 break;
3375 case 130: /* datatype_scalar ::= HALF */
3376 #line 330 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3377 { yygotominor.yy37 = &ctx->dt_half; }
3378 #line 3379 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3379 break;
3380 case 131: /* datatype_scalar ::= FLOAT */
3381 #line 331 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3382 { yygotominor.yy37 = &ctx->dt_float; }
3383 #line 3384 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3384 break;
3385 case 132: /* datatype_scalar ::= DOUBLE */
3386 #line 332 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3387 { yygotominor.yy37 = &ctx->dt_double; }
3388 #line 3389 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3389 break;
3390 case 133: /* datatype_scalar ::= STRING */
3391 #line 333 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3392 { yygotominor.yy37 = &ctx->dt_string; }
3393 #line 3394 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3394 break;
3395 case 134: /* datatype_scalar ::= SNORM FLOAT */
3396 #line 334 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3397 { yygotominor.yy37 = &ctx->dt_float_snorm; }
3398 #line 3399 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3399 break;
3400 case 135: /* datatype_scalar ::= UNORM FLOAT */
3401 #line 335 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3402 { yygotominor.yy37 = &ctx->dt_float_unorm; }
3403 #line 3404 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3404 break;
3405 case 136: /* datatype_buffer ::= BUFFER LT BOOL GT */
3406 #line 338 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3407 { yygotominor.yy37 = &ctx->dt_buf_bool; }
3408 #line 3409 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3409 break;
3410 case 137: /* datatype_buffer ::= BUFFER LT INT GT */
3411 #line 339 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3412 { yygotominor.yy37 = &ctx->dt_buf_int; }
3413 #line 3414 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3414 break;
3415 case 138: /* datatype_buffer ::= BUFFER LT UINT GT */
3416 #line 340 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3417 { yygotominor.yy37 = &ctx->dt_buf_uint; }
3418 #line 3419 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3419 break;
3420 case 139: /* datatype_buffer ::= BUFFER LT HALF GT */
3421 #line 341 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3422 { yygotominor.yy37 = &ctx->dt_buf_half; }
3423 #line 3424 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3424 break;
3425 case 140: /* datatype_buffer ::= BUFFER LT FLOAT GT */
3426 #line 342 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3427 { yygotominor.yy37 = &ctx->dt_buf_float; }
3428 #line 3429 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3429 break;
3430 case 141: /* datatype_buffer ::= BUFFER LT DOUBLE GT */
3431 #line 343 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3432 { yygotominor.yy37 = &ctx->dt_buf_double; }
3433 #line 3434 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3434 break;
3435 case 142: /* datatype_buffer ::= BUFFER LT SNORM FLOAT GT */
3436 #line 344 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3437 { yygotominor.yy37 = &ctx->dt_buf_float_snorm; }
3438 #line 3439 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3439 break;
3440 case 143: /* datatype_buffer ::= BUFFER LT UNORM FLOAT GT */
3441 #line 345 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3442 { yygotominor.yy37 = &ctx->dt_buf_float_unorm; }
3443 #line 3444 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3444 break;
3445 case 144: /* datatype_vector ::= VECTOR LT datatype_scalar COMMA INT_CONSTANT GT */
3446 #line 348 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3447 { yygotominor.yy37 = new_datatype_vector(ctx, yymsp[-3].minor.yy37, (int) yymsp[-1].minor.yy0.i64); }
3448 #line 3449 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3449 break;
3450 case 145: /* datatype_matrix ::= MATRIX LT datatype_scalar COMMA INT_CONSTANT COMMA INT_CONSTANT GT */
3451 #line 351 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3452 { yygotominor.yy37 = new_datatype_matrix(ctx, yymsp[-5].minor.yy37, (int) yymsp[-3].minor.yy0.i64, (int) yymsp[-1].minor.yy0.i64); }
3453 #line 3454 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3454 break;
3455 case 146: /* statement_block ::= LBRACE RBRACE */
3456 #line 355 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3457 { yygotominor.yy233 = new_block_statement(ctx, NULL); }
3458 #line 3459 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3459 break;
3460 case 147: /* statement_block ::= LBRACE statement_list RBRACE */
3461 #line 356 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3462 { REVERSE_LINKED_LIST(MOJOSHADER_astStatement, yymsp[-1].minor.yy233); yygotominor.yy233 = new_block_statement(ctx, yymsp[-1].minor.yy233); }
3463 #line 3464 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3464 break;
3465 case 148: /* statement_list ::= statement */
3466 case 172: /* statement ::= statement_block */ yytestcase(yyruleno==172);
3467 case 173: /* statement ::= for_statement */ yytestcase(yyruleno==173);
3468 #line 360 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3469 { yygotominor.yy233 = yymsp[0].minor.yy233; }
3470 #line 3471 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3471 break;
3472 case 149: /* statement_list ::= statement_list statement */
3473 #line 361 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3474 { yygotominor.yy233 = yymsp[0].minor.yy233; yygotominor.yy233->next = yymsp[-1].minor.yy233; }
3475 #line 3476 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3476 break;
3477 case 150: /* statement_attribute ::= ISOLATE */
3478 case 151: /* statement_attribute ::= MAXINSTRUCTIONCOUNT LPAREN INT_CONSTANT RPAREN */ yytestcase(yyruleno==151);
3479 case 152: /* statement_attribute ::= NOEXPRESSIONOPTIMIZATIONS */ yytestcase(yyruleno==152);
3480 case 153: /* statement_attribute ::= REMOVEUNUSEDINPUTS */ yytestcase(yyruleno==153);
3481 case 154: /* statement_attribute ::= UNUSED */ yytestcase(yyruleno==154);
3482 case 155: /* statement_attribute ::= XPS */ yytestcase(yyruleno==155);
3483 case 176: /* while_intro ::= LBRACKET LOOP RBRACKET WHILE */ yytestcase(yyruleno==176);
3484 case 181: /* for_intro ::= LBRACKET LOOP RBRACKET FOR */ yytestcase(yyruleno==181);
3485 case 197: /* do_intro ::= LBRACKET LOOP RBRACKET DO */ yytestcase(yyruleno==197);
3486 #line 367 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3487 { yygotominor.yy270 = 0; }
3488 #line 3489 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3489 break;
3490 case 156: /* statement ::= BREAK SEMICOLON */
3491 #line 376 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3492 { yygotominor.yy233 = new_break_statement(ctx); }
3493 #line 3494 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3494 break;
3495 case 157: /* statement ::= CONTINUE SEMICOLON */
3496 #line 377 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3497 { yygotominor.yy233 = new_continue_statement(ctx); }
3498 #line 3499 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3499 break;
3500 case 158: /* statement ::= DISCARD SEMICOLON */
3501 #line 378 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3502 { yygotominor.yy233 = new_discard_statement(ctx); }
3503 #line 3504 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3504 break;
3505 case 159: /* statement ::= LBRACKET statement_attribute RBRACKET statement_block */
3506 #line 379 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3507 { yygotominor.yy233 = yymsp[0].minor.yy233; /* !!! FIXME: yygotominor.yy233->attributes = yymsp[-2].minor.yy270;*/ yymsp[-2].minor.yy270 = 0; }
3508 #line 3509 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3509 break;
3510 case 160: /* statement ::= variable_declaration */
3511 #line 380 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3512 { yygotominor.yy233 = new_vardecl_statement(ctx, yymsp[0].minor.yy24); }
3513 #line 3514 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3514 break;
3515 case 161: /* statement ::= struct_declaration SEMICOLON */
3516 #line 381 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3517 { yygotominor.yy233 = new_struct_statement(ctx, yymsp[-1].minor.yy249); }
3518 #line 3519 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3519 break;
3520 case 162: /* statement ::= do_intro DO statement WHILE LPAREN expression RPAREN SEMICOLON */
3521 #line 382 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3522 { yygotominor.yy233 = new_do_statement(ctx, yymsp[-7].minor.yy270, yymsp[-5].minor.yy233, yymsp[-2].minor.yy322); }
3523 #line 3524 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3524 break;
3525 case 163: /* statement ::= while_intro LPAREN expression RPAREN statement */
3526 #line 383 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3527 { yygotominor.yy233 = new_while_statement(ctx, yymsp[-4].minor.yy270, yymsp[-2].minor.yy322, yymsp[0].minor.yy233); }
3528 #line 3529 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3529 break;
3530 case 164: /* statement ::= if_intro LPAREN expression RPAREN statement */
3531 #line 384 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3532 { yygotominor.yy233 = new_if_statement(ctx, yymsp[-4].minor.yy270, yymsp[-2].minor.yy322, yymsp[0].minor.yy233, NULL); }
3533 #line 3534 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3534 break;
3535 case 165: /* statement ::= if_intro LPAREN expression RPAREN statement ELSE statement */
3536 #line 385 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3537 { yygotominor.yy233 = new_if_statement(ctx, yymsp[-6].minor.yy270, yymsp[-4].minor.yy322, yymsp[-2].minor.yy233, yymsp[0].minor.yy233); }
3538 #line 3539 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3539 break;
3540 case 166: /* statement ::= switch_intro LPAREN expression RPAREN LBRACE switch_case_list RBRACE */
3541 #line 386 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3542 { REVERSE_LINKED_LIST(MOJOSHADER_astSwitchCases, yymsp[-1].minor.yy165); yygotominor.yy233 = new_switch_statement(ctx, yymsp[-6].minor.yy270, yymsp[-4].minor.yy322, yymsp[-1].minor.yy165); }
3543 #line 3544 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3544 break;
3545 case 167: /* statement ::= typedef */
3546 #line 387 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3547 { yygotominor.yy233 = new_typedef_statement(ctx, yymsp[0].minor.yy71); }
3548 #line 3549 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3549 break;
3550 case 168: /* statement ::= SEMICOLON */
3551 #line 388 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3552 { yygotominor.yy233 = new_empty_statement(ctx); }
3553 #line 3554 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3554 break;
3555 case 169: /* statement ::= expression SEMICOLON */
3556 #line 389 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3557 { yygotominor.yy233 = new_expr_statement(ctx, yymsp[-1].minor.yy322); }
3558 #line 3559 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3559 break;
3560 case 170: /* statement ::= RETURN SEMICOLON */
3561 #line 390 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3562 { yygotominor.yy233 = new_return_statement(ctx, NULL); }
3563 #line 3564 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3564 break;
3565 case 171: /* statement ::= RETURN expression SEMICOLON */
3566 #line 391 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3567 { yygotominor.yy233 = new_return_statement(ctx, yymsp[-1].minor.yy322); }
3568 #line 3569 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3569 break;
3570 case 174: /* while_intro ::= LBRACKET UNROLL LPAREN INT_CONSTANT RPAREN RBRACKET WHILE */
3571 case 179: /* for_intro ::= LBRACKET UNROLL LPAREN INT_CONSTANT RPAREN RBRACKET FOR */ yytestcase(yyruleno==179);
3572 #line 397 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3573 { yygotominor.yy270 = (yymsp[-3].minor.yy0.i64 < 0) ? 0 : yymsp[-3].minor.yy0.i64; }
3574 #line 3575 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3575 break;
3576 case 175: /* while_intro ::= LBRACKET UNROLL RBRACKET WHILE */
3577 case 180: /* for_intro ::= LBRACKET UNROLL RBRACKET FOR */ yytestcase(yyruleno==180);
3578 case 196: /* do_intro ::= LBRACKET UNROLL RBRACKET DO */ yytestcase(yyruleno==196);
3579 #line 398 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3580 { yygotominor.yy270 = -1; }
3581 #line 3582 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3582 break;
3583 case 177: /* while_intro ::= WHILE */
3584 case 182: /* for_intro ::= FOR */ yytestcase(yyruleno==182);
3585 case 198: /* do_intro ::= DO */ yytestcase(yyruleno==198);
3586 #line 400 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3587 { yygotominor.yy270 = -2; }
3588 #line 3589 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3589 break;
3590 case 178: /* for_statement ::= for_intro for_details */
3591 #line 404 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3592 { yygotominor.yy233 = yymsp[0].minor.yy233; ((MOJOSHADER_astForStatement *) yygotominor.yy233)->unroll = yymsp[-1].minor.yy270; }
3593 #line 3594 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3594 break;
3595 case 183: /* for_details ::= LPAREN expression SEMICOLON expression SEMICOLON expression RPAREN statement */
3596 #line 414 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3597 { yygotominor.yy233 = new_for_statement(ctx, NULL, yymsp[-6].minor.yy322, yymsp[-4].minor.yy322, yymsp[-2].minor.yy322, yymsp[0].minor.yy233); }
3598 #line 3599 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3599 break;
3600 case 184: /* for_details ::= LPAREN SEMICOLON SEMICOLON RPAREN statement */
3601 #line 415 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3602 { yygotominor.yy233 = new_for_statement(ctx, NULL, NULL, NULL, NULL, yymsp[0].minor.yy233); }
3603 #line 3604 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3604 break;
3605 case 185: /* for_details ::= LPAREN SEMICOLON SEMICOLON expression RPAREN statement */
3606 #line 416 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3607 { yygotominor.yy233 = new_for_statement(ctx, NULL, NULL, NULL, yymsp[-2].minor.yy322, yymsp[0].minor.yy233); }
3608 #line 3609 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3609 break;
3610 case 186: /* for_details ::= LPAREN SEMICOLON expression SEMICOLON RPAREN statement */
3611 #line 417 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3612 { yygotominor.yy233 = new_for_statement(ctx, NULL, NULL, yymsp[-3].minor.yy322, NULL, yymsp[0].minor.yy233); }
3613 #line 3614 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3614 break;
3615 case 187: /* for_details ::= LPAREN SEMICOLON expression SEMICOLON expression RPAREN statement */
3616 #line 418 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3617 { yygotominor.yy233 = new_for_statement(ctx, NULL, NULL, yymsp[-4].minor.yy322, yymsp[-2].minor.yy322, yymsp[0].minor.yy233); }
3618 #line 3619 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3619 break;
3620 case 188: /* for_details ::= LPAREN expression SEMICOLON SEMICOLON RPAREN statement */
3621 #line 419 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3622 { yygotominor.yy233 = new_for_statement(ctx, NULL, yymsp[-4].minor.yy322, NULL, NULL, yymsp[0].minor.yy233); }
3623 #line 3624 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3624 break;
3625 case 189: /* for_details ::= LPAREN expression SEMICOLON SEMICOLON expression RPAREN statement */
3626 #line 420 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3627 { yygotominor.yy233 = new_for_statement(ctx, NULL, yymsp[-5].minor.yy322, NULL, yymsp[-2].minor.yy322, yymsp[0].minor.yy233); }
3628 #line 3629 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3629 break;
3630 case 190: /* for_details ::= LPAREN expression SEMICOLON expression SEMICOLON RPAREN statement */
3631 #line 421 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3632 { yygotominor.yy233 = new_for_statement(ctx, NULL, yymsp[-5].minor.yy322, yymsp[-3].minor.yy322, NULL, yymsp[0].minor.yy233); }
3633 #line 3634 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3634 break;
3635 case 191: /* for_details ::= LPAREN variable_declaration expression SEMICOLON expression RPAREN statement */
3636 #line 422 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3637 { yygotominor.yy233 = new_for_statement(ctx, yymsp[-5].minor.yy24, NULL, yymsp[-4].minor.yy322, yymsp[-2].minor.yy322, yymsp[0].minor.yy233); }
3638 #line 3639 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3639 break;
3640 case 192: /* for_details ::= LPAREN variable_declaration SEMICOLON RPAREN statement */
3641 #line 423 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3642 { yygotominor.yy233 = new_for_statement(ctx, yymsp[-3].minor.yy24, NULL, NULL, NULL, yymsp[0].minor.yy233); }
3643 #line 3644 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3644 break;
3645 case 193: /* for_details ::= LPAREN variable_declaration SEMICOLON expression RPAREN statement */
3646 #line 424 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3647 { yygotominor.yy233 = new_for_statement(ctx, yymsp[-4].minor.yy24, NULL, yymsp[-2].minor.yy322, NULL, yymsp[0].minor.yy233); }
3648 #line 3649 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3649 break;
3650 case 194: /* for_details ::= LPAREN variable_declaration expression SEMICOLON RPAREN statement */
3651 #line 425 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3652 { yygotominor.yy233 = new_for_statement(ctx, yymsp[-4].minor.yy24, NULL, yymsp[-3].minor.yy322, NULL, yymsp[0].minor.yy233); }
3653 #line 3654 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3654 break;
3655 case 195: /* do_intro ::= LBRACKET UNROLL LPAREN INT_CONSTANT RPAREN RBRACKET DO */
3656 #line 428 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3657 { yygotominor.yy270 = (yymsp[-3].minor.yy0.i64 < 0) ? 0 : (int) yymsp[-3].minor.yy0.i64; }
3658 #line 3659 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3659 break;
3660 case 199: /* if_intro ::= LBRACKET BRANCH RBRACKET IF */
3661 #line 434 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3662 { yygotominor.yy270 = MOJOSHADER_AST_IFATTR_BRANCH; }
3663 #line 3664 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3664 break;
3665 case 200: /* if_intro ::= LBRACKET FLATTEN RBRACKET IF */
3666 #line 435 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3667 { yygotominor.yy270 = MOJOSHADER_AST_IFATTR_FLATTEN; }
3668 #line 3669 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3669 break;
3670 case 201: /* if_intro ::= LBRACKET IFALL RBRACKET IF */
3671 #line 436 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3672 { yygotominor.yy270 = MOJOSHADER_AST_IFATTR_IFALL; }
3673 #line 3674 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3674 break;
3675 case 202: /* if_intro ::= LBRACKET IFANY RBRACKET IF */
3676 #line 437 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3677 { yygotominor.yy270 = MOJOSHADER_AST_IFATTR_IFANY; }
3678 #line 3679 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3679 break;
3680 case 203: /* if_intro ::= LBRACKET PREDICATE RBRACKET IF */
3681 #line 438 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3682 { yygotominor.yy270 = MOJOSHADER_AST_IFATTR_PREDICATE; }
3683 #line 3684 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3684 break;
3685 case 204: /* if_intro ::= LBRACKET PREDICATEBLOCK RBRACKET IF */
3686 #line 439 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3687 { yygotominor.yy270 = MOJOSHADER_AST_IFATTR_PREDICATEBLOCK; }
3688 #line 3689 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3689 break;
3690 case 205: /* if_intro ::= IF */
3691 #line 440 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3692 { yygotominor.yy270 = MOJOSHADER_AST_IFATTR_NONE; }
3693 #line 3694 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3694 break;
3695 case 206: /* switch_intro ::= LBRACKET FLATTEN RBRACKET SWITCH */
3696 #line 443 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3697 { yygotominor.yy270 = MOJOSHADER_AST_SWITCHATTR_FLATTEN; }
3698 #line 3699 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3699 break;
3700 case 207: /* switch_intro ::= LBRACKET BRANCH RBRACKET SWITCH */
3701 #line 444 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3702 { yygotominor.yy270 = MOJOSHADER_AST_SWITCHATTR_BRANCH; }
3703 #line 3704 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3704 break;
3705 case 208: /* switch_intro ::= LBRACKET FORCECASE RBRACKET SWITCH */
3706 #line 445 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3707 { yygotominor.yy270 = MOJOSHADER_AST_SWITCHATTR_FORCECASE; }
3708 #line 3709 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3709 break;
3710 case 209: /* switch_intro ::= LBRACKET CALL RBRACKET SWITCH */
3711 #line 446 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3712 { yygotominor.yy270 = MOJOSHADER_AST_SWITCHATTR_CALL; }
3713 #line 3714 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3714 break;
3715 case 210: /* switch_intro ::= SWITCH */
3716 #line 447 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3717 { yygotominor.yy270 = MOJOSHADER_AST_SWITCHATTR_NONE; }
3718 #line 3719 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3719 break;
3720 case 211: /* switch_case_list ::= switch_case */
3721 #line 451 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3722 { yygotominor.yy165 = yymsp[0].minor.yy165; }
3723 #line 3724 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3724 break;
3725 case 212: /* switch_case_list ::= switch_case_list switch_case */
3726 #line 452 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3727 { yygotominor.yy165 = yymsp[0].minor.yy165; yygotominor.yy165->next = yymsp[-1].minor.yy165; }
3728 #line 3729 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3729 break;
3730 case 213: /* switch_case ::= CASE expression COLON statement_list */
3731 #line 458 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3732 { REVERSE_LINKED_LIST(MOJOSHADER_astStatement, yymsp[0].minor.yy233); yygotominor.yy165 = new_switch_case(ctx, yymsp[-2].minor.yy322, yymsp[0].minor.yy233); }
3733 #line 3734 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3734 break;
3735 case 214: /* switch_case ::= CASE expression COLON */
3736 #line 459 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3737 { yygotominor.yy165 = new_switch_case(ctx, yymsp[-1].minor.yy322, NULL); }
3738 #line 3739 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3739 break;
3740 case 215: /* switch_case ::= DEFAULT COLON statement_list */
3741 #line 460 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3742 { REVERSE_LINKED_LIST(MOJOSHADER_astStatement, yymsp[0].minor.yy233); yygotominor.yy165 = new_switch_case(ctx, NULL, yymsp[0].minor.yy233); }
3743 #line 3744 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3744 break;
3745 case 216: /* switch_case ::= DEFAULT COLON */
3746 #line 461 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3747 { yygotominor.yy165 = new_switch_case(ctx, NULL, NULL); }
3748 #line 3749 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3749 break;
3750 case 217: /* primary_expr ::= IDENTIFIER */
3751 #line 466 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3752 { yygotominor.yy322 = new_identifier_expr(ctx, yymsp[0].minor.yy0.string); }
3753 #line 3754 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3754 break;
3755 case 218: /* primary_expr ::= INT_CONSTANT */
3756 #line 467 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3757 { yygotominor.yy322 = new_literal_int_expr(ctx, yymsp[0].minor.yy0.i64); }
3758 #line 3759 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3759 break;
3760 case 219: /* primary_expr ::= FLOAT_CONSTANT */
3761 #line 468 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3762 { yygotominor.yy322 = new_literal_float_expr(ctx, yymsp[0].minor.yy0.dbl); }
3763 #line 3764 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3764 break;
3765 case 220: /* primary_expr ::= STRING_LITERAL */
3766 #line 469 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3767 { yygotominor.yy322 = new_literal_string_expr(ctx, yymsp[0].minor.yy0.string); }
3768 #line 3769 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3769 break;
3770 case 221: /* primary_expr ::= TRUE */
3771 #line 470 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3772 { yygotominor.yy322 = new_literal_boolean_expr(ctx, 1); }
3773 #line 3774 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3774 break;
3775 case 222: /* primary_expr ::= FALSE */
3776 #line 471 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3777 { yygotominor.yy322 = new_literal_boolean_expr(ctx, 0); }
3778 #line 3779 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3779 break;
3780 case 225: /* postfix_expr ::= postfix_expr LBRACKET expression RBRACKET */
3781 #line 477 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3782 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_DEREF_ARRAY, yymsp[-3].minor.yy322, yymsp[-1].minor.yy322); }
3783 #line 3784 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3784 break;
3785 case 226: /* postfix_expr ::= IDENTIFIER arguments */
3786 #line 478 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3787 { yygotominor.yy322 = new_callfunc_expr(ctx, yymsp[-1].minor.yy0.string, yymsp[0].minor.yy26); }
3788 #line 3789 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3789 break;
3790 case 227: /* postfix_expr ::= datatype arguments */
3791 #line 479 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3792 { yygotominor.yy322 = new_constructor_expr(ctx, yymsp[-1].minor.yy37, yymsp[0].minor.yy26); }
3793 #line 3794 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3794 break;
3795 case 228: /* postfix_expr ::= postfix_expr DOT IDENTIFIER */
3796 #line 480 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3797 { yygotominor.yy322 = new_deref_struct_expr(ctx, yymsp[-2].minor.yy322, yymsp[0].minor.yy0.string); }
3798 #line 3799 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3799 break;
3800 case 229: /* postfix_expr ::= postfix_expr PLUSPLUS */
3801 #line 481 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3802 { yygotominor.yy322 = new_unary_expr(ctx, MOJOSHADER_AST_OP_POSTINCREMENT, yymsp[-1].minor.yy322); }
3803 #line 3804 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3804 break;
3805 case 230: /* postfix_expr ::= postfix_expr MINUSMINUS */
3806 #line 482 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3807 { yygotominor.yy322 = new_unary_expr(ctx, MOJOSHADER_AST_OP_POSTDECREMENT, yymsp[-1].minor.yy322); }
3808 #line 3809 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3809 break;
3810 case 231: /* arguments ::= LPAREN RPAREN */
3811 #line 486 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3812 { yygotominor.yy26 = NULL; }
3813 #line 3814 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3814 break;
3815 case 232: /* arguments ::= LPAREN argument_list RPAREN */
3816 #line 487 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3817 { REVERSE_LINKED_LIST(MOJOSHADER_astArguments, yymsp[-1].minor.yy26); yygotominor.yy26 = yymsp[-1].minor.yy26; }
3818 #line 3819 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3819 break;
3820 case 233: /* argument_list ::= assignment_expr */
3821 #line 491 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3822 { yygotominor.yy26 = new_argument(ctx, yymsp[0].minor.yy322); }
3823 #line 3824 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3824 break;
3825 case 234: /* argument_list ::= argument_list COMMA assignment_expr */
3826 #line 492 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3827 { yygotominor.yy26 = new_argument(ctx, yymsp[0].minor.yy322); yygotominor.yy26->next = yymsp[-2].minor.yy26; }
3828 #line 3829 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3829 break;
3830 case 236: /* unary_expr ::= PLUSPLUS unary_expr */
3831 #line 497 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3832 { yygotominor.yy322 = new_unary_expr(ctx, MOJOSHADER_AST_OP_PREINCREMENT, yymsp[0].minor.yy322); }
3833 #line 3834 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3834 break;
3835 case 237: /* unary_expr ::= MINUSMINUS unary_expr */
3836 #line 498 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3837 { yygotominor.yy322 = new_unary_expr(ctx, MOJOSHADER_AST_OP_PREDECREMENT, yymsp[0].minor.yy322); }
3838 #line 3839 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3839 break;
3840 case 239: /* unary_expr ::= MINUS cast_expr */
3841 #line 500 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3842 { yygotominor.yy322 = new_unary_expr(ctx, MOJOSHADER_AST_OP_NEGATE, yymsp[0].minor.yy322); }
3843 #line 3844 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3844 break;
3845 case 240: /* unary_expr ::= COMPLEMENT cast_expr */
3846 #line 501 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3847 { yygotominor.yy322 = new_unary_expr(ctx, MOJOSHADER_AST_OP_COMPLEMENT, yymsp[0].minor.yy322); }
3848 #line 3849 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3849 break;
3850 case 241: /* unary_expr ::= EXCLAMATION cast_expr */
3851 #line 502 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3852 { yygotominor.yy322 = new_unary_expr(ctx, MOJOSHADER_AST_OP_NOT, yymsp[0].minor.yy322); }
3853 #line 3854 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3854 break;
3855 case 243: /* cast_expr ::= LPAREN datatype RPAREN cast_expr */
3856 #line 507 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3857 { yygotominor.yy322 = new_cast_expr(ctx, yymsp[-2].minor.yy37, yymsp[0].minor.yy322); }
3858 #line 3859 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3859 break;
3860 case 245: /* multiplicative_expr ::= multiplicative_expr STAR cast_expr */
3861 #line 512 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3862 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_MULTIPLY, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3863 #line 3864 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3864 break;
3865 case 246: /* multiplicative_expr ::= multiplicative_expr SLASH cast_expr */
3866 #line 513 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3867 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_DIVIDE, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3868 #line 3869 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3869 break;
3870 case 247: /* multiplicative_expr ::= multiplicative_expr PERCENT cast_expr */
3871 #line 514 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3872 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_MODULO, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3873 #line 3874 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3874 break;
3875 case 249: /* additive_expr ::= additive_expr PLUS multiplicative_expr */
3876 #line 519 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3877 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_ADD, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3878 #line 3879 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3879 break;
3880 case 250: /* additive_expr ::= additive_expr MINUS multiplicative_expr */
3881 #line 520 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3882 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_SUBTRACT, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3883 #line 3884 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3884 break;
3885 case 252: /* shift_expr ::= shift_expr LSHIFT additive_expr */
3886 #line 525 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3887 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_LSHIFT, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3888 #line 3889 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3889 break;
3890 case 253: /* shift_expr ::= shift_expr RSHIFT additive_expr */
3891 #line 526 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3892 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_RSHIFT, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3893 #line 3894 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3894 break;
3895 case 255: /* relational_expr ::= relational_expr LT shift_expr */
3896 #line 531 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3897 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_LESSTHAN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3898 #line 3899 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3899 break;
3900 case 256: /* relational_expr ::= relational_expr GT shift_expr */
3901 #line 532 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3902 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_GREATERTHAN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3903 #line 3904 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3904 break;
3905 case 257: /* relational_expr ::= relational_expr LEQ shift_expr */
3906 #line 533 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3907 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_LESSTHANOREQUAL, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3908 #line 3909 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3909 break;
3910 case 258: /* relational_expr ::= relational_expr GEQ shift_expr */
3911 #line 534 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3912 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_GREATERTHANOREQUAL, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3913 #line 3914 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3914 break;
3915 case 260: /* equality_expr ::= equality_expr EQL relational_expr */
3916 #line 539 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3917 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_EQUAL, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3918 #line 3919 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3919 break;
3920 case 261: /* equality_expr ::= equality_expr NEQ relational_expr */
3921 #line 540 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3922 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_NOTEQUAL, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3923 #line 3924 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3924 break;
3925 case 263: /* and_expr ::= and_expr AND equality_expr */
3926 #line 545 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3927 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_BINARYAND, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3928 #line 3929 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3929 break;
3930 case 265: /* exclusive_or_expr ::= exclusive_or_expr XOR and_expr */
3931 #line 550 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3932 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_BINARYXOR, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3933 #line 3934 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3934 break;
3935 case 267: /* inclusive_or_expr ::= inclusive_or_expr OR exclusive_or_expr */
3936 #line 555 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3937 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_BINARYOR, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3938 #line 3939 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3939 break;
3940 case 269: /* logical_and_expr ::= logical_and_expr ANDAND inclusive_or_expr */
3941 #line 560 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3942 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_LOGICALAND, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3943 #line 3944 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3944 break;
3945 case 271: /* logical_or_expr ::= logical_or_expr OROR logical_and_expr */
3946 #line 565 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3947 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_LOGICALOR, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3948 #line 3949 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3949 break;
3950 case 273: /* conditional_expr ::= logical_or_expr QUESTION logical_or_expr COLON conditional_expr */
3951 #line 570 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3952 { yygotominor.yy322 = new_ternary_expr(ctx, MOJOSHADER_AST_OP_CONDITIONAL, yymsp[-4].minor.yy322, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3953 #line 3954 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3954 break;
3955 case 275: /* assignment_expr ::= unary_expr ASSIGN assignment_expr */
3956 #line 575 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3957 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_ASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3958 #line 3959 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3959 break;
3960 case 276: /* assignment_expr ::= unary_expr MULASSIGN assignment_expr */
3961 #line 576 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3962 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_MULASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3963 #line 3964 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3964 break;
3965 case 277: /* assignment_expr ::= unary_expr DIVASSIGN assignment_expr */
3966 #line 577 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3967 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_DIVASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3968 #line 3969 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3969 break;
3970 case 278: /* assignment_expr ::= unary_expr MODASSIGN assignment_expr */
3971 #line 578 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3972 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_MODASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3973 #line 3974 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3974 break;
3975 case 279: /* assignment_expr ::= unary_expr ADDASSIGN assignment_expr */
3976 #line 579 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3977 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_ADDASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3978 #line 3979 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3979 break;
3980 case 280: /* assignment_expr ::= unary_expr SUBASSIGN assignment_expr */
3981 #line 580 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3982 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_SUBASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3983 #line 3984 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3984 break;
3985 case 281: /* assignment_expr ::= unary_expr LSHIFTASSIGN assignment_expr */
3986 #line 581 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3987 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_LSHIFTASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3988 #line 3989 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3989 break;
3990 case 282: /* assignment_expr ::= unary_expr RSHIFTASSIGN assignment_expr */
3991 #line 582 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3992 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_RSHIFTASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3993 #line 3994 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3994 break;
3995 case 283: /* assignment_expr ::= unary_expr ANDASSIGN assignment_expr */
3996 #line 583 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
3997 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_ANDASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
3998 #line 3999 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
3999 break;
4000 case 284: /* assignment_expr ::= unary_expr XORASSIGN assignment_expr */
4001 #line 584 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
4002 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_XORASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
4003 #line 4004 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
4004 break;
4005 case 285: /* assignment_expr ::= unary_expr ORASSIGN assignment_expr */
4006 #line 585 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
4007 { yygotominor.yy322 = new_binary_expr(ctx, MOJOSHADER_AST_OP_ORASSIGN, yymsp[-2].minor.yy322, yymsp[0].minor.yy322); }
4008 #line 4009 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
4009 break;
4010 default:
4011 break;
4012 };
4013 yygoto = yyRuleInfo[yyruleno].lhs;
4014 yysize = yyRuleInfo[yyruleno].nrhs;
4015 yypParser->yyidx -= yysize;
4016 yyact = yy_find_reduce_action(yymsp[-yysize].stateno,(YYCODETYPE)yygoto);
4017 if( yyact < YYNSTATE ){
4018 #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
4019 /* If we are not debugging and the reduce action popped at least
4020 ** one element off the stack, then we can push the new element back
4021 ** onto the stack here, and skip the stack overflow test in yy_shift().
4022 ** That gives a significant speed improvement. */
4023 if( yysize ){
4024 yypParser->yyidx++;
4025 yymsp -= yysize-1;
4026 yymsp->stateno = (YYACTIONTYPE)yyact;
4027 yymsp->major = (YYCODETYPE)yygoto;
4028 yymsp->minor = yygotominor;
4029 }else
4030 #endif
4031 {
4032 yy_shift(yypParser,yyact,yygoto,&yygotominor);
4033 }
4034 }else{
4035 assert( yyact == YYNSTATE + YYNRULE + 1 );
4036 yy_accept(yypParser);
4037 }
4038 }
4039
4040 /*
4041 ** The following code executes when the parse fails
4042 */
4043 #ifndef YYNOERRORRECOVERY
4044 static void yy_parse_failed(
4045 yyParser *yypParser /* The parser */
4046 ){
4047 ParseHLSLARG_FETCH;
4048 #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
4049 if( yyTraceFILE ){
4050 fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt);
4051 }
4052 #endif
4053 while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
4054 /* Here code is inserted which will be executed whenever the
4055 ** parser fails */
4056 #line 42 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
4057
4058 // !!! FIXME: make this a proper fail() function.
4059 fail(ctx, "Giving up. Parser is hopelessly lost...");
4060 #line 4061 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
4061 ParseHLSLARG_STORE; /* Suppress warning about unused %extra_argument variable */
4062 }
4063 #endif /* YYNOERRORRECOVERY */
4064
4065 /*
4066 ** The following code executes when a syntax error first occurs.
4067 */
4068 static void yy_syntax_error(
4069 yyParser *yypParser, /* The parser */
4070 int yymajor, /* The major type of the error token */
4071 YYMINORTYPE yyminor /* The minor type of the error token */
4072 ){
4073 ParseHLSLARG_FETCH;
4074 #define TOKEN (yyminor.yy0)
4075 #line 37 "D:/dev/mojoshader/mojoshader_parser_hlsl.lemon"
4076
4077 // !!! FIXME: make this a proper fail() function.
4078 fail(ctx, "Syntax error");
4079 #line 4080 "D:/dev/mojoshader/mojoshader_parser_hlsl.h"
4080 ParseHLSLARG_STORE; /* Suppress warning about unused %extra_argument variable */
4081 }
4082
4083 /*
4084 ** The following is executed when the parser accepts
4085 */
4086 static void yy_accept(
4087 yyParser *yypParser /* The parser */
4088 ){
4089 ParseHLSLARG_FETCH;
4090 #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
4091 if( yyTraceFILE ){
4092 fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt);
4093 }
4094 #endif
4095 while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
4096 /* Here code is inserted which will be executed whenever the
4097 ** parser accepts */
4098 ParseHLSLARG_STORE; /* Suppress warning about unused %extra_argument variable */
4099 }
4100
4101 /* The main parser program.
4102 ** The first argument is a pointer to a structure obtained from
4103 ** "ParseHLSLAlloc" which describes the current state of the parser.
4104 ** The second argument is the major token number. The third is
4105 ** the minor token. The fourth optional argument is whatever the
4106 ** user wants (and specified in the grammar) and is available for
4107 ** use by the action routines.
4108 **
4109 ** Inputs:
4110 ** <ul>
4111 ** <li> A pointer to the parser (an opaque structure.)
4112 ** <li> The major token number.
4113 ** <li> The minor token number.
4114 ** <li> An option argument of a grammar-specified type.
4115 ** </ul>
4116 **
4117 ** Outputs:
4118 ** None.
4119 */
4120 #if __MOJOSHADER__
4121 static
4122 #endif
4123 void ParseHLSL(
4124 void *yyp, /* The parser */
4125 int yymajor, /* The major token code number */
4126 ParseHLSLTOKENTYPE yyminor /* The value for the token */
4127 ParseHLSLARG_PDECL /* Optional %extra_argument parameter */
4128 ){
4129 YYMINORTYPE yyminorunion;
4130 int yyact; /* The parser action. */
4131 int yyendofinput; /* True if we are at the end of input */
4132 #ifdef YYERRORSYMBOL
4133 int yyerrorhit = 0; /* True if yymajor has invoked an error */
4134 #endif
4135 yyParser *yypParser; /* The parser */
4136
4137 /* (re)initialize the parser, if necessary */
4138 yypParser = (yyParser*)yyp;
4139 if( yypParser->yyidx<0 ){
4140 #if YYSTACKDEPTH<=0
4141 if( yypParser->yystksz <=0 ){
4142 /*memset(&yyminorunion, 0, sizeof(yyminorunion));*/
4143 yyminorunion = yyzerominor;
4144 yyStackOverflow(yypParser, &yyminorunion);
4145 return;
4146 }
4147 #endif
4148 yypParser->yyidx = 0;
4149 yypParser->yyerrcnt = -1;
4150 yypParser->yystack[0].stateno = 0;
4151 yypParser->yystack[0].major = 0;
4152 }
4153 yyminorunion.yy0 = yyminor;
4154 yyendofinput = (yymajor==0);
4155 ParseHLSLARG_STORE;
4156
4157 #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
4158 if( yyTraceFILE ){
4159 fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]);
4160 }
4161 #endif
4162
4163 do{
4164 yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor);
4165 if( yyact<YYNSTATE ){
4166 assert( !yyendofinput ); /* Impossible to shift the $ token */
4167 yy_shift(yypParser,yyact,yymajor,&yyminorunion);
4168 yypParser->yyerrcnt--;
4169 yymajor = YYNOCODE;
4170 }else if( yyact < YYNSTATE + YYNRULE ){
4171 yy_reduce(yypParser,yyact-YYNSTATE);
4172 }else{
4173 assert( yyact == YY_ERROR_ACTION );
4174 #ifdef YYERRORSYMBOL
4175 int yymx;
4176 #endif
4177 #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
4178 if( yyTraceFILE ){
4179 fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt);
4180 }
4181 #endif
4182 #ifdef YYERRORSYMBOL
4183 /* A syntax error has occurred.
4184 ** The response to an error depends upon whether or not the
4185 ** grammar defines an error token "ERROR".
4186 **
4187 ** This is what we do if the grammar does define ERROR:
4188 **
4189 ** * Call the %syntax_error function.
4190 **
4191 ** * Begin popping the stack until we enter a state where
4192 ** it is legal to shift the error symbol, then shift
4193 ** the error symbol.
4194 **
4195 ** * Set the error count to three.
4196 **
4197 ** * Begin accepting and shifting new tokens. No new error
4198 ** processing will occur until three tokens have been
4199 ** shifted successfully.
4200 **
4201 */
4202 if( yypParser->yyerrcnt<0 ){
4203 yy_syntax_error(yypParser,yymajor,yyminorunion);
4204 }
4205 yymx = yypParser->yystack[yypParser->yyidx].major;
4206 if( yymx==YYERRORSYMBOL || yyerrorhit ){
4207 #if LEMON_SUPPORT_TRACING /* __MOJOSHADER__ */
4208 if( yyTraceFILE ){
4209 fprintf(yyTraceFILE,"%sDiscard input token %s\n",
4210 yyTracePrompt,yyTokenName[yymajor]);
4211 }
4212 #endif
4213 yy_destructor(yypParser, (YYCODETYPE)yymajor,&yyminorunion);
4214 yymajor = YYNOCODE;
4215 }else{
4216 while(
4217 yypParser->yyidx >= 0 &&
4218 yymx != YYERRORSYMBOL &&
4219 (yyact = yy_find_reduce_action(
4220 yypParser->yystack[yypParser->yyidx].stateno,
4221 YYERRORSYMBOL)) >= YYNSTATE
4222 ){
4223 yy_pop_parser_stack(yypParser);
4224 }
4225 if( yypParser->yyidx < 0 || yymajor==0 ){
4226 yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
4227 yy_parse_failed(yypParser);
4228 yymajor = YYNOCODE;
4229 }else if( yymx!=YYERRORSYMBOL ){
4230 YYMINORTYPE u2;
4231 u2.YYERRSYMDT = 0;
4232 yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2);
4233 }
4234 }
4235 yypParser->yyerrcnt = 3;
4236 yyerrorhit = 1;
4237 #elif defined(YYNOERRORRECOVERY)
4238 /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to
4239 ** do any kind of error recovery. Instead, simply invoke the syntax
4240 ** error routine and continue going as if nothing had happened.
4241 **
4242 ** Applications can set this macro (for example inside %include) if
4243 ** they intend to abandon the parse upon the first syntax error seen.
4244 */
4245 yy_syntax_error(yypParser,yymajor,yyminorunion);
4246 yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
4247 yymajor = YYNOCODE;
4248
4249 #else /* YYERRORSYMBOL is not defined */
4250 /* This is what we do if the grammar does not define ERROR:
4251 **
4252 ** * Report an error message, and throw away the input token.
4253 **
4254 ** * If the input token is $, then fail the parse.
4255 **
4256 ** As before, subsequent error messages are suppressed until
4257 ** three input tokens have been successfully shifted.
4258 */
4259 if( yypParser->yyerrcnt<=0 ){
4260 yy_syntax_error(yypParser,yymajor,yyminorunion);
4261 }
4262 yypParser->yyerrcnt = 3;
4263 yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion);
4264 if( yyendofinput ){
4265 yy_parse_failed(yypParser);
4266 }
4267 yymajor = YYNOCODE;
4268 #endif
4269 }
4270 }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );
4271 return;
4272 }
4273