From 98ac2e8f26ff4d90c37bb9c9536e9eb14e31efb4 Mon Sep 17 00:00:00 2001 From: Mel Date: Sun, 14 Nov 2021 19:31:48 +0100 Subject: Parse and walk str embeds. --- src/lex/lexer.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'src/lex') 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 { -- cgit 1.4.1