diff options
Diffstat (limited to 'src/mesa/main/arbvp_grammar.txt')
-rw-r--r-- | src/mesa/main/arbvp_grammar.txt | 1279 |
1 files changed, 1279 insertions, 0 deletions
diff --git a/src/mesa/main/arbvp_grammar.txt b/src/mesa/main/arbvp_grammar.txt new file mode 100644 index 0000000000..f2e392a498 --- /dev/null +++ b/src/mesa/main/arbvp_grammar.txt @@ -0,0 +1,1279 @@ +========================================== +0: <program> ::= <optionSequence> <statementSequence> "END" + ------ + first: <OPTION> "" + <ARL> <ABS> <FLR> <FRC> <LIT> <MOV> <EX2> <EXP> <LG2> <LOG> <RCP> <RSQ> + <POW> <ADD> <DP3> <DP4> <DPH> <DST> <MAX> <MIN> <MUL> <SGE> <SLT> <SUB> <XPD> + <MAD> <SWZ> <ATTRIB> <PARAM> <TEMP> <ADDRESS> <OUTPUT> <ALIAS> + <END> + follow: $ + +========================================== +1: <optionSequence> ::= <optionSequence2> + ----- + first: <OPTION> "" + follow: = <ARL> <ABS> <FLR> <FRC> <LIT> <MOV> <EX2> <EXP> <LG2> <LOG> <RCP> <RSQ> + <POW> <ADD> <DP3> <DP4> <DPH> <DST> <MAX> <MIN> <MUL> <SGE> <SLT> <SUB> <XPD> + <MAD> <SWZ> <ATTRIB> <PARAM> <TEMP> <ADDRESS> <OUTPUT> <ALIAS> + <END> + +========================================== +2: <optionSequence2> ::= <option> <optionSequence2> + ------ + first: <OPTION> +3: | "" + ------ + first: "" + follow: <ARL> <ABS> <FLR> <FRC> <LIT> <MOV> <EX2> <EXP> <LG2> <LOG> <RCP> <RSQ> + <POW> <ADD> <DP3> <DP4> <DPH> <DST> <MAX> <MIN> <MUL> <SGE> <SLT> <SUB> <XPD> + <MAD> <SWZ> <ATTRIB> <PARAM> <TEMP> <ADDRESS> <OUTPUT> <ALIAS> + <END> + +========================================== +4: <option> ::= "OPTION" <identifier> ";" + ------- + first: <OPTION> + +========================================== +5: <statementSequence> ::= <statementSequence2> + ------- + first: <ARL> <ABS> <FLR> <FRC> <LIT> <MOV> <EX2> <EXP> <LG2> <LOG> <RCP> <RSQ> + <POW> <ADD> <DP3> <DP4> <DPH> <DST> <MAX> <MIN> <MUL> <SGE> <SLT> <SUB> <XPD> + <MAD> <SWZ> <ATTRIB> <PARAM> <TEMP> <ADDRESS> <OUTPUT> <ALIAS> + "" + follow: <END> + +========================================= +6: <statementSequence2> ::= <statement> <statementSequence2> + ---------- + first: <ARL> <ABS> <FLR> <FRC> <LIT> <MOV> <EX2> <EXP> <LG2> <LOG> <RCP> <RSQ> + <POW> <ADD> <DP3> <DP4> <DPH> <DST> <MAX> <MIN> <MUL> <SGE> <SLT> <SUB> <XPD> + <MAD> <SWZ> <ATTRIB> <PARAM> <TEMP> <ADDRESS> <OUTPUT> <ALIAS> +7: | "" + ------- + first: "" + follow: <END> + +========================================== +8: <statement> ::= <instruction> ";" + ---------- + first: <ARL> <ABS> <FLR> <FRC> <LIT> <MOV> <EX2> <EXP> <LG2> <LOG> <RCP> <RSQ> + <POW> <ADD> <DP3> <DP4> <DPH> <DST> <MAX> <MIN> <MUL> <SGE> <SLT> <SUB> <XPD> + <MAD> <SWZ> +9: | <namingStatement> ";" + -------- + first: <ATTRIB> <PARAM> <TEMP> <ADDRESS> <OUTPUT> <ALIAS> + +========================================== +10: <instruction> ::= <ARL_instruction> + --------- + first: <ARL> +11: | <VECTORop_instruction> + ---------- + first: <ABS> <FLR> <FRC> <LIT> <MOV> +12: | <SCALARop_instruction> + --------- + first: <EX2> <EXP> <LG2> <LOG> <RCP> <RSQ> +13: | <BINSCop_instruction> + ----- + first: <POW> +14: | <BINop_instruction> + ---- + first: <ADD> <DP3> <DP4> <DPH> <DST> <MAX> <MIN> <MUL> <SGE> <SLT> <SUB> <XPD> +15: | <TRIop_instruction> + ---- + first: <MAD> +16: | <SWZ_instruction> + ----- + first: <SWZ> + +=========================================== +17: <ARL_instruction> ::= "ARL" <maskedAddrReg> "," <scalarSrcReg> + --------- + first: <ARL> + +========================================== +18: <VECTORop_instruction> ::= <VECTORop> <maskedDstReg> "," <swizzleSrcReg> + ---------- + first: <ABS> <FLR> <FRC> <LIT> <MOV> + +========================================== +19: <VECTORop> ::= "ABS" +20: | "FLR" +21: | "FRC" +22: | "LIT" +23: | "MOV" + +========================================== +24: <SCALARop_instruction> ::= <SCALARop> <maskedDstReg> "," <scalarSrcReg> + --------- + first: <EX2> <EXP> <LG2> <LOG> <RCP> <RSQ> + +========================================== +25: <SCALARop> ::= "EX2" +26: | "EXP" +27: | "LG2" +28: | "LOG" +29: | "RCP" +30: | "RSQ" + +========================================== +31: <BINSCop_instruction> ::= <BINSCop> <maskedDstReg> <BINSCop_instruction2> + ----- + first: <POW> + +32: <BINSCop_instruction2> ::= "," <scalarSrcReg> "," <scalarSrcReg> + ----- + first: "," + +========================================== +33: <BINSCop> ::= "POW" + ---- + first: <POW> + +========================================== +34: <BINop_instruction> ::= <BINop> <maskedDstReg> <BINop_instruction2> + ---- + first: <ADD> <DP3> <DP4> <DPH> <DST> <MAX> <MIN> <MUL> <SGE> <SLT> <SUB> <XPD> + +35: <BINop_instruction2> ::= "," <swizzleSrcReg> "," <swizzleSrcReg> + ----- + first: "," + + +========================================== +36: <BINop> ::= "ADD" + ----- + first: <ADD> +37: | "DP3" + ----- + first: <DP3> +38: | "DP4" + ----- + first: <DP4> +39: | "DPH" + ----- + first: <DPH> +40: | "DST" + ----- + first: <DST> +41: | "MAX" + ----- + first: <MAX> +42: | "MIN" + ----- + first: <MIN> +43: | "MUL" + ---- + first: <MUL> +44: | "SGE" + ---- + first: <SGE> +45: | "SLT" + ---- + first: <SLT> +46: | "SUB" + ---- + first: <SUB> +47: | "XPD" + ----- + first: <XPD> +========================================== +48: <TRIop_instruction> ::= <TRIop> <maskedDstReg> <TRIop_instruction2> + ---- + first: <MAD> + +49: <TRIop_instruction2> ::= "," <swizzleSrcReg> <TRIop_instruction3> + ----- + first: "," + +50: <TRIop_instruction3> ::= "," <swizzleSrcReg> "," <swizzleSrcReg> + ----- + first: "," + +========================================== +51: <TRIop> ::= "MAD" + ----- + first: <MAD> + +========================================== +52: <SWZ_instruction> ::= "SWZ" <maskedDstReg> <SWZ_instruction2> + ----- + first: <SWZ> + +53: <SWZ_instruction2> ::= "," <srcReg> "," <extendedSwizzle> + ----- + first: "," + +========================================== +54: <scalarSrcReg> ::= <optionalSign> <srcReg> <scalarSuffix> + -------- + first: "+" "-" "vertex" "state" "program" "{" <float> <int> + <id> that is vertexAttrib + <id> that is a TEMP + <id> that is a single, <id> that is an array, + +========================================== +55: <swizzleSrcReg> ::= <optionalSign> <srcReg> <swizzleSuffix> + --------- + first: "+" "-" "vertex" "state" "program" "{" <float> <int> + <id> that is vertexAttrib + <id> that is a TEMP + <id> that is a single, <id> that is an array, + +========================================== +56: <maskedDstReg> ::= <dstReg> <optionalMask> + --------- + first: first: <id>, that is a TEMP "result", <id> that is a vertexResult + +========================================== +57: <maskedAddrReg> ::= <addrReg> <addrWriteMask> + --------- + first: <id> (that is an addr reg) + +========================================== +58: <extendedSwizzle> ::= <extSwizComp> "," <extSwizComp> <extendedSwizzle2> + ------- + first: "+" "-" "0" "1" "x" "y" "z" "w" + +59: <extendedSwizzle2> ::= "," <extSwizComp> "," <extSwizComp> + ------- + first: "," + +========================================== +60: <extSwizComp> ::= <optionalSign> <extSwizSel> + ------- + first: "+" "-" "0" "1" "x" "y" "z" "w" + +========================================== +61: <extSwizSel> ::= "0" +62: | "1" +63: | <component> + +========================================== +64: <srcReg> ::= <vertexAttribReg> + ---- + first: "vertex" <id> that is vertexAttrib +65: | <temporaryReg> + ----- + first: <id> that is a TEMP +66: | <progParamReg> + ---- + first: <id> that is a single, <id> that is an array, "state" "program" "{" <float> <int> + +========================================== +67: <dstReg> ::= <temporaryReg> + --------- + first: <id>, that is a TEMP +68: | <vertexResultReg> + -------- + first: "result", <id> that is a vertexResult + +========================================== +69: <vertexAttribReg> ::= <establishedName> + ----- + first: <id>, +70: | <vtxAttribBinding> + ----- + first: "vertex" + +========================================== + 71: <temporaryReg> ::= <establishedName> + ------ + first: <id> that is a TEMP + +========================================== +72: <progParamReg> ::= <progParamSingle> + ------ + first: <id>, that is single +73: | <progParamArray> "[" <progParamArrayMem> "]" + ----- + first: <id>, that is an array +74: | <paramSingleItemUse> + ------- + first: "state" "program" "{" <float> <int> + +========================================== +75: <progParamSingle> ::= <establishedName> + ------ + first: <id>, that is a single + +========================================== +76: <progParamArray> ::= <establishedName> + ------ + first: <id>, that is an array + +========================================== +77: <progParamArrayMem> ::= <progParamArrayAbs> + ------ + first: <integer> +78: | <progParamArrayRel> + ----- + first: <id> + +========================================== +79: <progParamArrayAbs> ::= <integer> + ------- + first: <integer> + +========================================== +80: <progParamArrayRel> ::= <addrReg> <addrComponent> <addrRegRelOffset> + ------ + first: <id> + +========================================== +81: <addrRegRelOffset> ::= "" + ----- + first: "" + follow: "]" +82: | "+" <addrRegPosOffset> + ----- + first: "+" +83: | "-" <addrRegNegOffset> + ----- + first: "-" + +========================================== +84: <addrRegPosOffset> ::= <integer> from 0 to 63 + ------- + first: <integer> + +========================================== +85: <addrRegNegOffset> ::= <integer> from 0 to 64 + ------- + first: <integer> + +========================================== +86: <vertexResultReg> ::= <establishedName> + ------ + first: <id> +87: | <resultBinding> + first: "result" + +========================================== +88: <addrReg> ::= <establishedName> + first: <id> + +========================================== +89: <addrComponent> ::= "." "x" + ------- + first: "." + +========================================== +90: <addrWriteMask> ::= "." "x" + -------- + first: "." + +========================================== +91: <scalarSuffix> ::= "." <component> + --------- + first: "." + +========================================== +92: <swizzleSuffix> ::= "" + --------- + first: "" + follow: "," ";" + + +/* +custom: | "." <component> | --> Treat as the same production +custom: | "." <component> <component> | --> but check the lenght of <component> + <component> <component> +*/ +317: | "." <swizzleSuffix2> + -------- + first: "." +318: swizzleSuffix2 ::= <component> + +319: | <component4> + +========================================== +93: <component> ::= "x" +94: | "y" +95: | "z" +96: | "w" + +========================================= + <component4> := strlen() == 4, chars are from {x, y, z, w} --> push the input onto the stack + ---- + +========================================== +97: <optionalMask> ::= "." <optionalMask2> + --------- + first: "." +98: | "" + --------- + first: "" + follow: "," + +========================================== +99: <optionalMask2> ::= "x" +100: | "y" +101: | "xy" +102: | "z" +103: | "xz" +104: | "yz" +105: | "xyz" +106: | "w" +107: | "xw" +108: | "yw" +109: | "xyw" +110: | "zw" +111: | "xzw" +112: | "yzw" +113: | "xyzw" + +========================================== +114: <namingStatement> ::= <ATTRIB_statement> + ------ + first: "ATTRIB" +115: | <PARAM_statement> + ----- + first: "PARAM" +116: | <TEMP_statement> + ----- + first: "TEMP" +117: | <ADDRESS_statement> + ----- + first: "ADDRESS" +118: | <OUTPUT_statement> + ----- + first: "OUTPUT" +119: | <ALIAS_statement> + ----- + first: "ALIAS" + +========================================== +120: <ATTRIB_statement> ::= "ATTRIB" <establishName> "=" + <vtxAttribBinding> + ------ + first: "ATTRIB" + +========================================== +121: <vtxAttribBinding> ::= "vertex" "." <vtxAttribItem> + ----- + first: "vertex" + +========================================== +122: <vtxAttribItem> ::= "position" + ------ + first: "position" +123: | "weight" <vtxOptWeightNum> + ----- + first: "weight" +124: | "normal" + ----- + first: "normal" +125: | "color" <optColorType> + ----- + first: "color" +126: | "fogcoord" + ----- + first: "fogcoord" +127: | "texcoord" <optTexCoordNum> + ----- + first: "texcoord" +128: | "matrixindex" "[" <vtxWeightNum> "]" + ---- + first: "matrixindex" +129: | "attrib" "[" <vtxAttribNum> "]" + ---- + first: "attrib" + +========================================== +130: <vtxAttribNum> ::= <integer> from 0 to MAX_VERTEX_ATTRIBS_ARB-1 + ------ + first: <integer> + +========================================== +131: <vtxOptWeightNum> ::= "" + ------ + first: "" + follow: ";" "," "." +132: | "[" <vtxWeightNum> "]" + ------ + first: "[" + +========================================== +133: <vtxWeightNum> ::= <integer> from 0 to MAX_VERTEX_UNITS_ARB-1, + must be divisible by four + ----- + first: <integer> + +========================================== +134: <PARAM_statement> ::= "PARAM" <establishName> <PARAM_statement2> + ----------- + first: "PARAM" + +135: <PARAM_statement2> ::= <paramSingleInit> + ------ + first: "=" +136: | "[" <optArraySize> "]" <paramMultipleInit> + ------ + first: "[" + +========================================== +137: <optArraySize> ::= "" + --------- + first: "" + follow: "]" +138: | <integer> from 1 to MAX_PROGRAM_PARAMETERS_ARB + (maximum number of allowed program + parameter bindings) + -------- + first: <integer> + +========================================== +139: <paramSingleInit> ::= "=" <paramSingleItemDecl> + ------ + first: "=" + +========================================== +140: <paramMultipleInit> ::= "=" "{" <paramMultInitList> "}" + ------ + first: "=" + +========================================== +141: <paramMultInitList> ::= <paramMultipleItem> <paramMultInitList2> + ------ + first: "state" "program" "+" "-" <float> <int> "{" + +========================================== +142: <paramMultInitList2> ::= "," <paramMultInitList> + ------ + first: "," +143: | "" + ------ + first: "" + follow: "}" + +========================================== +144: <paramSingleItemDecl> ::= <stateSingleItem> + ------ + first: "state" +145: | <programSingleItem> + ------ + first: "program" +146: | <paramConstDecl> + ------ + first: "+" "-" <float> <int>"{" + +========================================== +147: <paramSingleItemUse> ::= <stateSingleItem> + ------ + first: "state" +148: | <programSingleItem> + ------ + first: "program" +149: | <paramConstUse> + ------ + first: "{" <float> <int> + +========================================== +150: <paramMultipleItem> ::= <stateMultipleItem> + ----- + first: "state" +151: | <programMultipleItem> + ------ + first: "program" +152: | <paramConstDecl> + ------ + first: "+" "-" <float> <int> "{" + +========================================== +153: <stateMultipleItem> ::= "state" "." <stateMultipleItem2> + ------- + first: "state" + +======================================== +154: <stateMultipleItem2> ::= <stateMaterialItem> + ----- + first: "material" +155: | <stateLightItem> + ------ + first: "light" +156: | <stateLightModelItem> + ------ + first: "lightmodel" +157: | <stateLightProdItem> + ------ + first: "lightprod" +158: | <stateTexGenItem> + ------ + first: "texgen" +159: | <stateFogItem> + ------ + first: "fog" +160: | <stateClipPlaneItem> + ------ + first: "clip" +161: | <statePointItem> + ------ + first: "point" + +162 ::= "matrix" "." <stateMatrixName> <foo> + ---- + first: "matrix" + +=========================== +163: <foo> ::= "." <foo2> +------ + first: "." +316: | "" +----- +follow: "," "}" + + +164: <foo2> ::= <stateMatModifier> <foo3> + ----- + first: "inverse" "transpose" "invtrans" + +165: | "row" "[" <stateMatrixRowNum> <foo4> + ------ + first: "row" + +=========================== +166: <foo3> ::= "" + ----- + first: "" + follow: , } + +167: | "." "row" "[" <foo35> + ----- + first: "." + +============================== +168: <foo35> ::= <stateMatrixRowNum> <foo4> + ------ + first: <int> + +============================== +169: <foo4> ::= "]" + ----- + first: "]" +170: | ".." <stateMatrixRowNum> "]" + ----- + first: .. + +========================================== +171: <stateSingleItem> ::= "state" "." <stateSingleItem2> + ------- + first: "state" + +========================================== +172: <stateSingleItem2> ::= <stateMaterialItem> + ------ + first: "material" +173: | <stateLightItem> + ------ + first: "light" +174: | <stateLightModelItem> + ------ + first: "lightmodel" +175: | <stateLightProdItem> + ------ + first: "lightprod" +176: | <stateTexGenItem> + ------ + first: "texgen" +177: | <stateFogItem> + ------ + first: "fog" +178: | <stateClipPlaneItem> + ------ + first: "clip" +179: | <statePointItem> + ------ + first: "point" +180: | <stateMatrixRow> + ------ + first: "matrix" +========================================== +181: <stateMaterialItem> ::= "material" "." <stateMaterialItem2> + ------ + first: "material" + +======================================== +182: <stateMaterialItem2> ::= <stateMatProperty> + ------ + first: "ambient" "diffuse" "specular" "emission" "shininess" +183: | "." <optFaceType2> "." <stateMatProperty> + ----- + first: "." + +========================================== +184: <stateMatProperty> ::= "ambient" + ----- + first: "ambient" +185; | "diffuse" + ----- + first: "diffuse" +186: | "specular" + ----- + first: "specular" +187: | "emission" + ----- + first: "emission" +188: | "shininess" + ----- + first: "shininess" +========================================== +189: <stateLightItem> ::= "light" "[" <stateLightNumber> <stateLightItem2> + ------ + first: "light" + +190: <stateLightItem2> ::= "]" "." <stateLightProperty> + ----- + first: "]" + + +========================================== +191: <stateLightProperty> ::= "ambient" + ------- + first: "ambient" +192: | "diffuse" + ------- + first: "diffuse" +193: | "specular" + ------- + first: "specular" +194: | "position" + ------- + first: "position" +195: | "attenuation" + ------- + first: "attenuation" +196: | "spot" "." <stateSpotProperty> + -------- + first: "spot" +197: | "half" + -------- + first: "half" + +========================================== +198: <stateSpotProperty> ::= "direction" + --------- + first: "direction" + +========================================== +199: <stateLightModelItem> ::= "lightmodel" <stateLModProperty> + -------- + first: "lightmodel" + +========================================== +200: <stateLModProperty> ::= "." <stateLModProperty2> + ------- + first: "." + +201: <stateLModProperty2> ::= "ambient" + ------- + first: "ambient" +202: | "scenecolor" + ------ + first: "scenecolor" +203: | <optFaceType2> "." "scenecolor" + ------- + first: "front" "back" +========================================== +204: <stateLightProdItem> ::= "lightprod" "[" <stateLightNumber> <stateLightProdItem15> + ------ + first: "lightprod" + +205: <stateLightProdItem15> ::= "]" "." <stateLightProdItem2> + -------- + first: "]" + +=============== +206: <stateLightProdItem2> ::= <stateLProdProperty> + ---------- + first: "ambient" "diffuse" "specular" +207: | <optFaceType2> "." <stateLProdProperty> + --------- + first: "front" "back" + +========================================== +208: <stateLProdProperty> ::= "ambient" + ------- + first: "ambient" +209: | "diffuse" + ------- + first: "diffuse" +210: | "specular" + ------- + first: "specular" + +========================================== +211: <stateLightNumber> ::= <integer> from 0 to MAX_LIGHTS-1 + --------- + first: <integer> + +========================================== +212: <stateTexGenItem> ::= "texgen" <optTexCoordNum> <stateTexGenItem2> + ----------- + first: "texgen" + +213: <stateTexGenItem2> ::= "." <stateTexGenType> "." <stateTexGenCoord> + +========================================== +214: <stateTexGenType> ::= "eye" + -------------- + first: "eye" +215: | "object" + -------------- + first: "object" + +========================================== +216: <stateTexGenCoord> ::= "s" + ------ + first: "s" +217: | "t" + ------- + first: "t" +218: | "r" + ------- + first: "r" +219: | "q" + ------- + first: "q" +========================================== +220: <stateFogItem> ::= "fog" "." <stateFogProperty> + -------- + first: "fog" + +========================================== +221: <stateFogProperty> ::= "color" + ------ + first: "color" +222: | "params" + ------ + first: "params" +========================================== +223: <stateClipPlaneItem> ::= "clip" "[" <stateClipPlaneNum> <stateClipPlaneItem2> + ------ + first: "clip" + +224: <stateClipPlaneItem2> ::= "]" "." "plane" + ----- + first: "]" + +========================================== +225: <stateClipPlaneNum> ::= <integer> from 0 to MAX_CLIP_PLANES-1 + ------- + first: <integer> + +========================================== +226: <statePointItem> ::= "point" . <statePointProperty> + ----- + first: "point" + +========================================== +227: <statePointProperty> ::= "size" + ------- + first: "size" +228: | "attenuation" + -------- + first: "attenuation" + +========================================== +229: <stateMatrixRow> ::= "matrix" "." <stateMatrixName> <stateMatrixRow15> + -------- + first: "matrix" + +230: <stateMatrixRow15> ::= "." <stateMatrixRow2> + ----- + first: "." + +=========================== +231: <stateMatrixRow2> ::= "row" "[" <stateMatrixRowNum> "]" + -------- + first: "row" +232: | <stateMatModifier> "." "row" <stateMatrixRow3> + ------ + first: "inverse" "transpose" "invtrans" + +233: <stateMatrixRow3> ::= "[" <stateMatrixRowNum> "]" + ----- + first: "[" + +========================================== +234: <stateMatModifier> ::= "inverse" + -------- + first: "inverse" +235: | "transpose" + ------- + first: "transpose" +236: | "invtrans" + ------- + first: "invtrans" + +========================================== +237: <stateMatrixRowNum> ::= <integer> from 0 to 3 + ---------- + first: <integer> + +========================================== +238: <stateMatrixName> ::= "modelview" <stateOptModMatNum> + ------------ + first: "modelview" +239: | "projection" + ------------ + first: "projection" +240: | "mvp" + ----------- + first: "mvp" +241: | "texture" <optTexCoordNum> + ----------- + first: "texture" +242: | "palette" "[" <statePaletteMatNum> "]" + ----------- + first: "palette" +243: | "program" "[" <stateProgramMatNum> "]" + ----------- + first: "program" + +========================================== +244: <stateOptModMatNum> ::= "" + ------------- + first: "" + follow: "." "," "}" +245: | "[" <stateModMatNum> "]" + ------------- + first: "[" + +========================================== +246: <stateModMatNum> ::= <integer> from 0 to MAX_VERTEX_UNITS_ARB-1 + ----------- + first: <integer> + +========================================== +247: <statePaletteMatNum> ::= <integer> from 0 to MAX_PALETTE_MATRICES_ARB-1 + ----------- + first: <integer> + +========================================== +248: <stateProgramMatNum> ::= <integer> from 0 to MAX_PROGRAM_MATRICES_ARB-1 + ------------ + first: <integer> + +========================================== +249: <programSingleItem> ::= "program" "." <programSingleItem2> + --------------- + first: "program" + +250: <programSingleItem2> ::= <progEnvParam> + -------------- + first: "env" +251: | <progLocalParam> + -------------- + first: "local" + +========================================== +252: <programMultipleItem> ::= "program" "." <programMultipleItem2> + --------------- + first: "program" + +========================================== +253: <programMultipleItem2> ::= <progEnvParams> + --------------- + first: "env" +254: | <progLocalParams> + -------------- + first: "local" + +========================================== +255: <progEnvParams> ::= "env" "[" <progEnvParamNums> "]" + ----------- + first: "env" + +========================================== +256: <progEnvParamNums> ::= <progEnvParamNum> <progEnvParamNums2> + --------- + first: <integer> + +========================================== +257: <progEnvParamNums2> ::= ".." <progEnvParamNum> + ---------- + first: ".." +258: | "" + --------- + first: "" + follow: "]" + +========================================== +259: <progEnvParam> ::= "env" "[" <progEnvParamNum> "]" + --------- + first: "env" + +========================================== +260: <progLocalParams> ::= "local" "[" <progLocalParamNums> "]" + --------- + first: "local" + +========================================== +261: <progLocalParamNums> ::= <progLocalParamNum> <progLocalParamNums2> + ---------- + first: <integer> + +========================================== +262: <progLocalParamNums2> ::= ".." <progLocalParamNum> + --------- + first: ".." +263: | "" + -------- + first: "" + follow: "]" +========================================== +264: <progLocalParam> ::= "local" "[" <progLocalParamNum> "]" + --------- + first: "local" + +========================================== +265: <progEnvParamNum> ::= <integer> from 0 to MAX_PROGRAM_ENV_PARAMETERS_ARB - 1 + --------- + first: <integer> + + +========================================== +266: <progLocalParamNum> ::= <integer> from 0 to MAX_PROGRAM_LOCAL_PARAMETERS_ARB - 1 + ------------- + first: <integer> + +========================================== +267: <paramConstDecl> ::= <paramConstScalarDecl> + ------------ + first: "+" "-" <float> <int> + +268: | <paramConstVector> + ------------ + first: "{" + +========================================== +269: <paramConstUse> ::= <paramConstScalarUse> + ----------- + first: <float> <int> +270: | <paramConstVector> + ---------- + first: "{" + +========================================== +271: <paramConstScalarDecl> ::= <signedFloatConstant> + ---------- + first: "+" "-" <float> <int> + +========================================== +272: <paramConstScalarUse> ::= <floatConstant> + ------------ + first: <float> <int> + +========================================== +273: <paramConstVector> ::= "{" <signedFloatConstant> <paramConstVector2> + ------------- + +========================================== +274: <paramConstVector2> ::= "}" + ------------- + first: "}" +275: | "," <signedFloatConstant> <paramConstVector3> + ------------- + first: "," + +========================================== +276: <paramConstVector3> ::= "}" + ------------- + first: "}" +277: | "," <signedFloatConstant> <paramConstVector4> + ------------ + first: "," + +========================================== +278: <paramConstVector4> ::= "}" + ------------ + first: "}" +279: | "," <signedFloatConstant> "}" + ------------ + first: "," + +========================================== +280: <signedFloatConstant> ::= <optionalSign> <floatConstant> + ---------- + first: "-" "+" <float> <int> + +========================================== + <floatConstant> ::= see text + ---------- + first: <float> <int> + +========================================== +281: <optionalSign> ::= "" + ----------- + first: "" + follow: <float> <int> "0" "1" "x" "y" "z" "w" "state" "program" "vertex" "{" + vertexattr <id> + temp <id> + single <id> + array <id> + + | "-" + ----------- +282: first: "-" + + | "+" + --------- +283: first: "+" + +========================================== +284: <TEMP_statement> ::= "TEMP" <varNameList> + -------- + first: "TEMP" + +========================================== +285: <ADDRESS_statement> ::= "ADDRESS" <varNameList> + ------------- + first: "ADDRESS" + +========================================== +286: <varNameList> ::= <establishName> + ------------- + first: <id> +287: | <establishName> "," <varNameList> + ------------- + first: <id> + +========================================== +288: <OUTPUT_statement> ::= "OUTPUT" <establishName> "=" <resultBinding> + ------------------ + first: "OUTPUT" + +========================================== +289: <resultBinding> ::= "result" "." <resultBinding2> + ------------------- + first: "result" + +========================================== +290: <resultBinding2> ::= "position" + ---------------------------------- + first: "position" +291: | "fogcoord" + ---------------------------------- + first: "fogcoord" +292: | "pointsize" + ---------------------------------- + first: "pointsize" +293: | <resultColBinding> + ---------------------------------- + first: "color" +294: | "texcoord" <optTexCoordNum> + ---------------------------------- + first: "texcoord" + +========================================== +295: <resultColBinding> ::= "color" <resultColBinding2> + ----- + first: "color" + +============= +296: <resultColBinding2> ::= "" + ---- + first: "" + follow: ";" "," "." +297: | "." <resultColBinding3> + ---- + first: "." + --> HACK: If we have a ".", look ahead 1 and see if we have + "front" | back". If so, choose the second production. + If not, choose the first. + +=========== +298: <resultColBinding3> ::= "front" <resultColBinding4> + --------- + first: "front" +299: | "back" <resultColBinding4> + -------- + first: "back" + +=========== +300: <resultColBinding4> ::= "" + --------- + first: "" + follow: ";" "," "." +301: | "." <resultColBinding5> + --------- + first "." + + ----> HACK: If we have a ".", peek ahead 1 and see if we have "primary" | "secondary". + If so, choose teh second production. If not, choose the first. + +=============== +302: <resultColBinding5> ::= "primary" + -------- + first: "primary" +303: | "secondary" + -------- + first: "secondary" + + +========================================== +304: <optFaceType2> ::= "front" + ---------------------------------- + first: "front" +305: | "back" + ---------------------------------- + first: "back" + +========================================== +306: <optColorType> ::= "." <optColorType2> + ---------------------------------- + first: "." +307: | "" + ---------------------------------- + first: "" + follow: ";" "," "." + + --> HACK: If we get a ".", peek ahead 1 token. if we have + "primary" | "secondary", go choose the first production. + else, choose the second. + +========================================== +308: <optColorType2> ::= "primary" + ---------------------------------- + first: "primary" +309: | "secondary" + ---------------------------------- + first: "secondary" + +========================================== +310: <optTexCoordNum> ::= "" + ---------------------------------- + first: "" + follow: "." ";" "," "}" +311: | "[" <texCoordNum> "]" + ---------------------------------- + first: "[" + +========================================== +312: <texCoordNum> ::= <integer> from 0 to MAX_TEXTURE_UNITS-1 + ----------------------------------- + first: <integer> + +========================================== +313: <ALIAS_statement> ::= "ALIAS" <establishName> "=" <establishedName> + ----------------------------------- + first: "ALIAS" + +========================================== +314: <establishName> ::= <identifier> + ----------------------------------- + first: <id> + +========================================== +315: <establishedName> ::= <identifier> + ----------------------------------- + first: <id> + +========================================== + <identifier> ::= see text + ----------------------------------- + first: <id> + +HIGHEST PRODUCTION: 319 |