diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2014-03-03 01:44:37 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2014-03-03 01:44:37 -0800 |
commit | 039e2ebdfa5670de7a35084fd480fe204afbdc8b (patch) | |
tree | b9726ccd8d6b0d29bba921c8b96e433a4a4ed38e /lib.c | |
parent | 6cbd5aa63b23044c12817e0d442fe7678f6a0754 (diff) | |
download | txr-039e2ebdfa5670de7a35084fd480fe204afbdc8b.tar.gz txr-039e2ebdfa5670de7a35084fd480fe204afbdc8b.tar.bz2 txr-039e2ebdfa5670de7a35084fd480fe204afbdc8b.zip |
* parser.l: Allowing ^ to be a quote character, and adjusting definition
of identifiers to rule this out from being the first character of a
symbol which has no prefix. Recognize the ^ character as a token in the
NESTED state.
* lib.c (obj_print, obj_pprint): Render sys:qquote as ^.
* parser.y (choose_quote): Function removed.
(n_expr): Recognize '^' as quasiquote. Removed all the "smart quote"
hacks that try to make quote behave as quote or quasiquote, or try to
cancel out unquotes and quotes.
* tests/009/json.txr: Fixed to ^ quasiquote.
* tests/010/reghash.txr: Likewise.
* tests/011/macros-2.txr: Likewise.
* tests/011/mandel.txr: Likewise.
* tests/011/special-1.txr: Likewise.
* txr.1: Updated docs.
* genvim.txr: Revamped definitions for txr_ident and txl_ident so that
unqualified identifiers cannot start with # or ^, but ones with @ or :
in front can start with these characters.
* txr.vim: Regenerated.
Diffstat (limited to 'lib.c')
-rw-r--r-- | lib.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -5233,9 +5233,12 @@ val obj_print(val obj, val out) { val sym = car(obj); - if (sym == quote_s || sym == sys_qquote_s) { + if (sym == quote_s) { put_char(chr('\''), out); obj_print(second(obj), out); + } else if (sym == sys_qquote_s) { + put_char(chr('^'), out); + obj_print(second(obj), out); } else if (sym == sys_unquote_s) { put_char(chr(','), out); obj_print(second(obj), out); @@ -5419,9 +5422,12 @@ val obj_pprint(val obj, val out) { val sym = car(obj); - if (sym == quote_s || sym == sys_qquote_s) { + if (sym == quote_s) { put_char(chr('\''), out); - obj_pprint(second(obj), out); + obj_print(second(obj), out); + } else if (sym == sys_qquote_s) { + put_char(chr('^'), out); + obj_print(second(obj), out); } else if (sym == sys_unquote_s) { put_char(chr(','), out); obj_pprint(second(obj), out); |