}
}
if(yytext[0]=='-') {
- avm2_lval.number_int = atoi(s);
- return T_INT;
+ int v = atoi(s);
+ avm2_lval.number_int = v;
+ if(v>-128)
+ return T_BYTE;
+ else if(v>=-32768)
+ return T_SHORT;
+ else
+ return T_INT;
} else {
unsigned int v = 0;
for(t=0;t<yyleng;t++) {
v+=yytext[t]-'0';
}
avm2_lval.number_uint = v;
- if(v<256)
+ if(v<128)
return T_BYTE;
- /* useless- numbers are usually smaller if stored in the constant pool
- else if(v<0x80000000u)
- return T_SHORT;*/
+ else if(v<32768)
+ return T_SHORT;
else
return T_UINT;
}