glsl2: Make lowp, mediump, highp, and precision identifiers pre-1.20.
authorEric Anholt <eric@anholt.net>
Wed, 28 Jul 2010 23:11:26 +0000 (16:11 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 29 Jul 2010 00:32:11 +0000 (17:32 -0700)
Fixes glsl-precision-110.

src/glsl/glsl_lexer.cpp
src/glsl/glsl_lexer.lpp

index ecb4b857bbd75108c151ad572060dad320023ca7..e5ca1bd0a51e717e18430fa5b703463b6a459569 100644 (file)
@@ -1994,26 +1994,54 @@ return USING;
 case 140:
 YY_RULE_SETUP
 #line 321 "glsl_lexer.lpp"
-return LOWP;
+{
+                 if (yyextra->language_version >= 120){
+                     return LOWP;
+                  } else {
+                     yylval->identifier = strdup(yytext);
+                     return IDENTIFIER;
+                  }
+               }
        YY_BREAK
 case 141:
 YY_RULE_SETUP
-#line 322 "glsl_lexer.lpp"
-return MEDIUMP;
+#line 329 "glsl_lexer.lpp"
+{
+                 if (yyextra->language_version >= 120){
+                     return MEDIUMP;
+                  } else {
+                     yylval->identifier = strdup(yytext);
+                     return IDENTIFIER;
+                  }
+               }return MEDIUMP;
        YY_BREAK
 case 142:
 YY_RULE_SETUP
-#line 323 "glsl_lexer.lpp"
-return HIGHP;
+#line 337 "glsl_lexer.lpp"
+{
+                 if (yyextra->language_version >= 120){
+                     return HIGHP;
+                  } else {
+                     yylval->identifier = strdup(yytext);
+                     return IDENTIFIER;
+                  }
+               }
        YY_BREAK
 case 143:
 YY_RULE_SETUP
-#line 324 "glsl_lexer.lpp"
-return PRECISION;
+#line 345 "glsl_lexer.lpp"
+{
+                 if (yyextra->language_version >= 120){
+                     return PRECISION;
+                  } else {
+                     yylval->identifier = strdup(yytext);
+                     return IDENTIFIER;
+                  }
+               }
        YY_BREAK
 case 144:
 YY_RULE_SETUP
-#line 326 "glsl_lexer.lpp"
+#line 354 "glsl_lexer.lpp"
 {
                            struct _mesa_glsl_parse_state *state = yyextra;
                            void *ctx = state;  
@@ -2023,15 +2051,15 @@ YY_RULE_SETUP
        YY_BREAK
 case 145:
 YY_RULE_SETUP
-#line 333 "glsl_lexer.lpp"
+#line 361 "glsl_lexer.lpp"
 { return yytext[0]; }
        YY_BREAK
 case 146:
 YY_RULE_SETUP
-#line 335 "glsl_lexer.lpp"
+#line 363 "glsl_lexer.lpp"
 ECHO;
        YY_BREAK
-#line 2035 "glsl_lexer.cpp"
+#line 2063 "glsl_lexer.cpp"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(PP):
        yyterminate();
@@ -3173,7 +3201,7 @@ void _mesa_glsl_free (void * ptr , yyscan_t yyscanner)
 
 #define YYTABLES_NAME "yytables"
 
-#line 335 "glsl_lexer.lpp"
+#line 363 "glsl_lexer.lpp"
 
 
 
index ebfea37597d37288617d1935ddf547065d45d485..702e79a363e6349b0e7f838679abbbf399093ab2 100644 (file)
@@ -318,10 +318,38 @@ namespace return NAMESPACE;
 using          return USING;
 
     /* Additional reserved words in GLSL 1.20. */
-lowp           return LOWP;
-mediump                return MEDIUMP;
-highp          return HIGHP;
-precision      return PRECISION;
+lowp           {
+                 if (yyextra->language_version >= 120){
+                     return LOWP;
+                  } else {
+                     yylval->identifier = strdup(yytext);
+                     return IDENTIFIER;
+                  }
+               }
+mediump                {
+                 if (yyextra->language_version >= 120){
+                     return MEDIUMP;
+                  } else {
+                     yylval->identifier = strdup(yytext);
+                     return IDENTIFIER;
+                  }
+               }return MEDIUMP;
+highp          {
+                 if (yyextra->language_version >= 120){
+                     return HIGHP;
+                  } else {
+                     yylval->identifier = strdup(yytext);
+                     return IDENTIFIER;
+                  }
+               }
+precision      {
+                 if (yyextra->language_version >= 120){
+                     return PRECISION;
+                  } else {
+                     yylval->identifier = strdup(yytext);
+                     return IDENTIFIER;
+                  }
+               }
 
 [_a-zA-Z][_a-zA-Z0-9]* {
                            struct _mesa_glsl_parse_state *state = yyextra;