Compare commits

..

3 Commits

Author SHA1 Message Date
Scott Richmond
7a2c404daf Light testing 2023-12-24 14:16:08 -05:00
Scott Richmond
7541d2499d Change interpreter (just change name of binding in interpret-repeat 2023-12-24 14:12:50 -05:00
Scott Richmond
a6d64ff827 Change grammar 2023-12-24 14:11:49 -05:00
3 changed files with 5 additions and 5 deletions

View File

@ -229,7 +229,7 @@
(defp loop-expr group order-1 [(quiet :loop) tuple (quiet :with)
(flat (choice :loop-body [fn-clause compound-loop]))])
(defp repeat-expr group order-1 [(quiet :repeat) (choice :times [:word :number]) block])
(defp repeat-expr group order-1 [(quiet :repeat) (choice :times [:word :number]) non-binding])
(defp collection flat choice [;struct-literal
dict list-literal set-literal tuple])

View File

@ -811,9 +811,9 @@
times (if (= :word (:type times-expr))
(resolve-word times-expr ctx)
(-> times-expr :data first))
block (second data)]
expr (second data)]
(if (not (number? times)) (throw (ex-info (str "Repeat needs a number, not a " (base/get-type times)) {})))
(dotimes [_ times] (interpret-ast block ctx))))
(dotimes [_ times] (interpret-ast expr ctx))))
(defn- interpret-literal [ast] (-> ast :data first))

View File

@ -60,8 +60,8 @@
(comment
(def source "
:a (_)
let times = 4
repeat times print! (:foo)
")