Collate TODOs; comment repl cruft

This commit is contained in:
Scott Richmond 2023-05-26 15:21:55 -04:00
parent c6eeed4f4c
commit 776f975d54
3 changed files with 62 additions and 39 deletions

View File

@ -1,14 +1,39 @@
[ ] Wire up interpreter for spawn and receive
[ ] Write send function
[x] Fix recursive definition problems in grammar.clj
TODOS from interpreter
[ ] implement tuple splat patterns
[ ] update match-list to use new AST representation
[ ] fix length comparison when pattern includes splats
[ ] update match-dict to use new AST representation
[ ] update match-struct to use new AST representation
[ ] update interpret-receive to use new AST representation
[ ] Check interpret-fn-inner ctx for cycles/bugs
Re-add processes to the language
[ ] Write send as function
[ ] update interpret-spawn to use new AST representation
[ ] ---- Investigate weird timing issue in current send implementation
[ ] Investigate with-bindings and virtual threads
[ ] Fix recursive definition problems in grammar.clj
[ ] Investigate `with-bindings` and virtual threads
Finish interpreter
[ ] Wire up new interpreter to repl, script situation
[ ] Write compiler
[ ] Merge new interpreter
Write a compiler: desugaring
[ ] `...` to `..._` in tuple & list patterns
[ ] placeholder partial application to anonymous lambda
[ ] word -> :[word] word in pairs (patterns & expressions)
Write a compiler: correctness
[ ] check for unbound names
[ ] check for re-binding names
[ ] check that recur is in tail position
[ ] check that recur is only called inside loop or fn forms
[ ] check ns accesses
Write a compiler: optimization
[ ] devise tail call optimization
Next steps
[ ] Get drawing working?

View File

@ -273,37 +273,39 @@
;;; REPL
(def source
"2"
)
(comment
(def rule (literal))
(def source
"if 1 then 2 else 3"
)
(def tokens (-> source scan/scan :tokens))
(def rule (literal))
(def result (apply-parser literal tokens))
(def tokens (-> source scan/scan :tokens))
(def result (apply-parser script tokens))
(defn report [node]
(when (fail? node) (err-msg node))
node)
(defn report [node]
(when (fail? node) (err-msg node))
node)
(defn clean [node]
(if (map? node)
(-> node
(report)
(dissoc
;:status
:remaining
:token)
(update :data #(into [] (map clean) %)))
node))
(defn clean [node]
(if (map? node)
(-> node
(report)
(dissoc
;:status
:remaining
:token)
(update :data #(into [] (map clean) %)))
node))
(defn tap [x] (println "\n\n\n\n******NEW RUN\n\n:::=> " x "\n\n") x)
(defn tap [x] (println "\n\n\n\n******NEW RUN\n\n:::=> " x "\n\n") x)
(def my-data (-> result
clean
tap
))
(def my-data (-> result
clean
tap
))
(println my-data)
(println my-data))

View File

@ -718,7 +718,7 @@
(defn- interpret-literal [ast] (-> ast :data first))
(defn interpret-ast [ast ctx]
(println "interpreting ast type" (:type ast))
;(println "interpreting ast type" (:type ast))
;(println "AST: " ast)
(case (:type ast)
@ -865,9 +865,8 @@
(do
(process/start-vm)
(def source "
ref a = 1
if 1 then 2 else 3
")
(println "")
@ -885,9 +884,6 @@
(println result)
result))
(show/show false)
(comment "
Left to do: