diff options
author | Kyle Gunger <kgunger12@gmail.com> | 2023-03-24 02:17:46 -0400 |
---|---|---|
committer | Kyle Gunger <kgunger12@gmail.com> | 2023-03-24 02:17:46 -0400 |
commit | 5e0d74b70b15d63993539c07905e0a9ba8117b5b (patch) | |
tree | 24c9a908b3d5b4952b453f5884daa28788c1299d /tnslc | |
parent | 3442a2c5bbbf5ec604ef104e9ab92912db98f222 (diff) |
Better character literal parsing
Diffstat (limited to 'tnslc')
-rw-r--r-- | tnslc/simple.tnsl | 5 | ||||
-rw-r--r-- | tnslc/tnslc.tnsl | 9 |
2 files changed, 11 insertions, 3 deletions
diff --git a/tnslc/simple.tnsl b/tnslc/simple.tnsl index b55be2a..b140c7a 100644 --- a/tnslc/simple.tnsl +++ b/tnslc/simple.tnsl @@ -1,10 +1,13 @@ {}uint8 str1 = "abcd" -{}uint8 str2 = "abcd" +{}uint8 str2 = "abce" /; main [int] /; loop (int i = 0; i < 4) [i++] /; if (str1{i} !== str2{i}) + /; if (str2{i} == 'e') + return 3 + ;/ return 1 ;/ ;/ diff --git a/tnslc/tnslc.tnsl b/tnslc/tnslc.tnsl index 9853af6..df2eb54 100644 --- a/tnslc/tnslc.tnsl +++ b/tnslc/tnslc.tnsl @@ -134,6 +134,10 @@ ;return 0 ;/ + /; if (str{1} !== '\\') + ;return str{1} + ;/ + ;uint8 cmp = str{2} /; if (cmp == '\\') ;return '\\' @@ -145,8 +149,9 @@ ;return '\t' ;; else if (cmp == '0') ;return '\0' + ;; else if (cmp == '\'') + ;return '\'' ;/ - ;/ /; unquote_str({}uint8 str) [{}uint8] @@ -2427,7 +2432,7 @@ ;v.name = l ;; else if (data{0} == '\'') ;v.data_type = {1, "uint8", "", {}, {}} - ;v.location = unqote_char(tok`{start}.data) + ;v.location = unqote_char(data) ;; else if (string_equate(data, "true")) ;v.data_type = {1, "bool", "", {}, {}} ;v.location = 1 |