aboutsummaryrefslogtreecommitdiffstats
path: root/src/compiler.rs
diff options
context:
space:
mode:
authorEdvard Thörnros <edvard.thornros@gmail.com>2021-01-11 15:33:02 +0100
committerEdvard Thörnros <edvard.thornros@gmail.com>2021-01-11 15:33:13 +0100
commit0400311b2387b16b0fbd53a086634937cfc33ebc (patch)
treedfe8131eb6ccd6573f2d6c8c95111805c7dc71a3 /src/compiler.rs
parent5ff6d5a75020b148a3af130d9bb90ef60618efc2 (diff)
downloadsylt-0400311b2387b16b0fbd53a086634937cfc33ebc.tar.gz
Strings
Diffstat (limited to 'src/compiler.rs')
-rw-r--r--src/compiler.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/compiler.rs b/src/compiler.rs
index 94bc0cf..15d92fd 100644
--- a/src/compiler.rs
+++ b/src/compiler.rs
@@ -53,6 +53,7 @@ enum Type {
Int,
Float,
Bool,
+ String,
}
impl TryFrom<&str> for Type {
@@ -63,6 +64,7 @@ impl TryFrom<&str> for Type {
"int" => Ok(Type::Int),
"float" => Ok(Type::Float),
"bool" => Ok(Type::Bool),
+ "str" => Ok(Type::String),
_ => Err(()),
}
}
@@ -188,6 +190,7 @@ impl Compiler {
Token::Float(_) => self.value(block),
Token::Int(_) => self.value(block),
Token::Bool(_) => self.value(block),
+ Token::String(_) => self.value(block),
Token::Not => self.unary(block),
@@ -222,6 +225,7 @@ impl Compiler {
Token::Float(f) => { Value::Float(f) },
Token::Int(i) => { Value::Int(i) }
Token::Bool(b) => { Value::Bool(b) }
+ Token::String(s) => { Value::String(s.clone()) }
_ => { error!(self, "Cannot parse value."); Value::Bool(false) }
};
block.add(Op::Constant(value), self.line());