From a051139f6d59cbc77eff99e9417dc21d87eaba6a Mon Sep 17 00:00:00 2001 From: Ben Bridle Date: Mon, 13 Oct 2025 16:02:33 +1300 Subject: Change string argument syntax to list argument syntax Changes string arguments from "name" to [name], to prepare for generic lists in the language. Doesn't compile. --- src/stages/semantic.rs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'src/stages/semantic.rs') diff --git a/src/stages/semantic.rs b/src/stages/semantic.rs index eb9e7b6..b72cfa8 100644 --- a/src/stages/semantic.rs +++ b/src/stages/semantic.rs @@ -431,11 +431,13 @@ impl SemanticParser { let token = self.syntactic.pop()?; let source = token.source; match token.value { + // Integer-type argument. SyntacticToken::Symbol(ScopedSymbol::Global(name)) => { let variant = ArgumentType::Integer; let definition = ArgumentDefinition { name, variant }; return Some(Tracked::from(definition, source)); } + // Block-type argument. SyntacticToken::BlockLiteral(mut tokens) => { if tokens.len() == 1 { let token = tokens.pop().unwrap(); @@ -446,11 +448,16 @@ impl SemanticParser { } } } - SyntacticToken::StringLiteral(string) => { - let variant = ArgumentType::String; - let name = string.string; - let definition = ArgumentDefinition { name, variant }; - return Some(Tracked::from(definition, source)); + // List-type argument. + SyntacticToken::Expression(mut tokens) => { + if tokens.len() == 1 { + let token = tokens.pop().unwrap(); + if let SyntacticToken::Symbol(ScopedSymbol::Global(name)) = token.value { + let variant = ArgumentType::List; + let definition = ArgumentDefinition { name, variant }; + return Some(Tracked::from(definition, source)); + } + } } _ => (), }; -- cgit v1.2.3-70-g09d2