summaryrefslogtreecommitdiff
path: root/tnslc/parse/token.tnsl
diff options
context:
space:
mode:
authorKyle Gunger <kgunger12@gmail.com>2022-04-18 01:19:02 -0400
committerKyle Gunger <kgunger12@gmail.com>2022-04-18 01:19:02 -0400
commit9478e157ec2cfe4de704b3bd78b07aee8824774f (patch)
treebe5217d517250a5f33c0350e7a007f36bd95de8b /tnslc/parse/token.tnsl
parent658c2fa36f3359325665c744ebe57478d539b28d (diff)
Add tokenizer support for strings
Diffstat (limited to 'tnslc/parse/token.tnsl')
-rw-r--r--tnslc/parse/token.tnsl23
1 files changed, 22 insertions, 1 deletions
diff --git a/tnslc/parse/token.tnsl b/tnslc/parse/token.tnsl
index e18ade5..ce2bcdb 100644
--- a/tnslc/parse/token.tnsl
+++ b/tnslc/parse/token.tnsl
@@ -294,6 +294,27 @@
;return true
;/
+/; string_closed ({}charp dat, charp c) [bool]
+ /; if (len dat < 2)
+ ;return false
+ ;/
+
+ ;charp closing = dat{0}
+ ;bool escaping = false
+
+ /; loop (int i = 1; i < len dat) [i++]
+ /; if (dat{i} == closing && !escaping)
+ ;return true
+ ;; else if (dat{i} == '\\' && !escaping)
+ ;escaping = true
+ ;; else
+ ;escaping = false
+ ;/
+ ;/
+
+ ;return false
+;/
+
/#
Get the token_type value for a given string of character points
@@ -301,7 +322,7 @@
/; if (len s` > 1)
- /; if (is_numeric_literal(s))
+ /; if (is_numeric_literal(s) || s`{0} == '"' || s`{0} == '\'')
;return TOKEN_TYPE.LITERAL
;/