diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2014-02-24 02:04:40 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2014-02-24 02:04:40 -0800 |
commit | 8e8e14991164f2ddd33cac040a68b155847fa724 (patch) | |
tree | b83800dee6f245f010247d3bbff17d9a588a9b3b /ChangeLog | |
parent | b6c15577ecc660959a1d7ec69653d386b9254e92 (diff) | |
download | txr-8e8e14991164f2ddd33cac040a68b155847fa724.tar.gz txr-8e8e14991164f2ddd33cac040a68b155847fa724.tar.bz2 txr-8e8e14991164f2ddd33cac040a68b155847fa724.zip |
Symbol macros.
* eval.c (top_smb, defsymacro_s, symacrolet_s): New global variables.
(lookup_symac, get_opt_param_syms, get_param_syms, op_defsymacro,
expand_symacrolet, make_var_shadowing_env): New static functions.
(expand_tree_cases, expand_catch_clause): Install shadowing environment
so lexical bindings hide any symbol macrolets.
(expand_place): Fix neglect to expand an atomic form, which breaks
symbol macros used as places.
(expand): Expand symbol macros, expand symacrolet binding forms.
Make sure symbol macros are shadowed in the lexical binding
constructs. Take advantage of return value of rlcp_tree in a
few places.
(macro_form_p): Support for symbol macros; bugfix: not handling
default argument.
(macroexpand_1): Streamlined, and support added for symbol macros.
(eval_init): Protect top_smb from gc. Create new hash, stored in
top_smb. Initialize defsymacro_s and symacrolet_s.
Register op_defsymacro.
* parser.y (rlcp_tree): Return the to form instead of useless t and nil.
* txr.1: Documented.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 26 |
1 files changed, 26 insertions, 0 deletions
@@ -1,3 +1,29 @@ +2014-02-24 Kaz Kylheku <kaz@kylheku.com> + + Symbol macros. + + * eval.c (top_smb, defsymacro_s, symacrolet_s): New global variables. + (lookup_symac, get_opt_param_syms, get_param_syms, op_defsymacro, + expand_symacrolet, make_var_shadowing_env): New static functions. + (expand_tree_cases, expand_catch_clause): Install shadowing environment + so lexical bindings hide any symbol macrolets. + (expand_place): Fix neglect to expand an atomic form, which breaks + symbol macros used as places. + (expand): Expand symbol macros, expand symacrolet binding forms. + Make sure symbol macros are shadowed in the lexical binding + constructs. Take advantage of return value of rlcp_tree in a + few places. + (macro_form_p): Support for symbol macros; bugfix: not handling + default argument. + (macroexpand_1): Streamlined, and support added for symbol macros. + (eval_init): Protect top_smb from gc. Create new hash, stored in + top_smb. Initialize defsymacro_s and symacrolet_s. + Register op_defsymacro. + + * parser.y (rlcp_tree): Return the to form instead of useless t and nil. + + * txr.1: Documented. + 2014-02-23 Kaz Kylheku <kaz@kylheku.com> * txr.1: Document quasiquote operator syntax. |