diff --git a/hcl/scanner/scanner.go b/hcl/scanner/scanner.go index 6724858..f6ed1e9 100644 --- a/hcl/scanner/scanner.go +++ b/hcl/scanner/scanner.go @@ -287,10 +287,9 @@ func (s *Scanner) scanNumber(ch rune) token.Type { } } - // literals of form 01e10 are treates as Numbers in HCL, which differs from Go. if ch == 'e' || ch == 'E' { ch = s.scanExponent(ch) - return token.NUMBER + return token.FLOAT } if ch == '.' { @@ -315,10 +314,9 @@ func (s *Scanner) scanNumber(ch rune) token.Type { s.scanMantissa(ch) ch = s.next() // seek forward - // literals of form 1e10 are treates as Numbers in HCL, which differs from Go. if ch == 'e' || ch == 'E' { ch = s.scanExponent(ch) - return token.NUMBER + return token.FLOAT } if ch == '.' { diff --git a/hcl/scanner/scanner_test.go b/hcl/scanner/scanner_test.go index 18e30e4..1030d39 100644 --- a/hcl/scanner/scanner_test.go +++ b/hcl/scanner/scanner_test.go @@ -117,22 +117,6 @@ var tokenLists = map[string][]tokenPair{ {token.NUMBER, "0X42"}, {token.NUMBER, "0X123456789abcDEF"}, {token.NUMBER, "0X" + f100}, - {token.NUMBER, "0e0"}, - {token.NUMBER, "1e0"}, - {token.NUMBER, "42e0"}, - {token.NUMBER, "01234567890e0"}, - {token.NUMBER, "0E0"}, - {token.NUMBER, "1E0"}, - {token.NUMBER, "42E0"}, - {token.NUMBER, "01234567890E0"}, - {token.NUMBER, "0e+10"}, - {token.NUMBER, "1e-10"}, - {token.NUMBER, "42e+10"}, - {token.NUMBER, "01234567890e-10"}, - {token.NUMBER, "0E+10"}, - {token.NUMBER, "1E-10"}, - {token.NUMBER, "42E+10"}, - {token.NUMBER, "01234567890E-10"}, {token.NUMBER, "-0"}, {token.NUMBER, "-1"}, {token.NUMBER, "-9"}, @@ -155,22 +139,6 @@ var tokenLists = map[string][]tokenPair{ {token.NUMBER, "-0X42"}, {token.NUMBER, "-0X123456789abcDEF"}, {token.NUMBER, "-0X" + f100}, - {token.NUMBER, "-0e0"}, - {token.NUMBER, "-1e0"}, - {token.NUMBER, "-42e0"}, - {token.NUMBER, "-01234567890e0"}, - {token.NUMBER, "-0E0"}, - {token.NUMBER, "-1E0"}, - {token.NUMBER, "-42E0"}, - {token.NUMBER, "-01234567890E0"}, - {token.NUMBER, "-0e+10"}, - {token.NUMBER, "-1e-10"}, - {token.NUMBER, "-42e+10"}, - {token.NUMBER, "-01234567890e-10"}, - {token.NUMBER, "-0E+10"}, - {token.NUMBER, "-1E-10"}, - {token.NUMBER, "-42E+10"}, - {token.NUMBER, "-01234567890E-10"}, }, "float": []tokenPair{ {token.FLOAT, "0."}, @@ -185,6 +153,22 @@ var tokenLists = map[string][]tokenPair{ {token.FLOAT, "1.0"}, {token.FLOAT, "42.0"}, {token.FLOAT, "01234567890.0"}, + {token.FLOAT, "0e0"}, + {token.FLOAT, "1e0"}, + {token.FLOAT, "42e0"}, + {token.FLOAT, "01234567890e0"}, + {token.FLOAT, "0E0"}, + {token.FLOAT, "1E0"}, + {token.FLOAT, "42E0"}, + {token.FLOAT, "01234567890E0"}, + {token.FLOAT, "0e+10"}, + {token.FLOAT, "1e-10"}, + {token.FLOAT, "42e+10"}, + {token.FLOAT, "01234567890e-10"}, + {token.FLOAT, "0E+10"}, + {token.FLOAT, "1E-10"}, + {token.FLOAT, "42E+10"}, + {token.FLOAT, "01234567890E-10"}, {token.FLOAT, "01.8e0"}, {token.FLOAT, "1.4e0"}, {token.FLOAT, "42.2e0"}, @@ -205,6 +189,22 @@ var tokenLists = map[string][]tokenPair{ {token.FLOAT, "-1.0"}, {token.FLOAT, "-42.0"}, {token.FLOAT, "-01234567890.0"}, + {token.FLOAT, "-0e0"}, + {token.FLOAT, "-1e0"}, + {token.FLOAT, "-42e0"}, + {token.FLOAT, "-01234567890e0"}, + {token.FLOAT, "-0E0"}, + {token.FLOAT, "-1E0"}, + {token.FLOAT, "-42E0"}, + {token.FLOAT, "-01234567890E0"}, + {token.FLOAT, "-0e+10"}, + {token.FLOAT, "-1e-10"}, + {token.FLOAT, "-42e+10"}, + {token.FLOAT, "-01234567890e-10"}, + {token.FLOAT, "-0E+10"}, + {token.FLOAT, "-1E-10"}, + {token.FLOAT, "-42E+10"}, + {token.FLOAT, "-01234567890E-10"}, {token.FLOAT, "-01.8e0"}, {token.FLOAT, "-1.4e0"}, {token.FLOAT, "-42.2e0"},