aboutsummaryrefslogtreecommitdiff
path: root/src/lang/parser.clj
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lang/parser.clj7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/lang/parser.clj b/src/lang/parser.clj
index 2f9a26c66..76f32aba1 100644
--- a/src/lang/parser.clj
+++ b/src/lang/parser.clj
@@ -86,6 +86,12 @@
=else (apply-m parse-form (list ?else))]
(return [::if =test =then =else])))
+(defparser ^:private parse-do
+ [::&lexer/list ([[::&lexer/ident "do"] & ?exprs] :seq)]
+ (exec [=exprs (map-m #(apply-m parse-form (list %))
+ ?exprs)]
+ (return [::do =exprs])))
+
(defparser ^:private parse-case
[::&lexer/list ([[::&lexer/ident "case"] ?variant & cases] :seq)]
(exec [=variant (apply-m parse-form (list ?variant))
@@ -201,6 +207,7 @@
parse-def
parse-defdata
parse-if
+ parse-do
parse-case
parse-let
parse-tagged