Add a stub of a static analyzer.
This commit is contained in:
parent
7a2fabd131
commit
270f6100b7
18
src/ludus/analyzer.clj
Normal file
18
src/ludus/analyzer.clj
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
(ns ludus.analyzer
|
||||||
|
(:require
|
||||||
|
[ludus.ast :as ast]
|
||||||
|
[ludus.token :as token]))
|
||||||
|
|
||||||
|
(defn analyze [ast] ast)
|
||||||
|
|
||||||
|
(comment "
|
||||||
|
Here's where we do a bunch of static analysis.
|
||||||
|
Some things we might wish for:
|
||||||
|
* No unused bindings
|
||||||
|
* No unbound names
|
||||||
|
* Compound `loop` and `gen` forms must have LHS's (tuple patterns) of the same length
|
||||||
|
* Recur must be in tail position in `loop`s
|
||||||
|
* Tail call optimization for simple recursion (rewrite it as a loop?)
|
||||||
|
* Check arities for statically known functions
|
||||||
|
* Enforce single-member tuple after called keywords
|
||||||
|
")
|
Loading…
Reference in New Issue
Block a user