glsl: Add support for the 'u' and 'U' unsigned integer suffixes.
authorKenneth Graunke <kenneth@whitecape.org>
Sun, 14 Nov 2010 07:09:43 +0000 (23:09 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 15 Nov 2010 21:33:58 +0000 (13:33 -0800)
src/glsl/glsl_lexer.lpp

index 26cf30581c1342ad11d643a742311d7362a8e34d..7a3f1a67e66c9f4b1a932361524a7811ee0209cc 100644 (file)
@@ -36,6 +36,8 @@
 
 #define YY_USER_INIT yylineno = 0; yycolumn = 0;
 
+#define IS_UINT (yytext[yyleng - 1] == 'u' || yytext[yyleng - 1] == 'U')
+
 /* A macro for handling reserved words and keywords across language versions.
  *
  * Certain words start out as identifiers, become reserved words in
@@ -277,17 +279,17 @@ layout            {
 \|=            return OR_ASSIGN;
 -=             return SUB_ASSIGN;
 
-[1-9][0-9]*            {
+[1-9][0-9]*[uU]?       {
                            yylval->n = strtol(yytext, NULL, 10);
-                           return INTCONSTANT;
+                           return IS_UINT ? UINTCONSTANT : INTCONSTANT;
                        }
-0[xX][0-9a-fA-F]+      {
+0[xX][0-9a-fA-F]+[uU]? {
                            yylval->n = strtol(yytext + 2, NULL, 16);
-                           return INTCONSTANT;
+                           return IS_UINT ? UINTCONSTANT : INTCONSTANT;
                        }
-0[0-7]*                        {
+0[0-7]*[uU]?           {
                            yylval->n = strtol(yytext, NULL, 8);
-                           return INTCONSTANT;
+                           return IS_UINT ? UINTCONSTANT : INTCONSTANT;
                        }
 
 [0-9]+\.[0-9]+([eE][+-]?[0-9]+)?[fF]?  {