From b9dfa9b1cee89f47c52033fca9f3bc8c107693bf Mon Sep 17 00:00:00 2001 From: sofia Date: Mon, 14 Jul 2025 17:39:48 +0300 Subject: [PATCH] Add parsing of string literals --- reid/src/ast/mod.rs | 1 + reid/src/ast/parse.rs | 4 ++++ reid/src/ast/process.rs | 1 + 3 files changed, 6 insertions(+) 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"), } } }