diff options
| -rw-r--r-- | src/mesa/shader/lex.yy.c | 382 | ||||
| -rw-r--r-- | src/mesa/shader/program_lexer.l | 8 | 
2 files changed, 200 insertions, 190 deletions
| diff --git a/src/mesa/shader/lex.yy.c b/src/mesa/shader/lex.yy.c index 5e605274aa..fc78b30fb4 100644 --- a/src/mesa/shader/lex.yy.c +++ b/src/mesa/shader/lex.yy.c @@ -53,7 +53,6 @@ typedef int flex_int32_t;  typedef unsigned char flex_uint8_t;   typedef unsigned short int flex_uint16_t;  typedef unsigned int flex_uint32_t; -#endif /* ! C99 */  /* Limits of integral types. */  #ifndef INT8_MIN @@ -84,6 +83,8 @@ typedef unsigned int flex_uint32_t;  #define UINT32_MAX             (4294967295U)  #endif +#endif /* ! C99 */ +  #endif /* ! FLEXINT_H */  #ifdef __cplusplus @@ -157,7 +158,15 @@ typedef void* yyscan_t;  /* Size of default input buffer. */  #ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else  #define YY_BUF_SIZE 16384 +#endif /* __ia64__ */  #endif  /* The state buf must be large enough to hold one state per character in the main buffer. @@ -1057,8 +1066,7 @@ static yyconst flex_int16_t yy_chk[1368] =        if (condition) {					\  	 return token;					\        } else {						\ -	 yylval->string = return_string(yyextra, yytext);	\ -	 return IDENTIFIER;				\ +	 return handle_ident(yyextra, yytext, yylval);	\        }							\     } while (0) @@ -1082,8 +1090,7 @@ static yyconst flex_int16_t yy_chk[1368] =  	 yylval->temp_inst.Opcode = OPCODE_ ## opcode;	\  	 return token;					\        } else {						\ -	 yylval->string = return_string(yyextra, yytext);		\ -	 return IDENTIFIER;				\ +	 return handle_ident(yyextra, yytext, yylval);	\        }							\     } while (0) @@ -1174,7 +1181,7 @@ swiz_from_char(char c)  static int  handle_ident(struct asm_parser_state *state, const char *text, YYSTYPE *lval)  { -   lval->string = strdup(text); +   lval->string = return_string(state, text);     return (_mesa_symbol_table_find_symbol(state->st, 0, text) == NULL)        ? IDENTIFIER : USED_IDENTIFIER; @@ -1193,7 +1200,7 @@ handle_ident(struct asm_parser_state *state, const char *text, YYSTYPE *lval)     } while(0);  #define YY_EXTRA_TYPE struct asm_parser_state * -#line 1197 "lex.yy.c" +#line 1204 "lex.yy.c"  #define INITIAL 0 @@ -1330,7 +1337,12 @@ static int input (yyscan_t yyscanner );  /* Amount of stuff to slurp up with each read. */  #ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else  #define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */  #endif  /* Copy whatever the last rule matched to the standard output. */ @@ -1338,7 +1350,7 @@ static int input (yyscan_t yyscanner );  /* This used to be an fputs(), but since the string might contain NUL's,   * we now use fwrite().   */ -#define ECHO fwrite( yytext, yyleng, 1, yyout ) +#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)  #endif  /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL, @@ -1349,7 +1361,7 @@ static int input (yyscan_t yyscanner );  	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \  		{ \  		int c = '*'; \ -		unsigned n; \ +		size_t n; \  		for ( n = 0; n < max_size && \  			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \  			buf[n] = (char) c; \ @@ -1434,10 +1446,10 @@ YY_DECL  	register int yy_act;      struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; -#line 198 "program_lexer.l" +#line 196 "program_lexer.l" -#line 1441 "lex.yy.c" +#line 1453 "lex.yy.c"      yylval = yylval_param; @@ -1526,17 +1538,17 @@ do_action:	/* This label is used only to access EOF actions. */  case 1:  YY_RULE_SETUP -#line 200 "program_lexer.l" +#line 198 "program_lexer.l"  { return ARBvp_10; }  	YY_BREAK  case 2:  YY_RULE_SETUP -#line 201 "program_lexer.l" +#line 199 "program_lexer.l"  { return ARBfp_10; }  	YY_BREAK  case 3:  YY_RULE_SETUP -#line 202 "program_lexer.l" +#line 200 "program_lexer.l"  {     yylval->integer = at_address;     return_token_or_IDENTIFIER(require_ARB_vp, ADDRESS); @@ -1544,692 +1556,692 @@ YY_RULE_SETUP  	YY_BREAK  case 4:  YY_RULE_SETUP -#line 206 "program_lexer.l" +#line 204 "program_lexer.l"  { return ALIAS; }  	YY_BREAK  case 5:  YY_RULE_SETUP -#line 207 "program_lexer.l" +#line 205 "program_lexer.l"  { return ATTRIB; }  	YY_BREAK  case 6:  YY_RULE_SETUP -#line 208 "program_lexer.l" +#line 206 "program_lexer.l"  { return END; }  	YY_BREAK  case 7:  YY_RULE_SETUP -#line 209 "program_lexer.l" +#line 207 "program_lexer.l"  { return OPTION; }  	YY_BREAK  case 8:  YY_RULE_SETUP -#line 210 "program_lexer.l" +#line 208 "program_lexer.l"  { return OUTPUT; }  	YY_BREAK  case 9:  YY_RULE_SETUP -#line 211 "program_lexer.l" +#line 209 "program_lexer.l"  { return PARAM; }  	YY_BREAK  case 10:  YY_RULE_SETUP -#line 212 "program_lexer.l" +#line 210 "program_lexer.l"  { yylval->integer = at_temp; return TEMP; }  	YY_BREAK  case 11:  YY_RULE_SETUP -#line 214 "program_lexer.l" +#line 212 "program_lexer.l"  { return_opcode(             1, VECTOR_OP, ABS, 3); }  	YY_BREAK  case 12:  YY_RULE_SETUP -#line 215 "program_lexer.l" +#line 213 "program_lexer.l"  { return_opcode(             1, BIN_OP, ADD, 3); }  	YY_BREAK  case 13:  YY_RULE_SETUP -#line 216 "program_lexer.l" +#line 214 "program_lexer.l"  { return_opcode(require_ARB_vp, ARL, ARL, 3); }  	YY_BREAK  case 14:  YY_RULE_SETUP -#line 218 "program_lexer.l" +#line 216 "program_lexer.l"  { return_opcode(require_ARB_fp, TRI_OP, CMP, 3); }  	YY_BREAK  case 15:  YY_RULE_SETUP -#line 219 "program_lexer.l" +#line 217 "program_lexer.l"  { return_opcode(require_ARB_fp, SCALAR_OP, COS, 3); }  	YY_BREAK  case 16:  YY_RULE_SETUP -#line 221 "program_lexer.l" +#line 219 "program_lexer.l"  { return_opcode(require_NV_fp,  VECTOR_OP, DDX, 3); }  	YY_BREAK  case 17:  YY_RULE_SETUP -#line 222 "program_lexer.l" +#line 220 "program_lexer.l"  { return_opcode(require_NV_fp,  VECTOR_OP, DDY, 3); }  	YY_BREAK  case 18:  YY_RULE_SETUP -#line 223 "program_lexer.l" +#line 221 "program_lexer.l"  { return_opcode(             1, BIN_OP, DP3, 3); }  	YY_BREAK  case 19:  YY_RULE_SETUP -#line 224 "program_lexer.l" +#line 222 "program_lexer.l"  { return_opcode(             1, BIN_OP, DP4, 3); }  	YY_BREAK  case 20:  YY_RULE_SETUP -#line 225 "program_lexer.l" +#line 223 "program_lexer.l"  { return_opcode(             1, BIN_OP, DPH, 3); }  	YY_BREAK  case 21:  YY_RULE_SETUP -#line 226 "program_lexer.l" +#line 224 "program_lexer.l"  { return_opcode(             1, BIN_OP, DST, 3); }  	YY_BREAK  case 22:  YY_RULE_SETUP -#line 228 "program_lexer.l" +#line 226 "program_lexer.l"  { return_opcode(             1, SCALAR_OP, EX2, 3); }  	YY_BREAK  case 23:  YY_RULE_SETUP -#line 229 "program_lexer.l" +#line 227 "program_lexer.l"  { return_opcode(require_ARB_vp, SCALAR_OP, EXP, 3); }  	YY_BREAK  case 24:  YY_RULE_SETUP -#line 231 "program_lexer.l" +#line 229 "program_lexer.l"  { return_opcode(             1, VECTOR_OP, FLR, 3); }  	YY_BREAK  case 25:  YY_RULE_SETUP -#line 232 "program_lexer.l" +#line 230 "program_lexer.l"  { return_opcode(             1, VECTOR_OP, FRC, 3); }  	YY_BREAK  case 26:  YY_RULE_SETUP -#line 234 "program_lexer.l" +#line 232 "program_lexer.l"  { return_opcode(require_ARB_fp, KIL, KIL, 3); }  	YY_BREAK  case 27:  YY_RULE_SETUP -#line 236 "program_lexer.l" +#line 234 "program_lexer.l"  { return_opcode(             1, VECTOR_OP, LIT, 3); }  	YY_BREAK  case 28:  YY_RULE_SETUP -#line 237 "program_lexer.l" +#line 235 "program_lexer.l"  { return_opcode(             1, SCALAR_OP, LG2, 3); }  	YY_BREAK  case 29:  YY_RULE_SETUP -#line 238 "program_lexer.l" +#line 236 "program_lexer.l"  { return_opcode(require_ARB_vp, SCALAR_OP, LOG, 3); }  	YY_BREAK  case 30:  YY_RULE_SETUP -#line 239 "program_lexer.l" +#line 237 "program_lexer.l"  { return_opcode(require_ARB_fp, TRI_OP, LRP, 3); }  	YY_BREAK  case 31:  YY_RULE_SETUP -#line 241 "program_lexer.l" +#line 239 "program_lexer.l"  { return_opcode(             1, TRI_OP, MAD, 3); }  	YY_BREAK  case 32:  YY_RULE_SETUP -#line 242 "program_lexer.l" +#line 240 "program_lexer.l"  { return_opcode(             1, BIN_OP, MAX, 3); }  	YY_BREAK  case 33:  YY_RULE_SETUP -#line 243 "program_lexer.l" +#line 241 "program_lexer.l"  { return_opcode(             1, BIN_OP, MIN, 3); }  	YY_BREAK  case 34:  YY_RULE_SETUP -#line 244 "program_lexer.l" +#line 242 "program_lexer.l"  { return_opcode(             1, VECTOR_OP, MOV, 3); }  	YY_BREAK  case 35:  YY_RULE_SETUP -#line 245 "program_lexer.l" +#line 243 "program_lexer.l"  { return_opcode(             1, BIN_OP, MUL, 3); }  	YY_BREAK  case 36:  YY_RULE_SETUP -#line 247 "program_lexer.l" +#line 245 "program_lexer.l"  { return_opcode(require_NV_fp,  VECTOR_OP, PK2H, 4); }  	YY_BREAK  case 37:  YY_RULE_SETUP -#line 248 "program_lexer.l" +#line 246 "program_lexer.l"  { return_opcode(require_NV_fp,  VECTOR_OP, PK2US, 5); }  	YY_BREAK  case 38:  YY_RULE_SETUP -#line 249 "program_lexer.l" +#line 247 "program_lexer.l"  { return_opcode(require_NV_fp,  VECTOR_OP, PK4B, 4); }  	YY_BREAK  case 39:  YY_RULE_SETUP -#line 250 "program_lexer.l" +#line 248 "program_lexer.l"  { return_opcode(require_NV_fp,  VECTOR_OP, PK4UB, 5); }  	YY_BREAK  case 40:  YY_RULE_SETUP -#line 251 "program_lexer.l" +#line 249 "program_lexer.l"  { return_opcode(             1, BINSC_OP, POW, 3); }  	YY_BREAK  case 41:  YY_RULE_SETUP -#line 253 "program_lexer.l" +#line 251 "program_lexer.l"  { return_opcode(             1, SCALAR_OP, RCP, 3); }  	YY_BREAK  case 42:  YY_RULE_SETUP -#line 254 "program_lexer.l" +#line 252 "program_lexer.l"  { return_opcode(require_NV_fp,  BIN_OP,    RFL, 3); }  	YY_BREAK  case 43:  YY_RULE_SETUP -#line 255 "program_lexer.l" +#line 253 "program_lexer.l"  { return_opcode(             1, SCALAR_OP, RSQ, 3); }  	YY_BREAK  case 44:  YY_RULE_SETUP -#line 257 "program_lexer.l" +#line 255 "program_lexer.l"  { return_opcode(require_ARB_fp, SCALAR_OP, SCS, 3); }  	YY_BREAK  case 45:  YY_RULE_SETUP -#line 258 "program_lexer.l" +#line 256 "program_lexer.l"  { return_opcode(require_NV_fp,  BIN_OP, SEQ, 3); }  	YY_BREAK  case 46:  YY_RULE_SETUP -#line 259 "program_lexer.l" +#line 257 "program_lexer.l"  { return_opcode(require_NV_fp,  BIN_OP, SFL, 3); }  	YY_BREAK  case 47:  YY_RULE_SETUP -#line 260 "program_lexer.l" +#line 258 "program_lexer.l"  { return_opcode(             1, BIN_OP, SGE, 3); }  	YY_BREAK  case 48:  YY_RULE_SETUP -#line 261 "program_lexer.l" +#line 259 "program_lexer.l"  { return_opcode(require_NV_fp,  BIN_OP, SGT, 3); }  	YY_BREAK  case 49:  YY_RULE_SETUP -#line 262 "program_lexer.l" +#line 260 "program_lexer.l"  { return_opcode(require_ARB_fp, SCALAR_OP, SIN, 3); }  	YY_BREAK  case 50:  YY_RULE_SETUP -#line 263 "program_lexer.l" +#line 261 "program_lexer.l"  { return_opcode(require_NV_fp,  BIN_OP, SLE, 3); }  	YY_BREAK  case 51:  YY_RULE_SETUP -#line 264 "program_lexer.l" +#line 262 "program_lexer.l"  { return_opcode(             1, BIN_OP, SLT, 3); }  	YY_BREAK  case 52:  YY_RULE_SETUP -#line 265 "program_lexer.l" +#line 263 "program_lexer.l"  { return_opcode(require_NV_fp,  BIN_OP, SNE, 3); }  	YY_BREAK  case 53:  YY_RULE_SETUP -#line 266 "program_lexer.l" +#line 264 "program_lexer.l"  { return_opcode(require_NV_fp,  BIN_OP, STR, 3); }  	YY_BREAK  case 54:  YY_RULE_SETUP -#line 267 "program_lexer.l" +#line 265 "program_lexer.l"  { return_opcode(             1, BIN_OP, SUB, 3); }  	YY_BREAK  case 55:  YY_RULE_SETUP -#line 268 "program_lexer.l" +#line 266 "program_lexer.l"  { return_opcode(             1, SWZ, SWZ, 3); }  	YY_BREAK  case 56:  YY_RULE_SETUP -#line 270 "program_lexer.l" +#line 268 "program_lexer.l"  { return_opcode(require_ARB_fp, SAMPLE_OP, TEX, 3); }  	YY_BREAK  case 57:  YY_RULE_SETUP -#line 271 "program_lexer.l" +#line 269 "program_lexer.l"  { return_opcode(require_ARB_fp, SAMPLE_OP, TXB, 3); }  	YY_BREAK  case 58:  YY_RULE_SETUP -#line 272 "program_lexer.l" +#line 270 "program_lexer.l"  { return_opcode(require_NV_fp,  TXD_OP, TXD, 3); }  	YY_BREAK  case 59:  YY_RULE_SETUP -#line 273 "program_lexer.l" +#line 271 "program_lexer.l"  { return_opcode(require_ARB_fp, SAMPLE_OP, TXP, 3); }  	YY_BREAK  case 60:  YY_RULE_SETUP -#line 275 "program_lexer.l" +#line 273 "program_lexer.l"  { return_opcode(require_NV_fp,  SCALAR_OP, UP2H, 4); }  	YY_BREAK  case 61:  YY_RULE_SETUP -#line 276 "program_lexer.l" +#line 274 "program_lexer.l"  { return_opcode(require_NV_fp,  SCALAR_OP, UP2US, 5); }  	YY_BREAK  case 62:  YY_RULE_SETUP -#line 277 "program_lexer.l" +#line 275 "program_lexer.l"  { return_opcode(require_NV_fp,  SCALAR_OP, UP4B, 4); }  	YY_BREAK  case 63:  YY_RULE_SETUP -#line 278 "program_lexer.l" +#line 276 "program_lexer.l"  { return_opcode(require_NV_fp,  SCALAR_OP, UP4UB, 5); }  	YY_BREAK  case 64:  YY_RULE_SETUP -#line 280 "program_lexer.l" +#line 278 "program_lexer.l"  { return_opcode(require_NV_fp,  TRI_OP, X2D, 3); }  	YY_BREAK  case 65:  YY_RULE_SETUP -#line 281 "program_lexer.l" +#line 279 "program_lexer.l"  { return_opcode(             1, BIN_OP, XPD, 3); }  	YY_BREAK  case 66:  YY_RULE_SETUP -#line 283 "program_lexer.l" +#line 281 "program_lexer.l"  { return_token_or_IDENTIFIER(require_ARB_vp, VERTEX); }  	YY_BREAK  case 67:  YY_RULE_SETUP -#line 284 "program_lexer.l" +#line 282 "program_lexer.l"  { return_token_or_IDENTIFIER(require_ARB_fp, FRAGMENT); }  	YY_BREAK  case 68:  YY_RULE_SETUP -#line 285 "program_lexer.l" +#line 283 "program_lexer.l"  { return PROGRAM; }  	YY_BREAK  case 69:  YY_RULE_SETUP -#line 286 "program_lexer.l" +#line 284 "program_lexer.l"  { return STATE; }  	YY_BREAK  case 70:  YY_RULE_SETUP -#line 287 "program_lexer.l" +#line 285 "program_lexer.l"  { return RESULT; }  	YY_BREAK  case 71:  YY_RULE_SETUP -#line 289 "program_lexer.l" +#line 287 "program_lexer.l"  { return AMBIENT; }  	YY_BREAK  case 72:  YY_RULE_SETUP -#line 290 "program_lexer.l" +#line 288 "program_lexer.l"  { return ATTENUATION; }  	YY_BREAK  case 73:  YY_RULE_SETUP -#line 291 "program_lexer.l" +#line 289 "program_lexer.l"  { return BACK; }  	YY_BREAK  case 74:  YY_RULE_SETUP -#line 292 "program_lexer.l" +#line 290 "program_lexer.l"  { return_token_or_DOT(require_ARB_vp, CLIP); }  	YY_BREAK  case 75:  YY_RULE_SETUP -#line 293 "program_lexer.l" +#line 291 "program_lexer.l"  { return COLOR; }  	YY_BREAK  case 76:  YY_RULE_SETUP -#line 294 "program_lexer.l" +#line 292 "program_lexer.l"  { return_token_or_DOT(require_ARB_fp, DEPTH); }  	YY_BREAK  case 77:  YY_RULE_SETUP -#line 295 "program_lexer.l" +#line 293 "program_lexer.l"  { return DIFFUSE; }  	YY_BREAK  case 78:  YY_RULE_SETUP -#line 296 "program_lexer.l" +#line 294 "program_lexer.l"  { return DIRECTION; }  	YY_BREAK  case 79:  YY_RULE_SETUP -#line 297 "program_lexer.l" +#line 295 "program_lexer.l"  { return EMISSION; }  	YY_BREAK  case 80:  YY_RULE_SETUP -#line 298 "program_lexer.l" +#line 296 "program_lexer.l"  { return ENV; }  	YY_BREAK  case 81:  YY_RULE_SETUP -#line 299 "program_lexer.l" +#line 297 "program_lexer.l"  { return EYE; }  	YY_BREAK  case 82:  YY_RULE_SETUP -#line 300 "program_lexer.l" +#line 298 "program_lexer.l"  { return FOGCOORD; }  	YY_BREAK  case 83:  YY_RULE_SETUP -#line 301 "program_lexer.l" +#line 299 "program_lexer.l"  { return FOG; }  	YY_BREAK  case 84:  YY_RULE_SETUP -#line 302 "program_lexer.l" +#line 300 "program_lexer.l"  { return FRONT; }  	YY_BREAK  case 85:  YY_RULE_SETUP -#line 303 "program_lexer.l" +#line 301 "program_lexer.l"  { return HALF; }  	YY_BREAK  case 86:  YY_RULE_SETUP -#line 304 "program_lexer.l" +#line 302 "program_lexer.l"  { return INVERSE; }  	YY_BREAK  case 87:  YY_RULE_SETUP -#line 305 "program_lexer.l" +#line 303 "program_lexer.l"  { return INVTRANS; }  	YY_BREAK  case 88:  YY_RULE_SETUP -#line 306 "program_lexer.l" +#line 304 "program_lexer.l"  { return LIGHT; }  	YY_BREAK  case 89:  YY_RULE_SETUP -#line 307 "program_lexer.l" +#line 305 "program_lexer.l"  { return LIGHTMODEL; }  	YY_BREAK  case 90:  YY_RULE_SETUP -#line 308 "program_lexer.l" +#line 306 "program_lexer.l"  { return LIGHTPROD; }  	YY_BREAK  case 91:  YY_RULE_SETUP -#line 309 "program_lexer.l" +#line 307 "program_lexer.l"  { return LOCAL; }  	YY_BREAK  case 92:  YY_RULE_SETUP -#line 310 "program_lexer.l" +#line 308 "program_lexer.l"  { return MATERIAL; }  	YY_BREAK  case 93:  YY_RULE_SETUP -#line 311 "program_lexer.l" +#line 309 "program_lexer.l"  { return MAT_PROGRAM; }  	YY_BREAK  case 94:  YY_RULE_SETUP -#line 312 "program_lexer.l" +#line 310 "program_lexer.l"  { return MATRIX; }  	YY_BREAK  case 95:  YY_RULE_SETUP -#line 313 "program_lexer.l" +#line 311 "program_lexer.l"  { return_token_or_DOT(require_ARB_vp, MATRIXINDEX); }  	YY_BREAK  case 96:  YY_RULE_SETUP -#line 314 "program_lexer.l" +#line 312 "program_lexer.l"  { return MODELVIEW; }  	YY_BREAK  case 97:  YY_RULE_SETUP -#line 315 "program_lexer.l" +#line 313 "program_lexer.l"  { return MVP; }  	YY_BREAK  case 98:  YY_RULE_SETUP -#line 316 "program_lexer.l" +#line 314 "program_lexer.l"  { return_token_or_DOT(require_ARB_vp, NORMAL); }  	YY_BREAK  case 99:  YY_RULE_SETUP -#line 317 "program_lexer.l" +#line 315 "program_lexer.l"  { return OBJECT; }  	YY_BREAK  case 100:  YY_RULE_SETUP -#line 318 "program_lexer.l" +#line 316 "program_lexer.l"  { return PALETTE; }  	YY_BREAK  case 101:  YY_RULE_SETUP -#line 319 "program_lexer.l" +#line 317 "program_lexer.l"  { return PARAMS; }  	YY_BREAK  case 102:  YY_RULE_SETUP -#line 320 "program_lexer.l" +#line 318 "program_lexer.l"  { return PLANE; }  	YY_BREAK  case 103:  YY_RULE_SETUP -#line 321 "program_lexer.l" +#line 319 "program_lexer.l"  { return_token_or_DOT(require_ARB_vp, POINT_TOK); }  	YY_BREAK  case 104:  YY_RULE_SETUP -#line 322 "program_lexer.l" +#line 320 "program_lexer.l"  { return_token_or_DOT(require_ARB_vp, POINTSIZE); }  	YY_BREAK  case 105:  YY_RULE_SETUP -#line 323 "program_lexer.l" +#line 321 "program_lexer.l"  { return POSITION; }  	YY_BREAK  case 106:  YY_RULE_SETUP -#line 324 "program_lexer.l" +#line 322 "program_lexer.l"  { return PRIMARY; }  	YY_BREAK  case 107:  YY_RULE_SETUP -#line 325 "program_lexer.l" +#line 323 "program_lexer.l"  { return PROJECTION; }  	YY_BREAK  case 108:  YY_RULE_SETUP -#line 326 "program_lexer.l" +#line 324 "program_lexer.l"  { return_token_or_DOT(require_ARB_fp, RANGE); }  	YY_BREAK  case 109:  YY_RULE_SETUP -#line 327 "program_lexer.l" +#line 325 "program_lexer.l"  { return ROW; }  	YY_BREAK  case 110:  YY_RULE_SETUP -#line 328 "program_lexer.l" +#line 326 "program_lexer.l"  { return SCENECOLOR; }  	YY_BREAK  case 111:  YY_RULE_SETUP -#line 329 "program_lexer.l" +#line 327 "program_lexer.l"  { return SECONDARY; }  	YY_BREAK  case 112:  YY_RULE_SETUP -#line 330 "program_lexer.l" +#line 328 "program_lexer.l"  { return SHININESS; }  	YY_BREAK  case 113:  YY_RULE_SETUP -#line 331 "program_lexer.l" +#line 329 "program_lexer.l"  { return_token_or_DOT(require_ARB_vp, SIZE_TOK); }  	YY_BREAK  case 114:  YY_RULE_SETUP -#line 332 "program_lexer.l" +#line 330 "program_lexer.l"  { return SPECULAR; }  	YY_BREAK  case 115:  YY_RULE_SETUP -#line 333 "program_lexer.l" +#line 331 "program_lexer.l"  { return SPOT; }  	YY_BREAK  case 116:  YY_RULE_SETUP -#line 334 "program_lexer.l" +#line 332 "program_lexer.l"  { return TEXCOORD; }  	YY_BREAK  case 117:  YY_RULE_SETUP -#line 335 "program_lexer.l" +#line 333 "program_lexer.l"  { return_token_or_DOT(require_ARB_fp, TEXENV); }  	YY_BREAK  case 118:  YY_RULE_SETUP -#line 336 "program_lexer.l" +#line 334 "program_lexer.l"  { return_token_or_DOT(require_ARB_vp, TEXGEN); }  	YY_BREAK  case 119:  YY_RULE_SETUP -#line 337 "program_lexer.l" +#line 335 "program_lexer.l"  { return_token_or_DOT(require_ARB_vp, TEXGEN_Q); }  	YY_BREAK  case 120:  YY_RULE_SETUP -#line 338 "program_lexer.l" +#line 336 "program_lexer.l"  { return_token_or_DOT(require_ARB_vp, TEXGEN_S); }  	YY_BREAK  case 121:  YY_RULE_SETUP -#line 339 "program_lexer.l" +#line 337 "program_lexer.l"  { return_token_or_DOT(require_ARB_vp, TEXGEN_T); }  	YY_BREAK  case 122:  YY_RULE_SETUP -#line 340 "program_lexer.l" +#line 338 "program_lexer.l"  { return TEXTURE; }  	YY_BREAK  case 123:  YY_RULE_SETUP -#line 341 "program_lexer.l" +#line 339 "program_lexer.l"  { return TRANSPOSE; }  	YY_BREAK  case 124:  YY_RULE_SETUP -#line 342 "program_lexer.l" +#line 340 "program_lexer.l"  { return_token_or_DOT(require_ARB_vp, VTXATTRIB); }  	YY_BREAK  case 125:  YY_RULE_SETUP -#line 343 "program_lexer.l" +#line 341 "program_lexer.l"  { return_token_or_DOT(require_ARB_vp, WEIGHT); }  	YY_BREAK  case 126:  YY_RULE_SETUP -#line 345 "program_lexer.l" +#line 343 "program_lexer.l"  { return_token_or_IDENTIFIER(require_ARB_fp, TEXTURE_UNIT); }  	YY_BREAK  case 127:  YY_RULE_SETUP -#line 346 "program_lexer.l" +#line 344 "program_lexer.l"  { return_token_or_IDENTIFIER(require_ARB_fp, TEX_1D); }  	YY_BREAK  case 128:  YY_RULE_SETUP -#line 347 "program_lexer.l" +#line 345 "program_lexer.l"  { return_token_or_IDENTIFIER(require_ARB_fp, TEX_2D); }  	YY_BREAK  case 129:  YY_RULE_SETUP -#line 348 "program_lexer.l" +#line 346 "program_lexer.l"  { return_token_or_IDENTIFIER(require_ARB_fp, TEX_3D); }  	YY_BREAK  case 130:  YY_RULE_SETUP -#line 349 "program_lexer.l" +#line 347 "program_lexer.l"  { return_token_or_IDENTIFIER(require_ARB_fp, TEX_CUBE); }  	YY_BREAK  case 131:  YY_RULE_SETUP -#line 350 "program_lexer.l" +#line 348 "program_lexer.l"  { return_token_or_IDENTIFIER(require_ARB_fp && require_rect, TEX_RECT); }  	YY_BREAK  case 132:  YY_RULE_SETUP -#line 351 "program_lexer.l" +#line 349 "program_lexer.l"  { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW1D); }  	YY_BREAK  case 133:  YY_RULE_SETUP -#line 352 "program_lexer.l" +#line 350 "program_lexer.l"  { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW2D); }  	YY_BREAK  case 134:  YY_RULE_SETUP -#line 353 "program_lexer.l" +#line 351 "program_lexer.l"  { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_rect, TEX_SHADOWRECT); }  	YY_BREAK  case 135:  YY_RULE_SETUP -#line 354 "program_lexer.l" +#line 352 "program_lexer.l"  { return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY1D); }  	YY_BREAK  case 136:  YY_RULE_SETUP -#line 355 "program_lexer.l" +#line 353 "program_lexer.l"  { return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY2D); }  	YY_BREAK  case 137:  YY_RULE_SETUP -#line 356 "program_lexer.l" +#line 354 "program_lexer.l"  { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW1D); }  	YY_BREAK  case 138:  YY_RULE_SETUP -#line 357 "program_lexer.l" +#line 355 "program_lexer.l"  { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW2D); }  	YY_BREAK  case 139:  YY_RULE_SETUP -#line 359 "program_lexer.l" +#line 357 "program_lexer.l"  { return handle_ident(yyextra, yytext, yylval); }  	YY_BREAK  case 140:  YY_RULE_SETUP -#line 361 "program_lexer.l" +#line 359 "program_lexer.l"  { return DOT_DOT; }  	YY_BREAK  case 141:  YY_RULE_SETUP -#line 363 "program_lexer.l" +#line 361 "program_lexer.l"  {     yylval->integer = strtol(yytext, NULL, 10);     return INTEGER; @@ -2237,7 +2249,7 @@ YY_RULE_SETUP  	YY_BREAK  case 142:  YY_RULE_SETUP -#line 367 "program_lexer.l" +#line 365 "program_lexer.l"  {     yylval->real = _mesa_strtod(yytext, NULL);     return REAL; @@ -2249,7 +2261,7 @@ case 143:  yyg->yy_c_buf_p = yy_cp -= 1;  YY_DO_BEFORE_ACTION; /* set up yytext again */  YY_RULE_SETUP -#line 371 "program_lexer.l" +#line 369 "program_lexer.l"  {     yylval->real = _mesa_strtod(yytext, NULL);     return REAL; @@ -2257,7 +2269,7 @@ YY_RULE_SETUP  	YY_BREAK  case 144:  YY_RULE_SETUP -#line 375 "program_lexer.l" +#line 373 "program_lexer.l"  {     yylval->real = _mesa_strtod(yytext, NULL);     return REAL; @@ -2265,7 +2277,7 @@ YY_RULE_SETUP  	YY_BREAK  case 145:  YY_RULE_SETUP -#line 379 "program_lexer.l" +#line 377 "program_lexer.l"  {     yylval->real = _mesa_strtod(yytext, NULL);     return REAL; @@ -2273,7 +2285,7 @@ YY_RULE_SETUP  	YY_BREAK  case 146:  YY_RULE_SETUP -#line 384 "program_lexer.l" +#line 382 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_NOOP;     yylval->swiz_mask.mask = WRITEMASK_XYZW; @@ -2282,7 +2294,7 @@ YY_RULE_SETUP  	YY_BREAK  case 147:  YY_RULE_SETUP -#line 390 "program_lexer.l" +#line 388 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_XY @@ -2292,7 +2304,7 @@ YY_RULE_SETUP  	YY_BREAK  case 148:  YY_RULE_SETUP -#line 396 "program_lexer.l" +#line 394 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_XZW; @@ -2301,7 +2313,7 @@ YY_RULE_SETUP  	YY_BREAK  case 149:  YY_RULE_SETUP -#line 401 "program_lexer.l" +#line 399 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_YZW; @@ -2310,7 +2322,7 @@ YY_RULE_SETUP  	YY_BREAK  case 150:  YY_RULE_SETUP -#line 407 "program_lexer.l" +#line 405 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_X @@ -2320,7 +2332,7 @@ YY_RULE_SETUP  	YY_BREAK  case 151:  YY_RULE_SETUP -#line 413 "program_lexer.l" +#line 411 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_Y @@ -2330,7 +2342,7 @@ YY_RULE_SETUP  	YY_BREAK  case 152:  YY_RULE_SETUP -#line 419 "program_lexer.l" +#line 417 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_ZW; @@ -2339,7 +2351,7 @@ YY_RULE_SETUP  	YY_BREAK  case 153:  YY_RULE_SETUP -#line 425 "program_lexer.l" +#line 423 "program_lexer.l"  {     const unsigned s = swiz_from_char(yytext[1]);     yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s); @@ -2349,7 +2361,7 @@ YY_RULE_SETUP  	YY_BREAK  case 154:  YY_RULE_SETUP -#line 432 "program_lexer.l" +#line 430 "program_lexer.l"  {     yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]),  					    swiz_from_char(yytext[2]), @@ -2361,7 +2373,7 @@ YY_RULE_SETUP  	YY_BREAK  case 155:  YY_RULE_SETUP -#line 441 "program_lexer.l" +#line 439 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_NOOP;     yylval->swiz_mask.mask = WRITEMASK_XYZW; @@ -2370,7 +2382,7 @@ YY_RULE_SETUP  	YY_BREAK  case 156:  YY_RULE_SETUP -#line 447 "program_lexer.l" +#line 445 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_XY @@ -2380,7 +2392,7 @@ YY_RULE_SETUP  	YY_BREAK  case 157:  YY_RULE_SETUP -#line 453 "program_lexer.l" +#line 451 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_XZW; @@ -2389,7 +2401,7 @@ YY_RULE_SETUP  	YY_BREAK  case 158:  YY_RULE_SETUP -#line 458 "program_lexer.l" +#line 456 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_YZW; @@ -2398,7 +2410,7 @@ YY_RULE_SETUP  	YY_BREAK  case 159:  YY_RULE_SETUP -#line 464 "program_lexer.l" +#line 462 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_X @@ -2408,7 +2420,7 @@ YY_RULE_SETUP  	YY_BREAK  case 160:  YY_RULE_SETUP -#line 470 "program_lexer.l" +#line 468 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_Y @@ -2418,7 +2430,7 @@ YY_RULE_SETUP  	YY_BREAK  case 161:  YY_RULE_SETUP -#line 476 "program_lexer.l" +#line 474 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_ZW; @@ -2427,7 +2439,7 @@ YY_RULE_SETUP  	YY_BREAK  case 162:  YY_RULE_SETUP -#line 482 "program_lexer.l" +#line 480 "program_lexer.l"  {     const unsigned s = swiz_from_char(yytext[1]);     yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s); @@ -2437,7 +2449,7 @@ YY_RULE_SETUP  	YY_BREAK  case 163:  YY_RULE_SETUP -#line 490 "program_lexer.l" +#line 488 "program_lexer.l"  {     if (require_ARB_vp) {        return TEXGEN_R; @@ -2451,7 +2463,7 @@ YY_RULE_SETUP  	YY_BREAK  case 164:  YY_RULE_SETUP -#line 501 "program_lexer.l" +#line 499 "program_lexer.l"  {     yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]),  					    swiz_from_char(yytext[2]), @@ -2463,13 +2475,13 @@ YY_RULE_SETUP  	YY_BREAK  case 165:  YY_RULE_SETUP -#line 510 "program_lexer.l" +#line 508 "program_lexer.l"  { return DOT; }  	YY_BREAK  case 166:  /* rule 166 can match eol */  YY_RULE_SETUP -#line 512 "program_lexer.l" +#line 510 "program_lexer.l"  {     yylloc->first_line++;     yylloc->first_column = 1; @@ -2480,7 +2492,7 @@ YY_RULE_SETUP  	YY_BREAK  case 167:  YY_RULE_SETUP -#line 519 "program_lexer.l" +#line 517 "program_lexer.l"  /* eat whitespace */ ;  	YY_BREAK  case 168: @@ -2488,20 +2500,20 @@ case 168:  yyg->yy_c_buf_p = yy_cp -= 1;  YY_DO_BEFORE_ACTION; /* set up yytext again */  YY_RULE_SETUP -#line 520 "program_lexer.l" +#line 518 "program_lexer.l"  /* eat comments */ ;  	YY_BREAK  case 169:  YY_RULE_SETUP -#line 521 "program_lexer.l" +#line 519 "program_lexer.l"  { return yytext[0]; }  	YY_BREAK  case 170:  YY_RULE_SETUP -#line 522 "program_lexer.l" +#line 520 "program_lexer.l"  ECHO;  	YY_BREAK -#line 2505 "lex.yy.c" +#line 2517 "lex.yy.c"  case YY_STATE_EOF(INITIAL):  	yyterminate(); @@ -3269,8 +3281,8 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)  /** Setup the input buffer state to scan the given bytes. The next call to yylex() will   * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.   * @param yyscanner The scanner object.   * @return the newly allocated buffer state object.   */ @@ -3676,7 +3688,7 @@ void yyfree (void * ptr , yyscan_t yyscanner)  #define YYTABLES_NAME "yytables" -#line 522 "program_lexer.l" +#line 520 "program_lexer.l" diff --git a/src/mesa/shader/program_lexer.l b/src/mesa/shader/program_lexer.l index b50fb3c7dc..e8dae7bc26 100644 --- a/src/mesa/shader/program_lexer.l +++ b/src/mesa/shader/program_lexer.l @@ -46,8 +46,7 @@        if (condition) {					\  	 return token;					\        } else {						\ -	 yylval->string = return_string(yyextra, yytext);	\ -	 return IDENTIFIER;				\ +	 return handle_ident(yyextra, yytext, yylval);	\        }							\     } while (0) @@ -71,8 +70,7 @@  	 yylval->temp_inst.Opcode = OPCODE_ ## opcode;	\  	 return token;					\        } else {						\ -	 yylval->string = return_string(yyextra, yytext);		\ -	 return IDENTIFIER;				\ +	 return handle_ident(yyextra, yytext, yylval);	\        }							\     } while (0) @@ -163,7 +161,7 @@ swiz_from_char(char c)  static int  handle_ident(struct asm_parser_state *state, const char *text, YYSTYPE *lval)  { -   lval->string = strdup(text); +   lval->string = return_string(state, text);     return (_mesa_symbol_table_find_symbol(state->st, 0, text) == NULL)        ? IDENTIFIER : USED_IDENTIFIER; | 
