From 3b00596b2e9ee541bbd72dc50cc0c60e2b46c69c Mon Sep 17 00:00:00 2001 From: Cameron Moore Date: Mon, 13 Mar 2017 22:04:08 -0500 Subject: [PATCH] Support lowercase unicode escape sequences (#140) --- lexer_test.go | 24 ++++++++++++++++++++++++ token.go | 3 ++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/lexer_test.go b/lexer_test.go index 676cdb0..6b324ea 100644 --- a/lexer_test.go +++ b/lexer_test.go @@ -531,6 +531,30 @@ func TestKeyEqualStringUnicodeEscape(t *testing.T) { {Position{1, 8}, tokenString, "hello δ"}, {Position{1, 25}, tokenEOF, ""}, }) + testFlow(t, `foo = "\uabcd"`, []token{ + {Position{1, 1}, tokenKey, "foo"}, + {Position{1, 5}, tokenEqual, "="}, + {Position{1, 8}, tokenString, "\uabcd"}, + {Position{1, 15}, tokenEOF, ""}, + }) + testFlow(t, `foo = "\uABCD"`, []token{ + {Position{1, 1}, tokenKey, "foo"}, + {Position{1, 5}, tokenEqual, "="}, + {Position{1, 8}, tokenString, "\uABCD"}, + {Position{1, 15}, tokenEOF, ""}, + }) + testFlow(t, `foo = "\U000bcdef"`, []token{ + {Position{1, 1}, tokenKey, "foo"}, + {Position{1, 5}, tokenEqual, "="}, + {Position{1, 8}, tokenString, "\U000bcdef"}, + {Position{1, 19}, tokenEOF, ""}, + }) + testFlow(t, `foo = "\U000BCDEF"`, []token{ + {Position{1, 1}, tokenKey, "foo"}, + {Position{1, 5}, tokenEqual, "="}, + {Position{1, 8}, tokenString, "\U000BCDEF"}, + {Position{1, 19}, tokenEOF, ""}, + }) testFlow(t, `foo = "\u2"`, []token{ {Position{1, 1}, tokenKey, "foo"}, {Position{1, 5}, tokenEqual, "="}, diff --git a/token.go b/token.go index e598cf9..5581fe0 100644 --- a/token.go +++ b/token.go @@ -135,5 +135,6 @@ func isDigit(r rune) bool { func isHexDigit(r rune) bool { return isDigit(r) || - r == 'A' || r == 'B' || r == 'C' || r == 'D' || r == 'E' || r == 'F' + (r >= 'a' && r <= 'f') || + (r >= 'A' && r <= 'F') }