From 039e2ebdfa5670de7a35084fd480fe204afbdc8b Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Mon, 3 Mar 2014 01:44:37 -0800 Subject: * 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. --- lib.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'lib.c') diff --git a/lib.c b/lib.c index 04c550fa..d28d16d7 100644 --- a/lib.c +++ b/lib.c @@ -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); -- cgit v1.2.3