diff options
author | Ben Bridle <ben@derelict.engineering> | 2025-02-27 14:53:21 +1300 |
---|---|---|
committer | Ben Bridle <ben@derelict.engineering> | 2025-02-27 14:53:31 +1300 |
commit | 67470aea034fd46f4bbcfe815c51ad3451043188 (patch) | |
tree | 83d78d3d28e094d6a3af347d2ff2ff16472e5421 /src/tokens/syntactic.rs | |
parent | 4e8fae09f0f7d6f3a4ddbe285aeb01ef0622b761 (diff) | |
download | torque-asm-67470aea034fd46f4bbcfe815c51ad3451043188.zip |
Finish first working version of Torque
This is a huge and messy commit, worked on piecemeal while traveling
and while the language was still being designed.
Diffstat (limited to 'src/tokens/syntactic.rs')
-rw-r--r-- | src/tokens/syntactic.rs | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/src/tokens/syntactic.rs b/src/tokens/syntactic.rs index 162f1c0..eb33806 100644 --- a/src/tokens/syntactic.rs +++ b/src/tokens/syntactic.rs @@ -1,22 +1,21 @@ use crate::*; -pub struct Token { +pub struct SyntacticToken { pub source: SourceSpan, - pub variant: TokenVariant, + pub variant: SyntacticTokenVariant, } -pub enum TokenVariant { +pub enum SyntacticTokenVariant { LabelDefinition(String), MacroDefinition(String), MacroDefinitionTerminator, - DecimalLiteral(usize), - HexadecimalLiteral(usize), + IntegerLiteral(isize), PackedBinaryLiteral(PackedBinaryLiteral), + PinnedAddress(usize), - Comment(String), - ConstantExpression(ConstantExpression), + Expression(Expression), BlockOpen, BlockClose, @@ -24,33 +23,34 @@ pub enum TokenVariant { Symbol(String), - Error(ParseError), + Error(SyntacticParseError), } #[derive(Debug)] -pub enum ParseError { +pub enum SyntacticParseError { InvalidHexadecimalLiteral(String), + InvalidDecimalLiteral(String), InvalidSymbolIdentifier(String), UnterminatedComment, - UnterminatedConstantExpression, + UnterminatedExpression, + LabelInMacroDefinition, } -impl std::fmt::Debug for Token { +impl std::fmt::Debug for SyntacticToken { fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> { - use TokenVariant::*; + use SyntacticTokenVariant::*; let start = &self.source.in_merged; let name = match &self.variant { LabelDefinition(name) => format!("LabelDefinition({name})"), MacroDefinition(name) => format!("MacroDefinition({name})"), MacroDefinitionTerminator => format!("MacroDefinitionTerminator"), - DecimalLiteral(value) => format!("DecimalLiteral({value})"), - HexadecimalLiteral(value) => format!("HexadecimalLiteral(0x{value:x})"), + IntegerLiteral(value) => format!("IntegerLiteral({value})"), PackedBinaryLiteral(pbl) => format!("PackedBinaryLiteral({pbl})"), + PinnedAddress(value) => format!("PinnedAddress({value})"), - Comment(_) => format!("Comment"), - ConstantExpression(expr) => format!("ConstantExpression({expr:?})"), + Expression(expr) => format!("Expression({expr:?})"), BlockOpen => format!("BlockOpen"), BlockClose => format!("BlockClose"), |