diff options
Diffstat (limited to 'src/tokens/syntactic.rs')
-rw-r--r-- | src/tokens/syntactic.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/tokens/syntactic.rs b/src/tokens/syntactic.rs index eb33806..780c950 100644 --- a/src/tokens/syntactic.rs +++ b/src/tokens/syntactic.rs @@ -17,6 +17,8 @@ pub enum SyntacticTokenVariant { Expression(Expression), + String(TrackedString), + BlockOpen, BlockClose, Separator, @@ -26,12 +28,26 @@ pub enum SyntacticTokenVariant { Error(SyntacticParseError), } +#[derive(Clone)] +pub struct TrackedString { + pub source: SourceSpan, + pub string: String, + pub chars: Vec<Tracked<char>>, +} + +impl std::fmt::Display for TrackedString { + fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> { + self.string.fmt(f) + } +} + #[derive(Debug)] pub enum SyntacticParseError { InvalidHexadecimalLiteral(String), InvalidDecimalLiteral(String), InvalidSymbolIdentifier(String), UnterminatedComment, + UnterminatedString, UnterminatedExpression, LabelInMacroDefinition, } @@ -52,6 +68,8 @@ impl std::fmt::Debug for SyntacticToken { Expression(expr) => format!("Expression({expr:?})"), + String(string) => format!("String('{string}')"), + BlockOpen => format!("BlockOpen"), BlockClose => format!("BlockClose"), Separator => format!("Separator"), |