about summary refs log tree commit diff
path: root/src/lex/token.rs
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2021-11-13 19:08:06 +0100
committerMel <einebeere@gmail.com>2021-11-13 19:08:06 +0100
commit514ceb979c4ce79bfee2234cf981292ded714f66 (patch)
tree01930bb09a2aeaa2ddbe5736349b98174527b8fe /src/lex/token.rs
parent799afd5b71aaf41a59a8569a9e24945b4df60b7c (diff)
downloadrabbithole-514ceb979c4ce79bfee2234cf981292ded714f66.tar.zst
rabbithole-514ceb979c4ce79bfee2234cf981292ded714f66.zip
Lex string embeds.
Diffstat (limited to 'src/lex/token.rs')
-rw-r--r--src/lex/token.rs13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/lex/token.rs b/src/lex/token.rs
index 77b0df6..c771b4a 100644
--- a/src/lex/token.rs
+++ b/src/lex/token.rs
@@ -49,8 +49,17 @@ pub enum TokenVariant {
     // Literals
     Int(u32),
     Float(f32),
+    
+    // String Literal Tokens
     Str(String),
-
+    // StrOpen and StrClose are necessary for string embeds.
+    // A normal string looks like [StrOpen Str("Hello!") StrClose] in a token stream while a
+    // string with an embed would look something like [StrOpen Str("Hello") StrEmbed("world") Str("!") S StrClose].
+    StrOpen,
+    StrClose,
+    // The string embed has to be lexed by a *seperate* lexer.
+    StrEmbed(String),
+    
     Ident(String),
 
     // Keywords
@@ -71,4 +80,4 @@ pub enum TokenVariant {
 
     Unknown(char),
     Eof,
-}
+}
\ No newline at end of file