From 9096153a3484191a6cd3d71bc30fa3b80ffed96c Mon Sep 17 00:00:00 2001 From: Fatih Arslan Date: Mon, 5 Oct 2015 13:12:48 +0300 Subject: [PATCH] scanner: implement remaning tokens --- scanner/scanner.go | 20 +++++++++++++++++++- scanner/scanner_test.go | 16 ++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/scanner/scanner.go b/scanner/scanner.go index 1a8a60c..5dfe526 100644 --- a/scanner/scanner.go +++ b/scanner/scanner.go @@ -121,12 +121,30 @@ func (s *Scanner) Scan() (tok token.Token) { tok = token.STRING s.scanString() case '.': - ch = s.next() + ch = s.peek() if isDecimal(ch) { tok = token.FLOAT ch = s.scanMantissa(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 } } diff --git a/scanner/scanner_test.go b/scanner/scanner_test.go index 4c7992f..a2be09b 100644 --- a/scanner/scanner_test.go +++ b/scanner/scanner_test.go @@ -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) { var tokenList = []tokenPair{ {token.BOOL, "true"},