-[0-9]+ {
- yylval->ival = atoi(yytext);
- return T_INT;
- }
-[0-9]*\.[0-9]+(e[0-9]+)? {
- yylval->fval = atof(yytext);
- return T_FLOAT;
- }
-\".*\" {
- yylval->str = strdup(yytext);
- return T_STRING;
- }
+(0x)?[0-9]+ {
+ sscanf(yytext, "%i", &(yylval->ival));
+ return T_INT;
+}
+[0-9]*\.[0-9]+(e[0-9]+)? {
+ sscanf(yytext, "%f", &(yylval->fval));
+ return T_FLOAT;
+}
+\".*\" {
+ yylval->str = strdup(yytext);
+ return T_STRING;
+}