diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2011-11-17 21:12:08 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2011-11-17 21:12:08 -0800 |
commit | df70e45dae4adccca01441e0911d2f5e114e8e7f (patch) | |
tree | ab71125a6493e59b609eb5bc80bae30690d1baa9 /lib.c | |
parent | 68ca87bc780e25dea1418019161d99727225d1ce (diff) | |
download | txr-df70e45dae4adccca01441e0911d2f5e114e8e7f.tar.gz txr-df70e45dae4adccca01441e0911d2f5e114e8e7f.tar.bz2 txr-df70e45dae4adccca01441e0911d2f5e114e8e7f.zip |
Adding quote and unquote read syntax to list forms, resembling
Lisp. The difference is that splice is spelled ,* because @
already means something, and that there is only one quote operator.
None of this does anything; it is only syntax.
* lib.c (quote_s, qquote_s, unquote_s, splice_s): New variables.
(obj_init): New variables initialized.
* lib.h (quote_s, qquote_s, unquote_s, splice_s): Declared.
* parser.l: Added recognition rules.
* parser.y (SPLICE): New symbolic token.
(list): Added new syntax for quote and splicing.
Diffstat (limited to 'lib.c')
-rw-r--r-- | lib.c | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -58,6 +58,7 @@ val null, t, cons_s, str_s, chr_s, num_s, sym_s, pkg_s, fun_s, vec_s; val stream_s, hash_s, hash_iter_s, lcons_s, lstr_s, cobj_s, cptr_s; val var_s, expr_s, regex_s, chset_s, set_s, cset_s, wild_s, oneplus_s; val nongreedy_s, compiled_regex_s; +val quote_s, qquote_s, unquote_s, splice_s; val zeroplus_s, optional_s, compl_s, compound_s, or_s, and_s, quasi_s; val skip_s, trailer_s, block_s, next_s, freeform_s, fail_s, accept_s; val all_s, some_s, none_s, maybe_s, cases_s, collect_s, until_s, coll_s; @@ -2438,6 +2439,10 @@ static void obj_init(void) regex_s = intern(lit("regex"), system_package); nongreedy_s = intern(lit("nongreedy"), system_package); compiled_regex_s = intern(lit("compiled-regex"), system_package); + quote_s = intern(lit("quote"), user_package); + qquote_s = intern(lit("qquote"), user_package); + unquote_s = intern(lit("unquote"), user_package); + splice_s = intern(lit("splice"), user_package); chset_s = intern(lit("chset"), system_package); set_s = intern(lit("set"), user_package); cset_s = intern(lit("cset"), user_package); |