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