scanner: negative float and int should be supported as well

This commit is contained in:
Fatih Arslan 2015-10-19 02:11:07 +03:00
parent 3c21f6b72b
commit 1a63f537eb
2 changed files with 68 additions and 5 deletions

View File

@ -189,7 +189,12 @@ func (s *Scanner) Scan() token.Token {
case '+':
tok = token.ADD
case '-':
tok = token.SUB
if isDecimal(s.peek()) {
ch := s.next()
tok = s.scanNumber(ch)
} else {
tok = token.SUB
}
default:
s.err("illegal char")
}

View File

@ -52,7 +52,7 @@ var tokenLists = map[string][]tokenPair{
{token.BOOL, "true"},
{token.BOOL, "false"},
},
"identoken.t": []tokenPair{
"ident": []tokenPair{
{token.IDENT, "a"},
{token.IDENT, "a0"},
{token.IDENT, "foobar"},
@ -70,7 +70,7 @@ var tokenLists = map[string][]tokenPair{
{token.IDENT, "foo६४"},
{token.IDENT, "bar"},
},
"stritoken.ng": []tokenPair{
"string": []tokenPair{
{token.STRING, `" "`},
{token.STRING, `"a"`},
{token.STRING, `"本"`},
@ -92,7 +92,7 @@ var tokenLists = map[string][]tokenPair{
{token.STRING, `"\U0000ffAB"`},
{token.STRING, `"` + f100 + `"`},
},
"numbtoken.er": []tokenPair{
"number": []tokenPair{
{token.NUMBER, "0"},
{token.NUMBER, "1"},
{token.NUMBER, "9"},
@ -131,8 +131,46 @@ var tokenLists = map[string][]tokenPair{
{token.NUMBER, "1E-10"},
{token.NUMBER, "42E+10"},
{token.NUMBER, "01234567890E-10"},
{token.NUMBER, "-0"},
{token.NUMBER, "-1"},
{token.NUMBER, "-9"},
{token.NUMBER, "-42"},
{token.NUMBER, "-1234567890"},
{token.NUMBER, "-00"},
{token.NUMBER, "-01"},
{token.NUMBER, "-07"},
{token.NUMBER, "-042"},
{token.NUMBER, "-01234567"},
{token.NUMBER, "-0x0"},
{token.NUMBER, "-0x1"},
{token.NUMBER, "-0xf"},
{token.NUMBER, "-0x42"},
{token.NUMBER, "-0x123456789abcDEF"},
{token.NUMBER, "-0x" + f100},
{token.NUMBER, "-0X0"},
{token.NUMBER, "-0X1"},
{token.NUMBER, "-0XF"},
{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"},
},
"floatoken.t": []tokenPair{
"float": []tokenPair{
{token.FLOAT, "0."},
{token.FLOAT, "1."},
{token.FLOAT, "42."},
@ -161,6 +199,26 @@ var tokenLists = map[string][]tokenPair{
{token.FLOAT, "1.1E-10"},
{token.FLOAT, "42.1E+10"},
{token.FLOAT, "01234567890.1E-10"},
{token.FLOAT, "-0.0"},
{token.FLOAT, "-1.0"},
{token.FLOAT, "-42.0"},
{token.FLOAT, "-01234567890.0"},
{token.FLOAT, "-01.8e0"},
{token.FLOAT, "-1.4e0"},
{token.FLOAT, "-42.2e0"},
{token.FLOAT, "-01234567890.12e0"},
{token.FLOAT, "-0.E0"},
{token.FLOAT, "-1.12E0"},
{token.FLOAT, "-42.123E0"},
{token.FLOAT, "-01234567890.213E0"},
{token.FLOAT, "-0.2e+10"},
{token.FLOAT, "-1.2e-10"},
{token.FLOAT, "-42.54e+10"},
{token.FLOAT, "-01234567890.98e-10"},
{token.FLOAT, "-0.1E+10"},
{token.FLOAT, "-1.1E-10"},
{token.FLOAT, "-42.1E+10"},
{token.FLOAT, "-01234567890.1E-10"},
},
}