Fixed issue with translation that caused infinite loops if an explicit number of open parentheses is set to 0
This commit is contained in:
parent
0d3b65734b
commit
c5b9aece9c
@ -16,7 +16,12 @@
|
||||
(let [plushy (if (:diploid argmap) (map first (partition 2 plushy)) plushy)
|
||||
opener? #(and (vector? %) (= (first %) 'open))] ;; [open <n>] marks opens
|
||||
(loop [push () ;; iteratively build the Push program from the plushy
|
||||
plushy (mapcat #(if-let [n (get instructions/opens %)] [% ['open n]] [%]) plushy)]
|
||||
plushy (mapcat #(let [n (get instructions/opens %)]
|
||||
(if (and n
|
||||
(> n 0))
|
||||
[% ['open n]]
|
||||
[%]))
|
||||
plushy)]
|
||||
(if (empty? plushy) ;; maybe we're done?
|
||||
(if (some opener? push) ;; done with plushy, but unclosed open
|
||||
(recur push '(close)) ;; recur with one more close
|
||||
|
@ -36,15 +36,10 @@
|
||||
:vector_boolean_iterate 1
|
||||
:vector_string_iterate 1
|
||||
:vector_integer_iterate 1
|
||||
:vector_float_iterate 1})
|
||||
:vector_float_iterate 1
|
||||
})
|
||||
|
||||
|
||||
#_(generate-instructions
|
||||
[:boolean :char :code :exec :float :integer :string
|
||||
:vector_boolean :vector_float :vector_integer :vector_string]
|
||||
[_dup _dup_times _dup_items _empty _eq _flush _pop _rot _shove
|
||||
_stack_depth _swap _yank _yank_dup _deep_dup])
|
||||
|
||||
#?(:clj
|
||||
(def cls->type
|
||||
{Boolean :boolean
|
||||
|
Loading…
x
Reference in New Issue
Block a user