diff --git a/reid/src/ast/mod.rs b/reid/src/ast/mod.rs index 1b2f900..1170546 100644 --- a/reid/src/ast/mod.rs +++ b/reid/src/ast/mod.rs @@ -29,6 +29,7 @@ pub enum TypeKind { pub enum Literal { Number(u64), Bool(bool), + String(String), } #[derive(Debug, Clone)] diff --git a/reid/src/ast/parse.rs b/reid/src/ast/parse.rs index 72db1ad..4b6530f 100644 --- a/reid/src/ast/parse.rs +++ b/reid/src/ast/parse.rs @@ -84,6 +84,10 @@ impl Parse for PrimaryExpression { Kind::Literal(Literal::Number(*v)), stream.get_range().unwrap(), ), + Token::StringLit(v) => Expression( + Kind::Literal(Literal::String(v.clone())), + stream.get_range().unwrap(), + ), Token::True => Expression( Kind::Literal(Literal::Bool(true)), stream.get_range().unwrap(), diff --git a/reid/src/ast/process.rs b/reid/src/ast/process.rs index 72f4d6a..caad577 100644 --- a/reid/src/ast/process.rs +++ b/reid/src/ast/process.rs @@ -204,6 +204,7 @@ impl ast::Literal { match *self { ast::Literal::Number(v) => mir::Literal::Vague(mir::VagueLiteral::Number(v)), ast::Literal::Bool(v) => mir::Literal::Bool(v), + ast::Literal::String(_) => todo!("process string literal"), } } }