Sign in to follow this  
Jason Goepel

Floating Point Literals

Recommended Posts

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

 

[source]double 1e5;[/source]

 

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.

 

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

 

becomes...

 

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

 

Thanks

Edited by Jason Goepel

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this