glsl: yet another swizzled expression fix
[mesa.git] / src / mesa / shader / arbprogram_syn.h
1
2 /* DO NOT EDIT - THIS FILE IS AUTOMATICALLY GENERATED FROM THE .syn FILE */
3
4 " \n"
5 ".syntax program;\n"
6 ".emtcode REVISION 0x0a\n"
7 ".emtcode FRAGMENT_PROGRAM 0x01\n"
8 ".emtcode VERTEX_PROGRAM 0x02\n"
9 ".emtcode OPTION 0x01\n"
10 ".emtcode INSTRUCTION 0x02\n"
11 ".emtcode DECLARATION 0x03\n"
12 ".emtcode END 0x04\n"
13 ".emtcode ARB_PRECISION_HINT_FASTEST 0x00\n"
14 ".emtcode ARB_PRECISION_HINT_NICEST 0x01\n"
15 ".emtcode ARB_FOG_EXP 0x02\n"
16 ".emtcode ARB_FOG_EXP2 0x03\n"
17 ".emtcode ARB_FOG_LINEAR 0x04\n"
18 ".emtcode ARB_POSITION_INVARIANT 0x05\n"
19 ".emtcode ARB_FRAGMENT_PROGRAM_SHADOW 0x06\n"
20 ".emtcode ARB_DRAW_BUFFERS 0x07\n"
21 ".emtcode MESA_TEXTURE_ARRAY 0x08\n"
22 ".emtcode OP_ALU_INST 0x00\n"
23 ".emtcode OP_TEX_INST 0x01\n"
24 ".emtcode OP_ALU_VECTOR 0x00\n"
25 ".emtcode OP_ALU_SCALAR 0x01\n"
26 ".emtcode OP_ALU_BINSC 0x02\n"
27 ".emtcode OP_ALU_BIN 0x03\n"
28 ".emtcode OP_ALU_TRI 0x04\n"
29 ".emtcode OP_ALU_SWZ 0x05\n"
30 ".emtcode OP_TEX_SAMPLE 0x06\n"
31 ".emtcode OP_TEX_KIL 0x07\n"
32 ".emtcode OP_ALU_ARL 0x08\n"
33 ".emtcode OP_ABS 0x00\n"
34 ".emtcode OP_ABS_SAT 0x1B\n"
35 ".emtcode OP_FLR 0x09\n"
36 ".emtcode OP_FLR_SAT 0x26\n"
37 ".emtcode OP_FRC 0x0A\n"
38 ".emtcode OP_FRC_SAT 0x27\n"
39 ".emtcode OP_LIT 0x0C\n"
40 ".emtcode OP_LIT_SAT 0x2A\n"
41 ".emtcode OP_MOV 0x11\n"
42 ".emtcode OP_MOV_SAT 0x30\n"
43 ".emtcode OP_COS 0x1F\n"
44 ".emtcode OP_COS_SAT 0x20\n"
45 ".emtcode OP_EX2 0x07\n"
46 ".emtcode OP_EX2_SAT 0x25\n"
47 ".emtcode OP_LG2 0x0B\n"
48 ".emtcode OP_LG2_SAT 0x29\n"
49 ".emtcode OP_RCP 0x14\n"
50 ".emtcode OP_RCP_SAT 0x33\n"
51 ".emtcode OP_RSQ 0x15\n"
52 ".emtcode OP_RSQ_SAT 0x34\n"
53 ".emtcode OP_SIN 0x38\n"
54 ".emtcode OP_SIN_SAT 0x39\n"
55 ".emtcode OP_SCS 0x35\n"
56 ".emtcode OP_SCS_SAT 0x36\n"
57 ".emtcode OP_POW 0x13\n"
58 ".emtcode OP_POW_SAT 0x32\n"
59 ".emtcode OP_ADD 0x01\n"
60 ".emtcode OP_ADD_SAT 0x1C\n"
61 ".emtcode OP_DP3 0x03\n"
62 ".emtcode OP_DP3_SAT 0x21\n"
63 ".emtcode OP_DP4 0x04\n"
64 ".emtcode OP_DP4_SAT 0x22\n"
65 ".emtcode OP_DPH 0x05\n"
66 ".emtcode OP_DPH_SAT 0x23\n"
67 ".emtcode OP_DST 0x06\n"
68 ".emtcode OP_DST_SAT 0x24\n"
69 ".emtcode OP_MAX 0x0F\n"
70 ".emtcode OP_MAX_SAT 0x2E\n"
71 ".emtcode OP_MIN 0x10\n"
72 ".emtcode OP_MIN_SAT 0x2F\n"
73 ".emtcode OP_MUL 0x12\n"
74 ".emtcode OP_MUL_SAT 0x31\n"
75 ".emtcode OP_SGE 0x16\n"
76 ".emtcode OP_SGE_SAT 0x37\n"
77 ".emtcode OP_SLT 0x17\n"
78 ".emtcode OP_SLT_SAT 0x3A\n"
79 ".emtcode OP_SUB 0x18\n"
80 ".emtcode OP_SUB_SAT 0x3B\n"
81 ".emtcode OP_XPD 0x1A\n"
82 ".emtcode OP_XPD_SAT 0x43\n"
83 ".emtcode OP_CMP 0x1D\n"
84 ".emtcode OP_CMP_SAT 0x1E\n"
85 ".emtcode OP_LRP 0x2B\n"
86 ".emtcode OP_LRP_SAT 0x2C\n"
87 ".emtcode OP_MAD 0x0E\n"
88 ".emtcode OP_MAD_SAT 0x2D\n"
89 ".emtcode OP_SWZ 0x19\n"
90 ".emtcode OP_SWZ_SAT 0x3C\n"
91 ".emtcode OP_TEX 0x3D\n"
92 ".emtcode OP_TEX_SAT 0x3E\n"
93 ".emtcode OP_TXB 0x3F\n"
94 ".emtcode OP_TXB_SAT 0x40\n"
95 ".emtcode OP_TXP 0x41\n"
96 ".emtcode OP_TXP_SAT 0x42\n"
97 ".emtcode OP_KIL 0x28\n"
98 ".emtcode OP_ARL 0x02\n"
99 ".emtcode OP_EXP 0x08\n"
100 ".emtcode OP_LOG 0x0D\n"
101 ".emtcode FRAGMENT_ATTRIB_COLOR 0x01\n"
102 ".emtcode FRAGMENT_ATTRIB_TEXCOORD 0x02\n"
103 ".emtcode FRAGMENT_ATTRIB_FOGCOORD 0x03\n"
104 ".emtcode FRAGMENT_ATTRIB_POSITION 0x04\n"
105 ".emtcode VERTEX_ATTRIB_POSITION 0x01\n"
106 ".emtcode VERTEX_ATTRIB_WEIGHT 0x02\n"
107 ".emtcode VERTEX_ATTRIB_NORMAL 0x03\n"
108 ".emtcode VERTEX_ATTRIB_COLOR 0x04\n"
109 ".emtcode VERTEX_ATTRIB_FOGCOORD 0x05\n"
110 ".emtcode VERTEX_ATTRIB_TEXCOORD 0x06\n"
111 ".emtcode VERTEX_ATTRIB_MATRIXINDEX 0x07\n"
112 ".emtcode VERTEX_ATTRIB_GENERIC 0x08\n"
113 ".emtcode FRAGMENT_RESULT_COLOR 0x01\n"
114 ".emtcode FRAGMENT_RESULT_DEPTH 0x02\n"
115 ".emtcode VERTEX_RESULT_POSITION 0x01\n"
116 ".emtcode VERTEX_RESULT_COLOR 0x02\n"
117 ".emtcode VERTEX_RESULT_FOGCOORD 0x03\n"
118 ".emtcode VERTEX_RESULT_POINTSIZE 0x04\n"
119 ".emtcode VERTEX_RESULT_TEXCOORD 0x05\n"
120 ".emtcode TEXTARGET_1D 0x01\n"
121 ".emtcode TEXTARGET_2D 0x02\n"
122 ".emtcode TEXTARGET_3D 0x03\n"
123 ".emtcode TEXTARGET_RECT 0x04\n"
124 ".emtcode TEXTARGET_CUBE 0x05\n"
125 ".emtcode TEXTARGET_SHADOW1D 0x06\n"
126 ".emtcode TEXTARGET_SHADOW2D 0x07\n"
127 ".emtcode TEXTARGET_SHADOWRECT 0x08\n"
128 ".emtcode TEXTARGET_1D_ARRAY 0x09\n"
129 ".emtcode TEXTARGET_2D_ARRAY 0x0a\n"
130 ".emtcode TEXTARGET_SHADOW1D_ARRAY 0x0b\n"
131 ".emtcode TEXTARGET_SHADOW2D_ARRAY 0x0c\n"
132 ".emtcode FACE_FRONT 0x00\n"
133 ".emtcode FACE_BACK 0x01\n"
134 ".emtcode COLOR_PRIMARY 0x00\n"
135 ".emtcode COLOR_SECONDARY 0x01\n"
136 ".emtcode COMPONENT_X 0x00\n"
137 ".emtcode COMPONENT_Y 0x01\n"
138 ".emtcode COMPONENT_Z 0x02\n"
139 ".emtcode COMPONENT_W 0x03\n"
140 ".emtcode COMPONENT_0 0x04\n"
141 ".emtcode COMPONENT_1 0x05\n"
142 ".emtcode ARRAY_INDEX_ABSOLUTE 0x00\n"
143 ".emtcode ARRAY_INDEX_RELATIVE 0x01\n"
144 ".emtcode MATRIX_MODELVIEW 0x01\n"
145 ".emtcode MATRIX_PROJECTION 0x02\n"
146 ".emtcode MATRIX_MVP 0x03\n"
147 ".emtcode MATRIX_TEXTURE 0x04\n"
148 ".emtcode MATRIX_PALETTE 0x05\n"
149 ".emtcode MATRIX_PROGRAM 0x06\n"
150 ".emtcode MATRIX_MODIFIER_IDENTITY 0x00\n"
151 ".emtcode MATRIX_MODIFIER_INVERSE 0x01\n"
152 ".emtcode MATRIX_MODIFIER_TRANSPOSE 0x02\n"
153 ".emtcode MATRIX_MODIFIER_INVTRANS 0x03\n"
154 ".emtcode CONSTANT_SCALAR 0x01\n"
155 ".emtcode CONSTANT_VECTOR 0x02\n"
156 ".emtcode PROGRAM_PARAM_ENV 0x01\n"
157 ".emtcode PROGRAM_PARAM_LOCAL 0x02\n"
158 ".emtcode REGISTER_ATTRIB 0x01\n"
159 ".emtcode REGISTER_PARAM 0x02\n"
160 ".emtcode REGISTER_RESULT 0x03\n"
161 ".emtcode REGISTER_ESTABLISHED_NAME 0x04\n"
162 ".emtcode PARAM_NULL 0x00\n"
163 ".emtcode PARAM_ARRAY_ELEMENT 0x01\n"
164 ".emtcode PARAM_STATE_ELEMENT 0x02\n"
165 ".emtcode PARAM_PROGRAM_ELEMENT 0x03\n"
166 ".emtcode PARAM_PROGRAM_ELEMENTS 0x04\n"
167 ".emtcode PARAM_CONSTANT 0x05\n"
168 ".emtcode STATE_MATERIAL 0x01\n"
169 ".emtcode STATE_LIGHT 0x02\n"
170 ".emtcode STATE_LIGHT_MODEL 0x03\n"
171 ".emtcode STATE_LIGHT_PROD 0x04\n"
172 ".emtcode STATE_FOG 0x05\n"
173 ".emtcode STATE_MATRIX_ROWS 0x06\n"
174 ".emtcode STATE_TEX_ENV 0x07\n"
175 ".emtcode STATE_DEPTH 0x08\n"
176 ".emtcode STATE_TEX_GEN 0x09\n"
177 ".emtcode STATE_CLIP_PLANE 0x0A\n"
178 ".emtcode STATE_POINT 0x0B\n"
179 ".emtcode MATERIAL_AMBIENT 0x01\n"
180 ".emtcode MATERIAL_DIFFUSE 0x02\n"
181 ".emtcode MATERIAL_SPECULAR 0x03\n"
182 ".emtcode MATERIAL_EMISSION 0x04\n"
183 ".emtcode MATERIAL_SHININESS 0x05\n"
184 ".emtcode LIGHT_AMBIENT 0x01\n"
185 ".emtcode LIGHT_DIFFUSE 0x02\n"
186 ".emtcode LIGHT_SPECULAR 0x03\n"
187 ".emtcode LIGHT_POSITION 0x04\n"
188 ".emtcode LIGHT_ATTENUATION 0x05\n"
189 ".emtcode LIGHT_HALF 0x06\n"
190 ".emtcode LIGHT_SPOT_DIRECTION 0x07\n"
191 ".emtcode LIGHT_MODEL_AMBIENT 0x01\n"
192 ".emtcode LIGHT_MODEL_SCENECOLOR 0x02\n"
193 ".emtcode LIGHT_PROD_AMBIENT 0x01\n"
194 ".emtcode LIGHT_PROD_DIFFUSE 0x02\n"
195 ".emtcode LIGHT_PROD_SPECULAR 0x03\n"
196 ".emtcode TEX_ENV_COLOR 0x01\n"
197 ".emtcode TEX_GEN_EYE 0x01\n"
198 ".emtcode TEX_GEN_OBJECT 0x02\n"
199 ".emtcode FOG_COLOR 0x01\n"
200 ".emtcode FOG_PARAMS 0x02\n"
201 ".emtcode DEPTH_RANGE 0x01\n"
202 ".emtcode POINT_SIZE 0x01\n"
203 ".emtcode POINT_ATTENUATION 0x02\n"
204 ".emtcode ATTRIB 0x01\n"
205 ".emtcode PARAM 0x02\n"
206 ".emtcode TEMP 0x03\n"
207 ".emtcode OUTPUT 0x04\n"
208 ".emtcode ALIAS 0x05\n"
209 ".emtcode ADDRESS 0x06\n"
210 ".errtext UNKNOWN_PROGRAM_SIGNATURE \"1001: '$e_signature$': unknown program signature\"\n"
211 ".errtext MISSING_END_OR_INVALID_STATEMENT \"1002: '$e_statement$': invalid statement\"\n"
212 ".errtext CODE_AFTER_END \"1003: '$e_statement$': code after 'END' keyword\"\n"
213 ".errtext INVALID_PROGRAM_OPTION \"1004: '$e_identifier$': invalid program option\"\n"
214 ".errtext EXT_SWIZ_COMP_EXPECTED \"1005: extended swizzle component expected but '$e_token$' found\"\n"
215 ".errtext TEX_TARGET_EXPECTED \"1006: texture target expected but '$e_token$' found\"\n"
216 ".errtext TEXTURE_EXPECTED \"1007: 'texture' expected but '$e_identifier$' found\"\n"
217 ".errtext SOURCE_REGISTER_EXPECTED \"1008: source register expected but '$e_token$' found\"\n"
218 ".errtext DESTINATION_REGISTER_EXPECTED \"1009: destination register expected but '$e_token$' found\"\n"
219 ".errtext INVALID_ADDRESS_COMPONENT \"1010: '$e_identifier$': invalid address component\"\n"
220 ".errtext INVALID_ADDRESS_WRITEMASK \"1011: '$e_identifier$': invalid address writemask\"\n"
221 ".errtext INVALID_COMPONENT \"1012: '$e_charordigit$': invalid component\"\n"
222 ".errtext INVALID_SUFFIX \"1013: '$e_identifier$': invalid suffix\"\n"
223 ".errtext INVALID_WRITEMASK \"1014: '$e_identifier$': invalid writemask\"\n"
224 ".errtext FRAGMENT_EXPECTED \"1015: 'fragment' expected but '$e_identifier$' found\"\n"
225 ".errtext VERTEX_EXPECTED \"1016: 'vertex' expected but '$e_identifier$' found\"\n"
226 ".errtext INVALID_FRAGMENT_PROPERTY \"1017: '$e_identifier$': invalid fragment property\"\n"
227 ".errtext INVALID_VERTEX_PROPERTY \"1018: '$e_identifier$': invalid vertex property\"\n"
228 ".errtext INVALID_STATE_PROPERTY \"1019: '$e_identifier$': invalid state property\"\n"
229 ".errtext INVALID_MATERIAL_PROPERTY \"1020: '$e_identifier$': invalid material property\"\n"
230 ".errtext INVALID_LIGHT_PROPERTY \"1021: '$e_identifier$': invalid light property\"\n"
231 ".errtext INVALID_SPOT_PROPERTY \"1022: '$e_identifier$': invalid spot property\"\n"
232 ".errtext INVALID_LIGHTMODEL_PROPERTY \"1023: '$e_identifier$': invalid light model property\"\n"
233 ".errtext INVALID_LIGHTPROD_PROPERTY \"1024: '$e_identifier$': invalid light product property\"\n"
234 ".errtext INVALID_TEXENV_PROPERTY \"1025: '$e_identifier$': invalid texture environment property\"\n"
235 ".errtext INVALID_TEXGEN_PROPERTY \"1026: '$e_identifier$': invalid texture generating property\"\n"
236 ".errtext INVALID_TEXGEN_COORD \"1027: '$e_identifier$': invalid texture generating coord\"\n"
237 ".errtext INVALID_FOG_PROPERTY \"1028: '$e_identifier$': invalid fog property\"\n"
238 ".errtext INVALID_DEPTH_PROPERTY \"1029: '$e_identifier$': invalid depth property\"\n"
239 ".errtext INVALID_CLIPPLANE_PROPERTY \"1030: '$e_identifier$': invalid clip plane property\"\n"
240 ".errtext INVALID_POINT_PROPERTY \"1031: '$e_identifier$': invalid point property\"\n"
241 ".errtext MATRIX_ROW_SELECTOR_OR_MODIFIER_EXPECTED \"1032: matrix row selector or modifier expected but '$e_token$' found\"\n"
242 ".errtext INVALID_MATRIX_NAME \"1033: '$e_identifier$': invalid matrix name\"\n"
243 ".errtext INVALID_PROGRAM_PROPERTY \"1034: '$e_identifier$': invalid program property\"\n"
244 ".errtext RESULT_EXPECTED \"1035: 'result' expected but '$e_token$' found\"\n"
245 ".errtext INVALID_RESULT_PROPERTY \"1036: '$e_identifier$': invalid result property\"\n"
246 ".errtext INVALID_FACE_PROPERTY \"1037: '$e_identifier$': invalid face property\"\n"
247 ".errtext INVALID_COLOR_PROPERTY \"1038: '$e_identifier$': invalid color property\"\n"
248 ".errtext IDENTIFIER_EXPECTED \"1039: identifier expected but '$e_token$' found\"\n"
249 ".errtext RESERVED_KEYWORD \"1040: use of reserved keyword as an identifier\"\n"
250 ".errtext INTEGER_EXPECTED \"1041: integer value expected but '$e_token$' found\"\n"
251 ".errtext MISSING_SEMICOLON \"1042: ';' expected but '$e_token$' found\"\n"
252 ".errtext MISSING_COMMA \"1043: ',' expected but '$e_token$' found\"\n"
253 ".errtext MISSING_LBRACKET \"1044: '[' expected but '$e_token$' found\"\n"
254 ".errtext MISSING_RBRACKET \"1045: ']' expected but '$e_token$' found\"\n"
255 ".errtext MISSING_DOT \"1046: '.' expected but '$e_token$' found\"\n"
256 ".errtext MISSING_EQUAL \"1047: '=' expected but '$e_token$' found\"\n"
257 ".errtext MISSING_LBRACE \"1048: '{' expected but '$e_token$' found\"\n"
258 ".errtext MISSING_RBRACE \"1049: '}' expected but '$e_token$' found\"\n"
259 ".errtext MISSING_DOTDOT \"1050: '..' expected but '$e_token$' found\"\n"
260 ".errtext MISSING_FRACTION_OR_EXPONENT \"1051: missing fraction part or exponent\"\n"
261 ".errtext MISSING_DOT_OR_EXPONENT \"1052: missing '.' or exponent\"\n"
262 ".errtext EXPONENT_VALUE_EXPECTED \"1053: exponent value expected\"\n"
263 ".errtext INTEGER_OUT_OF_RANGE \"1054: integer value out of range\"\n"
264 ".errtext OPERATION_NEEDS_DESTINATION_VARIABLE \"1055: operation needs destination variable\"\n"
265 ".errtext OPERATION_NEEDS_SOURCE_VARIABLE \"1056: operation needs source variable\"\n"
266 ".errtext ADDRESS_REGISTER_EXPECTED \"1057: address register expected but '$e_token$' found\"\n"
267 ".errtext ADDRESS_REGISTER_OR_INTEGER_EXPECTED \"1058: address register or integer literal expected but '$e_token$' found\"\n"
268 ".regbyte vertex_blend 0x00\n"
269 ".regbyte matrix_palette 0x00\n"
270 ".regbyte point_parameters 0x00\n"
271 ".regbyte secondary_color 0x00\n"
272 ".regbyte fog_coord 0x00\n"
273 ".regbyte texture_rectangle 0x00\n"
274 ".regbyte fragment_program_shadow 0x00\n"
275 ".regbyte draw_buffers 0x00\n"
276 ".regbyte texture_array 0x00\n"
277 ".regbyte ARB_precision_hint_fastest 0x00\n"
278 ".regbyte ARB_precision_hint_nicest 0x00\n"
279 ".regbyte ARB_fog_exp 0x00\n"
280 ".regbyte ARB_fog_exp2 0x00\n"
281 ".regbyte ARB_fog_linear 0x00\n"
282 ".regbyte ARB_position_invariant 0x00\n"
283 ".regbyte ARB_fragment_program_shadow 0x00\n"
284 ".regbyte ARB_draw_buffers 0x00\n"
285 ".regbyte MESA_texture_array 0x00\n"
286 ".regbyte program_target 0x00\n"
287 "program\n"
288 " programs .error UNKNOWN_PROGRAM_SIGNATURE .emit REVISION;\n"
289 "programs\n"
290 " .if (program_target == 0x10) frag_program_1_0 .emit FRAGMENT_PROGRAM .emit 0x01 .emit 0x00 .or\n"
291 " .if (program_target == 0x20) vert_program_1_0 .emit VERTEX_PROGRAM .emit 0x01 .emit 0x00;\n"
292 "frag_program_1_0\n"
293 " '!' .and '!' .and 'A' .and 'R' .and 'B' .and 'f' .and 'p' .and '1' .and '.' .and '0' .and\n"
294 " optional_space .and fp_optionSequence .and fp_statementSequence .and\n"
295 " \"END\" .error MISSING_END_OR_INVALID_STATEMENT .emit END .and optional_space .and\n"
296 " '\\0' .error CODE_AFTER_END;\n"
297 "vert_program_1_0\n"
298 " '!' .and '!' .and 'A' .and 'R' .and 'B' .and 'v' .and 'p' .and '1' .and '.' .and '0' .and\n"
299 " optional_space .and vp_optionSequence .and vp_statementSequence .and\n"
300 " \"END\" .error MISSING_END_OR_INVALID_STATEMENT .emit END .and optional_space .and\n"
301 " '\\0' .error CODE_AFTER_END;\n"
302 "fp_optionSequence\n"
303 " .loop fp_option;\n"
304 "vp_optionSequence\n"
305 " .loop vp_option;\n"
306 "fp_option\n"
307 " \"OPTION\" .emit OPTION .and space .error IDENTIFIER_EXPECTED .and\n"
308 " fp_optionString .error INVALID_PROGRAM_OPTION .and semicolon;\n"
309 "vp_option\n"
310 " \"OPTION\" .emit OPTION .and space .error IDENTIFIER_EXPECTED .and\n"
311 " vp_optionString .error INVALID_PROGRAM_OPTION .and semicolon;\n"
312 "fp_optionString\n"
313 " .if (ARB_precision_hint_nicest == 0x00) \"ARB_precision_hint_fastest\"\n"
314 " .emit ARB_PRECISION_HINT_FASTEST .load ARB_precision_hint_fastest 0x01 .or\n"
315 " .if (ARB_precision_hint_fastest == 0x00) \"ARB_precision_hint_nicest\"\n"
316 " .emit ARB_PRECISION_HINT_NICEST .load ARB_precision_hint_nicest 0x01 .or\n"
317 " fp_ARB_fog_exp .emit ARB_FOG_EXP .load ARB_fog_exp 0x01 .or\n"
318 " fp_ARB_fog_exp2 .emit ARB_FOG_EXP2 .load ARB_fog_exp2 0x01 .or\n"
319 " fp_ARB_fog_linear .emit ARB_FOG_LINEAR .load ARB_fog_linear 0x01 .or\n"
320 " .if (fragment_program_shadow != 0x00) \"ARB_fragment_program_shadow\"\n"
321 " .emit ARB_FRAGMENT_PROGRAM_SHADOW .load ARB_fragment_program_shadow 0x01 .or\n"
322 " .if (draw_buffers != 0x00) \"ARB_draw_buffers\" .emit ARB_DRAW_BUFFERS\n"
323 " .load ARB_draw_buffers 0x01 .or\n"
324 " .if (texture_array != 0x00) \"MESA_texture_array\" .emit MESA_TEXTURE_ARRAY\n"
325 " .load MESA_texture_array 0x01;\n"
326 "vp_optionString\n"
327 " \"ARB_position_invariant\" .emit ARB_POSITION_INVARIANT .load ARB_position_invariant 0x01;\n"
328 "fp_ARB_fog_exp\n"
329 " .if (ARB_fog_exp2 == 0x00) .true .and .if (ARB_fog_linear == 0x00) \"ARB_fog_exp\";\n"
330 "fp_ARB_fog_exp2\n"
331 " .if (ARB_fog_exp == 0x00) .true .and .if (ARB_fog_linear == 0x00) \"ARB_fog_exp2\";\n"
332 "fp_ARB_fog_linear\n"
333 " .if (ARB_fog_exp == 0x00) .true .and .if (ARB_fog_exp2 == 0x00) \"ARB_fog_linear\";\n"
334 "fp_statementSequence\n"
335 " .loop fp_statement;\n"
336 "vp_statementSequence\n"
337 " .loop vp_statement;\n"
338 "fp_statement\n"
339 " fp_statement_1 .or fp_statement_2;\n"
340 "vp_statement\n"
341 " vp_statement_1 .or vp_statement_2;\n"
342 "fp_statement_1\n"
343 " fp_instruction .emit INSTRUCTION .emit $ .and semicolon;\n"
344 "fp_statement_2\n"
345 " fp_namingStatement .emit DECLARATION .and semicolon;\n"
346 "vp_statement_1\n"
347 " vp_instruction .emit INSTRUCTION .emit $ .and semicolon;\n"
348 "vp_statement_2\n"
349 " vp_namingStatement .emit DECLARATION .and semicolon;\n"
350 "fp_instruction\n"
351 " ALUInstruction .emit OP_ALU_INST .or\n"
352 " TexInstruction .emit OP_TEX_INST;\n"
353 "vp_instruction\n"
354 " ARL_instruction .emit OP_ALU_ARL .or\n"
355 " vp_VECTORop_instruction .emit OP_ALU_VECTOR .or\n"
356 " vp_SCALARop_instruction .emit OP_ALU_SCALAR .or\n"
357 " vp_BINSCop_instruction .emit OP_ALU_BINSC .or\n"
358 " vp_BINop_instruction .emit OP_ALU_BIN .or\n"
359 " vp_TRIop_instruction .emit OP_ALU_TRI .or\n"
360 " vp_SWZ_instruction .emit OP_ALU_SWZ;\n"
361 "ALUInstruction\n"
362 " fp_VECTORop_instruction .emit OP_ALU_VECTOR .or\n"
363 " fp_SCALARop_instruction .emit OP_ALU_SCALAR .or\n"
364 " fp_BINSCop_instruction .emit OP_ALU_BINSC .or\n"
365 " fp_BINop_instruction .emit OP_ALU_BIN .or\n"
366 " fp_TRIop_instruction .emit OP_ALU_TRI .or\n"
367 " fp_SWZ_instruction .emit OP_ALU_SWZ;\n"
368 "TexInstruction\n"
369 " SAMPLE_instruction .emit OP_TEX_SAMPLE .or\n"
370 " KIL_instruction .emit OP_TEX_KIL;\n"
371 "ARL_instruction\n"
372 " \"ARL\" .emit OP_ARL .and space_dst .and maskedAddrReg .and comma .and vp_scalarSrcReg;\n"
373 "fp_VECTORop_instruction\n"
374 " fp_VECTORop .and space_dst .and fp_maskedDstReg .and comma .and vectorSrcReg;\n"
375 "vp_VECTORop_instruction\n"
376 " vp_VECTORop .and space_dst .and vp_maskedDstReg .and comma .and swizzleSrcReg;\n"
377 "fp_VECTORop\n"
378 " \"ABS\" .emit OP_ABS .or \"ABS_SAT\" .emit OP_ABS_SAT .or\n"
379 " \"FLR\" .emit OP_FLR .or \"FLR_SAT\" .emit OP_FLR_SAT .or\n"
380 " \"FRC\" .emit OP_FRC .or \"FRC_SAT\" .emit OP_FRC_SAT .or\n"
381 " \"LIT\" .emit OP_LIT .or \"LIT_SAT\" .emit OP_LIT_SAT .or\n"
382 " \"MOV\" .emit OP_MOV .or \"MOV_SAT\" .emit OP_MOV_SAT;\n"
383 "vp_VECTORop\n"
384 " \"ABS\" .emit OP_ABS .or\n"
385 " \"FLR\" .emit OP_FLR .or\n"
386 " \"FRC\" .emit OP_FRC .or\n"
387 " \"LIT\" .emit OP_LIT .or\n"
388 " \"MOV\" .emit OP_MOV;\n"
389 "fp_SCALARop_instruction\n"
390 " fp_SCALARop .and space_dst .and fp_maskedDstReg .and comma .and fp_scalarSrcReg;\n"
391 "vp_SCALARop_instruction\n"
392 " vp_SCALARop .and space_dst .and vp_maskedDstReg .and comma .and vp_scalarSrcReg;\n"
393 "fp_SCALARop\n"
394 " \"COS\" .emit OP_COS .or \"COS_SAT\" .emit OP_COS_SAT .or\n"
395 " \"EX2\" .emit OP_EX2 .or \"EX2_SAT\" .emit OP_EX2_SAT .or\n"
396 " \"LG2\" .emit OP_LG2 .or \"LG2_SAT\" .emit OP_LG2_SAT .or\n"
397 " \"RCP\" .emit OP_RCP .or \"RCP_SAT\" .emit OP_RCP_SAT .or\n"
398 " \"RSQ\" .emit OP_RSQ .or \"RSQ_SAT\" .emit OP_RSQ_SAT .or\n"
399 " \"SIN\" .emit OP_SIN .or \"SIN_SAT\" .emit OP_SIN_SAT .or\n"
400 " \"SCS\" .emit OP_SCS .or \"SCS_SAT\" .emit OP_SCS_SAT;\n"
401 "vp_SCALARop\n"
402 " \"EX2\" .emit OP_EX2 .or\n"
403 " \"EXP\" .emit OP_EXP .or\n"
404 " \"LG2\" .emit OP_LG2 .or\n"
405 " \"LOG\" .emit OP_LOG .or\n"
406 " \"RCP\" .emit OP_RCP .or\n"
407 " \"RSQ\" .emit OP_RSQ;\n"
408 "fp_BINSCop_instruction\n"
409 " fp_BINSCop .and space_dst .and fp_maskedDstReg .and comma .and fp_scalarSrcReg .and comma .and\n"
410 " fp_scalarSrcReg;\n"
411 "vp_BINSCop_instruction\n"
412 " vp_BINSCop .and space_dst .and vp_maskedDstReg .and comma .and vp_scalarSrcReg .and comma .and\n"
413 " vp_scalarSrcReg;\n"
414 "fp_BINSCop\n"
415 " \"POW\" .emit OP_POW .or \"POW_SAT\" .emit OP_POW_SAT;\n"
416 "vp_BINSCop\n"
417 " \"POW\" .emit OP_POW;\n"
418 "fp_BINop_instruction\n"
419 " fp_BINop .and space_dst .and fp_maskedDstReg .and comma .and vectorSrcReg .and comma .and\n"
420 " vectorSrcReg;\n"
421 "vp_BINop_instruction\n"
422 " vp_BINop .and space_dst .and vp_maskedDstReg .and comma .and swizzleSrcReg .and comma .and\n"
423 " swizzleSrcReg;\n"
424 "fp_BINop\n"
425 " \"ADD\" .emit OP_ADD .or \"ADD_SAT\" .emit OP_ADD_SAT .or\n"
426 " \"DP3\" .emit OP_DP3 .or \"DP3_SAT\" .emit OP_DP3_SAT .or\n"
427 " \"DP4\" .emit OP_DP4 .or \"DP4_SAT\" .emit OP_DP4_SAT .or\n"
428 " \"DPH\" .emit OP_DPH .or \"DPH_SAT\" .emit OP_DPH_SAT .or\n"
429 " \"DST\" .emit OP_DST .or \"DST_SAT\" .emit OP_DST_SAT .or\n"
430 " \"MAX\" .emit OP_MAX .or \"MAX_SAT\" .emit OP_MAX_SAT .or\n"
431 " \"MIN\" .emit OP_MIN .or \"MIN_SAT\" .emit OP_MIN_SAT .or\n"
432 " \"MUL\" .emit OP_MUL .or \"MUL_SAT\" .emit OP_MUL_SAT .or\n"
433 " \"SGE\" .emit OP_SGE .or \"SGE_SAT\" .emit OP_SGE_SAT .or\n"
434 " \"SLT\" .emit OP_SLT .or \"SLT_SAT\" .emit OP_SLT_SAT .or\n"
435 " \"SUB\" .emit OP_SUB .or \"SUB_SAT\" .emit OP_SUB_SAT .or\n"
436 " \"XPD\" .emit OP_XPD .or \"XPD_SAT\" .emit OP_XPD_SAT;\n"
437 "vp_BINop\n"
438 " \"ADD\" .emit OP_ADD .or\n"
439 " \"DP3\" .emit OP_DP3 .or\n"
440 " \"DP4\" .emit OP_DP4 .or\n"
441 " \"DPH\" .emit OP_DPH .or\n"
442 " \"DST\" .emit OP_DST .or\n"
443 " \"MAX\" .emit OP_MAX .or\n"
444 " \"MIN\" .emit OP_MIN .or\n"
445 " \"MUL\" .emit OP_MUL .or\n"
446 " \"SGE\" .emit OP_SGE .or\n"
447 " \"SLT\" .emit OP_SLT .or\n"
448 " \"SUB\" .emit OP_SUB .or\n"
449 " \"XPD\" .emit OP_XPD;\n"
450 "fp_TRIop_instruction\n"
451 " fp_TRIop .and space_dst .and fp_maskedDstReg .and comma .and vectorSrcReg .and comma .and\n"
452 " vectorSrcReg .and comma .and vectorSrcReg;\n"
453 "vp_TRIop_instruction\n"
454 " vp_TRIop .and space_dst .and vp_maskedDstReg .and comma .and swizzleSrcReg .and comma .and\n"
455 " swizzleSrcReg .and comma .and swizzleSrcReg;\n"
456 "fp_TRIop\n"
457 " \"CMP\" .emit OP_CMP .or \"CMP_SAT\" .emit OP_CMP_SAT .or\n"
458 " \"LRP\" .emit OP_LRP .or \"LRP_SAT\" .emit OP_LRP_SAT .or\n"
459 " \"MAD\" .emit OP_MAD .or \"MAD_SAT\" .emit OP_MAD_SAT;\n"
460 "vp_TRIop\n"
461 " \"MAD\" .emit OP_MAD;\n"
462 "fp_SWZ_instruction\n"
463 " SWZop .and space_dst .and fp_maskedDstReg .and comma .and fp_srcReg .and comma .and\n"
464 " fp_extendedSwizzle .error EXT_SWIZ_COMP_EXPECTED;\n"
465 "vp_SWZ_instruction\n"
466 " \"SWZ\" .emit OP_SWZ .and space_dst .and vp_maskedDstReg .and comma .and vp_srcReg .and comma .and\n"
467 " vp_extendedSwizzle .error EXT_SWIZ_COMP_EXPECTED;\n"
468 "SWZop\n"
469 " \"SWZ\" .emit OP_SWZ .or \"SWZ_SAT\" .emit OP_SWZ_SAT;\n"
470 "SAMPLE_instruction\n"
471 " SAMPLEop .and space_dst .and fp_maskedDstReg .and comma .and vectorSrcReg .and comma .and\n"
472 " texImageUnit .and comma .and texTarget .error TEX_TARGET_EXPECTED;\n"
473 "SAMPLEop\n"
474 " \"TEX\" .emit OP_TEX .or \"TEX_SAT\" .emit OP_TEX_SAT .or\n"
475 " \"TXB\" .emit OP_TXB .or \"TXB_SAT\" .emit OP_TXB_SAT .or\n"
476 " \"TXP\" .emit OP_TXP .or \"TXP_SAT\" .emit OP_TXP_SAT;\n"
477 "KIL_instruction\n"
478 " \"KIL\" .emit OP_KIL .and space_src .and vectorSrcReg;\n"
479 "texImageUnit\n"
480 " \"texture\" .error TEXTURE_EXPECTED .and optTexImageUnitNum;\n"
481 "texTarget\n"
482 " \"1D\" .emit TEXTARGET_1D .or\n"
483 " \"2D\" .emit TEXTARGET_2D .or\n"
484 " \"3D\" .emit TEXTARGET_3D .or\n"
485 " .if (texture_rectangle != 0x00) \"RECT\" .emit TEXTARGET_RECT .or\n"
486 " \"CUBE\" .emit TEXTARGET_CUBE .or\n"
487 " .if (ARB_fragment_program_shadow != 0x00) shadowTarget .or\n"
488 " .if (MESA_texture_array != 0x00) arrayTarget;\n"
489 "shadowTarget\n"
490 " \"SHADOW1D\" .emit TEXTARGET_SHADOW1D .or\n"
491 " \"SHADOW2D\" .emit TEXTARGET_SHADOW2D .or\n"
492 " .if (texture_rectangle != 0x00) \"SHADOWRECT\" .emit TEXTARGET_SHADOWRECT .or\n"
493 " .if (MESA_texture_array != 0x00) shadowArrayTarget;\n"
494 "arrayTarget\n"
495 " \"ARRAY1D\" .emit TEXTARGET_1D_ARRAY .or\n"
496 " \"ARRAY2D\" .emit TEXTARGET_2D_ARRAY;\n"
497 "shadowArrayTarget\n"
498 " \"SHADOWARRAY1D\" .emit TEXTARGET_SHADOW1D_ARRAY .or\n"
499 " \"SHADOWARRAY2D\" .emit TEXTARGET_SHADOW2D_ARRAY;\n"
500 "optTexImageUnitNum\n"
501 " optTexImageUnitNum_1 .or .true .emit 0x00;\n"
502 "optTexImageUnitNum_1\n"
503 " lbracket_ne .and texImageUnitNum .and rbracket;\n"
504 "texImageUnitNum\n"
505 " integer;\n"
506 "fp_scalarSrcReg\n"
507 " optionalSign .and fp_srcReg .and fp_scalarSuffix;\n"
508 "vp_scalarSrcReg\n"
509 " optionalSign .and vp_srcReg .and vp_scalarSuffix;\n"
510 "swizzleSrcReg\n"
511 " optionalSign .and vp_srcReg .and swizzleSuffix;\n"
512 "vectorSrcReg\n"
513 " optionalSign .and fp_srcReg .and optionalSuffix;\n"
514 "fp_maskedDstReg\n"
515 " fp_dstReg .and fp_optionalMask;\n"
516 "vp_maskedDstReg\n"
517 " vp_dstReg .and vp_optionalMask;\n"
518 "maskedAddrReg\n"
519 " addrReg .error ADDRESS_REGISTER_EXPECTED .and addrWriteMask;\n"
520 "fp_extendedSwizzle\n"
521 " rgbaExtendedSwizzle .or xyzwExtendedSwizzle;\n"
522 "vp_extendedSwizzle\n"
523 " extSwizComp .and comma .and\n"
524 " extSwizComp .error EXT_SWIZ_COMP_EXPECTED .and comma .and\n"
525 " extSwizComp .error EXT_SWIZ_COMP_EXPECTED .and comma .and\n"
526 " extSwizComp .error EXT_SWIZ_COMP_EXPECTED;\n"
527 "xyzwExtendedSwizzle\n"
528 " xyzwExtSwizComp .and comma .and\n"
529 " xyzwExtSwizComp .error EXT_SWIZ_COMP_EXPECTED .and comma .and\n"
530 " xyzwExtSwizComp .error EXT_SWIZ_COMP_EXPECTED .and comma .and\n"
531 " xyzwExtSwizComp .error EXT_SWIZ_COMP_EXPECTED;\n"
532 "rgbaExtendedSwizzle\n"
533 " rgbaExtendedSwizzle_1 .or rgbaExtendedSwizzle_2 .or rgbaExtendedSwizzle_3 .or\n"
534 " rgbaExtendedSwizzle_4;\n"
535 "rgbaExtendedSwizzle_1\n"
536 " rgbaExtSwizComp_digit .and comma .and rgbaExtSwizComp_digit .and comma .and\n"
537 " rgbaExtSwizComp_digit .and comma .and rgbaExtSwizComp;\n"
538 "rgbaExtendedSwizzle_2\n"
539 " rgbaExtSwizComp_digit .and comma .and rgbaExtSwizComp_digit .and comma .and\n"
540 " rgbaExtSwizComp_alpha .and comma .and rgbaExtSwizComp .error EXT_SWIZ_COMP_EXPECTED;\n"
541 "rgbaExtendedSwizzle_3\n"
542 " rgbaExtSwizComp_digit .and comma .and rgbaExtSwizComp_alpha .and comma .and\n"
543 " rgbaExtSwizComp .error EXT_SWIZ_COMP_EXPECTED .and comma .and\n"
544 " rgbaExtSwizComp .error EXT_SWIZ_COMP_EXPECTED;\n"
545 "rgbaExtendedSwizzle_4\n"
546 " rgbaExtSwizComp_alpha .and comma .and \n"
547 "rgbaExtSwizComp .error EXT_SWIZ_COMP_EXPECTED .and comma .and\n"
548 " rgbaExtSwizComp .error EXT_SWIZ_COMP_EXPECTED .and comma .and\n"
549 " rgbaExtSwizComp .error EXT_SWIZ_COMP_EXPECTED;\n"
550 "xyzwExtSwizComp\n"
551 " optionalSign .and xyzwExtSwizSel;\n"
552 "rgbaExtSwizComp\n"
553 " optionalSign .and rgbaExtSwizSel;\n"
554 "rgbaExtSwizComp_digit\n"
555 " optionalSign .and rgbaExtSwizSel_digit;\n"
556 "rgbaExtSwizComp_alpha\n"
557 " optionalSign .and rgbaExtSwizSel_alpha;\n"
558 "extSwizComp\n"
559 " optionalSign .and extSwizSel;\n"
560 "xyzwExtSwizSel\n"
561 " \"0\" .emit COMPONENT_0 .or \"1\" .emit COMPONENT_1 .or xyzwComponent_single;\n"
562 "rgbaExtSwizSel\n"
563 " rgbaExtSwizSel_digit .or rgbaExtSwizSel_alpha;\n"
564 "rgbaExtSwizSel_digit\n"
565 " \"0\" .emit COMPONENT_0 .or \"1\" .emit COMPONENT_1;\n"
566 "rgbaExtSwizSel_alpha\n"
567 " rgbaComponent_single;\n"
568 "extSwizSel\n"
569 " \"0\" .emit COMPONENT_0 .or \"1\" .emit COMPONENT_1 .or vp_component_single;\n"
570 "fp_srcReg\n"
571 " fp_srcReg_1 .error SOURCE_REGISTER_EXPECTED;\n"
572 "vp_srcReg\n"
573 " vp_srcReg_1 .error SOURCE_REGISTER_EXPECTED;\n"
574 "fp_srcReg_1\n"
575 " fragmentAttribReg .emit REGISTER_ATTRIB .or\n"
576 " fp_progParamReg .emit REGISTER_PARAM .or\n"
577 " fp_temporaryReg .emit REGISTER_ESTABLISHED_NAME;\n"
578 "vp_srcReg_1\n"
579 " vertexAttribReg .emit REGISTER_ATTRIB .or\n"
580 " vp_progParamReg .emit REGISTER_PARAM .or\n"
581 " vp_temporaryReg .emit REGISTER_ESTABLISHED_NAME;\n"
582 "fp_dstReg\n"
583 " fp_dstReg_1 .error DESTINATION_REGISTER_EXPECTED;\n"
584 "vp_dstReg\n"
585 " vp_dstReg_1 .error DESTINATION_REGISTER_EXPECTED;\n"
586 "fp_dstReg_1\n"
587 " fragmentResultReg .emit REGISTER_RESULT .or\n"
588 " fp_temporaryReg .emit REGISTER_ESTABLISHED_NAME;\n"
589 "vp_dstReg_1\n"
590 " vertexResultReg .emit REGISTER_RESULT .or\n"
591 " vp_temporaryReg .emit REGISTER_ESTABLISHED_NAME;\n"
592 "fragmentAttribReg\n"
593 " fragAttribBinding;\n"
594 "vertexAttribReg\n"
595 " vtxAttribBinding;\n"
596 "fp_temporaryReg\n"
597 " fp_establishedName_no_error_on_identifier;\n"
598 "vp_temporaryReg\n"
599 " vp_establishedName_no_error_on_identifier;\n"
600 "fp_progParamReg\n"
601 " fp_paramSingleItemUse .or fp_progParamReg_1 .or fp_progParamSingle;\n"
602 "vp_progParamReg\n"
603 " vp_paramSingleItemUse .or vp_progParamReg_1 .or vp_progParamSingle;\n"
604 "fp_progParamReg_1\n"
605 " fp_progParamArray .emit PARAM_ARRAY_ELEMENT .and lbracket_ne .and progParamArrayAbs .and\n"
606 " rbracket;\n"
607 "vp_progParamReg_1\n"
608 " vp_progParamArray .emit PARAM_ARRAY_ELEMENT .and lbracket_ne .and progParamArrayMem .and\n"
609 " rbracket;\n"
610 "fp_progParamSingle\n"
611 " .false;\n"
612 "vp_progParamSingle\n"
613 " .false;\n"
614 "fp_progParamArray\n"
615 " fp_establishedName_no_error_on_identifier;\n"
616 "vp_progParamArray\n"
617 " vp_establishedName_no_error_on_identifier;\n"
618 "progParamArrayMem\n"
619 " progParamArrayAbs .or progParamArrayRel;\n"
620 "progParamArrayAbs\n"
621 " integer_ne .emit ARRAY_INDEX_ABSOLUTE;\n"
622 "progParamArrayRel\n"
623 " addrReg .error ADDRESS_REGISTER_OR_INTEGER_EXPECTED .emit ARRAY_INDEX_RELATIVE .and\n"
624 " addrComponent .and addrRegRelOffset;\n"
625 "addrRegRelOffset\n"
626 " addrRegRelOffset_1 .or addrRegRelOffset_2 .or .true .emit 0x00;\n"
627 "addrRegRelOffset_1\n"
628 " plus_ne .and addrRegPosOffset;\n"
629 "addrRegRelOffset_2\n"
630 " minus_ne .and addrRegNegOffset;\n"
631 "addrRegPosOffset\n"
632 " integer_0_63;\n"
633 "addrRegNegOffset\n"
634 " integer_0_64;\n"
635 "fragmentResultReg\n"
636 " fp_resultBinding;\n"
637 "vertexResultReg\n"
638 " vp_resultBinding;\n"
639 "addrReg\n"
640 " vp_establishedName_no_error_on_identifier;\n"
641 "addrComponent\n"
642 " dot .and \"x\" .error INVALID_ADDRESS_COMPONENT .emit COMPONENT_X .emit COMPONENT_X\n"
643 " .emit COMPONENT_X .emit COMPONENT_X;\n"
644 "addrWriteMask\n"
645 " dot .and \"x\" .error INVALID_ADDRESS_WRITEMASK .emit 0x08;\n"
646 "fp_scalarSuffix\n"
647 " dot .and fp_component_single .error INVALID_COMPONENT;\n"
648 "vp_scalarSuffix\n"
649 " dot .and vp_component_single .error INVALID_COMPONENT;\n"
650 "swizzleSuffix\n"
651 " swizzleSuffix_1 .or\n"
652 " .true .emit COMPONENT_X .emit COMPONENT_Y .emit COMPONENT_Z .emit COMPONENT_W;\n"
653 "swizzleSuffix_1\n"
654 " dot_ne .and swizzleSuffix_2 .error INVALID_SUFFIX;\n"
655 "swizzleSuffix_2\n"
656 " swizzleSuffix_3 .or swizzleSuffix_4;\n"
657 "swizzleSuffix_3\n"
658 " vp_component_multi .and vp_component_multi .and vp_component_multi .error INVALID_COMPONENT .and\n"
659 " vp_component_multi .error INVALID_COMPONENT;\n"
660 "swizzleSuffix_4\n"
661 " \"x\" .emit COMPONENT_X .emit COMPONENT_X .emit COMPONENT_X .emit COMPONENT_X .or\n"
662 " \"y\" .emit COMPONENT_Y .emit COMPONENT_Y .emit COMPONENT_Y .emit COMPONENT_Y .or\n"
663 " \"z\" .emit COMPONENT_Z .emit COMPONENT_Z .emit COMPONENT_Z .emit COMPONENT_Z .or\n"
664 " \"w\" .emit COMPONENT_W .emit COMPONENT_W .emit COMPONENT_W .emit COMPONENT_W;\n"
665 "optionalSuffix\n"
666 " optionalSuffix_1 .or\n"
667 " .true .emit COMPONENT_X .emit COMPONENT_Y .emit COMPONENT_Z .emit COMPONENT_W;\n"
668 "optionalSuffix_1\n"
669 " dot_ne .and optionalSuffix_2 .error INVALID_SUFFIX;\n"
670 "optionalSuffix_2\n"
671 " optionalSuffix_3 .or optionalSuffix_4 .or optionalSuffix_5;\n"
672 "optionalSuffix_3\n"
673 " xyzwComponent_multi .and xyzwComponent_multi .and\n"
674 " xyzwComponent_multi .error INVALID_COMPONENT .and xyzwComponent_multi .error INVALID_COMPONENT;\n"
675 "optionalSuffix_4\n"
676 " rgbaComponent_multi .and rgbaComponent_multi .and\n"
677 " rgbaComponent_multi .error INVALID_COMPONENT .and rgbaComponent_multi .error INVALID_COMPONENT;\n"
678 "optionalSuffix_5\n"
679 " \"x\" .emit COMPONENT_X .emit COMPONENT_X .emit COMPONENT_X .emit COMPONENT_X .or\n"
680 " \"y\" .emit COMPONENT_Y .emit COMPONENT_Y .emit COMPONENT_Y .emit COMPONENT_Y .or\n"
681 " \"z\" .emit COMPONENT_Z .emit COMPONENT_Z .emit COMPONENT_Z .emit COMPONENT_Z .or\n"
682 " \"w\" .emit COMPONENT_W .emit COMPONENT_W .emit COMPONENT_W .emit COMPONENT_W .or\n"
683 " \"r\" .emit COMPONENT_X .emit COMPONENT_X .emit COMPONENT_X .emit COMPONENT_X .or\n"
684 " \"g\" .emit COMPONENT_Y .emit COMPONENT_Y .emit COMPONENT_Y .emit COMPONENT_Y .or\n"
685 " \"b\" .emit COMPONENT_Z .emit COMPONENT_Z .emit COMPONENT_Z .emit COMPONENT_Z .or\n"
686 " \"a\" .emit COMPONENT_W .emit COMPONENT_W .emit COMPONENT_W .emit COMPONENT_W;\n"
687 "fp_component_single\n"
688 " xyzwComponent_single .or rgbaComponent_single;\n"
689 "vp_component_multi\n"
690 " 'x' .emit COMPONENT_X .or 'y' .emit COMPONENT_Y .or 'z' .emit COMPONENT_Z .or\n"
691 " 'w' .emit COMPONENT_W;\n"
692 "vp_component_single\n"
693 " \"x\" .emit COMPONENT_X .or \"y\" .emit COMPONENT_Y .or \"z\" .emit COMPONENT_Z .or\n"
694 " \"w\" .emit COMPONENT_W;\n"
695 "xyzwComponent_multi\n"
696 " 'x' .emit COMPONENT_X .or 'y' .emit COMPONENT_Y .or 'z' .emit COMPONENT_Z .or\n"
697 " 'w' .emit COMPONENT_W;\n"
698 "xyzwComponent_single\n"
699 " \"x\" .emit COMPONENT_X .or \"y\" .emit COMPONENT_Y .or \"z\" .emit COMPONENT_Z .or\n"
700 " \"w\" .emit COMPONENT_W;\n"
701 "rgbaComponent_multi\n"
702 " 'r' .emit COMPONENT_X .or 'g' .emit COMPONENT_Y .or 'b' .emit COMPONENT_Z .or\n"
703 " 'a' .emit COMPONENT_W;\n"
704 "rgbaComponent_single\n"
705 " \"r\" .emit COMPONENT_X .or \"g\" .emit COMPONENT_Y .or \"b\" .emit COMPONENT_Z .or\n"
706 " \"a\" .emit COMPONENT_W;\n"
707 "fp_optionalMask\n"
708 " rgbaMask .or xyzwMask .or .true .emit 0x0F;\n"
709 "vp_optionalMask\n"
710 " xyzwMask .or .true .emit 0x0F;\n"
711 "xyzwMask\n"
712 " dot_ne .and xyzwMask_1 .error INVALID_WRITEMASK;\n"
713 "xyzwMask_1\n"
714 " \"xyzw\" .emit 0x0F .or \"xyz\" .emit 0x0E .or \"xyw\" .emit 0x0D .or \"xy\" .emit 0x0C .or\n"
715 " \"xzw\" .emit 0x0B .or \"xz\" .emit 0x0A .or \"xw\" .emit 0x09 .or \"x\" .emit 0x08 .or\n"
716 " \"yzw\" .emit 0x07 .or \"yz\" .emit 0x06 .or \"yw\" .emit 0x05 .or \"y\" .emit 0x04 .or\n"
717 " \"zw\" .emit 0x03 .or \"z\" .emit 0x02 .or \"w\" .emit 0x01;\n"
718 "rgbaMask\n"
719 " dot_ne .and rgbaMask_1;\n"
720 "rgbaMask_1\n"
721 " \"rgba\" .emit 0x0F .or \"rgb\" .emit 0x0E .or \"rga\" .emit 0x0D .or \"rg\" .emit 0x0C .or\n"
722 " \"rba\" .emit 0x0B .or \"rb\" .emit 0x0A .or \"ra\" .emit 0x09 .or \"r\" .emit 0x08 .or\n"
723 " \"gba\" .emit 0x07 .or \"gb\" .emit 0x06 .or \"ga\" .emit 0x05 .or \"g\" .emit 0x04 .or\n"
724 " \"ba\" .emit 0x03 .or \"b\" .emit 0x02 .or \"a\" .emit 0x01;\n"
725 "fp_namingStatement\n"
726 " fp_ATTRIB_statement .emit ATTRIB .or\n"
727 " fp_PARAM_statement .emit PARAM .or\n"
728 " fp_TEMP_statement .emit TEMP .or\n"
729 " fp_OUTPUT_statement .emit OUTPUT .or\n"
730 " fp_ALIAS_statement .emit ALIAS;\n"
731 "vp_namingStatement\n"
732 " vp_ATTRIB_statement .emit ATTRIB .or\n"
733 " vp_PARAM_statement .emit PARAM .or\n"
734 " vp_TEMP_statement .emit TEMP .or\n"
735 " ADDRESS_statement .emit ADDRESS .or\n"
736 " vp_OUTPUT_statement .emit OUTPUT .or\n"
737 " vp_ALIAS_statement .emit ALIAS;\n"
738 "fp_ATTRIB_statement\n"
739 " \"ATTRIB\" .and space .and fp_establishName .and equal .and\n"
740 " fragAttribBinding .error FRAGMENT_EXPECTED;\n"
741 "vp_ATTRIB_statement\n"
742 " \"ATTRIB\" .and space .and vp_establishName .and equal .and\n"
743 " vtxAttribBinding .error VERTEX_EXPECTED;\n"
744 "fragAttribBinding\n"
745 " \"fragment\" .and dot .and fragAttribItem .error INVALID_FRAGMENT_PROPERTY;\n"
746 "vtxAttribBinding\n"
747 " \"vertex\" .and dot .and vtxAttribItem .error INVALID_VERTEX_PROPERTY;\n"
748 "fragAttribItem\n"
749 " fragAttribItem_1 .emit FRAGMENT_ATTRIB_COLOR .or\n"
750 " fragAttribItem_2 .emit FRAGMENT_ATTRIB_TEXCOORD .or\n"
751 " .if (fog_coord != 0x00) \"fogcoord\" .emit FRAGMENT_ATTRIB_FOGCOORD .or\n"
752 " \"position\" .emit FRAGMENT_ATTRIB_POSITION;\n"
753 "fragAttribItem_1\n"
754 " \"color\" .and optColorType;\n"
755 "fragAttribItem_2\n"
756 " \"texcoord\" .and optTexCoordNum;\n"
757 "vtxAttribItem\n"
758 " \"position\" .emit VERTEX_ATTRIB_POSITION .or\n"
759 " .if (vertex_blend != 0x00) vtxAttribItem_1 .emit VERTEX_ATTRIB_WEIGHT .or\n"
760 " \"normal\" .emit VERTEX_ATTRIB_NORMAL .or\n"
761 " vtxAttribItem_2 .emit VERTEX_ATTRIB_COLOR .or\n"
762 " \"fogcoord\" .emit VERTEX_ATTRIB_FOGCOORD .or\n"
763 " vtxAttribItem_3 .emit VERTEX_ATTRIB_TEXCOORD .or\n"
764 " .if (matrix_palette != 0x00) vtxAttribItem_4 .emit VERTEX_ATTRIB_MATRIXINDEX .or\n"
765 " vtxAttribItem_5 .emit VERTEX_ATTRIB_GENERIC;\n"
766 "vtxAttribItem_1\n"
767 " \"weight\" .and vtxOptWeightNum;\n"
768 "vtxAttribItem_2\n"
769 " \"color\" .and optColorType;\n"
770 "vtxAttribItem_3\n"
771 " \"texcoord\" .and optTexCoordNum;\n"
772 "vtxAttribItem_4\n"
773 " \"matrixindex\" .and lbracket .and vtxWeightNum .and rbracket;\n"
774 "vtxAttribItem_5\n"
775 " \"attrib\" .and lbracket .and vtxAttribNum .and rbracket;\n"
776 "vtxAttribNum\n"
777 " integer;\n"
778 "vtxOptWeightNum\n"
779 " vtxOptWeightNum_1 .or .true .emit 0x00;\n"
780 "vtxOptWeightNum_1\n"
781 " lbracket_ne .and vtxWeightNum .and rbracket;\n"
782 "vtxWeightNum\n"
783 " integer;\n"
784 "fp_PARAM_statement\n"
785 " fp_PARAM_multipleStmt .or fp_PARAM_singleStmt;\n"
786 "vp_PARAM_statement\n"
787 " vp_PARAM_multipleStmt .or vp_PARAM_singleStmt;\n"
788 "fp_PARAM_singleStmt\n"
789 " \"PARAM\" .and space .and fp_establishName .and .true .emit 0x00 .and fp_paramSingleInit .and\n"
790 " .true .emit PARAM_NULL;\n"
791 "vp_PARAM_singleStmt\n"
792 " \"PARAM\" .and space .and vp_establishName .and .true .emit 0x00 .and vp_paramSingleInit .and\n"
793 " .true .emit PARAM_NULL;\n"
794 "fp_PARAM_multipleStmt\n"
795 " \"PARAM\" .and space .and fp_establishName .and lbracket_ne .and optArraySize .and rbracket .and\n"
796 " fp_paramMultipleInit .and .true .emit PARAM_NULL;\n"
797 "vp_PARAM_multipleStmt\n"
798 " \"PARAM\" .and space .and vp_establishName .and lbracket_ne .and optArraySize .and rbracket .and\n"
799 " vp_paramMultipleInit .and .true .emit PARAM_NULL;\n"
800 "optArraySize\n"
801 " optional_integer;\n"
802 "fp_paramSingleInit\n"
803 " equal .and fp_paramSingleItemDecl;\n"
804 "vp_paramSingleInit\n"
805 " equal .and vp_paramSingleItemDecl;\n"
806 "fp_paramMultipleInit\n"
807 " equal .and lbrace .and fp_paramMultInitList .and rbrace;\n"
808 "vp_paramMultipleInit\n"
809 " equal .and lbrace .and vp_paramMultInitList .and rbrace;\n"
810 "fp_paramMultInitList\n"
811 " fp_paramMultInitList_1 .or fp_paramMultipleItem;\n"
812 "vp_paramMultInitList\n"
813 " vp_paramMultInitList_1 .or vp_paramMultipleItem;\n"
814 "fp_paramMultInitList_1\n"
815 " fp_paramMultipleItem .and comma_ne .and fp_paramMultInitList;\n"
816 "vp_paramMultInitList_1\n"
817 " vp_paramMultipleItem .and comma_ne .and vp_paramMultInitList;\n"
818 "fp_paramSingleItemDecl\n"
819 " fp_stateSingleItem .emit PARAM_STATE_ELEMENT .or\n"
820 " programSingleItem .emit PARAM_PROGRAM_ELEMENT .or\n"
821 " paramConstDecl .emit PARAM_CONSTANT;\n"
822 "vp_paramSingleItemDecl\n"
823 " vp_stateSingleItem .emit PARAM_STATE_ELEMENT .or\n"
824 " programSingleItem .emit PARAM_PROGRAM_ELEMENT .or\n"
825 " paramConstDecl .emit PARAM_CONSTANT;\n"
826 "fp_paramSingleItemUse\n"
827 " fp_stateSingleItem .emit PARAM_STATE_ELEMENT .or\n"
828 " programSingleItem .emit PARAM_PROGRAM_ELEMENT .or\n"
829 " paramConstUse .emit PARAM_CONSTANT;\n"
830 "vp_paramSingleItemUse\n"
831 " vp_stateSingleItem .emit PARAM_STATE_ELEMENT .or\n"
832 " programSingleItem .emit PARAM_PROGRAM_ELEMENT .or\n"
833 " paramConstUse .emit PARAM_CONSTANT;\n"
834 "fp_paramMultipleItem\n"
835 " fp_stateMultipleItem .emit PARAM_STATE_ELEMENT .or\n"
836 " programMultipleItem .emit PARAM_PROGRAM_ELEMENT .or\n"
837 " paramConstDecl .emit PARAM_CONSTANT;\n"
838 "vp_paramMultipleItem\n"
839 " vp_stateMultipleItem .emit PARAM_STATE_ELEMENT .or\n"
840 " programMultipleItem .emit PARAM_PROGRAM_ELEMENT .or\n"
841 " paramConstDecl .emit PARAM_CONSTANT;\n"
842 "fp_stateMultipleItem\n"
843 " stateMultipleItem_1 .or fp_stateSingleItem;\n"
844 "vp_stateMultipleItem\n"
845 " stateMultipleItem_1 .or vp_stateSingleItem;\n"
846 "stateMultipleItem_1\n"
847 " \"state\" .and dot .and stateMatrixRows .emit STATE_MATRIX_ROWS;\n"
848 "fp_stateSingleItem\n"
849 " \"state\" .and dot .and fp_stateSingleItem_1 .error INVALID_STATE_PROPERTY;\n"
850 "vp_stateSingleItem\n"
851 " \"state\" .and dot .and vp_stateSingleItem_1 .error INVALID_STATE_PROPERTY;\n"
852 "fp_stateSingleItem_1\n"
853 " stateSingleItem_1 .or stateSingleItem_2 .or stateSingleItem_3 .or stateSingleItem_4 .or\n"
854 " stateSingleItem_5 .or stateSingleItem_7 .or stateSingleItem_8 .or stateSingleItem_11;\n"
855 "vp_stateSingleItem_1\n"
856 " stateSingleItem_1 .or stateSingleItem_2 .or stateSingleItem_3 .or stateSingleItem_4 .or\n"
857 " stateSingleItem_6 .or stateSingleItem_7 .or stateSingleItem_9 .or stateSingleItem_10 .or\n"
858 " stateSingleItem_11;\n"
859 "stateSingleItem_1\n"
860 " stateMaterialItem .emit STATE_MATERIAL;\n"
861 "stateSingleItem_2\n"
862 " stateLightItem .emit STATE_LIGHT;\n"
863 "stateSingleItem_3\n"
864 " stateLightModelItem .emit STATE_LIGHT_MODEL;\n"
865 "stateSingleItem_4\n"
866 " stateLightProdItem .emit STATE_LIGHT_PROD;\n"
867 "stateSingleItem_5\n"
868 " stateTexEnvItem .emit STATE_TEX_ENV;\n"
869 "stateSingleItem_6\n"
870 " stateTexGenItem .emit STATE_TEX_GEN;\n"
871 "stateSingleItem_7\n"
872 " stateFogItem .emit STATE_FOG;\n"
873 "stateSingleItem_8\n"
874 " stateDepthItem .emit STATE_DEPTH;\n"
875 "stateSingleItem_9\n"
876 " stateClipPlaneItem .emit STATE_CLIP_PLANE;\n"
877 "stateSingleItem_10\n"
878 " statePointItem .emit STATE_POINT;\n"
879 "stateSingleItem_11\n"
880 " stateMatrixRow .emit STATE_MATRIX_ROWS;\n"
881 "stateMaterialItem\n"
882 " \"material\" .and optFaceType .and dot .and stateMatProperty .error INVALID_MATERIAL_PROPERTY;\n"
883 "stateMatProperty\n"
884 " \"ambient\" .emit MATERIAL_AMBIENT .or\n"
885 " \"diffuse\" .emit MATERIAL_DIFFUSE .or\n"
886 " \"specular\" .emit MATERIAL_SPECULAR .or\n"
887 " \"emission\" .emit MATERIAL_EMISSION .or\n"
888 " \"shininess\" .emit MATERIAL_SHININESS;\n"
889 "stateLightItem\n"
890 " \"light\" .and lbracket .and stateLightNumber .and rbracket .and dot .and\n"
891 " stateLightProperty .error INVALID_LIGHT_PROPERTY;\n"
892 "stateLightProperty\n"
893 " \"ambient\" .emit LIGHT_AMBIENT .or\n"
894 " \"diffuse\" .emit LIGHT_DIFFUSE .or\n"
895 " \"specular\" .emit LIGHT_SPECULAR .or\n"
896 " \"position\" .emit LIGHT_POSITION .or\n"
897 " \"attenuation\" .emit LIGHT_ATTENUATION .or\n"
898 " stateLightProperty_1 .emit LIGHT_SPOT_DIRECTION .or\n"
899 " \"half\" .emit LIGHT_HALF;\n"
900 "stateLightProperty_1\n"
901 " \"spot\" .and dot .and stateSpotProperty .error INVALID_SPOT_PROPERTY;\n"
902 "stateSpotProperty\n"
903 " \"direction\";\n"
904 "stateLightModelItem\n"
905 " \"lightmodel\" .and stateLModProperty .error INVALID_LIGHTMODEL_PROPERTY;\n"
906 "stateLModProperty\n"
907 " stateLModProperty_1 .or stateLModProperty_2;\n"
908 "stateLModProperty_1\n"
909 " dot .and \"ambient\" .emit LIGHT_MODEL_AMBIENT;\n"
910 "stateLModProperty_2\n"
911 " stateLModProperty_3 .emit LIGHT_MODEL_SCENECOLOR;\n"
912 "stateLModProperty_3\n"
913 " optFaceType .and dot .and \"scenecolor\";\n"
914 "stateLightProdItem\n"
915 " \"lightprod\" .and lbracket .and stateLightNumber .and rbracket .and optFaceType .and dot .and\n"
916 " stateLProdProperty .error INVALID_LIGHTPROD_PROPERTY;\n"
917 "stateLProdProperty\n"
918 " \"ambient\" .emit LIGHT_PROD_AMBIENT .or\n"
919 " \"diffuse\" .emit LIGHT_PROD_DIFFUSE .or\n"
920 " \"specular\" .emit LIGHT_PROD_SPECULAR;\n"
921 "stateLightNumber\n"
922 " integer;\n"
923 "stateTexEnvItem\n"
924 " \"texenv\" .and optLegacyTexUnitNum .and dot .and\n"
925 " stateTexEnvProperty .error INVALID_TEXENV_PROPERTY;\n"
926 "stateTexEnvProperty\n"
927 " \"color\" .emit TEX_ENV_COLOR;\n"
928 "optLegacyTexUnitNum\n"
929 " optLegacyTexUnitNum_1 .or .true .emit 0x00;\n"
930 "optLegacyTexUnitNum_1\n"
931 " lbracket_ne .and legacyTexUnitNum .and rbracket;\n"
932 "legacyTexUnitNum\n"
933 " integer;\n"
934 "stateTexGenItem\n"
935 " \"texgen\" .and optTexCoordNum .and dot .and stateTexGenType .error INVALID_TEXGEN_PROPERTY .and\n"
936 " dot .and stateTexGenCoord .error INVALID_TEXGEN_COORD;\n"
937 "stateTexGenType\n"
938 " \"eye\" .emit TEX_GEN_EYE .or\n"
939 " \"object\" .emit TEX_GEN_OBJECT;\n"
940 "stateTexGenCoord\n"
941 " \"s\" .emit COMPONENT_X .or\n"
942 " \"t\" .emit COMPONENT_Y .or\n"
943 " \"r\" .emit COMPONENT_Z .or\n"
944 " \"q\" .emit COMPONENT_W;\n"
945 "stateFogItem\n"
946 " \"fog\" .and dot .and stateFogProperty .error INVALID_FOG_PROPERTY;\n"
947 "stateFogProperty\n"
948 " \"color\" .emit FOG_COLOR .or\n"
949 " \"params\" .emit FOG_PARAMS;\n"
950 "stateDepthItem\n"
951 " \"depth\" .and dot .and stateDepthProperty .error INVALID_DEPTH_PROPERTY;\n"
952 "stateDepthProperty\n"
953 " \"range\" .emit DEPTH_RANGE;\n"
954 "stateClipPlaneItem\n"
955 " \"clip\" .and lbracket .and stateClipPlaneNum .and rbracket .and dot .and\n"
956 " \"plane\" .error INVALID_CLIPPLANE_PROPERTY;\n"
957 "stateClipPlaneNum\n"
958 " integer;\n"
959 "statePointItem\n"
960 " \"point\" .and dot .and statePointProperty .error INVALID_POINT_PROPERTY;\n"
961 "statePointProperty\n"
962 " \"size\" .emit POINT_SIZE .or\n"
963 " .if (point_parameters != 0x00) \"attenuation\" .emit POINT_ATTENUATION;\n"
964 "stateMatrixRow\n"
965 " stateMatrixItem .and dot .and \"row\" .error MATRIX_ROW_SELECTOR_OR_MODIFIER_EXPECTED .and\n"
966 " lbracket .and stateMatrixRowNum .and rbracket .emit 0x0;\n"
967 "stateMatrixRows\n"
968 " stateMatrixItem .and optMatrixRows;\n"
969 "optMatrixRows\n"
970 " optMatrixRows_1 .or .true .emit 0x0 .emit '3' .emit 0x0 .emit $;\n"
971 "optMatrixRows_1\n"
972 " dot_ne .and \"row\" .error MATRIX_ROW_SELECTOR_OR_MODIFIER_EXPECTED .and lbracket .and\n"
973 " stateMatrixRowNum .and dotdot .and stateMatrixRowNum .and rbracket;\n"
974 "stateMatrixItem\n"
975 " \"matrix\" .and dot .and stateMatrixName .error INVALID_MATRIX_NAME .and stateOptMatModifier;\n"
976 "stateOptMatModifier\n"
977 " stateOptMatModifier_1 .or .true .emit MATRIX_MODIFIER_IDENTITY;\n"
978 "stateOptMatModifier_1\n"
979 " dot_ne .and stateMatModifier;\n"
980 "stateMatModifier\n"
981 " \"inverse\" .emit MATRIX_MODIFIER_INVERSE .or\n"
982 " \"transpose\" .emit MATRIX_MODIFIER_TRANSPOSE .or\n"
983 " \"invtrans\" .emit MATRIX_MODIFIER_INVTRANS;\n"
984 "stateMatrixRowNum\n"
985 " integer_0_3;\n"
986 "stateMatrixName\n"
987 " stateMatrixName_1_1 .emit MATRIX_MODELVIEW .or\n"
988 " \"projection\" .emit MATRIX_PROJECTION .or\n"
989 " \"mvp\" .emit MATRIX_MVP .or\n"
990 " stateMatrixName_1_2 .emit MATRIX_TEXTURE .or\n"
991 " .if (matrix_palette != 0x00) stateMatrixName_1_3 .emit MATRIX_PALETTE .or\n"
992 " stateMatrixName_1_4 .emit MATRIX_PROGRAM;\n"
993 "stateMatrixName_1_1\n"
994 " \"modelview\" .and stateOptModMatNum;\n"
995 "stateMatrixName_1_2\n"
996 " \"texture\" .and optTexCoordNum;\n"
997 "stateMatrixName_1_3\n"
998 " \"palette\" .and lbracket .and statePaletteMatNum .and rbracket;\n"
999 "stateMatrixName_1_4\n"
1000 " \"program\" .and lbracket .and stateProgramMatNum .and rbracket;\n"
1001 "stateOptModMatNum\n"
1002 " .if (vertex_blend != 0x00) stateOptModMatNum_1 .or\n"
1003 " .true .emit 0x00;\n"
1004 "stateOptModMatNum_1\n"
1005 " lbracket_ne .and stateModMatNum .and rbracket;\n"
1006 "stateModMatNum\n"
1007 " integer;\n"
1008 "optTexCoordNum\n"
1009 " optTexCoordNum_1 .or .true .emit 0x00;\n"
1010 "optTexCoordNum_1\n"
1011 " lbracket_ne .and texCoordNum .and rbracket;\n"
1012 "texCoordNum\n"
1013 " integer;\n"
1014 "statePaletteMatNum\n"
1015 " integer;\n"
1016 "stateProgramMatNum\n"
1017 " integer;\n"
1018 "programSingleItem\n"
1019 " \"program\" .and dot .and programSingleItem_1 .error INVALID_PROGRAM_PROPERTY;\n"
1020 "programSingleItem_1\n"
1021 " progEnvParam .or progLocalParam;\n"
1022 "programMultipleItem\n"
1023 " \"program\" .and dot .and programMultipleItem_1 .error INVALID_PROGRAM_PROPERTY;\n"
1024 "programMultipleItem_1\n"
1025 " progEnvParams .or progLocalParams;\n"
1026 "progEnvParams\n"
1027 " \"env\" .emit PROGRAM_PARAM_ENV .and lbracket .and progEnvParamNums .and rbracket;\n"
1028 "progEnvParamNums\n"
1029 " progEnvParamNums_1 .or progEnvParamNums_2;\n"
1030 "progEnvParamNums_1\n"
1031 " progEnvParamNum .and dotdot_ne .and progEnvParamNum;\n"
1032 "progEnvParamNums_2\n"
1033 " progEnvParamNum .and .true .emit 0x00;\n"
1034 "progEnvParam\n"
1035 " \"env\" .emit PROGRAM_PARAM_ENV .and lbracket .and progEnvParamNum .and rbracket .emit 0x00;\n"
1036 "progLocalParams\n"
1037 " \"local\" .emit PROGRAM_PARAM_LOCAL .and lbracket .and progLocalParamNums .and rbracket;\n"
1038 "progLocalParamNums\n"
1039 " progLocalParamNums_1 .or progLocalParamNums_2;\n"
1040 "progLocalParamNums_1\n"
1041 " progLocalParamNum .and dotdot_ne .and progLocalParamNum;\n"
1042 "progLocalParamNums_2\n"
1043 " progLocalParamNum .and .true .emit 0x00;\n"
1044 "progLocalParam\n"
1045 " \"local\" .emit PROGRAM_PARAM_LOCAL .and lbracket .and progLocalParamNum .and rbracket .emit 0x00;\n"
1046 "progEnvParamNum\n"
1047 " integer;\n"
1048 "progLocalParamNum\n"
1049 " integer;\n"
1050 "paramConstDecl\n"
1051 " paramConstScalarDecl .emit CONSTANT_SCALAR .or paramConstVector .emit CONSTANT_VECTOR;\n"
1052 "paramConstUse\n"
1053 " paramConstScalarUse .emit CONSTANT_SCALAR .or paramConstVector .emit CONSTANT_VECTOR;\n"
1054 "paramConstScalarDecl\n"
1055 " signedFloatConstant;\n"
1056 "paramConstScalarUse\n"
1057 " floatConstant;\n"
1058 "paramConstVector\n"
1059 " paramConstVector_4 .emit 0x04 .or paramConstVector_3 .emit 0x03 .or\n"
1060 " paramConstVector_2 .emit 0x02 .or paramConstVector_1 .emit 0x01;\n"
1061 "paramConstVector_1\n"
1062 " lbrace_ne .and signedFloatConstant .and rbrace;\n"
1063 "paramConstVector_2\n"
1064 " lbrace_ne .and signedFloatConstant .and comma_ne .and signedFloatConstant .and rbrace;\n"
1065 "paramConstVector_3\n"
1066 " lbrace_ne .and signedFloatConstant .and comma_ne .and signedFloatConstant .and comma_ne .and\n"
1067 " signedFloatConstant .and rbrace;\n"
1068 "paramConstVector_4\n"
1069 " lbrace_ne .and signedFloatConstant .and comma_ne .and signedFloatConstant .and comma_ne .and\n"
1070 " signedFloatConstant .and comma_ne .and signedFloatConstant .and rbrace;\n"
1071 "signedFloatConstant\n"
1072 " optionalSign .and floatConstant;\n"
1073 "floatConstant\n"
1074 " float;\n"
1075 "optionalSign\n"
1076 " optional_sign_ne;\n"
1077 "fp_TEMP_statement\n"
1078 " \"TEMP\" .and space .and fp_varNameList .and .true .emit 0x00;\n"
1079 "vp_TEMP_statement\n"
1080 " \"TEMP\" .and space .and vp_varNameList .and .true .emit 0x00;\n"
1081 "ADDRESS_statement\n"
1082 " \"ADDRESS\" .and space .and vp_varNameList .and .true .emit 0x00;\n"
1083 "fp_varNameList\n"
1084 " fp_varNameList_1 .or fp_establishName;\n"
1085 "vp_varNameList\n"
1086 " vp_varNameList_1 .or vp_establishName;\n"
1087 "fp_varNameList_1\n"
1088 " fp_establishName .and comma_ne .and fp_varNameList;\n"
1089 "vp_varNameList_1\n"
1090 " vp_establishName .and comma_ne .and vp_varNameList;\n"
1091 "fp_OUTPUT_statement\n"
1092 " \"OUTPUT\" .and space .and fp_establishName .and equal .and\n"
1093 " fp_resultBinding .error RESULT_EXPECTED;\n"
1094 "vp_OUTPUT_statement\n"
1095 " \"OUTPUT\" .and space .and vp_establishName .and equal .and\n"
1096 " vp_resultBinding .error RESULT_EXPECTED;\n"
1097 "fp_resultBinding\n"
1098 " \"result\" .and dot .and fp_resultBinding_1 .error INVALID_RESULT_PROPERTY;\n"
1099 "vp_resultBinding\n"
1100 " \"result\" .and dot .and vp_resultBinding_1 .error INVALID_RESULT_PROPERTY;\n"
1101 "fp_resultBinding_1\n"
1102 " fp_resultBinding_2 .emit FRAGMENT_RESULT_COLOR .or\n"
1103 " \"depth\" .emit FRAGMENT_RESULT_DEPTH;\n"
1104 "fp_resultBinding_2\n"
1105 " \"color\" .and optOutputColorNum;\n"
1106 "vp_resultBinding_1\n"
1107 " .if (ARB_position_invariant == 0x00) \"position\" .emit VERTEX_RESULT_POSITION .or\n"
1108 " resultColBinding .emit VERTEX_RESULT_COLOR .or\n"
1109 " \"fogcoord\" .emit VERTEX_RESULT_FOGCOORD .or\n"
1110 " \"pointsize\" .emit VERTEX_RESULT_POINTSIZE .or\n"
1111 " vp_resultBinding_2 .emit VERTEX_RESULT_TEXCOORD;\n"
1112 "vp_resultBinding_2\n"
1113 " \"texcoord\" .and optTexCoordNum;\n"
1114 "optOutputColorNum\n"
1115 " .if (ARB_draw_buffers != 0x00) optOutputColorNum_1 .or .true .emit 0x00;\n"
1116 "optOutputColorNum_1\n"
1117 " lbracket_ne .and outputColorNum .and rbracket;\n"
1118 "outputColorNum\n"
1119 " integer;\n"
1120 "resultColBinding\n"
1121 " \"color\" .and optFaceType .and optColorType;\n"
1122 "optFaceType\n"
1123 " FaceType .or .true .emit FACE_FRONT;\n"
1124 "FaceType\n"
1125 " dot_ne .and FaceProperty;\n"
1126 "FaceProperty\n"
1127 " \"front\" .emit FACE_FRONT .or \"back\" .emit FACE_BACK;\n"
1128 "optColorType\n"
1129 " ColorType .or .true .emit COLOR_PRIMARY;\n"
1130 "ColorType\n"
1131 " dot_ne .and ColorProperty;\n"
1132 "ColorProperty\n"
1133 " \"primary\" .emit COLOR_PRIMARY .or\n"
1134 " .if (secondary_color != 0x00) \"secondary\" .emit COLOR_SECONDARY;\n"
1135 "fp_ALIAS_statement\n"
1136 " \"ALIAS\" .and fp_ALIAS_statement_1 .error IDENTIFIER_EXPECTED .and equal .and fp_establishedName;\n"
1137 "vp_ALIAS_statement\n"
1138 " \"ALIAS\" .and vp_ALIAS_statement_1 .error IDENTIFIER_EXPECTED .and equal .and vp_establishedName;\n"
1139 "fp_ALIAS_statement_1\n"
1140 " space .and fp_establishName;\n"
1141 "vp_ALIAS_statement_1\n"
1142 " space .and vp_establishName;\n"
1143 "fp_establishName\n"
1144 " fp_identifier;\n"
1145 "vp_establishName\n"
1146 " vp_identifier;\n"
1147 "fp_establishedName\n"
1148 " fp_identifier;\n"
1149 "vp_establishedName\n"
1150 " vp_identifier;\n"
1151 "fp_establishedName_no_error_on_identifier\n"
1152 " fp_identifier_ne;\n"
1153 "vp_establishedName_no_error_on_identifier\n"
1154 " vp_identifier_ne;\n"
1155 "fp_identifier\n"
1156 " fp_identifier_ne .error IDENTIFIER_EXPECTED;\n"
1157 "vp_identifier\n"
1158 " vp_identifier_ne .error IDENTIFIER_EXPECTED;\n"
1159 "fp_identifier_ne\n"
1160 " fp_not_reserved_identifier .and identifier_ne;\n"
1161 "vp_identifier_ne\n"
1162 " vp_not_reserved_identifier .and identifier_ne;\n"
1163 "fp_not_reserved_identifier\n"
1164 " fp_not_reserved_identifier_1 .or .true;\n"
1165 "fp_not_reserved_identifier_1\n"
1166 " fp_reserved_identifier .and .false .error RESERVED_KEYWORD;\n"
1167 "vp_not_reserved_identifier\n"
1168 " vp_not_reserved_identifier_1 .or .true;\n"
1169 "vp_not_reserved_identifier_1\n"
1170 " vp_reserved_identifier .and .false .error RESERVED_KEYWORD;\n"
1171 "fp_reserved_identifier\n"
1172 " \"ABS\" .or \"ABS_SAT\" .or \"ADD\" .or \"ADD_SAT\" .or \"ALIAS\" .or \"ATTRIB\" .or \"CMP\" .or \"CMP_SAT\" .or\n"
1173 " \"COS\" .or \"COS_SAT\" .or \"DP3\" .or \"DP3_SAT\" .or \"DP4\" .or \"DP4_SAT\" .or \"DPH\" .or \"DPH_SAT\" .or\n"
1174 " \"DST\" .or \"DST_SAT\" .or \"END\" .or \"EX2\" .or \"EX2_SAT\" .or \"FLR\" .or \"FLR_SAT\" .or \"FRC\" .or\n"
1175 " \"FRC_SAT\" .or \"KIL\" .or \"LG2\" .or \"LG2_SAT\" .or \"LIT\" .or \"LIT_SAT\" .or \"LRP\" .or \"LRP_SAT\" .or\n"
1176 " \"MAD\" .or \"MAD_SAT\" .or \"MAX\" .or \"MAX_SAT\" .or \"MIN\" .or \"MIN_SAT\" .or \"MOV\" .or \"MOV_SAT\" .or\n"
1177 " \"MUL\" .or \"MUL_SAT\" .or \"OPTION\" .or \"OUTPUT\" .or \"PARAM\" .or \"POW\" .or \"POW_SAT\" .or \"RCP\" .or\n"
1178 " \"RCP_SAT\" .or \"RSQ\" .or \"RSQ_SAT\" .or \"SIN\" .or \"SIN_SAT\" .or \"SCS\" .or \"SCS_SAT\" .or \"SGE\" .or\n"
1179 " \"SGE_SAT\" .or \"SLT\" .or \"SLT_SAT\" .or \"SUB\" .or \"SUB_SAT\" .or \"SWZ\" .or \"SWZ_SAT\" .or \"TEMP\" .or\n"
1180 " \"TEX\" .or \"TEX_SAT\" .or \"TXB\" .or \"TXB_SAT\" .or \"TXP\" .or \"TXP_SAT\" .or \"XPD\" .or \"XPD_SAT\" .or\n"
1181 " \"fragment\" .or \"program\" .or \"result\" .or \"state\" .or \"texture\";\n"
1182 "vp_reserved_identifier\n"
1183 " \"ABS\" .or \"ADD\" .or \"ADDRESS\" .or \"ALIAS\" .or \"ARL\" .or \"ATTRIB\" .or \"DP3\" .or \"DP4\" .or\n"
1184 " \"DPH\" .or \"DST\" .or \"END\" .or \"EX2\" .or \"EXP\" .or \"FLR\" .or \"FRC\" .or \"LG2\" .or \"LIT\" .or\n"
1185 " \"LOG\" .or \"MAD\" .or \"MAX\" .or \"MIN\" .or \"MOV\" .or \"MUL\" .or \"OPTION\" .or \"OUTPUT\" .or\n"
1186 " \"PARAM\" .or \"POW\" .or \"RCP\" .or \"RSQ\" .or \"SGE\" .or \"SLT\" .or \"SUB\" .or \"SWZ\" .or \"TEMP\" .or\n"
1187 " \"XPD\" .or \"program\" .or \"result\" .or \"state\" .or \"vertex\";\n"
1188 "integer\n"
1189 " integer_ne .error INTEGER_EXPECTED;\n"
1190 "zero\n"
1191 " '0';\n"
1192 "leading_zeroes\n"
1193 " .loop zero;\n"
1194 "no_digit\n"
1195 " no_digit_1 .or .true;\n"
1196 "no_digit_1\n"
1197 " digit10 .and .false .error INTEGER_OUT_OF_RANGE;\n"
1198 "all_zeroes\n"
1199 " all_zeroes_1 .or no_digit_1;\n"
1200 "all_zeroes_1\n"
1201 " '0' .and .loop zero .and no_digit;\n"
1202 "integer_0_3\n"
1203 " integer_0_3_1 .error INTEGER_EXPECTED .and .true .emit 0x00 .emit $;\n"
1204 "integer_0_3_1\n"
1205 " integer_0_3_2 .or all_zeroes .emit '0';\n"
1206 "integer_0_3_2 \n"
1207 " leading_zeroes .and '1'-'3' .emit * .and no_digit;\n"
1208 "integer_0_63\n"
1209 " integer_0_63_1 .error INTEGER_EXPECTED .and .true .emit 0x00 .emit $;\n"
1210 "integer_0_63_1\n"
1211 " integer_0_63_2 .or integer_0_63_3 .or integer_0_63_4 .or integer_0_63_5 .or\n"
1212 " all_zeroes .emit '0';\n"
1213 "integer_0_63_2 \n"
1214 " leading_zeroes .and '7'-'9' .emit * .and no_digit;\n"
1215 "integer_0_63_3 \n"
1216 " leading_zeroes .and '1'-'5' .emit * .and '0'-'9' .emit * .and no_digit;\n"
1217 "integer_0_63_4 \n"
1218 " leading_zeroes .and '6' .emit * .and '0'-'3' .emit * .and no_digit;\n"
1219 "integer_0_63_5 \n"
1220 " leading_zeroes .and '1'-'6' .emit * .and no_digit;\n"
1221 "integer_0_64\n"
1222 " integer_0_64_1 .error INTEGER_EXPECTED .and .true .emit 0x00 .emit $;\n"
1223 "integer_0_64_1\n"
1224 " integer_0_64_2 .or integer_0_64_3 .or integer_0_64_4 .or integer_0_64_5 .or\n"
1225 " all_zeroes .emit '0';\n"
1226 "integer_0_64_2 \n"
1227 " leading_zeroes .and '7'-'9' .emit * .and no_digit;\n"
1228 "integer_0_64_3 \n"
1229 " leading_zeroes .and '1'-'5' .emit * .and '0'-'9' .emit * .and no_digit;\n"
1230 "integer_0_64_4 \n"
1231 " leading_zeroes .and '6' .emit * .and '0'-'4' .emit * .and no_digit;\n"
1232 "integer_0_64_5 \n"
1233 " leading_zeroes .and '1'-'6' .emit * .and no_digit;\n"
1234 "optional_space\n"
1235 " space .or .true;\n"
1236 "space_dst\n"
1237 " space .error OPERATION_NEEDS_DESTINATION_VARIABLE;\n"
1238 "space_src\n"
1239 " space .error OPERATION_NEEDS_SOURCE_VARIABLE;\n"
1240 "space\n"
1241 " single_space .and .loop single_space;\n"
1242 "single_space\n"
1243 " white_char .or comment_block;\n"
1244 "white_char\n"
1245 " ' ' .or '\\t' .or '\\n' .or '\\r';\n"
1246 "comment_block\n"
1247 " '#' .and .loop comment_char .and optional_new_line;\n"
1248 "comment_char\n"
1249 " '\\x0E'-'\\xFF' .or '\\x01'-'\\x09' .or '\\x0B'-'\\x0C';\n"
1250 "optional_new_line\n"
1251 " '\\n' .or crlf .or .true;\n"
1252 "crlf\n"
1253 " '\\r' .and '\\n';\n"
1254 "semicolon\n"
1255 " optional_space .and ';' .error MISSING_SEMICOLON .and optional_space;\n"
1256 "comma\n"
1257 " optional_space .and ',' .error MISSING_COMMA .and optional_space;\n"
1258 "comma_ne\n"
1259 " optional_space .and ',' .and optional_space;\n"
1260 "lbracket\n"
1261 " optional_space .and '[' .error MISSING_LBRACKET .and optional_space;\n"
1262 "lbracket_ne\n"
1263 " optional_space .and '[' .and optional_space;\n"
1264 "rbracket\n"
1265 " optional_space .and ']' .error MISSING_RBRACKET .and optional_space;\n"
1266 "dot\n"
1267 " optional_space .and '.' .error MISSING_DOT .and optional_space;\n"
1268 "dot_ne\n"
1269 " optional_space .and '.' .and optional_space;\n"
1270 "equal\n"
1271 " optional_space .and '=' .error MISSING_EQUAL .and optional_space;\n"
1272 "lbrace\n"
1273 " optional_space .and '{' .error MISSING_LBRACE .and optional_space;\n"
1274 "lbrace_ne\n"
1275 " optional_space .and '{' .and optional_space;\n"
1276 "rbrace\n"
1277 " optional_space .and '}' .error MISSING_RBRACE .and optional_space;\n"
1278 "dotdot\n"
1279 " optional_space .and '.' .and '.' .error MISSING_DOTDOT .and optional_space;\n"
1280 "dotdot_ne\n"
1281 " optional_space .and '.' .and '.' .and optional_space;\n"
1282 "float\n"
1283 " float_1 .or float_2 .or float_legacy;\n"
1284 "float_1\n"
1285 " '.' .emit 0x00 .and integer_ne .error MISSING_FRACTION_OR_EXPONENT .and optional_exponent;\n"
1286 "float_2\n"
1287 " integer_ne .and float_3;\n"
1288 "float_3\n"
1289 " float_4 .or float_5;\n"
1290 "float_4\n"
1291 " '.' .and optional_integer .and optional_exponent;\n"
1292 "float_5\n"
1293 " exponent .emit 0x00;\n"
1294 "float_legacy\n"
1295 " integer_ne .and .true .emit 0x00 .emit 0x00;\n"
1296 "integer_ne\n"
1297 " integer_ne_1 .and .true .emit 0x00 .emit $;\n"
1298 "integer_ne_1\n"
1299 " digit10 .emit * .and .loop digit10 .emit *;\n"
1300 "optional_integer\n"
1301 " integer_ne .or .true .emit 0x00;\n"
1302 "optional_exponent\n"
1303 " exponent .or .true .emit 0x00;\n"
1304 "exponent\n"
1305 " exponent_1 .and optional_sign_ne .and integer_ne .error EXPONENT_VALUE_EXPECTED;\n"
1306 "exponent_1\n"
1307 " 'e' .or 'E';\n"
1308 "optional_sign_ne\n"
1309 " minus_ne .or plus_ne .or .true;\n"
1310 "plus_ne\n"
1311 " optional_space .and '+' .and optional_space;\n"
1312 "minus_ne\n"
1313 " optional_space .and '-' .emit '-' .and optional_space;\n"
1314 "identifier_ne\n"
1315 " first_idchar .emit * .and .loop follow_idchar .emit * .and .true .emit 0x00 .emit $;\n"
1316 "follow_idchar\n"
1317 " first_idchar .or digit10;\n"
1318 "first_idchar\n"
1319 " 'a'-'z' .or 'A'-'Z' .or '_' .or '$';\n"
1320 "digit10\n"
1321 " '0'-'9';\n"
1322 ".string __string_filter;\n"
1323 "__string_filter\n"
1324 " .loop __identifier_char;\n"
1325 "__identifier_char\n"
1326 " 'a'-'z' .or 'A'-'Z' .or '_' .or '$' .or '0'-'9';\n"
1327 "e_signature\n"
1328 " e_signature_char .and .loop e_signature_char;\n"
1329 "e_signature_char\n"
1330 " '!' .or '.' .or 'A'-'Z' .or 'a'-'z' .or '0'-'9';\n"
1331 "e_statement\n"
1332 " .loop e_statement_not_term;\n"
1333 "e_statement_not_term\n"
1334 " '\\x3C'-'\\xFF' .or '\\x0E'-'\\x3A' .or '\\x01'-'\\x09' .or '\\x0B'-'\\x0C';\n"
1335 "e_identifier\n"
1336 " e_identifier_first .and .loop e_identifier_next;\n"
1337 "e_identifier_first\n"
1338 " 'a'-'z' .or 'A'-'Z' .or '_' .or '$';\n"
1339 "e_identifier_next\n"
1340 " e_identifier_first .or '0'-'9';\n"
1341 "e_token\n"
1342 " e_identifier .or e_token_number .or '[' .or ']' .or '.' .or '{' .or '}' .or '=' .or '+' .or\n"
1343 " '-' .or ',' .or ';';\n"
1344 "e_token_number\n"
1345 " e_token_digit .and .loop e_token_digit;\n"
1346 "e_token_digit\n"
1347 " '0'-'9';\n"
1348 "e_charordigit\n"
1349 " 'A'-'Z' .or 'a'-'z' .or '0'-'9';\n"
1350 ""