From f4027cae775e3c9c237675f9df35a744d54f3f2e Mon Sep 17 00:00:00 2001 From: Ben Bridle Date: Mon, 28 Oct 2024 19:52:29 +1300 Subject: Rewrite assembler This is an almost complete rewrite of the entire assembler from the ground up, with a different parsing strategy and a whole new symbol resolution mechanism for automatically including library files. The assembly syntax has also been slightly modified, with padding tokens now being prefixed with '#' instead of '$', and a block-style anonymous-label syntax which uses the '{' and '}' characters. --- src/tokens/syntactic.rs | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/tokens/syntactic.rs (limited to 'src/tokens/syntactic.rs') diff --git a/src/tokens/syntactic.rs b/src/tokens/syntactic.rs new file mode 100644 index 0000000..8684ed9 --- /dev/null +++ b/src/tokens/syntactic.rs @@ -0,0 +1,39 @@ +use crate::*; + + +pub struct SyntacticToken { + /// Location of token in source files. + pub source: SourceSpan, + pub variant: SyntacticTokenVariant, +} + + +pub enum SyntacticTokenVariant { + LabelDefinition(String), + MacroDefinition(String), + MacroDefinitionTerminator, + + Literal(Value), + Padding(Value), + Instruction(Instruction), + + Comment(String), + String(Vec), + + BlockOpen, + BlockClose, + MarkOpen, + MarkClose, + + Symbol(String), + + Error(SyntacticParseError), +} + + +pub enum SyntacticParseError { + UnterminatedComment, + UnterminatedRawString, + UnterminatedNullString, + InvalidPaddingValue(String), +} -- cgit v1.2.3-70-g09d2