aboutsummaryrefslogtreecommitdiffstats
path: root/src/compiler.rs
diff options
context:
space:
mode:
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());