[swift-users] Hexadecimal floating-point literals
Joe Groff
jgroff at apple.com
Mon Jun 27 20:09:03 CDT 2016
> On Jun 26, 2016, at 12:50 AM, Toni Suter via swift-users <swift-users at swift.org> wrote:
>
> Hi,
>
> I have a question regarding hexadecimal floating-point literals. According to the Lexical Structure (https://developer.apple.com/library/prerelease/content/documentation/Swift/Conceptual/Swift_Programming_Language/LexicalStructure.html)
> it is not possible to have a hex floating-point literal without the exponent. At first I thought this makes sense.
> How else would the lexer / parser know if 0x123.beef is a hex floating-point literal or a hex integer literal with a property 'beef'?
> However, if I define such a property on Int, it doesn’t work:
>
> extension Int {
> var beef: Int {
> return 42
> }
> }
>
> print(12.beef) // works
> print(0b1001.beef) // works
> print(0o77.beef) // works
> print(0xabc.beef) // error: hexadecimal floating point literal must end with an exponent
>
> Is this just to avoid confusion for the programmer? Or is there some other reason?
The lexer failed to backtrack if there wasn't a valid significand and exponent, but that was recently fixed, so this should work now. See https://github.com/apple/swift/pull/3124 .
-Joe
More information about the swift-users
mailing list