From 867595b5b933b92e1039fd16d3db74348874c58c Mon Sep 17 00:00:00 2001 From: Joscha Date: Sun, 20 Nov 2022 17:14:38 +0100 Subject: [PATCH] Remove multiline string literals from ast --- src/ast/lit.rs | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/src/ast/lit.rs b/src/ast/lit.rs index c410471..a659e27 100644 --- a/src/ast/lit.rs +++ b/src/ast/lit.rs @@ -54,26 +54,36 @@ impl HasSpan for NumLit { } #[derive(Debug, Clone)] -pub enum StringLit { - /// - `"Hello world\n"` - /// - `""` - Inline(String, Span), +pub enum StringLitElem { + /// Normal unescaped characters + Plain(String), + /// `\u{xxxx}` + Unicode(char), + /// `\\` + Backslash, + /// `\'` + SingleQuote, + /// `\"'` + DoubleQuote, + /// `\t` + Tab, + /// `\r` + CarriageReturn, + /// `\n` + Newline, +} - /// ```text - /// """ - /// Hello, - /// world! - /// """ - /// ``` - Multiline(String, Span), +/// - `"Hello world\n"` +/// - `""` +#[derive(Debug, Clone)] +pub struct StringLit { + elems: Vec, + span: Span, } impl HasSpan for StringLit { fn span(&self) -> Span { - match self { - StringLit::Inline(_, span) => *span, - StringLit::Multiline(_, span) => *span, - } + self.span } }