Some initial RGB and RGBA floating point texture formats.
[mesa.git] / src / mesa / main / arbvp_grammar.txt
1 ==========================================
2 0: <program> ::= <optionSequence> <statementSequence> "END"
3 ------
4 first: <OPTION> ""
5 <ARL> <ABS> <FLR> <FRC> <LIT> <MOV> <EX2> <EXP> <LG2> <LOG> <RCP> <RSQ>
6 <POW> <ADD> <DP3> <DP4> <DPH> <DST> <MAX> <MIN> <MUL> <SGE> <SLT> <SUB> <XPD>
7 <MAD> <SWZ> <ATTRIB> <PARAM> <TEMP> <ADDRESS> <OUTPUT> <ALIAS>
8 <END>
9 follow: $
10
11 ==========================================
12 1: <optionSequence> ::= <optionSequence2>
13 -----
14 first: <OPTION> ""
15 follow: = <ARL> <ABS> <FLR> <FRC> <LIT> <MOV> <EX2> <EXP> <LG2> <LOG> <RCP> <RSQ>
16 <POW> <ADD> <DP3> <DP4> <DPH> <DST> <MAX> <MIN> <MUL> <SGE> <SLT> <SUB> <XPD>
17 <MAD> <SWZ> <ATTRIB> <PARAM> <TEMP> <ADDRESS> <OUTPUT> <ALIAS>
18 <END>
19
20 ==========================================
21 2: <optionSequence2> ::= <option> <optionSequence2>
22 ------
23 first: <OPTION>
24 3: | ""
25 ------
26 first: ""
27 follow: <ARL> <ABS> <FLR> <FRC> <LIT> <MOV> <EX2> <EXP> <LG2> <LOG> <RCP> <RSQ>
28 <POW> <ADD> <DP3> <DP4> <DPH> <DST> <MAX> <MIN> <MUL> <SGE> <SLT> <SUB> <XPD>
29 <MAD> <SWZ> <ATTRIB> <PARAM> <TEMP> <ADDRESS> <OUTPUT> <ALIAS>
30 <END>
31
32 ==========================================
33 4: <option> ::= "OPTION" <identifier> ";"
34 -------
35 first: <OPTION>
36
37 ==========================================
38 5: <statementSequence> ::= <statementSequence2>
39 -------
40 first: <ARL> <ABS> <FLR> <FRC> <LIT> <MOV> <EX2> <EXP> <LG2> <LOG> <RCP> <RSQ>
41 <POW> <ADD> <DP3> <DP4> <DPH> <DST> <MAX> <MIN> <MUL> <SGE> <SLT> <SUB> <XPD>
42 <MAD> <SWZ> <ATTRIB> <PARAM> <TEMP> <ADDRESS> <OUTPUT> <ALIAS>
43 ""
44 follow: <END>
45
46 =========================================
47 6: <statementSequence2> ::= <statement> <statementSequence2>
48 ----------
49 first: <ARL> <ABS> <FLR> <FRC> <LIT> <MOV> <EX2> <EXP> <LG2> <LOG> <RCP> <RSQ>
50 <POW> <ADD> <DP3> <DP4> <DPH> <DST> <MAX> <MIN> <MUL> <SGE> <SLT> <SUB> <XPD>
51 <MAD> <SWZ> <ATTRIB> <PARAM> <TEMP> <ADDRESS> <OUTPUT> <ALIAS>
52 7: | ""
53 -------
54 first: ""
55 follow: <END>
56
57 ==========================================
58 8: <statement> ::= <instruction> ";"
59 ----------
60 first: <ARL> <ABS> <FLR> <FRC> <LIT> <MOV> <EX2> <EXP> <LG2> <LOG> <RCP> <RSQ>
61 <POW> <ADD> <DP3> <DP4> <DPH> <DST> <MAX> <MIN> <MUL> <SGE> <SLT> <SUB> <XPD>
62 <MAD> <SWZ>
63 9: | <namingStatement> ";"
64 --------
65 first: <ATTRIB> <PARAM> <TEMP> <ADDRESS> <OUTPUT> <ALIAS>
66
67 ==========================================
68 10: <instruction> ::= <ARL_instruction>
69 ---------
70 first: <ARL>
71 11: | <VECTORop_instruction>
72 ----------
73 first: <ABS> <FLR> <FRC> <LIT> <MOV>
74 12: | <SCALARop_instruction>
75 ---------
76 first: <EX2> <EXP> <LG2> <LOG> <RCP> <RSQ>
77 13: | <BINSCop_instruction>
78 -----
79 first: <POW>
80 14: | <BINop_instruction>
81 ----
82 first: <ADD> <DP3> <DP4> <DPH> <DST> <MAX> <MIN> <MUL> <SGE> <SLT> <SUB> <XPD>
83 15: | <TRIop_instruction>
84 ----
85 first: <MAD>
86 16: | <SWZ_instruction>
87 -----
88 first: <SWZ>
89
90 ===========================================
91 17: <ARL_instruction> ::= "ARL" <maskedAddrReg> "," <scalarSrcReg>
92 ---------
93 first: <ARL>
94
95 ==========================================
96 18: <VECTORop_instruction> ::= <VECTORop> <maskedDstReg> "," <swizzleSrcReg>
97 ----------
98 first: <ABS> <FLR> <FRC> <LIT> <MOV>
99
100 ==========================================
101 19: <VECTORop> ::= "ABS"
102 20: | "FLR"
103 21: | "FRC"
104 22: | "LIT"
105 23: | "MOV"
106
107 ==========================================
108 24: <SCALARop_instruction> ::= <SCALARop> <maskedDstReg> "," <scalarSrcReg>
109 ---------
110 first: <EX2> <EXP> <LG2> <LOG> <RCP> <RSQ>
111
112 ==========================================
113 25: <SCALARop> ::= "EX2"
114 26: | "EXP"
115 27: | "LG2"
116 28: | "LOG"
117 29: | "RCP"
118 30: | "RSQ"
119
120 ==========================================
121 31: <BINSCop_instruction> ::= <BINSCop> <maskedDstReg> <BINSCop_instruction2>
122 -----
123 first: <POW>
124
125 32: <BINSCop_instruction2> ::= "," <scalarSrcReg> "," <scalarSrcReg>
126 -----
127 first: ","
128
129 ==========================================
130 33: <BINSCop> ::= "POW"
131 ----
132 first: <POW>
133
134 ==========================================
135 34: <BINop_instruction> ::= <BINop> <maskedDstReg> <BINop_instruction2>
136 ----
137 first: <ADD> <DP3> <DP4> <DPH> <DST> <MAX> <MIN> <MUL> <SGE> <SLT> <SUB> <XPD>
138
139 35: <BINop_instruction2> ::= "," <swizzleSrcReg> "," <swizzleSrcReg>
140 -----
141 first: ","
142
143
144 ==========================================
145 36: <BINop> ::= "ADD"
146 -----
147 first: <ADD>
148 37: | "DP3"
149 -----
150 first: <DP3>
151 38: | "DP4"
152 -----
153 first: <DP4>
154 39: | "DPH"
155 -----
156 first: <DPH>
157 40: | "DST"
158 -----
159 first: <DST>
160 41: | "MAX"
161 -----
162 first: <MAX>
163 42: | "MIN"
164 -----
165 first: <MIN>
166 43: | "MUL"
167 ----
168 first: <MUL>
169 44: | "SGE"
170 ----
171 first: <SGE>
172 45: | "SLT"
173 ----
174 first: <SLT>
175 46: | "SUB"
176 ----
177 first: <SUB>
178 47: | "XPD"
179 -----
180 first: <XPD>
181 ==========================================
182 48: <TRIop_instruction> ::= <TRIop> <maskedDstReg> <TRIop_instruction2>
183 ----
184 first: <MAD>
185
186 49: <TRIop_instruction2> ::= "," <swizzleSrcReg> <TRIop_instruction3>
187 -----
188 first: ","
189
190 50: <TRIop_instruction3> ::= "," <swizzleSrcReg> "," <swizzleSrcReg>
191 -----
192 first: ","
193
194 ==========================================
195 51: <TRIop> ::= "MAD"
196 -----
197 first: <MAD>
198
199 ==========================================
200 52: <SWZ_instruction> ::= "SWZ" <maskedDstReg> <SWZ_instruction2>
201 -----
202 first: <SWZ>
203
204 53: <SWZ_instruction2> ::= "," <srcReg> "," <extendedSwizzle>
205 -----
206 first: ","
207
208 ==========================================
209 54: <scalarSrcReg> ::= <optionalSign> <srcReg> <scalarSuffix>
210 --------
211 first: "+" "-" "vertex" "state" "program" "{" <float> <int>
212 <id> that is vertexAttrib
213 <id> that is a TEMP
214 <id> that is a single, <id> that is an array,
215
216 ==========================================
217 55: <swizzleSrcReg> ::= <optionalSign> <srcReg> <swizzleSuffix>
218 ---------
219 first: "+" "-" "vertex" "state" "program" "{" <float> <int>
220 <id> that is vertexAttrib
221 <id> that is a TEMP
222 <id> that is a single, <id> that is an array,
223
224 ==========================================
225 56: <maskedDstReg> ::= <dstReg> <optionalMask>
226 ---------
227 first: first: <id>, that is a TEMP "result", <id> that is a vertexResult
228
229 ==========================================
230 57: <maskedAddrReg> ::= <addrReg> <addrWriteMask>
231 ---------
232 first: <id> (that is an addr reg)
233
234 ==========================================
235 58: <extendedSwizzle> ::= <extSwizComp> "," <extSwizComp> <extendedSwizzle2>
236 -------
237 first: "+" "-" "0" "1" "x" "y" "z" "w"
238
239 59: <extendedSwizzle2> ::= "," <extSwizComp> "," <extSwizComp>
240 -------
241 first: ","
242
243 ==========================================
244 60: <extSwizComp> ::= <optionalSign> <extSwizSel>
245 -------
246 first: "+" "-" "0" "1" "x" "y" "z" "w"
247
248 ==========================================
249 61: <extSwizSel> ::= "0"
250 62: | "1"
251 63: | <component>
252
253 ==========================================
254 64: <srcReg> ::= <vertexAttribReg>
255 ----
256 first: "vertex" <id> that is vertexAttrib
257 65: | <temporaryReg>
258 -----
259 first: <id> that is a TEMP
260 66: | <progParamReg>
261 ----
262 first: <id> that is a single, <id> that is an array, "state" "program" "{" <float> <int>
263
264 ==========================================
265 67: <dstReg> ::= <temporaryReg>
266 ---------
267 first: <id>, that is a TEMP
268 68: | <vertexResultReg>
269 --------
270 first: "result", <id> that is a vertexResult
271
272 ==========================================
273 69: <vertexAttribReg> ::= <establishedName>
274 -----
275 first: <id>,
276 70: | <vtxAttribBinding>
277 -----
278 first: "vertex"
279
280 ==========================================
281 71: <temporaryReg> ::= <establishedName>
282 ------
283 first: <id> that is a TEMP
284
285 ==========================================
286 72: <progParamReg> ::= <progParamSingle>
287 ------
288 first: <id>, that is single
289 73: | <progParamArray> "[" <progParamArrayMem> "]"
290 -----
291 first: <id>, that is an array
292 74: | <paramSingleItemUse>
293 -------
294 first: "state" "program" "{" <float> <int>
295
296 ==========================================
297 75: <progParamSingle> ::= <establishedName>
298 ------
299 first: <id>, that is a single
300
301 ==========================================
302 76: <progParamArray> ::= <establishedName>
303 ------
304 first: <id>, that is an array
305
306 ==========================================
307 77: <progParamArrayMem> ::= <progParamArrayAbs>
308 ------
309 first: <integer>
310 78: | <progParamArrayRel>
311 -----
312 first: <id>
313
314 ==========================================
315 79: <progParamArrayAbs> ::= <integer>
316 -------
317 first: <integer>
318
319 ==========================================
320 80: <progParamArrayRel> ::= <addrReg> <addrComponent> <addrRegRelOffset>
321 ------
322 first: <id>
323
324 ==========================================
325 81: <addrRegRelOffset> ::= ""
326 -----
327 first: ""
328 follow: "]"
329 82: | "+" <addrRegPosOffset>
330 -----
331 first: "+"
332 83: | "-" <addrRegNegOffset>
333 -----
334 first: "-"
335
336 ==========================================
337 84: <addrRegPosOffset> ::= <integer> from 0 to 63
338 -------
339 first: <integer>
340
341 ==========================================
342 85: <addrRegNegOffset> ::= <integer> from 0 to 64
343 -------
344 first: <integer>
345
346 ==========================================
347 86: <vertexResultReg> ::= <establishedName>
348 ------
349 first: <id>
350 87: | <resultBinding>
351 first: "result"
352
353 ==========================================
354 88: <addrReg> ::= <establishedName>
355 first: <id>
356
357 ==========================================
358 89: <addrComponent> ::= "." "x"
359 -------
360 first: "."
361
362 ==========================================
363 90: <addrWriteMask> ::= "." "x"
364 --------
365 first: "."
366
367 ==========================================
368 91: <scalarSuffix> ::= "." <component>
369 ---------
370 first: "."
371
372 ==========================================
373 92: <swizzleSuffix> ::= ""
374 ---------
375 first: ""
376 follow: "," ";"
377
378
379 /*
380 custom: | "." <component> | --> Treat as the same production
381 custom: | "." <component> <component> | --> but check the lenght of <component>
382 <component> <component>
383 */
384 317: | "." <swizzleSuffix2>
385 --------
386 first: "."
387 318: swizzleSuffix2 ::= <component>
388
389 319: | <component4>
390
391 ==========================================
392 93: <component> ::= "x"
393 94: | "y"
394 95: | "z"
395 96: | "w"
396
397 =========================================
398 <component4> := strlen() == 4, chars are from {x, y, z, w} --> push the input onto the stack
399 ----
400
401 ==========================================
402 97: <optionalMask> ::= "." <optionalMask2>
403 ---------
404 first: "."
405 98: | ""
406 ---------
407 first: ""
408 follow: ","
409
410 ==========================================
411 99: <optionalMask2> ::= "x"
412 100: | "y"
413 101: | "xy"
414 102: | "z"
415 103: | "xz"
416 104: | "yz"
417 105: | "xyz"
418 106: | "w"
419 107: | "xw"
420 108: | "yw"
421 109: | "xyw"
422 110: | "zw"
423 111: | "xzw"
424 112: | "yzw"
425 113: | "xyzw"
426
427 ==========================================
428 114: <namingStatement> ::= <ATTRIB_statement>
429 ------
430 first: "ATTRIB"
431 115: | <PARAM_statement>
432 -----
433 first: "PARAM"
434 116: | <TEMP_statement>
435 -----
436 first: "TEMP"
437 117: | <ADDRESS_statement>
438 -----
439 first: "ADDRESS"
440 118: | <OUTPUT_statement>
441 -----
442 first: "OUTPUT"
443 119: | <ALIAS_statement>
444 -----
445 first: "ALIAS"
446
447 ==========================================
448 120: <ATTRIB_statement> ::= "ATTRIB" <establishName> "="
449 <vtxAttribBinding>
450 ------
451 first: "ATTRIB"
452
453 ==========================================
454 121: <vtxAttribBinding> ::= "vertex" "." <vtxAttribItem>
455 -----
456 first: "vertex"
457
458 ==========================================
459 122: <vtxAttribItem> ::= "position"
460 ------
461 first: "position"
462 123: | "weight" <vtxOptWeightNum>
463 -----
464 first: "weight"
465 124: | "normal"
466 -----
467 first: "normal"
468 125: | "color" <optColorType>
469 -----
470 first: "color"
471 126: | "fogcoord"
472 -----
473 first: "fogcoord"
474 127: | "texcoord" <optTexCoordNum>
475 -----
476 first: "texcoord"
477 128: | "matrixindex" "[" <vtxWeightNum> "]"
478 ----
479 first: "matrixindex"
480 129: | "attrib" "[" <vtxAttribNum> "]"
481 ----
482 first: "attrib"
483
484 ==========================================
485 130: <vtxAttribNum> ::= <integer> from 0 to MAX_VERTEX_ATTRIBS_ARB-1
486 ------
487 first: <integer>
488
489 ==========================================
490 131: <vtxOptWeightNum> ::= ""
491 ------
492 first: ""
493 follow: ";" "," "."
494 132: | "[" <vtxWeightNum> "]"
495 ------
496 first: "["
497
498 ==========================================
499 133: <vtxWeightNum> ::= <integer> from 0 to MAX_VERTEX_UNITS_ARB-1,
500 must be divisible by four
501 -----
502 first: <integer>
503
504 ==========================================
505 134: <PARAM_statement> ::= "PARAM" <establishName> <PARAM_statement2>
506 -----------
507 first: "PARAM"
508
509 135: <PARAM_statement2> ::= <paramSingleInit>
510 ------
511 first: "="
512 136: | "[" <optArraySize> "]" <paramMultipleInit>
513 ------
514 first: "["
515
516 ==========================================
517 137: <optArraySize> ::= ""
518 ---------
519 first: ""
520 follow: "]"
521 138: | <integer> from 1 to MAX_PROGRAM_PARAMETERS_ARB
522 (maximum number of allowed program
523 parameter bindings)
524 --------
525 first: <integer>
526
527 ==========================================
528 139: <paramSingleInit> ::= "=" <paramSingleItemDecl>
529 ------
530 first: "="
531
532 ==========================================
533 140: <paramMultipleInit> ::= "=" "{" <paramMultInitList> "}"
534 ------
535 first: "="
536
537 ==========================================
538 141: <paramMultInitList> ::= <paramMultipleItem> <paramMultInitList2>
539 ------
540 first: "state" "program" "+" "-" <float> <int> "{"
541
542 ==========================================
543 142: <paramMultInitList2> ::= "," <paramMultInitList>
544 ------
545 first: ","
546 143: | ""
547 ------
548 first: ""
549 follow: "}"
550
551 ==========================================
552 144: <paramSingleItemDecl> ::= <stateSingleItem>
553 ------
554 first: "state"
555 145: | <programSingleItem>
556 ------
557 first: "program"
558 146: | <paramConstDecl>
559 ------
560 first: "+" "-" <float> <int>"{"
561
562 ==========================================
563 147: <paramSingleItemUse> ::= <stateSingleItem>
564 ------
565 first: "state"
566 148: | <programSingleItem>
567 ------
568 first: "program"
569 149: | <paramConstUse>
570 ------
571 first: "{" <float> <int>
572
573 ==========================================
574 150: <paramMultipleItem> ::= <stateMultipleItem>
575 -----
576 first: "state"
577 151: | <programMultipleItem>
578 ------
579 first: "program"
580 152: | <paramConstDecl>
581 ------
582 first: "+" "-" <float> <int> "{"
583
584 ==========================================
585 153: <stateMultipleItem> ::= "state" "." <stateMultipleItem2>
586 -------
587 first: "state"
588
589 ========================================
590 154: <stateMultipleItem2> ::= <stateMaterialItem>
591 -----
592 first: "material"
593 155: | <stateLightItem>
594 ------
595 first: "light"
596 156: | <stateLightModelItem>
597 ------
598 first: "lightmodel"
599 157: | <stateLightProdItem>
600 ------
601 first: "lightprod"
602 158: | <stateTexGenItem>
603 ------
604 first: "texgen"
605 159: | <stateFogItem>
606 ------
607 first: "fog"
608 160: | <stateClipPlaneItem>
609 ------
610 first: "clip"
611 161: | <statePointItem>
612 ------
613 first: "point"
614
615 162 ::= "matrix" "." <stateMatrixName> <foo>
616 ----
617 first: "matrix"
618
619 ===========================
620 163: <foo> ::= "." <foo2>
621 ------
622 first: "."
623 316: | ""
624 -----
625 follow: "," "}"
626
627
628 164: <foo2> ::= <stateMatModifier> <foo3>
629 -----
630 first: "inverse" "transpose" "invtrans"
631
632 165: | "row" "[" <stateMatrixRowNum> <foo4>
633 ------
634 first: "row"
635
636 ===========================
637 166: <foo3> ::= ""
638 -----
639 first: ""
640 follow: , }
641
642 167: | "." "row" "[" <foo35>
643 -----
644 first: "."
645
646 ==============================
647 168: <foo35> ::= <stateMatrixRowNum> <foo4>
648 ------
649 first: <int>
650
651 ==============================
652 169: <foo4> ::= "]"
653 -----
654 first: "]"
655 170: | ".." <stateMatrixRowNum> "]"
656 -----
657 first: ..
658
659 ==========================================
660 171: <stateSingleItem> ::= "state" "." <stateSingleItem2>
661 -------
662 first: "state"
663
664 ==========================================
665 172: <stateSingleItem2> ::= <stateMaterialItem>
666 ------
667 first: "material"
668 173: | <stateLightItem>
669 ------
670 first: "light"
671 174: | <stateLightModelItem>
672 ------
673 first: "lightmodel"
674 175: | <stateLightProdItem>
675 ------
676 first: "lightprod"
677 176: | <stateTexGenItem>
678 ------
679 first: "texgen"
680 177: | <stateFogItem>
681 ------
682 first: "fog"
683 178: | <stateClipPlaneItem>
684 ------
685 first: "clip"
686 179: | <statePointItem>
687 ------
688 first: "point"
689 180: | <stateMatrixRow>
690 ------
691 first: "matrix"
692 ==========================================
693 181: <stateMaterialItem> ::= "material" "." <stateMaterialItem2>
694 ------
695 first: "material"
696
697 ========================================
698 182: <stateMaterialItem2> ::= <stateMatProperty>
699 ------
700 first: "ambient" "diffuse" "specular" "emission" "shininess"
701 183: | "." <optFaceType2> "." <stateMatProperty>
702 -----
703 first: "."
704
705 ==========================================
706 184: <stateMatProperty> ::= "ambient"
707 -----
708 first: "ambient"
709 185; | "diffuse"
710 -----
711 first: "diffuse"
712 186: | "specular"
713 -----
714 first: "specular"
715 187: | "emission"
716 -----
717 first: "emission"
718 188: | "shininess"
719 -----
720 first: "shininess"
721 ==========================================
722 189: <stateLightItem> ::= "light" "[" <stateLightNumber> <stateLightItem2>
723 ------
724 first: "light"
725
726 190: <stateLightItem2> ::= "]" "." <stateLightProperty>
727 -----
728 first: "]"
729
730
731 ==========================================
732 191: <stateLightProperty> ::= "ambient"
733 -------
734 first: "ambient"
735 192: | "diffuse"
736 -------
737 first: "diffuse"
738 193: | "specular"
739 -------
740 first: "specular"
741 194: | "position"
742 -------
743 first: "position"
744 195: | "attenuation"
745 -------
746 first: "attenuation"
747 196: | "spot" "." <stateSpotProperty>
748 --------
749 first: "spot"
750 197: | "half"
751 --------
752 first: "half"
753
754 ==========================================
755 198: <stateSpotProperty> ::= "direction"
756 ---------
757 first: "direction"
758
759 ==========================================
760 199: <stateLightModelItem> ::= "lightmodel" <stateLModProperty>
761 --------
762 first: "lightmodel"
763
764 ==========================================
765 200: <stateLModProperty> ::= "." <stateLModProperty2>
766 -------
767 first: "."
768
769 201: <stateLModProperty2> ::= "ambient"
770 -------
771 first: "ambient"
772 202: | "scenecolor"
773 ------
774 first: "scenecolor"
775 203: | <optFaceType2> "." "scenecolor"
776 -------
777 first: "front" "back"
778 ==========================================
779 204: <stateLightProdItem> ::= "lightprod" "[" <stateLightNumber> <stateLightProdItem15>
780 ------
781 first: "lightprod"
782
783 205: <stateLightProdItem15> ::= "]" "." <stateLightProdItem2>
784 --------
785 first: "]"
786
787 ===============
788 206: <stateLightProdItem2> ::= <stateLProdProperty>
789 ----------
790 first: "ambient" "diffuse" "specular"
791 207: | <optFaceType2> "." <stateLProdProperty>
792 ---------
793 first: "front" "back"
794
795 ==========================================
796 208: <stateLProdProperty> ::= "ambient"
797 -------
798 first: "ambient"
799 209: | "diffuse"
800 -------
801 first: "diffuse"
802 210: | "specular"
803 -------
804 first: "specular"
805
806 ==========================================
807 211: <stateLightNumber> ::= <integer> from 0 to MAX_LIGHTS-1
808 ---------
809 first: <integer>
810
811 ==========================================
812 212: <stateTexGenItem> ::= "texgen" <optTexCoordNum> <stateTexGenItem2>
813 -----------
814 first: "texgen"
815
816 213: <stateTexGenItem2> ::= "." <stateTexGenType> "." <stateTexGenCoord>
817
818 ==========================================
819 214: <stateTexGenType> ::= "eye"
820 --------------
821 first: "eye"
822 215: | "object"
823 --------------
824 first: "object"
825
826 ==========================================
827 216: <stateTexGenCoord> ::= "s"
828 ------
829 first: "s"
830 217: | "t"
831 -------
832 first: "t"
833 218: | "r"
834 -------
835 first: "r"
836 219: | "q"
837 -------
838 first: "q"
839 ==========================================
840 220: <stateFogItem> ::= "fog" "." <stateFogProperty>
841 --------
842 first: "fog"
843
844 ==========================================
845 221: <stateFogProperty> ::= "color"
846 ------
847 first: "color"
848 222: | "params"
849 ------
850 first: "params"
851 ==========================================
852 223: <stateClipPlaneItem> ::= "clip" "[" <stateClipPlaneNum> <stateClipPlaneItem2>
853 ------
854 first: "clip"
855
856 224: <stateClipPlaneItem2> ::= "]" "." "plane"
857 -----
858 first: "]"
859
860 ==========================================
861 225: <stateClipPlaneNum> ::= <integer> from 0 to MAX_CLIP_PLANES-1
862 -------
863 first: <integer>
864
865 ==========================================
866 226: <statePointItem> ::= "point" . <statePointProperty>
867 -----
868 first: "point"
869
870 ==========================================
871 227: <statePointProperty> ::= "size"
872 -------
873 first: "size"
874 228: | "attenuation"
875 --------
876 first: "attenuation"
877
878 ==========================================
879 229: <stateMatrixRow> ::= "matrix" "." <stateMatrixName> <stateMatrixRow15>
880 --------
881 first: "matrix"
882
883 230: <stateMatrixRow15> ::= "." <stateMatrixRow2>
884 -----
885 first: "."
886
887 ===========================
888 231: <stateMatrixRow2> ::= "row" "[" <stateMatrixRowNum> "]"
889 --------
890 first: "row"
891 232: | <stateMatModifier> "." "row" <stateMatrixRow3>
892 ------
893 first: "inverse" "transpose" "invtrans"
894
895 233: <stateMatrixRow3> ::= "[" <stateMatrixRowNum> "]"
896 -----
897 first: "["
898
899 ==========================================
900 234: <stateMatModifier> ::= "inverse"
901 --------
902 first: "inverse"
903 235: | "transpose"
904 -------
905 first: "transpose"
906 236: | "invtrans"
907 -------
908 first: "invtrans"
909
910 ==========================================
911 237: <stateMatrixRowNum> ::= <integer> from 0 to 3
912 ----------
913 first: <integer>
914
915 ==========================================
916 238: <stateMatrixName> ::= "modelview" <stateOptModMatNum>
917 ------------
918 first: "modelview"
919 239: | "projection"
920 ------------
921 first: "projection"
922 240: | "mvp"
923 -----------
924 first: "mvp"
925 241: | "texture" <optTexCoordNum>
926 -----------
927 first: "texture"
928 242: | "palette" "[" <statePaletteMatNum> "]"
929 -----------
930 first: "palette"
931 243: | "program" "[" <stateProgramMatNum> "]"
932 -----------
933 first: "program"
934
935 ==========================================
936 244: <stateOptModMatNum> ::= ""
937 -------------
938 first: ""
939 follow: "." "," "}"
940 245: | "[" <stateModMatNum> "]"
941 -------------
942 first: "["
943
944 ==========================================
945 246: <stateModMatNum> ::= <integer> from 0 to MAX_VERTEX_UNITS_ARB-1
946 -----------
947 first: <integer>
948
949 ==========================================
950 247: <statePaletteMatNum> ::= <integer> from 0 to MAX_PALETTE_MATRICES_ARB-1
951 -----------
952 first: <integer>
953
954 ==========================================
955 248: <stateProgramMatNum> ::= <integer> from 0 to MAX_PROGRAM_MATRICES_ARB-1
956 ------------
957 first: <integer>
958
959 ==========================================
960 249: <programSingleItem> ::= "program" "." <programSingleItem2>
961 ---------------
962 first: "program"
963
964 250: <programSingleItem2> ::= <progEnvParam>
965 --------------
966 first: "env"
967 251: | <progLocalParam>
968 --------------
969 first: "local"
970
971 ==========================================
972 252: <programMultipleItem> ::= "program" "." <programMultipleItem2>
973 ---------------
974 first: "program"
975
976 ==========================================
977 253: <programMultipleItem2> ::= <progEnvParams>
978 ---------------
979 first: "env"
980 254: | <progLocalParams>
981 --------------
982 first: "local"
983
984 ==========================================
985 255: <progEnvParams> ::= "env" "[" <progEnvParamNums> "]"
986 -----------
987 first: "env"
988
989 ==========================================
990 256: <progEnvParamNums> ::= <progEnvParamNum> <progEnvParamNums2>
991 ---------
992 first: <integer>
993
994 ==========================================
995 257: <progEnvParamNums2> ::= ".." <progEnvParamNum>
996 ----------
997 first: ".."
998 258: | ""
999 ---------
1000 first: ""
1001 follow: "]"
1002
1003 ==========================================
1004 259: <progEnvParam> ::= "env" "[" <progEnvParamNum> "]"
1005 ---------
1006 first: "env"
1007
1008 ==========================================
1009 260: <progLocalParams> ::= "local" "[" <progLocalParamNums> "]"
1010 ---------
1011 first: "local"
1012
1013 ==========================================
1014 261: <progLocalParamNums> ::= <progLocalParamNum> <progLocalParamNums2>
1015 ----------
1016 first: <integer>
1017
1018 ==========================================
1019 262: <progLocalParamNums2> ::= ".." <progLocalParamNum>
1020 ---------
1021 first: ".."
1022 263: | ""
1023 --------
1024 first: ""
1025 follow: "]"
1026 ==========================================
1027 264: <progLocalParam> ::= "local" "[" <progLocalParamNum> "]"
1028 ---------
1029 first: "local"
1030
1031 ==========================================
1032 265: <progEnvParamNum> ::= <integer> from 0 to MAX_PROGRAM_ENV_PARAMETERS_ARB - 1
1033 ---------
1034 first: <integer>
1035
1036
1037 ==========================================
1038 266: <progLocalParamNum> ::= <integer> from 0 to MAX_PROGRAM_LOCAL_PARAMETERS_ARB - 1
1039 -------------
1040 first: <integer>
1041
1042 ==========================================
1043 267: <paramConstDecl> ::= <paramConstScalarDecl>
1044 ------------
1045 first: "+" "-" <float> <int>
1046
1047 268: | <paramConstVector>
1048 ------------
1049 first: "{"
1050
1051 ==========================================
1052 269: <paramConstUse> ::= <paramConstScalarUse>
1053 -----------
1054 first: <float> <int>
1055 270: | <paramConstVector>
1056 ----------
1057 first: "{"
1058
1059 ==========================================
1060 271: <paramConstScalarDecl> ::= <signedFloatConstant>
1061 ----------
1062 first: "+" "-" <float> <int>
1063
1064 ==========================================
1065 272: <paramConstScalarUse> ::= <floatConstant>
1066 ------------
1067 first: <float> <int>
1068
1069 ==========================================
1070 273: <paramConstVector> ::= "{" <signedFloatConstant> <paramConstVector2>
1071 -------------
1072
1073 ==========================================
1074 274: <paramConstVector2> ::= "}"
1075 -------------
1076 first: "}"
1077 275: | "," <signedFloatConstant> <paramConstVector3>
1078 -------------
1079 first: ","
1080
1081 ==========================================
1082 276: <paramConstVector3> ::= "}"
1083 -------------
1084 first: "}"
1085 277: | "," <signedFloatConstant> <paramConstVector4>
1086 ------------
1087 first: ","
1088
1089 ==========================================
1090 278: <paramConstVector4> ::= "}"
1091 ------------
1092 first: "}"
1093 279: | "," <signedFloatConstant> "}"
1094 ------------
1095 first: ","
1096
1097 ==========================================
1098 280: <signedFloatConstant> ::= <optionalSign> <floatConstant>
1099 ----------
1100 first: "-" "+" <float> <int>
1101
1102 ==========================================
1103 <floatConstant> ::= see text
1104 ----------
1105 first: <float> <int>
1106
1107 ==========================================
1108 281: <optionalSign> ::= ""
1109 -----------
1110 first: ""
1111 follow: <float> <int> "0" "1" "x" "y" "z" "w" "state" "program" "vertex" "{"
1112 vertexattr <id>
1113 temp <id>
1114 single <id>
1115 array <id>
1116
1117 | "-"
1118 -----------
1119 282: first: "-"
1120
1121 | "+"
1122 ---------
1123 283: first: "+"
1124
1125 ==========================================
1126 284: <TEMP_statement> ::= "TEMP" <varNameList>
1127 --------
1128 first: "TEMP"
1129
1130 ==========================================
1131 285: <ADDRESS_statement> ::= "ADDRESS" <varNameList>
1132 -------------
1133 first: "ADDRESS"
1134
1135 ==========================================
1136 286: <varNameList> ::= <establishName>
1137 -------------
1138 first: <id>
1139 287: | <establishName> "," <varNameList>
1140 -------------
1141 first: <id>
1142
1143 ==========================================
1144 288: <OUTPUT_statement> ::= "OUTPUT" <establishName> "=" <resultBinding>
1145 ------------------
1146 first: "OUTPUT"
1147
1148 ==========================================
1149 289: <resultBinding> ::= "result" "." <resultBinding2>
1150 -------------------
1151 first: "result"
1152
1153 ==========================================
1154 290: <resultBinding2> ::= "position"
1155 ----------------------------------
1156 first: "position"
1157 291: | "fogcoord"
1158 ----------------------------------
1159 first: "fogcoord"
1160 292: | "pointsize"
1161 ----------------------------------
1162 first: "pointsize"
1163 293: | <resultColBinding>
1164 ----------------------------------
1165 first: "color"
1166 294: | "texcoord" <optTexCoordNum>
1167 ----------------------------------
1168 first: "texcoord"
1169
1170 ==========================================
1171 295: <resultColBinding> ::= "color" <resultColBinding2>
1172 -----
1173 first: "color"
1174
1175 =============
1176 296: <resultColBinding2> ::= ""
1177 ----
1178 first: ""
1179 follow: ";" "," "."
1180 297: | "." <resultColBinding3>
1181 ----
1182 first: "."
1183 --> HACK: If we have a ".", look ahead 1 and see if we have
1184 "front" | back". If so, choose the second production.
1185 If not, choose the first.
1186
1187 ===========
1188 298: <resultColBinding3> ::= "front" <resultColBinding4>
1189 ---------
1190 first: "front"
1191 299: | "back" <resultColBinding4>
1192 --------
1193 first: "back"
1194
1195 ===========
1196 300: <resultColBinding4> ::= ""
1197 ---------
1198 first: ""
1199 follow: ";" "," "."
1200 301: | "." <resultColBinding5>
1201 ---------
1202 first "."
1203
1204 ----> HACK: If we have a ".", peek ahead 1 and see if we have "primary" | "secondary".
1205 If so, choose teh second production. If not, choose the first.
1206
1207 ===============
1208 302: <resultColBinding5> ::= "primary"
1209 --------
1210 first: "primary"
1211 303: | "secondary"
1212 --------
1213 first: "secondary"
1214
1215
1216 ==========================================
1217 304: <optFaceType2> ::= "front"
1218 ----------------------------------
1219 first: "front"
1220 305: | "back"
1221 ----------------------------------
1222 first: "back"
1223
1224 ==========================================
1225 306: <optColorType> ::= "." <optColorType2>
1226 ----------------------------------
1227 first: "."
1228 307: | ""
1229 ----------------------------------
1230 first: ""
1231 follow: ";" "," "."
1232
1233 --> HACK: If we get a ".", peek ahead 1 token. if we have
1234 "primary" | "secondary", go choose the first production.
1235 else, choose the second.
1236
1237 ==========================================
1238 308: <optColorType2> ::= "primary"
1239 ----------------------------------
1240 first: "primary"
1241 309: | "secondary"
1242 ----------------------------------
1243 first: "secondary"
1244
1245 ==========================================
1246 310: <optTexCoordNum> ::= ""
1247 ----------------------------------
1248 first: ""
1249 follow: "." ";" "," "}"
1250 311: | "[" <texCoordNum> "]"
1251 ----------------------------------
1252 first: "["
1253
1254 ==========================================
1255 312: <texCoordNum> ::= <integer> from 0 to MAX_TEXTURE_UNITS-1
1256 -----------------------------------
1257 first: <integer>
1258
1259 ==========================================
1260 313: <ALIAS_statement> ::= "ALIAS" <establishName> "=" <establishedName>
1261 -----------------------------------
1262 first: "ALIAS"
1263
1264 ==========================================
1265 314: <establishName> ::= <identifier>
1266 -----------------------------------
1267 first: <id>
1268
1269 ==========================================
1270 315: <establishedName> ::= <identifier>
1271 -----------------------------------
1272 first: <id>
1273
1274 ==========================================
1275 <identifier> ::= see text
1276 -----------------------------------
1277 first: <id>
1278
1279 HIGHEST PRODUCTION: 319