• Create Account

### #ActualJason Goepel

Posted 20 May 2013 - 09:34 AM

I'm not sure if this is intentional or not, but the following produces produces a compiler error.

double 1e5;

It looks like the parser is treating the "1" character as a complete token and an integer literal, so the "e" character is unexpected.  The function "asStringScanDouble", however, is able to convert the string "1e5" to the appropriate double.

The parser requires a "." for all floating point literals.  Can we change the parser to also interpret the presence of the "e" or "E" character as a double?

The following change to the asCTokenizer::IsConstant function (line 258 of "as_tokenizer.cpp") seems to be the only change needed to make this happen.

if( n < sourceLength && source[n] == '.' )

becomes...

if( n < sourceLength && (source[n] == '.' || source[n] =='e' || source[n] == 'E') )

Thanks

### #1Jason Goepel

Posted 20 May 2013 - 09:33 AM

I'm not sure if this is intentional or not, but the following produces produces a compiler error.

double 1e5;

It looks like the parser is treating the "1" character as a complete token and an integer literal, so the "e" character is unexpected.  The function "asStringScanDouble", however, is able to convert the string "1e5" to the appropriate double.

The parser requires a "." for all floating point literals.  Can we change the parser to also interpret the presence of the "e" or "E" character as a double?

The following change to line 258 of "as_tokenizer.cpp" seems to be the only change needed to make this happen.

if( n < sourceLength && source[n] == '.' )

becomes...

if( n < sourceLength && (source[n] == '.' || source[n] =='e' || source[n] == 'E') )

Thanks

PARTNERS