about summary refs log tree commit diff
path: root/src/lex
diff options
context:
space:
mode:
Diffstat (limited to 'src/lex')
-rw-r--r--src/lex/lexer.rs15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/lex/lexer.rs b/src/lex/lexer.rs
index 6467f5c..b6633d4 100644
--- a/src/lex/lexer.rs
+++ b/src/lex/lexer.rs
@@ -247,15 +247,19 @@ impl<'s> Lexer<'s> {
                 let mut nest_level = 0;
 
                 // Finish the last string part
-                self.preempted.push_back(Token {
-                    location: location_str,
-                    variant: TokenVariant::Str(str_buffer),
-                });
+                if !str_buffer.is_empty() {
+                    self.preempted.push_back(Token {
+                        location: location_str,
+                        variant: TokenVariant::Str(str_buffer),
+                    });
+                }
                 str_buffer = String::new();
 
                 // Build embed
                 let location_embed = self.location;
                 let mut embed_buffer = String::new();
+                embed_buffer.push(c);
+
                 loop {
                     // TOOD: Same as above
                     let c = self.advance().expect("Expected Str embed to be closed");
@@ -263,8 +267,7 @@ impl<'s> Lexer<'s> {
                         nest_level += 1;
                     } else if c == '}' {
                         if nest_level <= 0 {
-                            // Remove last '}' of embed
-                            self.advance().unwrap();
+                            embed_buffer.push(c);
                             location_str = self.location;
                             break;
                         } else {