diff options
author | Eduardo Julian | 2014-12-15 22:28:27 -0400 |
---|---|---|
committer | Eduardo Julian | 2014-12-15 22:28:27 -0400 |
commit | ab72e219835d05d7ce76111626a8119a64f5f283 (patch) | |
tree | 6f13de468108da4fc338f785f3010f61335b112a /src/lang/parser.clj | |
parent | a37f958774bd0f7b1800a68a44492e4f95d26e8c (diff) |
Added "do" expressions.
Diffstat (limited to '')
-rw-r--r-- | src/lang/parser.clj | 7 |
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 |