• Robert Griesemer's avatar
    cmd/compile: accept new Go2 number literals · ceb849dd
    Robert Griesemer authored
    This CL introduces compiler support for the new binary and octal integer
    literals, hexadecimal floats, and digit separators for all number literals.
    
    The new Go 2 number literal scanner accepts the following liberal format:
    
    number   = [ prefix ] digits [ "." digits ] [ exponent ] [ "i" ] .
    prefix   = "0" [ "b" |"B" | "o" | "O" | "x" | "X" ] .
    digits   = { digit | "_" } .
    exponent = ( "e" | "E" | "p" | "P" ) [ "+" | "-" ] digits .
    
    If the number starts with "0x" or "0X", digit is any hexadecimal digit;
    otherwise, digit is any decimal digit. If the accepted number is not valid,
    errors are reported accordingly.
    
    See the new test cases in scanner_test.go for a selection of valid and
    invalid numbers and the respective error messages.
    
    R=Go1.13
    
    Updates #12711.
    Updates #19308.
    Updates #28493.
    Updates #29008.
    
    Change-Id: Ic8febc7bd4dc5186b16a8c8897691e81125cf0ca
    Reviewed-on: https://go-review.googlesource.com/c/157677Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
    Reviewed-by: default avatarRuss Cox <rsc@golang.org>
    ceb849dd
scanner.go 16.4 KB