added completely escaped strings (""")
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 14 Oct 2021 17:19:09 +0000 (12:19 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 14 Oct 2021 17:19:09 +0000 (12:19 -0500)
bin/onyx
src/lex.c

index 8c51fa8886d2d0a41a4b5defe0565bfa1feecf03..6fa13f9163fa200f8ba1a688c691d7518ecde651 100755 (executable)
Binary files a/bin/onyx and b/bin/onyx differ
index 59b5973591f270f159a12a5bc26d79639932008b..b6bdfc399b5d8d2195b3900577e45ef5dd576649 100644 (file)
--- a/src/lex.c
+++ b/src/lex.c
@@ -207,6 +207,28 @@ whitespace_skipped:
         goto token_parsed;
     }
 
+    if (*tk.text == '"' && *(tk.text + 1) == '"' && *(tk.text + 2) == '"') {
+        u64 len = 0;
+
+        INCREMENT_CURR_TOKEN(tokenizer);
+        INCREMENT_CURR_TOKEN(tokenizer);
+        INCREMENT_CURR_TOKEN(tokenizer);
+
+        while (!(*tokenizer->curr == '"' && *(tokenizer->curr + 1) == '"' && *(tokenizer->curr + 2) == '"')) {
+            len++;
+            INCREMENT_CURR_TOKEN(tokenizer);
+        }
+        
+        INCREMENT_CURR_TOKEN(tokenizer);
+        INCREMENT_CURR_TOKEN(tokenizer);
+        INCREMENT_CURR_TOKEN(tokenizer);
+
+        tk.text += 3;
+        tk.length = len;
+        tk.type = Token_Type_Literal_String;
+        goto token_parsed;
+    }
+
     // String literal
     if (*tk.text == '"') {
         u64 len = 0;