TODO =========================================================================== Source location tracking - essential for an acceptable system - entails a portable reader Easy performance wins: - perhaps avoid lset procedures - optimise generated calls to map/append in expand-literal-syntax - partially done, wrt map/append, but cons vs list needs looking at Report mzscheme's complaint about the test case named "ellipsis-escaping", to find out whether it's a bug in mzscheme or a bug in this expander and psyntax. Check SRFI-10 vs mzscheme's "#," syntax - conflict? - put phase markers on identifiers etc - adapt to Flatt's macromod system - support patterns with subpattern following the ellipsis - use literal-identifier=? or similar (??) instead of free-identifier=? in syntax-case, because of module bindings for names vs total bindings for names. See psyntax webpage. DONE =========================================================================== Test syntax templates containing variables inside vectors! - I think maybe I'm losing the substs/marks for vectors (DONE - and I was. Fixed now!) Easy performance wins: - avoid append in merging subst lists (DONE) - introduce marks in subst lists (DONE) --------------------------------------------------------------------------- From alexpander, a list of things to check: ;; Compile-syntax-rules: ;; This doesn't actually compile, it just does verification. ;; Detects all possible errors: ;; pattern literals list is not a list of identifiers (DONE) ;; ellipsis in literals list (DONE) ;; rule is not a two-element list (DONE) ;; missing pattern keyword (pattern is not a pair whose car is an identifier) (INVALID for s-c) ;; duplicate pattern variable (DONE) ;; ellipsis not preceded by a pattern or template. (DONE) ;; list or vector pattern with multiple ellipses. (DONE) ;; improper list pattern with an ellipsis. (???) ;; variable instance in template not at sufficient ellipsis depth. (DONE) ;; template ellipsis closes no variables. (DONE) --------------------------------------------------------------------------- - support patterns with ellipsis escaping "(... ...)" (DONE) Identifier macros - both in ref and set positions (DONE)