diff options
| author | Mel <einebeere@gmail.com> | 2021-11-14 19:31:48 +0100 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2021-11-14 19:31:48 +0100 |
| commit | 98ac2e8f26ff4d90c37bb9c9536e9eb14e31efb4 (patch) | |
| tree | f7e4b47cd4d8a370597267f8f1819e874c5aacce /src/lex | |
| parent | 514ceb979c4ce79bfee2234cf981292ded714f66 (diff) | |
| download | rabbithole-98ac2e8f26ff4d90c37bb9c9536e9eb14e31efb4.tar.zst rabbithole-98ac2e8f26ff4d90c37bb9c9536e9eb14e31efb4.zip | |
Parse and walk str embeds.
Diffstat (limited to 'src/lex')
| -rw-r--r-- | src/lex/lexer.rs | 15 |
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 { |
