scanner: implement remaning tokens
This commit is contained in:
parent
dd848e3dab
commit
9096153a34
@ -121,12 +121,30 @@ func (s *Scanner) Scan() (tok token.Token) {
|
|||||||
tok = token.STRING
|
tok = token.STRING
|
||||||
s.scanString()
|
s.scanString()
|
||||||
case '.':
|
case '.':
|
||||||
ch = s.next()
|
ch = s.peek()
|
||||||
if isDecimal(ch) {
|
if isDecimal(ch) {
|
||||||
tok = token.FLOAT
|
tok = token.FLOAT
|
||||||
ch = s.scanMantissa(ch)
|
ch = s.scanMantissa(ch)
|
||||||
ch = s.scanExponent(ch)
|
ch = s.scanExponent(ch)
|
||||||
|
} else {
|
||||||
|
tok = token.PERIOD
|
||||||
}
|
}
|
||||||
|
case '[':
|
||||||
|
tok = token.LBRACK
|
||||||
|
case ']':
|
||||||
|
tok = token.RBRACK
|
||||||
|
case '{':
|
||||||
|
tok = token.LBRACE
|
||||||
|
case '}':
|
||||||
|
tok = token.RBRACE
|
||||||
|
case ',':
|
||||||
|
tok = token.COMMA
|
||||||
|
case '=':
|
||||||
|
tok = token.ASSIGN
|
||||||
|
case '+':
|
||||||
|
tok = token.ADD
|
||||||
|
case '-':
|
||||||
|
tok = token.SUB
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,6 +40,22 @@ func testTokenList(t *testing.T, tokenList []tokenPair) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestOperator(t *testing.T) {
|
||||||
|
var tokenList = []tokenPair{
|
||||||
|
{token.LBRACK, "["},
|
||||||
|
{token.LBRACE, "{"},
|
||||||
|
{token.COMMA, ","},
|
||||||
|
{token.PERIOD, "."},
|
||||||
|
{token.RBRACK, "]"},
|
||||||
|
{token.RBRACE, "}"},
|
||||||
|
{token.ASSIGN, "="},
|
||||||
|
{token.ADD, "+"},
|
||||||
|
{token.SUB, "-"},
|
||||||
|
}
|
||||||
|
|
||||||
|
testTokenList(t, tokenList)
|
||||||
|
}
|
||||||
|
|
||||||
func TestBool(t *testing.T) {
|
func TestBool(t *testing.T) {
|
||||||
var tokenList = []tokenPair{
|
var tokenList = []tokenPair{
|
||||||
{token.BOOL, "true"},
|
{token.BOOL, "true"},
|
||||||
|
Loading…
Reference in New Issue
Block a user