Well strictly speaking the IEEE754 floating point standard, e.g.

        var half : real = 0x1p-1; // 0.5
        var four : real = 0x1p2; // 4.0
        var _128 : real = 0x1p7; // 128.0

Can somebody please stick that onto what is already very long list?

If somebody wants to correctly point me to the place in the compiler which 
interpret's constants, I can probably hack it in.

With any apologies for underestimating the work in advance, but I think 
that this is just adding before line 98 new definitions like, and I know 
my rough attempt at a definition is wrong,

        floatLiteral4   0[xX]{hexDigit}+[pP][\+\-]?{digit}+
        floatLiteral5   0[xX]{hexDigit}+"."{hexDigit}+[pP][\+\-]?{digit}+

and appending to line 98 (i.e. the definition of floatLiteral

        |{floatLiteral4}|{floatLiteral5}

Because the (bison/yacc) compiler ultimately calls

        'strtod'

to interpret the string (to convert it to real) down in 'build.cpp', it 
should be able to handle this, except, ...., and I could not figure out 
all the options used. I am assuming you do not then explicitly force the 
C++ compiler to NOT handle C99 constants, which by default a strict C++ 
compiler should not do, but which g++ does.

Thanks - Damian

When I have time to burn, I will look at the grammar below which I think 
is correct for the new IEEE 754 standard and deduce up a clean Lex/Flex 
definition for floatLiteral4 and floatLiteral5. Sorry my Flex/Lex and 
Yacc/Bison is very, very rusty so the above was very crude.

Digits
        (one of)
        0 1 2 3 4 5 6 7 8 9

HexDigits
        (one of)
        0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F

SignedInteger:
        [Sign] Digits

Sign:
        (one of)
        + -

FloatTypeSuffix:
        (one of)
        f F d D

HexNumeral
        0 x [HexDigits]
        0 X [HexDigits]

HexSignificand:
        HexNumeral [.]
        0 x [HexDigits] . HexDigits
        0 X [HexDigits] . HexDigits

BinaryExponentIndicator:
        (one of)
        p P

BinaryExponent:
        BinaryExponentIndicator SignedInteger

HexadecimalFloatingPointLiteral:
        HexSignificand BinaryExponent [FloatTypeSuffix]

Note that because CHAPEL only ever converts (inside build.cpp) to double 
for floating point constants, i.e. never calls 'strtof', we might need to 
strip the

        FloatTypeSuffix

before feeding the constant to 'strtod'. .... Yes, that needs more 
thought.

Pacific Engineering Systems International, 277-279 Broadway, Glebe NSW 2037
Ph:+61-2-8571-0847 .. Fx:+61-2-9692-9623 | unsolicited email not wanted here
Views & opinions here are mine and not those of any past or present employer

------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
Chapel-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/chapel-users

Reply via email to