scanner: parse floats in form of .9 , .123
This commit is contained in:
parent
69796c9fd2
commit
c7955d276f
@ -120,6 +120,13 @@ func (s *Scanner) Scan() (tok token.Token) {
|
||||
case '"':
|
||||
tok = token.STRING
|
||||
s.scanString()
|
||||
case '.':
|
||||
ch = s.next()
|
||||
if isDecimal(ch) {
|
||||
tok = token.FLOAT
|
||||
ch = s.scanMantissa(ch)
|
||||
ch = s.scanExponent(ch)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -177,6 +184,7 @@ func (s *Scanner) scanNumber(ch rune) token.Token {
|
||||
}
|
||||
|
||||
ch = s.scanMantissa(ch)
|
||||
fmt.Printf("ch = %q\n", ch)
|
||||
if ch == '.' || ch == 'e' || ch == 'E' {
|
||||
ch = s.scanFraction(ch)
|
||||
ch = s.scanExponent(ch)
|
||||
|
@ -101,37 +101,37 @@ func TestString(t *testing.T) {
|
||||
|
||||
func TestNumber(t *testing.T) {
|
||||
var tokenList = []tokenPair{
|
||||
// {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.FLOAT, "0."},
|
||||
// {token.FLOAT, "1."},
|
||||
// {token.FLOAT, "42."},
|
||||
// {token.FLOAT, "01234567890."},
|
||||
{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.FLOAT, "0."},
|
||||
{token.FLOAT, "1."},
|
||||
{token.FLOAT, "42."},
|
||||
{token.FLOAT, "01234567890."},
|
||||
{token.FLOAT, ".0"},
|
||||
{token.FLOAT, ".1"},
|
||||
{token.FLOAT, ".42"},
|
||||
{token.FLOAT, ".0123456789"},
|
||||
// {token.FLOAT, "0.0"},
|
||||
{token.FLOAT, "0.0"},
|
||||
// {token.FLOAT, "1.0"},
|
||||
// {token.FLOAT, "42.0"},
|
||||
// {token.FLOAT, "01234567890.0"},
|
||||
|
Loading…
x
Reference in New Issue
Block a user