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