I intend to port the alexpander egg to Chicken 4, or rather to port alexpander to Chicken 4, because the new egg will be based on upstream version 1.65 rather than 1.58. Because there is no longer a macro processing hook in Chicken 4, this egg will be strictly for run-time use, for people who want to safely and correctly expand syntax-rules macros in their own compilers or interpreters or other code walkers.
The result of alexpander expansion contains only variable references, procedure calls, begin (without internal definitions), define (only the simple form), delay, if, lambda (with only one body expression), LETREC (with only one body expression), quote, and set! Also, there are syntax-rules definitions of numerous non-R5RS macros. I don't want to clutter up the module with these, so I'll make them into a big quoted list and expose the list as extra-macros or the like. If you want them, you can prepend them to the code to be expanded. I currently intend only to support the entry points documented in the source code (but not, unfortunately, in the egg): alexpander-repl, expand-program, expand-top-level-forms, and expand-top-level-forms!, plus the utility procedures null-store and null-loc-n and the value null-output. If anyone has Chicken 3 programs that use alexpander at run time, and require any other entry points to be exported, please let me know. -- John Cowan [email protected] http://ccil.org/~cowan Nobody expects the RESTifarian Inquisition! Our chief weapon is surprise ... surprise and tedium ... tedium and surprise .... Our two weapons are tedium and surprise ... and ruthless disregard for unpleasant facts.... Our three weapons are tedium, surprise, and ruthless disregard ... and an almost fanatical devotion to Roy Fielding.... _______________________________________________ Chicken-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/chicken-users
