summaryrefslogtreecommitdiff
path: root/rust/src/lambda.rs
diff options
context:
space:
mode:
authorArnaud Bailly <arnaud.bailly@iohk.io>2024-09-24 09:33:37 +0200
committerArnaud Bailly <arnaud.bailly@iohk.io>2024-09-24 09:33:37 +0200
commit72190fe9bbe8b72294d4649d9c3b68f101f2aad2 (patch)
tree3d1bde2047a8bbde4a8e595c275b46e41c37a688 /rust/src/lambda.rs
parentc87e50d9b4859ad16034437e812a84cbe59db6a7 (diff)
downloadlambda-nantes-72190fe9bbe8b72294d4649d9c3b68f101f2aad2.tar.gz
Split module into ast and parser
Diffstat (limited to 'rust/src/lambda.rs')
-rw-r--r--rust/src/lambda.rs36
1 files changed, 9 insertions, 27 deletions
diff --git a/rust/src/lambda.rs b/rust/src/lambda.rs
index 8c4c640..18568d7 100644
--- a/rust/src/lambda.rs
+++ b/rust/src/lambda.rs
@@ -1,7 +1,10 @@
-use std::{
- fmt::{self, Display},
- fs::read_to_string,
-};
+use std::fs::read_to_string;
+
+mod ast;
+use ast::*;
+
+mod parser;
+use parser::*;
pub fn run(arg: &str) -> String {
let content = read_to_string(arg).unwrap();
@@ -10,30 +13,9 @@ pub fn run(arg: &str) -> String {
result.to_string()
}
-#[derive(Debug, PartialEq)]
-pub enum Value {
- Num(i32),
- Bool(bool),
- Sym(String),
-}
-
-impl Display for Value {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- match self {
- Value::Num(i) => write!(f, "{}", i),
- Value::Bool(b) => write!(f, "{}", b),
- Value::Sym(s) => write!(f, "{}", s),
- }
- }
-}
-
fn interpret(arg: &str) -> Value {
- let token = arg.trim();
- token
- .parse::<i32>()
- .map(Value::Num)
- .or(token.parse::<bool>().map(Value::Bool))
- .unwrap_or(Value::Sym(token.to_string()))
+ // interpreting a value is the value itself
+ parse(arg)
}
#[cfg(test)]