aboutsummaryrefslogtreecommitdiff
path: root/src/parse/parsetree.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/parse/parsetree.rs')
-rw-r--r--src/parse/parsetree.rs16
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))"),