0x{XIGIT}+ {
char *e;
- long int l;
+ unsigned long int l;
errno = 0;
l = strtoul(yytext+2, &e, 16);
- if (e && *e || errno == ERANGE || (long int)(int) l != l)
+ if (e && *e || errno == ERANGE || (unsigned long int)(unsigned int) l != l)
cf_error("Number out of range");
cf_lval.i = l;
return NUM;
{DIGIT}+ {
char *e;
- long int l;
+ unsigned long int l;
errno = 0;
l = strtoul(yytext, &e, 10);
- if (e && *e || errno == ERANGE || (long int)(int) l != l)
+ if (e && *e || errno == ERANGE || (unsigned long int)(unsigned int) l != l)
cf_error("Number out of range");
cf_lval.i = l;
return NUM;