hcl/scanner: actually scan all things with exponents as floats

This commit is contained in:
Mitchell Hashimoto 2015-11-06 23:33:25 -08:00
parent 9501fc5ad0
commit 6cc18eb70b
2 changed files with 34 additions and 36 deletions

View File

@ -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 == '.' {

View File

@ -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"},