Odds & ends

This commit is contained in:
Scott Richmond 2022-02-18 17:25:36 -05:00
parent a71db0e640
commit d6a547bdcb

View File

@ -315,22 +315,22 @@
- use accept-many in blocks and scripts - use accept-many in blocks and scripts
- parse-atom (and other parse functions) should take only a parser - parse-atom (and other parse functions) should take only a parser
- ast nodes should include their tokens - ast nodes should include their tokens
- * Time to start working on parsing errors (poisoned nodes, panic mode, etc.)
Other quick thoughts: Other quick thoughts:
* Once I get this far, then it's time to wire up the interpreter (with hard-coded functions, and the beginning of static analysis) * Once I get this far, then it's time to wire up the interpreter (with hard-coded functions, and the beginning of static analysis)
* ALSO: time to start working on parsing errors. (poisoned nodes, panic mode, etc.)
* Placeholders * Placeholders
* Placeholders may only appear in tuples in synthetic expressions * Placeholders may only appear in tuples in synthetic expressions
* Each of these may have zero or one placeholders * Each of these may have zero or one placeholders
* Does this want to happen in parsing or in analysis? * Does this want to happen in parsing or in analysis?
For future correctness checks: For future correctness checks:
* Early (even as part of wiring up the interpreter), begin the static analysis check for unbound names, redeclaration * Early (even as part of wiring up the interpreter), begin the static analysis check for
- unbound names
- re-binding of names
* Compound `loop` and `gen` forms must have LHS's (tuple patterns) of the same length * Compound `loop` and `gen` forms must have LHS's (tuple patterns) of the same length
* Recur is in tail position in `loop`s * Recur must be in tail position in `loop`s
* Tail call optimization for simple recursion * Tail call optimization for simple recursion
* Check arities for statically known functions * Check arities for statically known functions
* Enforce single-member tuple after called keywords * Enforce single-member tuple after called keywords