42ff92b65a8c7ecc682261726e46389d13f779c5
[mesa.git] / src / mesa / shader / slang / library / slang_shader_syn.h
1
2 /* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE .syn FILE */
3
4 ".syntax translation_unit;\n"
5 ".emtcode REVISION 4\n"
6 ".emtcode EXTERNAL_NULL 0\n"
7 ".emtcode EXTERNAL_FUNCTION_DEFINITION 1\n"
8 ".emtcode EXTERNAL_DECLARATION 2\n"
9 ".emtcode DEFAULT_PRECISION 3\n"
10 ".emtcode INVARIANT_STMT 4\n"
11 ".emtcode PRECISION_DEFAULT 0\n"
12 ".emtcode PRECISION_LOW 1\n"
13 ".emtcode PRECISION_MEDIUM 2\n"
14 ".emtcode PRECISION_HIGH 3\n"
15 ".emtcode DECLARATION_FUNCTION_PROTOTYPE 1\n"
16 ".emtcode DECLARATION_INIT_DECLARATOR_LIST 2\n"
17 ".emtcode FUNCTION_ORDINARY 0\n"
18 ".emtcode FUNCTION_CONSTRUCTOR 1\n"
19 ".emtcode FUNCTION_OPERATOR 2\n"
20 ".emtcode OPERATOR_ADDASSIGN 1\n"
21 ".emtcode OPERATOR_SUBASSIGN 2\n"
22 ".emtcode OPERATOR_MULASSIGN 3\n"
23 ".emtcode OPERATOR_DIVASSIGN 4\n"
24 ".emtcode OPERATOR_LOGICALXOR 11\n"
25 ".emtcode OPERATOR_LESS 15\n"
26 ".emtcode OPERATOR_GREATER 16\n"
27 ".emtcode OPERATOR_LESSEQUAL 17\n"
28 ".emtcode OPERATOR_GREATEREQUAL 18\n"
29 ".emtcode OPERATOR_MULTIPLY 21\n"
30 ".emtcode OPERATOR_DIVIDE 22\n"
31 ".emtcode OPERATOR_INCREMENT 24\n"
32 ".emtcode OPERATOR_DECREMENT 25\n"
33 ".emtcode OPERATOR_PLUS 26\n"
34 ".emtcode OPERATOR_MINUS 27\n"
35 ".emtcode OPERATOR_NOT 29\n"
36 ".emtcode DECLARATOR_NONE 0\n"
37 ".emtcode DECLARATOR_NEXT 1\n"
38 ".emtcode VARIABLE_NONE 0\n"
39 ".emtcode VARIABLE_IDENTIFIER 1\n"
40 ".emtcode VARIABLE_INITIALIZER 2\n"
41 ".emtcode VARIABLE_ARRAY_EXPLICIT 3\n"
42 ".emtcode VARIABLE_ARRAY_UNKNOWN 4\n"
43 ".emtcode TYPE_QUALIFIER_NONE 0\n"
44 ".emtcode TYPE_QUALIFIER_CONST 1\n"
45 ".emtcode TYPE_QUALIFIER_ATTRIBUTE 2\n"
46 ".emtcode TYPE_QUALIFIER_VARYING 3\n"
47 ".emtcode TYPE_QUALIFIER_UNIFORM 4\n"
48 ".emtcode TYPE_QUALIFIER_FIXEDOUTPUT 5\n"
49 ".emtcode TYPE_QUALIFIER_FIXEDINPUT 6\n"
50 ".emtcode TYPE_VARIANT 90\n"
51 ".emtcode TYPE_INVARIANT 91\n"
52 ".emtcode TYPE_CENTER 95\n"
53 ".emtcode TYPE_CENTROID 96\n"
54 ".emtcode TYPE_SPECIFIER_VOID 0\n"
55 ".emtcode TYPE_SPECIFIER_BOOL 1\n"
56 ".emtcode TYPE_SPECIFIER_BVEC2 2\n"
57 ".emtcode TYPE_SPECIFIER_BVEC3 3\n"
58 ".emtcode TYPE_SPECIFIER_BVEC4 4\n"
59 ".emtcode TYPE_SPECIFIER_INT 5\n"
60 ".emtcode TYPE_SPECIFIER_IVEC2 6\n"
61 ".emtcode TYPE_SPECIFIER_IVEC3 7\n"
62 ".emtcode TYPE_SPECIFIER_IVEC4 8\n"
63 ".emtcode TYPE_SPECIFIER_FLOAT 9\n"
64 ".emtcode TYPE_SPECIFIER_VEC2 10\n"
65 ".emtcode TYPE_SPECIFIER_VEC3 11\n"
66 ".emtcode TYPE_SPECIFIER_VEC4 12\n"
67 ".emtcode TYPE_SPECIFIER_MAT2 13\n"
68 ".emtcode TYPE_SPECIFIER_MAT3 14\n"
69 ".emtcode TYPE_SPECIFIER_MAT4 15\n"
70 ".emtcode TYPE_SPECIFIER_SAMPLER1D 16\n"
71 ".emtcode TYPE_SPECIFIER_SAMPLER2D 17\n"
72 ".emtcode TYPE_SPECIFIER_SAMPLER3D 18\n"
73 ".emtcode TYPE_SPECIFIER_SAMPLERCUBE 19\n"
74 ".emtcode TYPE_SPECIFIER_SAMPLER1DSHADOW 20\n"
75 ".emtcode TYPE_SPECIFIER_SAMPLER2DSHADOW 21\n"
76 ".emtcode TYPE_SPECIFIER_SAMPLER2DRECT 22\n"
77 ".emtcode TYPE_SPECIFIER_SAMPLER2DRECTSHADOW 23\n"
78 ".emtcode TYPE_SPECIFIER_STRUCT 24\n"
79 ".emtcode TYPE_SPECIFIER_TYPENAME 25\n"
80 ".emtcode TYPE_SPECIFIER_MAT23 26\n"
81 ".emtcode TYPE_SPECIFIER_MAT32 27\n"
82 ".emtcode TYPE_SPECIFIER_MAT24 28\n"
83 ".emtcode TYPE_SPECIFIER_MAT42 29\n"
84 ".emtcode TYPE_SPECIFIER_MAT34 30\n"
85 ".emtcode TYPE_SPECIFIER_MAT43 31\n"
86 ".emtcode TYPE_ARRAY_SIZE 220\n"
87 ".emtcode TYPE_NO_ARRAY_SIZE 221\n"
88 ".emtcode FIELD_NONE 0\n"
89 ".emtcode FIELD_NEXT 1\n"
90 ".emtcode FIELD_ARRAY 2\n"
91 ".emtcode OP_END 0\n"
92 ".emtcode OP_BLOCK_BEGIN_NO_NEW_SCOPE 1\n"
93 ".emtcode OP_BLOCK_BEGIN_NEW_SCOPE 2\n"
94 ".emtcode OP_DECLARE 3\n"
95 ".emtcode OP_ASM 4\n"
96 ".emtcode OP_BREAK 5\n"
97 ".emtcode OP_CONTINUE 6\n"
98 ".emtcode OP_DISCARD 7\n"
99 ".emtcode OP_RETURN 8\n"
100 ".emtcode OP_EXPRESSION 9\n"
101 ".emtcode OP_IF 10\n"
102 ".emtcode OP_WHILE 11\n"
103 ".emtcode OP_DO 12\n"
104 ".emtcode OP_FOR 13\n"
105 ".emtcode OP_PUSH_VOID 14\n"
106 ".emtcode OP_PUSH_BOOL 15\n"
107 ".emtcode OP_PUSH_INT 16\n"
108 ".emtcode OP_PUSH_FLOAT 17\n"
109 ".emtcode OP_PUSH_IDENTIFIER 18\n"
110 ".emtcode OP_SEQUENCE 19\n"
111 ".emtcode OP_ASSIGN 20\n"
112 ".emtcode OP_ADDASSIGN 21\n"
113 ".emtcode OP_SUBASSIGN 22\n"
114 ".emtcode OP_MULASSIGN 23\n"
115 ".emtcode OP_DIVASSIGN 24\n"
116 ".emtcode OP_SELECT 31\n"
117 ".emtcode OP_LOGICALOR 32\n"
118 ".emtcode OP_LOGICALXOR 33\n"
119 ".emtcode OP_LOGICALAND 34\n"
120 ".emtcode OP_EQUAL 38\n"
121 ".emtcode OP_NOTEQUAL 39\n"
122 ".emtcode OP_LESS 40\n"
123 ".emtcode OP_GREATER 41\n"
124 ".emtcode OP_LESSEQUAL 42\n"
125 ".emtcode OP_GREATEREQUAL 43\n"
126 ".emtcode OP_ADD 46\n"
127 ".emtcode OP_SUBTRACT 47\n"
128 ".emtcode OP_MULTIPLY 48\n"
129 ".emtcode OP_DIVIDE 49\n"
130 ".emtcode OP_PREINCREMENT 51\n"
131 ".emtcode OP_PREDECREMENT 52\n"
132 ".emtcode OP_PLUS 53\n"
133 ".emtcode OP_MINUS 54\n"
134 ".emtcode OP_NOT 56\n"
135 ".emtcode OP_SUBSCRIPT 57\n"
136 ".emtcode OP_CALL 58\n"
137 ".emtcode OP_FIELD 59\n"
138 ".emtcode OP_POSTINCREMENT 60\n"
139 ".emtcode OP_POSTDECREMENT 61\n"
140 ".emtcode OP_PRECISION 62\n"
141 ".emtcode OP_METHOD 63\n"
142 ".emtcode PARAM_QUALIFIER_IN 0\n"
143 ".emtcode PARAM_QUALIFIER_OUT 1\n"
144 ".emtcode PARAM_QUALIFIER_INOUT 2\n"
145 ".emtcode PARAMETER_NONE 0\n"
146 ".emtcode PARAMETER_NEXT 1\n"
147 ".emtcode PARAMETER_ARRAY_NOT_PRESENT 0\n"
148 ".emtcode PARAMETER_ARRAY_PRESENT 1\n"
149 ".errtext INVALID_EXTERNAL_DECLARATION \"2001: Syntax error.\"\n"
150 ".errtext INVALID_OPERATOR_OVERRIDE \"2002: Invalid operator override.\"\n"
151 ".errtext LBRACE_EXPECTED \"2003: '{' expected but '$err_token$' found.\"\n"
152 ".errtext LPAREN_EXPECTED \"2004: '(' expected but '$err_token$' found.\"\n"
153 ".errtext RPAREN_EXPECTED \"2005: ')' expected but '$err_token$' found.\"\n"
154 ".errtext INVALID_PRECISION \"2006: Invalid precision specifier '$err_token$'.\"\n"
155 ".errtext INVALID_PRECISION_TYPE \"2007: Invalid precision type '$err_token$'.\"\n"
156 ".regbyte parsing_builtin 0\n"
157 ".regbyte shader_type 0\n"
158 "variable_identifier\n"
159 " identifier .emit OP_PUSH_IDENTIFIER;\n"
160 "primary_expression\n"
161 " floatconstant .or boolconstant .or intconstant .or variable_identifier .or primary_expression_1;\n"
162 "primary_expression_1\n"
163 " lparen .and expression .and rparen;\n"
164 "postfix_expression\n"
165 " postfix_expression_1 .and .loop postfix_expression_2;\n"
166 "postfix_expression_1\n"
167 " function_call .or primary_expression;\n"
168 "postfix_expression_2\n"
169 " postfix_expression_3 .or postfix_expression_4 .or\n"
170 " plusplus .emit OP_POSTINCREMENT .or\n"
171 " minusminus .emit OP_POSTDECREMENT;\n"
172 "postfix_expression_3\n"
173 " lbracket .and integer_expression .and rbracket .emit OP_SUBSCRIPT;\n"
174 "postfix_expression_4\n"
175 " dot .and field_selection .emit OP_FIELD;\n"
176 "integer_expression\n"
177 " expression;\n"
178 "function_call\n"
179 " function_call_or_method;\n"
180 "function_call_or_method\n"
181 " regular_function_call .or method_call;\n"
182 "method_call\n"
183 " identifier .emit OP_METHOD .and dot .and function_call_generic .and .true .emit OP_END;\n"
184 "regular_function_call\n"
185 " function_call_generic .emit OP_CALL .and .true .emit OP_END;\n"
186 "function_call_generic\n"
187 " function_call_generic_1 .or function_call_generic_2;\n"
188 "function_call_generic_1\n"
189 " function_call_header_with_parameters .and rparen .error RPAREN_EXPECTED;\n"
190 "function_call_generic_2\n"
191 " function_call_header_no_parameters .and rparen .error RPAREN_EXPECTED;\n"
192 "function_call_header_no_parameters\n"
193 " function_call_header .and function_call_header_no_parameters_1;\n"
194 "function_call_header_no_parameters_1\n"
195 " \"void\" .or .true;\n"
196 "function_call_header_with_parameters\n"
197 " function_call_header .and assignment_expression .and .true .emit OP_END .and\n"
198 " .loop function_call_header_with_parameters_1;\n"
199 "function_call_header_with_parameters_1\n"
200 " comma .and assignment_expression .and .true .emit OP_END;\n"
201 "function_call_header\n"
202 " function_identifier .and lparen;\n"
203 "function_identifier\n"
204 " identifier;\n"
205 "unary_expression\n"
206 " postfix_expression .or unary_expression_1 .or unary_expression_2 .or unary_expression_3 .or\n"
207 " unary_expression_4 .or unary_expression_5;\n"
208 "unary_expression_1\n"
209 " plusplus .and unary_expression .and .true .emit OP_PREINCREMENT;\n"
210 "unary_expression_2\n"
211 " minusminus .and unary_expression .and .true .emit OP_PREDECREMENT;\n"
212 "unary_expression_3\n"
213 " plus .and unary_expression .and .true .emit OP_PLUS;\n"
214 "unary_expression_4\n"
215 " minus .and unary_expression .and .true .emit OP_MINUS;\n"
216 "unary_expression_5\n"
217 " bang .and unary_expression .and .true .emit OP_NOT;\n"
218 "multiplicative_expression\n"
219 " unary_expression .and .loop multiplicative_expression_1;\n"
220 "multiplicative_expression_1\n"
221 " multiplicative_expression_2 .or multiplicative_expression_3;\n"
222 "multiplicative_expression_2\n"
223 " star .and unary_expression .and .true .emit OP_MULTIPLY;\n"
224 "multiplicative_expression_3\n"
225 " slash .and unary_expression .and .true .emit OP_DIVIDE;\n"
226 "additive_expression\n"
227 " multiplicative_expression .and .loop additive_expression_1;\n"
228 "additive_expression_1\n"
229 " additive_expression_2 .or additive_expression_3;\n"
230 "additive_expression_2\n"
231 " plus .and multiplicative_expression .and .true .emit OP_ADD;\n"
232 "additive_expression_3\n"
233 " minus .and multiplicative_expression .and .true .emit OP_SUBTRACT;\n"
234 "shift_expression\n"
235 " additive_expression;\n"
236 "relational_expression\n"
237 " shift_expression .and .loop relational_expression_1;\n"
238 "relational_expression_1\n"
239 " relational_expression_2 .or relational_expression_3 .or relational_expression_4 .or\n"
240 " relational_expression_5;\n"
241 "relational_expression_2\n"
242 " lessequals .and shift_expression .and .true .emit OP_LESSEQUAL;\n"
243 "relational_expression_3\n"
244 " greaterequals .and shift_expression .and .true .emit OP_GREATEREQUAL;\n"
245 "relational_expression_4\n"
246 " less .and shift_expression .and .true .emit OP_LESS;\n"
247 "relational_expression_5\n"
248 " greater .and shift_expression .and .true .emit OP_GREATER;\n"
249 "equality_expression\n"
250 " relational_expression .and .loop equality_expression_1;\n"
251 "equality_expression_1\n"
252 " equality_expression_2 .or equality_expression_3;\n"
253 "equality_expression_2\n"
254 " equalsequals .and relational_expression .and .true .emit OP_EQUAL;\n"
255 "equality_expression_3\n"
256 " bangequals .and relational_expression .and .true .emit OP_NOTEQUAL;\n"
257 "and_expression\n"
258 " equality_expression;\n"
259 "exclusive_or_expression\n"
260 " and_expression;\n"
261 "inclusive_or_expression\n"
262 " exclusive_or_expression;\n"
263 "logical_and_expression\n"
264 " inclusive_or_expression .and .loop logical_and_expression_1;\n"
265 "logical_and_expression_1\n"
266 " ampersandampersand .and inclusive_or_expression .and .true .emit OP_LOGICALAND;\n"
267 "logical_xor_expression\n"
268 " logical_and_expression .and .loop logical_xor_expression_1;\n"
269 "logical_xor_expression_1\n"
270 " caretcaret .and logical_and_expression .and .true .emit OP_LOGICALXOR;\n"
271 "logical_or_expression\n"
272 " logical_xor_expression .and .loop logical_or_expression_1;\n"
273 "logical_or_expression_1\n"
274 " barbar .and logical_xor_expression .and .true .emit OP_LOGICALOR;\n"
275 "conditional_expression\n"
276 " logical_or_expression .and .loop conditional_expression_1;\n"
277 "conditional_expression_1\n"
278 " question .and expression .and colon .and conditional_expression .and .true .emit OP_SELECT;\n"
279 "assignment_expression\n"
280 " assignment_expression_1 .or assignment_expression_2 .or assignment_expression_3 .or\n"
281 " assignment_expression_4 .or assignment_expression_5 .or conditional_expression;\n"
282 "assignment_expression_1\n"
283 " unary_expression .and equals .and assignment_expression .and .true .emit OP_ASSIGN;\n"
284 "assignment_expression_2\n"
285 " unary_expression .and starequals .and assignment_expression .and .true .emit OP_MULASSIGN;\n"
286 "assignment_expression_3\n"
287 " unary_expression .and slashequals .and assignment_expression .and .true .emit OP_DIVASSIGN;\n"
288 "assignment_expression_4\n"
289 " unary_expression .and plusequals .and assignment_expression .and .true .emit OP_ADDASSIGN;\n"
290 "assignment_expression_5\n"
291 " unary_expression .and minusequals .and assignment_expression .and .true .emit OP_SUBASSIGN;\n"
292 "expression\n"
293 " assignment_expression .and .loop expression_1;\n"
294 "expression_1\n"
295 " comma .and assignment_expression .and .true .emit OP_SEQUENCE;\n"
296 "constant_expression\n"
297 " conditional_expression .and .true .emit OP_END;\n"
298 "declaration\n"
299 " declaration_1 .or declaration_2;\n"
300 "declaration_1\n"
301 " function_prototype .emit DECLARATION_FUNCTION_PROTOTYPE .and semicolon;\n"
302 "declaration_2\n"
303 " init_declarator_list .emit DECLARATION_INIT_DECLARATOR_LIST .and semicolon;\n"
304 "function_prototype\n"
305 " function_prototype_1 .or function_prototype_2;\n"
306 "function_prototype_1\n"
307 " function_header .and \"void\" .and rparen .error RPAREN_EXPECTED .emit PARAMETER_NONE;\n"
308 "function_prototype_2\n"
309 " function_declarator .and rparen .error RPAREN_EXPECTED .emit PARAMETER_NONE;\n"
310 "function_declarator\n"
311 " function_header_with_parameters .or function_header;\n"
312 "function_header_with_parameters\n"
313 " function_header .and parameter_declaration .and .loop function_header_with_parameters_1;\n"
314 "function_header_with_parameters_1\n"
315 " comma .and parameter_declaration;\n"
316 "function_header\n"
317 " function_header_nospace .or function_header_space;\n"
318 "function_header_space\n"
319 " fully_specified_type_space .and space .and function_decl_identifier .and lparen;\n"
320 "function_header_nospace\n"
321 " fully_specified_type_nospace .and function_decl_identifier .and lparen;\n"
322 "function_decl_identifier\n"
323 " .if (parsing_builtin != 0) __operator .emit FUNCTION_OPERATOR .or\n"
324 " .if (parsing_builtin != 0) \"__constructor\" .emit FUNCTION_CONSTRUCTOR .or\n"
325 " identifier .emit FUNCTION_ORDINARY;\n"
326 "__operator\n"
327 " \"__operator\" .and overriden_operator .error INVALID_OPERATOR_OVERRIDE;\n"
328 "overriden_operator\n"
329 " plusplus .emit OPERATOR_INCREMENT .or\n"
330 " plusequals .emit OPERATOR_ADDASSIGN .or\n"
331 " plus .emit OPERATOR_PLUS .or\n"
332 " minusminus .emit OPERATOR_DECREMENT .or\n"
333 " minusequals .emit OPERATOR_SUBASSIGN .or\n"
334 " minus .emit OPERATOR_MINUS .or\n"
335 " bang .emit OPERATOR_NOT .or\n"
336 " starequals .emit OPERATOR_MULASSIGN .or\n"
337 " star .emit OPERATOR_MULTIPLY .or\n"
338 " slashequals .emit OPERATOR_DIVASSIGN .or\n"
339 " slash .emit OPERATOR_DIVIDE .or\n"
340 " lessequals .emit OPERATOR_LESSEQUAL .or\n"
341 " \n"
342 " \n"
343 " less .emit OPERATOR_LESS .or\n"
344 " greaterequals .emit OPERATOR_GREATEREQUAL .or\n"
345 " \n"
346 " \n"
347 " greater .emit OPERATOR_GREATER .or\n"
348 " \n"
349 " \n"
350 " \n"
351 " \n"
352 " \n"
353 " \n"
354 " \n"
355 " \n"
356 " caretcaret .emit OPERATOR_LOGICALXOR ;\n"
357 "parameter_declarator\n"
358 " parameter_declarator_nospace .or parameter_declarator_space;\n"
359 "parameter_declarator_nospace\n"
360 " type_specifier_nospace .and identifier .and parameter_declarator_1;\n"
361 "parameter_declarator_space\n"
362 " type_specifier_space .and space .and identifier .and parameter_declarator_1;\n"
363 "parameter_declarator_1\n"
364 " parameter_declarator_2 .emit PARAMETER_ARRAY_PRESENT .or\n"
365 " .true .emit PARAMETER_ARRAY_NOT_PRESENT;\n"
366 "parameter_declarator_2\n"
367 " lbracket .and constant_expression .and rbracket;\n"
368 "parameter_declaration\n"
369 " parameter_declaration_1 .emit PARAMETER_NEXT;\n"
370 "parameter_declaration_1\n"
371 " parameter_declaration_2 .or parameter_declaration_3;\n"
372 "parameter_declaration_2\n"
373 " type_qualifier .and space .and parameter_qualifier .and parameter_declaration_4;\n"
374 "parameter_declaration_3\n"
375 " parameter_qualifier .emit TYPE_QUALIFIER_NONE .and parameter_declaration_4;\n"
376 "parameter_declaration_4\n"
377 " parameter_declaration_optprec .and parameter_declaration_rest;\n"
378 "parameter_declaration_optprec\n"
379 " parameter_declaration_prec .or .true .emit PRECISION_DEFAULT;\n"
380 "parameter_declaration_prec\n"
381 " precision .and space;\n"
382 "parameter_declaration_rest\n"
383 " parameter_declarator .or parameter_type_specifier;\n"
384 "parameter_qualifier\n"
385 " parameter_qualifier_1 .or .true .emit PARAM_QUALIFIER_IN;\n"
386 "parameter_qualifier_1\n"
387 " parameter_qualifier_2 .and space;\n"
388 "parameter_qualifier_2\n"
389 " \"in\" .emit PARAM_QUALIFIER_IN .or\n"
390 " \"out\" .emit PARAM_QUALIFIER_OUT .or\n"
391 " \"inout\" .emit PARAM_QUALIFIER_INOUT;\n"
392 "parameter_type_specifier\n"
393 " parameter_type_specifier_1 .and .true .emit '\\0' .and parameter_type_specifier_2;\n"
394 "parameter_type_specifier_1\n"
395 " type_specifier_nospace .or type_specifier_space;\n"
396 "parameter_type_specifier_2\n"
397 " parameter_type_specifier_3 .emit PARAMETER_ARRAY_PRESENT .or\n"
398 " .true .emit PARAMETER_ARRAY_NOT_PRESENT;\n"
399 "parameter_type_specifier_3\n"
400 " lbracket .and constant_expression .and rbracket;\n"
401 "init_declarator_list\n"
402 " single_declaration .and .loop init_declarator_list_1 .emit DECLARATOR_NEXT .and\n"
403 " .true .emit DECLARATOR_NONE;\n"
404 "init_declarator_list_1\n"
405 " comma .and identifier .emit VARIABLE_IDENTIFIER .and init_declarator_list_2;\n"
406 "init_declarator_list_2\n"
407 " init_declarator_list_3 .or init_declarator_list_4 .or .true .emit VARIABLE_NONE;\n"
408 "init_declarator_list_3\n"
409 " equals .and initializer .emit VARIABLE_INITIALIZER;\n"
410 "init_declarator_list_4\n"
411 " lbracket .and init_declarator_list_5 .and rbracket;\n"
412 "init_declarator_list_5\n"
413 " constant_expression .emit VARIABLE_ARRAY_EXPLICIT .or .true .emit VARIABLE_ARRAY_UNKNOWN;\n"
414 "single_declaration\n"
415 " single_declaration_nospace .or single_declaration_space;\n"
416 "single_declaration_space\n"
417 " fully_specified_type_space .and single_declaration_space_1;\n"
418 "single_declaration_nospace\n"
419 " fully_specified_type_nospace .and single_declaration_nospace_1;\n"
420 "single_declaration_space_1\n"
421 " single_declaration_space_2 .emit VARIABLE_IDENTIFIER .or .true .emit VARIABLE_NONE;\n"
422 "single_declaration_nospace_1\n"
423 " single_declaration_nospace_2 .emit VARIABLE_IDENTIFIER .or .true .emit VARIABLE_NONE;\n"
424 "single_declaration_space_2\n"
425 " space .and identifier .and single_declaration_3;\n"
426 "single_declaration_nospace_2\n"
427 " identifier .and single_declaration_3;\n"
428 "single_declaration_3\n"
429 " single_declaration_4 .or single_declaration_5 .or .true .emit VARIABLE_NONE;\n"
430 "single_declaration_4\n"
431 " equals .and initializer .emit VARIABLE_INITIALIZER;\n"
432 "single_declaration_5\n"
433 " lbracket .and single_declaration_6 .and rbracket;\n"
434 "single_declaration_6\n"
435 " constant_expression .emit VARIABLE_ARRAY_EXPLICIT .or .true .emit VARIABLE_ARRAY_UNKNOWN;\n"
436 "fully_specified_type_space\n"
437 " fully_specified_type_optinvariant .and fully_specified_type_optcentroid .and fully_specified_type_optqual .and fully_specified_type_optprec .and type_specifier_space .and .true .emit TYPE_NO_ARRAY_SIZE;\n"
438 "fully_specified_type_nospace\n"
439 " fully_specified_type_optinvariant .and fully_specified_type_optcentroid .and fully_specified_type_optqual .and fully_specified_type_optprec .and type_specifier_array;\n"
440 "type_specifier_array\n"
441 " type_specifier_array_1 .or type_specifier_array_2;\n"
442 "type_specifier_array_1\n"
443 " type_specifier_space .and array_size;\n"
444 "type_specifier_array_2\n"
445 " type_specifier_nospace .and opt_array_size;\n"
446 "fully_specified_type_optinvariant\n"
447 " fully_specified_type_invariant .or .true .emit TYPE_VARIANT;\n"
448 "fully_specified_type_invariant\n"
449 " invariant_qualifier .and space;\n"
450 "fully_specified_type_optcentroid\n"
451 " fully_specified_type_centroid .or .true .emit TYPE_CENTER;\n"
452 "fully_specified_type_centroid\n"
453 " centroid_qualifier .and space;\n"
454 "fully_specified_type_optqual\n"
455 " fully_specified_type_qual .or .true .emit TYPE_QUALIFIER_NONE;\n"
456 "fully_specified_type_qual\n"
457 " type_qualifier .and space;\n"
458 "fully_specified_type_optprec\n"
459 " fully_specified_type_prec .or .true .emit PRECISION_DEFAULT;\n"
460 "fully_specified_type_prec\n"
461 " precision .and space;\n"
462 "opt_array_size\n"
463 " array_size .or .true .emit TYPE_NO_ARRAY_SIZE;\n"
464 "array_size\n"
465 " lbracket .emit TYPE_ARRAY_SIZE .and constant_expression .and rbracket;\n"
466 "invariant_qualifier\n"
467 " \"invariant\" .emit TYPE_INVARIANT;\n"
468 "centroid_qualifier\n"
469 " \"centroid\" .emit TYPE_CENTROID;\n"
470 "type_qualifier\n"
471 " \"const\" .emit TYPE_QUALIFIER_CONST .or\n"
472 " .if (shader_type == 2) \"attribute\" .emit TYPE_QUALIFIER_ATTRIBUTE .or\n"
473 " \"varying\" .emit TYPE_QUALIFIER_VARYING .or\n"
474 " \"uniform\" .emit TYPE_QUALIFIER_UNIFORM .or\n"
475 " .if (parsing_builtin != 0) \"__fixed_output\" .emit TYPE_QUALIFIER_FIXEDOUTPUT .or\n"
476 " .if (parsing_builtin != 0) \"__fixed_input\" .emit TYPE_QUALIFIER_FIXEDINPUT;\n"
477 "type_specifier_space\n"
478 " \"void\" .emit TYPE_SPECIFIER_VOID .or\n"
479 " \"float\" .emit TYPE_SPECIFIER_FLOAT .or\n"
480 " \"int\" .emit TYPE_SPECIFIER_INT .or\n"
481 " \"bool\" .emit TYPE_SPECIFIER_BOOL .or\n"
482 " \"vec2\" .emit TYPE_SPECIFIER_VEC2 .or\n"
483 " \"vec3\" .emit TYPE_SPECIFIER_VEC3 .or\n"
484 " \"vec4\" .emit TYPE_SPECIFIER_VEC4 .or\n"
485 " \"bvec2\" .emit TYPE_SPECIFIER_BVEC2 .or\n"
486 " \"bvec3\" .emit TYPE_SPECIFIER_BVEC3 .or\n"
487 " \"bvec4\" .emit TYPE_SPECIFIER_BVEC4 .or\n"
488 " \"ivec2\" .emit TYPE_SPECIFIER_IVEC2 .or\n"
489 " \"ivec3\" .emit TYPE_SPECIFIER_IVEC3 .or\n"
490 " \"ivec4\" .emit TYPE_SPECIFIER_IVEC4 .or\n"
491 " \"mat2\" .emit TYPE_SPECIFIER_MAT2 .or\n"
492 " \"mat3\" .emit TYPE_SPECIFIER_MAT3 .or\n"
493 " \"mat4\" .emit TYPE_SPECIFIER_MAT4 .or\n"
494 " \"mat2x3\" .emit TYPE_SPECIFIER_MAT23 .or\n"
495 " \"mat3x2\" .emit TYPE_SPECIFIER_MAT32 .or\n"
496 " \"mat2x4\" .emit TYPE_SPECIFIER_MAT24 .or\n"
497 " \"mat4x2\" .emit TYPE_SPECIFIER_MAT42 .or\n"
498 " \"mat3x4\" .emit TYPE_SPECIFIER_MAT34 .or\n"
499 " \"mat4x3\" .emit TYPE_SPECIFIER_MAT43 .or\n"
500 " \"sampler1D\" .emit TYPE_SPECIFIER_SAMPLER1D .or\n"
501 " \"sampler2D\" .emit TYPE_SPECIFIER_SAMPLER2D .or\n"
502 " \"sampler3D\" .emit TYPE_SPECIFIER_SAMPLER3D .or\n"
503 " \"samplerCube\" .emit TYPE_SPECIFIER_SAMPLERCUBE .or\n"
504 " \"sampler1DShadow\" .emit TYPE_SPECIFIER_SAMPLER1DSHADOW .or\n"
505 " \"sampler2DShadow\" .emit TYPE_SPECIFIER_SAMPLER2DSHADOW .or\n"
506 " \"sampler2DRect\" .emit TYPE_SPECIFIER_SAMPLER2DRECT .or\n"
507 " \"sampler2DRectShadow\" .emit TYPE_SPECIFIER_SAMPLER2DRECTSHADOW .or\n"
508 " type_name .emit TYPE_SPECIFIER_TYPENAME;\n"
509 "type_specifier_nospace\n"
510 " struct_specifier .emit TYPE_SPECIFIER_STRUCT;\n"
511 "struct_specifier\n"
512 " \"struct\" .and struct_specifier_1 .and optional_space .and lbrace .error LBRACE_EXPECTED .and\n"
513 " struct_declaration_list .and rbrace .emit FIELD_NONE;\n"
514 "struct_specifier_1\n"
515 " struct_specifier_2 .or .true .emit '\\0';\n"
516 "struct_specifier_2\n"
517 " space .and identifier;\n"
518 "struct_declaration_list\n"
519 " struct_declaration .and .loop struct_declaration .emit FIELD_NEXT;\n"
520 "struct_declaration\n"
521 " struct_declaration_nospace .or struct_declaration_space;\n"
522 "struct_declaration_space\n"
523 " type_specifier_space .and space .and struct_declarator_list .and semicolon .emit FIELD_NONE;\n"
524 "struct_declaration_nospace\n"
525 " type_specifier_nospace .and struct_declarator_list .and semicolon .emit FIELD_NONE;\n"
526 "struct_declarator_list\n"
527 " struct_declarator .and .loop struct_declarator_list_1 .emit FIELD_NEXT;\n"
528 "struct_declarator_list_1\n"
529 " comma .and struct_declarator;\n"
530 "struct_declarator\n"
531 " identifier .and struct_declarator_1;\n"
532 "struct_declarator_1\n"
533 " struct_declarator_2 .emit FIELD_ARRAY .or .true .emit FIELD_NONE;\n"
534 "struct_declarator_2\n"
535 " lbracket .and constant_expression .and rbracket;\n"
536 "initializer\n"
537 " assignment_expression .and .true .emit OP_END;\n"
538 "declaration_statement\n"
539 " declaration;\n"
540 "statement\n"
541 " compound_statement .or simple_statement;\n"
542 "statement_space\n"
543 " compound_statement .or statement_space_1;\n"
544 "statement_space_1\n"
545 " space .and simple_statement;\n"
546 "simple_statement\n"
547 " .if (parsing_builtin != 0) __asm_statement .emit OP_ASM .or\n"
548 " selection_statement .or\n"
549 " iteration_statement .or\n"
550 " precision_stmt .emit OP_PRECISION .or\n"
551 " jump_statement .or\n"
552 " expression_statement .emit OP_EXPRESSION .or\n"
553 " declaration_statement .emit OP_DECLARE;\n"
554 "compound_statement\n"
555 " compound_statement_1 .emit OP_BLOCK_BEGIN_NEW_SCOPE .and .true .emit OP_END;\n"
556 "compound_statement_1\n"
557 " compound_statement_2 .or compound_statement_3;\n"
558 "compound_statement_2\n"
559 " lbrace .and rbrace;\n"
560 "compound_statement_3\n"
561 " lbrace .and statement_list .and rbrace;\n"
562 "statement_no_new_scope\n"
563 " compound_statement_no_new_scope .or simple_statement;\n"
564 "compound_statement_no_new_scope\n"
565 " compound_statement_no_new_scope_1 .emit OP_BLOCK_BEGIN_NO_NEW_SCOPE .and .true .emit OP_END;\n"
566 "compound_statement_no_new_scope_1\n"
567 " compound_statement_no_new_scope_2 .or compound_statement_no_new_scope_3;\n"
568 "compound_statement_no_new_scope_2\n"
569 " lbrace .and rbrace;\n"
570 "compound_statement_no_new_scope_3\n"
571 " lbrace .and statement_list .and rbrace;\n"
572 "statement_list\n"
573 " statement .and .loop statement;\n"
574 "expression_statement\n"
575 " expression_statement_1 .or expression_statement_2;\n"
576 "expression_statement_1\n"
577 " semicolon .emit OP_PUSH_VOID .emit OP_END;\n"
578 "expression_statement_2\n"
579 " expression .and semicolon .emit OP_END;\n"
580 "selection_statement\n"
581 " \"if\" .emit OP_IF .and lparen .error LPAREN_EXPECTED .and expression .and\n"
582 " rparen .error RPAREN_EXPECTED .emit OP_END .and selection_rest_statement;\n"
583 "selection_rest_statement\n"
584 " statement .and selection_rest_statement_1;\n"
585 "selection_rest_statement_1\n"
586 " selection_rest_statement_2 .or .true .emit OP_EXPRESSION .emit OP_PUSH_VOID .emit OP_END;\n"
587 "selection_rest_statement_2\n"
588 " \"else\" .and optional_space .and statement;\n"
589 "condition\n"
590 " condition_1 .emit OP_DECLARE .emit DECLARATION_INIT_DECLARATOR_LIST .or\n"
591 " condition_3 .emit OP_EXPRESSION;\n"
592 "condition_1\n"
593 " condition_1_nospace .or condition_1_space;\n"
594 "condition_1_nospace\n"
595 " fully_specified_type_nospace .and condition_2;\n"
596 "condition_1_space\n"
597 " fully_specified_type_space .and space .and condition_2;\n"
598 "condition_2\n"
599 " identifier .emit VARIABLE_IDENTIFIER .and equals .emit VARIABLE_INITIALIZER .and\n"
600 " initializer .and .true .emit DECLARATOR_NONE;\n"
601 "condition_3\n"
602 " expression .and .true .emit OP_END;\n"
603 "iteration_statement\n"
604 " iteration_statement_1 .or iteration_statement_2 .or iteration_statement_3;\n"
605 "iteration_statement_1\n"
606 " \"while\" .emit OP_WHILE .and lparen .error LPAREN_EXPECTED .and condition .and\n"
607 " rparen .error RPAREN_EXPECTED .and statement;\n"
608 "iteration_statement_2\n"
609 " \"do\" .emit OP_DO .and statement_space .and \"while\" .and lparen .error LPAREN_EXPECTED .and\n"
610 " expression .and rparen .error RPAREN_EXPECTED .emit OP_END .and semicolon;\n"
611 "iteration_statement_3\n"
612 " \"for\" .emit OP_FOR .and lparen .error LPAREN_EXPECTED .and for_init_statement .and\n"
613 " for_rest_statement .and rparen .error RPAREN_EXPECTED .and statement_no_new_scope;\n"
614 "for_init_statement\n"
615 " expression_statement .emit OP_EXPRESSION .or declaration_statement .emit OP_DECLARE;\n"
616 "conditionopt\n"
617 " condition .or\n"
618 " .true .emit OP_EXPRESSION .emit OP_PUSH_BOOL .emit 2 .emit '1' .emit '\\0' .emit OP_END;\n"
619 "for_rest_statement\n"
620 " conditionopt .and semicolon .and for_rest_statement_1;\n"
621 "for_rest_statement_1\n"
622 " for_rest_statement_2 .or .true .emit OP_PUSH_VOID .emit OP_END;\n"
623 "for_rest_statement_2\n"
624 " expression .and .true .emit OP_END;\n"
625 "jump_statement\n"
626 " jump_statement_1 .or jump_statement_2 .or jump_statement_3 .or jump_statement_4 .or\n"
627 " .if (shader_type == 1) jump_statement_5;\n"
628 "jump_statement_1\n"
629 " \"continue\" .and semicolon .emit OP_CONTINUE;\n"
630 "jump_statement_2\n"
631 " \"break\" .and semicolon .emit OP_BREAK;\n"
632 "jump_statement_3\n"
633 " \"return\" .emit OP_RETURN .and optional_space .and expression .and semicolon .emit OP_END;\n"
634 "jump_statement_4\n"
635 " \"return\" .emit OP_RETURN .and semicolon .emit OP_PUSH_VOID .emit OP_END;\n"
636 "jump_statement_5\n"
637 " \"discard\" .and semicolon .emit OP_DISCARD;\n"
638 "__asm_statement\n"
639 " \"__asm\" .and space .and identifier .and space .and asm_arguments .and semicolon .emit OP_END;\n"
640 "asm_arguments\n"
641 " asm_argument .and .true .emit OP_END .and .loop asm_arguments_1;\n"
642 "asm_arguments_1\n"
643 " comma .and asm_argument .and .true .emit OP_END;\n"
644 "asm_argument\n"
645 " var_with_field .or\n"
646 " variable_identifier .or\n"
647 " floatconstant;\n"
648 "var_with_field\n"
649 " variable_identifier .and dot .and field_selection .emit OP_FIELD;\n"
650 "translation_unit\n"
651 " optional_space .emit REVISION .and external_declaration .error INVALID_EXTERNAL_DECLARATION .and\n"
652 " .loop external_declaration .and optional_space .and\n"
653 " '\\0' .error INVALID_EXTERNAL_DECLARATION .emit EXTERNAL_NULL;\n"
654 "external_declaration\n"
655 " precision_stmt .emit DEFAULT_PRECISION .or\n"
656 " function_definition .emit EXTERNAL_FUNCTION_DEFINITION .or\n"
657 " invariant_stmt .emit INVARIANT_STMT .or\n"
658 " declaration .emit EXTERNAL_DECLARATION;\n"
659 "precision_stmt\n"
660 " \"precision\" .and space .and precision .error INVALID_PRECISION .and space .and prectype .error INVALID_PRECISION_TYPE .and semicolon;\n"
661 "precision\n"
662 " \"lowp\" .emit PRECISION_LOW .or\n"
663 " \"mediump\" .emit PRECISION_MEDIUM .or\n"
664 " \"highp\" .emit PRECISION_HIGH;\n"
665 "prectype\n"
666 " \"int\" .emit TYPE_SPECIFIER_INT .or\n"
667 " \"float\" .emit TYPE_SPECIFIER_FLOAT .or\n"
668 " \"sampler1D\" .emit TYPE_SPECIFIER_SAMPLER1D .or\n"
669 " \"sampler2D\" .emit TYPE_SPECIFIER_SAMPLER2D .or\n"
670 " \"sampler3D\" .emit TYPE_SPECIFIER_SAMPLER3D .or\n"
671 " \"samplerCube\" .emit TYPE_SPECIFIER_SAMPLERCUBE .or\n"
672 " \"sampler1DShadow\" .emit TYPE_SPECIFIER_SAMPLER1DSHADOW .or\n"
673 " \"sampler2DShadow\" .emit TYPE_SPECIFIER_SAMPLER2DSHADOW .or\n"
674 " \"sampler2DRect\" .emit TYPE_SPECIFIER_SAMPLER2DRECT .or\n"
675 " \"sampler2DRectShadow\" .emit TYPE_SPECIFIER_SAMPLER2DRECTSHADOW;\n"
676 "invariant_stmt\n"
677 " \"invariant\" .and space .and identifier .and semicolon;\n"
678 "function_definition\n"
679 " function_prototype .and compound_statement_no_new_scope;\n"
680 "digit_oct\n"
681 " '0'-'7';\n"
682 "digit_dec\n"
683 " '0'-'9';\n"
684 "digit_hex\n"
685 " '0'-'9' .or 'A'-'F' .or 'a'-'f';\n"
686 "id_character_first\n"
687 " 'a'-'z' .or 'A'-'Z' .or '_';\n"
688 "id_character_next\n"
689 " id_character_first .or digit_dec;\n"
690 "identifier\n"
691 " id_character_first .emit * .and .loop id_character_next .emit * .and .true .emit '\\0';\n"
692 "float\n"
693 " float_1 .or float_2 .or float_3;\n"
694 "float_1\n"
695 " float_fractional_constant .and float_optional_exponent_part .and optional_f_suffix;\n"
696 "float_2\n"
697 " float_digit_sequence .and .true .emit '\\0' .and float_exponent_part .and optional_f_suffix;\n"
698 "float_3\n"
699 " float_digit_sequence .and .true .emit '\\0' .and 'f' .emit '\\0';\n"
700 "float_fractional_constant\n"
701 " float_fractional_constant_1 .or float_fractional_constant_2 .or float_fractional_constant_3;\n"
702 "float_fractional_constant_1\n"
703 " float_digit_sequence .and '.' .and float_digit_sequence;\n"
704 "float_fractional_constant_2\n"
705 " float_digit_sequence .and '.' .and .true .emit '\\0';\n"
706 "float_fractional_constant_3\n"
707 " '.' .emit '\\0' .and float_digit_sequence;\n"
708 "float_optional_exponent_part\n"
709 " float_exponent_part .or .true .emit '\\0';\n"
710 "float_digit_sequence\n"
711 " digit_dec .emit * .and .loop digit_dec .emit * .and .true .emit '\\0';\n"
712 "float_exponent_part\n"
713 " float_exponent_part_1 .or float_exponent_part_2;\n"
714 "float_exponent_part_1\n"
715 " 'e' .and float_optional_sign .and float_digit_sequence;\n"
716 "float_exponent_part_2\n"
717 " 'E' .and float_optional_sign .and float_digit_sequence;\n"
718 "float_optional_sign\n"
719 " float_sign .or .true;\n"
720 "float_sign\n"
721 " '+' .or '-' .emit '-';\n"
722 "optional_f_suffix\n"
723 " 'f' .or .true;\n"
724 "integer\n"
725 " integer_hex .or integer_oct .or integer_dec;\n"
726 "integer_hex\n"
727 " '0' .and integer_hex_1 .emit 0x10 .and digit_hex .emit * .and .loop digit_hex .emit * .and\n"
728 " .true .emit '\\0';\n"
729 "integer_hex_1\n"
730 " 'x' .or 'X';\n"
731 "integer_oct\n"
732 " '0' .emit 8 .emit * .and .loop digit_oct .emit * .and .true .emit '\\0';\n"
733 "integer_dec\n"
734 " digit_dec .emit 10 .emit * .and .loop digit_dec .emit * .and .true .emit '\\0';\n"
735 "boolean\n"
736 " \"true\" .emit 2 .emit '1' .emit '\\0' .or\n"
737 " \"false\" .emit 2 .emit '0' .emit '\\0';\n"
738 "type_name\n"
739 " identifier;\n"
740 "field_selection\n"
741 " identifier;\n"
742 "floatconstant\n"
743 " float .emit OP_PUSH_FLOAT;\n"
744 "intconstant\n"
745 " integer .emit OP_PUSH_INT;\n"
746 "boolconstant\n"
747 " boolean .emit OP_PUSH_BOOL;\n"
748 "optional_space\n"
749 " .loop single_space;\n"
750 "space\n"
751 " single_space .and .loop single_space;\n"
752 "single_space\n"
753 " white_char .or c_style_comment_block .or cpp_style_comment_block;\n"
754 "white_char\n"
755 " ' ' .or '\\t' .or new_line .or '\\v' .or '\\f';\n"
756 "new_line\n"
757 " cr_lf .or lf_cr .or '\\n' .or '\\r';\n"
758 "cr_lf\n"
759 " '\\r' .and '\\n';\n"
760 "lf_cr\n"
761 " '\\n' .and '\\r';\n"
762 "c_style_comment_block\n"
763 " '/' .and '*' .and c_style_comment_rest;\n"
764 "c_style_comment_rest\n"
765 " .loop c_style_comment_char_no_star .and c_style_comment_rest_1;\n"
766 "c_style_comment_rest_1\n"
767 " c_style_comment_end .or c_style_comment_rest_2;\n"
768 "c_style_comment_rest_2\n"
769 " '*' .and c_style_comment_rest;\n"
770 "c_style_comment_char_no_star\n"
771 " '\\x2B'-'\\xFF' .or '\\x01'-'\\x29';\n"
772 "c_style_comment_end\n"
773 " '*' .and '/';\n"
774 "cpp_style_comment_block\n"
775 " '/' .and '/' .and cpp_style_comment_block_1;\n"
776 "cpp_style_comment_block_1\n"
777 " cpp_style_comment_block_2 .or cpp_style_comment_block_3;\n"
778 "cpp_style_comment_block_2\n"
779 " .loop cpp_style_comment_char .and new_line;\n"
780 "cpp_style_comment_block_3\n"
781 " .loop cpp_style_comment_char;\n"
782 "cpp_style_comment_char\n"
783 " '\\x0E'-'\\xFF' .or '\\x01'-'\\x09' .or '\\x0B'-'\\x0C';\n"
784 "ampersandampersand\n"
785 " optional_space .and '&' .and '&' .and optional_space;\n"
786 "barbar\n"
787 " optional_space .and '|' .and '|' .and optional_space;\n"
788 "bang\n"
789 " optional_space .and '!' .and optional_space;\n"
790 "bangequals\n"
791 " optional_space .and '!' .and '=' .and optional_space;\n"
792 "caretcaret\n"
793 " optional_space .and '^' .and '^' .and optional_space;\n"
794 "colon\n"
795 " optional_space .and ':' .and optional_space;\n"
796 "comma\n"
797 " optional_space .and ',' .and optional_space;\n"
798 "dot\n"
799 " optional_space .and '.' .and optional_space;\n"
800 "equals\n"
801 " optional_space .and '=' .and optional_space;\n"
802 "equalsequals\n"
803 " optional_space .and '=' .and '=' .and optional_space;\n"
804 "greater\n"
805 " optional_space .and '>' .and optional_space;\n"
806 "greaterequals\n"
807 " optional_space .and '>' .and '=' .and optional_space;\n"
808 "lbrace\n"
809 " optional_space .and '{' .and optional_space;\n"
810 "lbracket\n"
811 " optional_space .and '[' .and optional_space;\n"
812 "less\n"
813 " optional_space .and '<' .and optional_space;\n"
814 "lessequals\n"
815 " optional_space .and '<' .and '=' .and optional_space;\n"
816 "lparen\n"
817 " optional_space .and '(' .and optional_space;\n"
818 "minus\n"
819 " optional_space .and '-' .and optional_space;\n"
820 "minusequals\n"
821 " optional_space .and '-' .and '=' .and optional_space;\n"
822 "minusminus\n"
823 " optional_space .and '-' .and '-' .and optional_space;\n"
824 "plus\n"
825 " optional_space .and '+' .and optional_space;\n"
826 "plusequals\n"
827 " optional_space .and '+' .and '=' .and optional_space;\n"
828 "plusplus\n"
829 " optional_space .and '+' .and '+' .and optional_space;\n"
830 "question\n"
831 " optional_space .and '?' .and optional_space;\n"
832 "rbrace\n"
833 " optional_space .and '}' .and optional_space;\n"
834 "rbracket\n"
835 " optional_space .and ']' .and optional_space;\n"
836 "rparen\n"
837 " optional_space .and ')' .and optional_space;\n"
838 "semicolon\n"
839 " optional_space .and ';' .and optional_space;\n"
840 "slash\n"
841 " optional_space .and '/' .and optional_space;\n"
842 "slashequals\n"
843 " optional_space .and '/' .and '=' .and optional_space;\n"
844 "star\n"
845 " optional_space .and '*' .and optional_space;\n"
846 "starequals\n"
847 " optional_space .and '*' .and '=' .and optional_space;\n"
848 ".string string_lexer;\n"
849 "string_lexer\n"
850 " lex_first_identifier_character .and .loop lex_next_identifier_character;\n"
851 "lex_first_identifier_character\n"
852 " 'a'-'z' .or 'A'-'Z' .or '_';\n"
853 "lex_next_identifier_character\n"
854 " 'a'-'z' .or 'A'-'Z' .or '0'-'9' .or '_';\n"
855 "err_token\n"
856 " '~' .or '`' .or '!' .or '@' .or '#' .or '$' .or '%' .or '^' .or '&' .or '*' .or '(' .or ')' .or\n"
857 " '-' .or '+' .or '=' .or '|' .or '\\\\' .or '[' .or ']' .or '{' .or '}' .or ':' .or ';' .or '\"' .or\n"
858 " '\\'' .or '<' .or ',' .or '>' .or '.' .or '/' .or '?' .or err_identifier;\n"
859 "err_identifier\n"
860 " id_character_first .and .loop id_character_next;\n"
861 ""