}
bool require_digit = false;
- if(iter!=source_end && (*iter=='e' || *iter=='E'))
+ if(iter==source_end)
+ ;
+ else if(*iter=='e' || *iter=='E')
{
number += *iter++;
if(iter!=source_end && (*iter=='-' || *iter=='+'))
else
break;
}
+ if(!require_digit && iter!=source_end && *iter=='f')
+ number += *iter++;
}
+ else if(*iter=='u' || *iter=='f')
+ number += *iter++;
if(require_digit)
throw syntax_error(location, number, "Incomplete numeric literal");
- else if(isalnum(*iter) || *iter=='_')
+ else if(iter!=source_end && (isalnum(*iter) || *iter=='_'))
throw syntax_error(location, number, "Garbage at end of numeric literal");
return number;