diff options
author | Joel Kronqvist <joel.kronqvist@iki.fi> | 2025-08-14 15:42:49 +0300 |
---|---|---|
committer | Joel Kronqvist <joel.kronqvist@iki.fi> | 2025-08-14 15:42:49 +0300 |
commit | 540a84fb9288699b534e98c8c5d0e649aaa1c2ba (patch) | |
tree | 9bdec40d723cd45232f21716c1d1c69c270fc065 /src/parse | |
parent | 928a3358483f60db84dc2918415882b35adc006b (diff) | |
download | myslip-540a84fb9288699b534e98c8c5d0e649aaa1c2ba.tar.gz myslip-540a84fb9288699b534e98c8c5d0e649aaa1c2ba.zip |
feat: added rest of types to the parser
also fixed function tests in check.rs
Diffstat (limited to 'src/parse')
-rw-r--r-- | src/parse/parsetree.rs | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/parse/parsetree.rs b/src/parse/parsetree.rs index 0a5782d..86da0f0 100644 --- a/src/parse/parsetree.rs +++ b/src/parse/parsetree.rs @@ -198,9 +198,13 @@ fn parse_type(s: &str) -> IResult<&str, Type> { .map(|s: &str| VarType(s.to_string())); alt(( - tag("Int").map(|_| Integer), - tag("Bool").map(|_| Boolean), - tag("Nil").map(|_| NilType), + tag("Int") .map(|_| Integer), + tag("Bool") .map(|_| Boolean), + tag("Quote") .map(|_| QuoteTy), + tag("Vector").map(|_| VecType), + tag("Let") .map(|_| LetType), + tag("Type") .map(|_| TypeLit), + tag("Nil") .map(|_| NilType), arrp, vecp, listp, @@ -217,7 +221,11 @@ mod private_parsing_tests { fn test_parse_type() { assert_eq!(parse_type("Int"), Ok(("", Integer))); assert_eq!(parse_type("Bool"), Ok(("", Boolean))); - assert_eq!(parse_type("Nil"), Ok(("", NilType))); + assert_eq!(parse_type("Quote"), Ok(("", QuoteTy))); + assert_eq!(parse_type("Vector"), Ok(("", VecType))); + assert_eq!(parse_type("Let"), Ok(("", LetType))); + assert_eq!(parse_type("Type"), Ok(("", TypeLit))); + assert_eq!(parse_type("Nil"), Ok(("", NilType))); assert_eq!(parse_type("(Int -> Bool)"), Ok(("", arr(Integer, Boolean)))); assert_eq!( parse_type("((Int -> Int) -> (Bool -> Bool))"), |