Complete floating point literals

KennyTM~ kennytm at gmail.com
Sun Jul 10 11:45:58 PDT 2011


On Jul 11, 11 02:03, bearophile wrote:
> Daniel Murphy:
>
>> If the only reason for removing 1.f and 1.L is to aid ufcs
>
> It's not the only reason, it's also a special case of the rule that asks for a zero.
>
>
>> we should also get rid of leading underscores after the decimal
>> point.  eg 1._3 also conflicts with ufcs.
>
> I see (this doesn't look nice regardless of UFCS, but changing it introduces a special case in the use of the underscore).
>

No special case needed. Just complicate the grammar to

     // in terms of regex: [0-9][0-9_]*

     DecimalDigits:
        DecimalDigit
        DecimalDigit DecimalDigitsOrUnderscores

     DecimalDigitsOrUnderscores:
        DecimalDigitOrUnderscore
        DecimalDigitOrUnderscore DecimalDigitsOrUnderscores

     DecimalDigit:
        0
        NonZeroDigit

     DecimalDigitOrUnderscore
        _
        DecimalDigit

(similar for HexDigits)

is enough to get rid of leading underscores. (See also 
http://d.puremagic.com/issues/show_bug.cgi?id=2734) But I'd prefer 
keeping the grammar simple and require the programmer to add '(' ')'

     (1)._1;
     (4)._0f;
     (0xf).deep-2;

or a space ' '

     1 ._1;
     4 ._0f;
     0xf .deep-2;

if they really meant to.

>
>> And don't forget hex floating point literals.
>
> Right.
>
> Bye,
> bearophile



More information about the Digitalmars-d mailing list