summaryrefslogtreecommitdiff
path: root/src/tokens/semantic.rs
diff options
context:
space:
mode:
authorBen Bridle <ben@derelict.engineering>2025-02-28 13:23:20 +1300
committerBen Bridle <ben@derelict.engineering>2025-02-28 13:34:23 +1300
commitdba769e13ca5029643c6068e53fa34ae0fea8421 (patch)
tree47b45ecddaf08bcef19de29ad65206c34af85f53 /src/tokens/semantic.rs
parent1a810d036195395c182f6cd6e011b8fb868d9872 (diff)
downloadtorque-asm-dba769e13ca5029643c6068e53fa34ae0fea8421.zip
Implement string literals
String literals are treated as integers. If a string is passed as an integer argument to a packed binary literal, a new instance of the packed binary literal is invoked for every character in the string, with each character being passed to the packed binary literal as a Unicode character value.
Diffstat (limited to 'src/tokens/semantic.rs')
-rw-r--r--src/tokens/semantic.rs3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/tokens/semantic.rs b/src/tokens/semantic.rs
index d61ad8e..225cd6b 100644
--- a/src/tokens/semantic.rs
+++ b/src/tokens/semantic.rs
@@ -43,6 +43,7 @@ pub enum Value {
pub enum Integer {
Literal(TrackedInteger),
+ String(TrackedString),
Expression(Expression),
LabelReference(Tracked<String>),
}
@@ -150,6 +151,8 @@ impl SemanticProgram {
indent!(indent => "LITERAL {value}"),
Integer::Expression(expr) =>
indent!(indent => "EXPRESSION [{expr:?}]"),
+ Integer::String(string) =>
+ indent!(indent => "STRING '{string}'"),
Integer::LabelReference(name) =>
indent!(indent => "LABEL REFERENCE '{name}'"),
}