]> git.draconx.ca Git - cdecl99.git/blobdiff - src/scan.l
Add support for array declarators.
[cdecl99.git] / src / scan.l
index f2e92a8703509d32c734abfa7a42391ab7d9559c..b17d4ee6802d44acfafdb974a9b0313fc8bb86fa 100644 (file)
@@ -30,6 +30,7 @@
 %}
 
 IDENT [_[:alpha:]][_[:alnum:]]*
+INTEGER 0x[[:xdigit:]]+|0[0-7]+|[[:digit:]]+
 
 %%
 
@@ -69,6 +70,19 @@ IDENT [_[:alpha:]][_[:alnum:]]*
 "union"    return T_UNION;
 "enum"     return T_ENUM;
 
+{INTEGER} {
+       char *end;
+
+       errno = 0;
+       yylval->uintval = strtoumax(yytext, &end, 0);
+       if (errno == ERANGE)
+               lex_error("integer constant out of range");
+       if (*end)
+               lex_error("invalid integer constant");
+
+       return T_UINT;
+}
+
 {IDENT} {
        yylval->strval = malloc(yyleng+1);
        if (!yylval->strval)