From 4af3611c835e9b6acb979987568f46ba86ef52e7 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Mon, 7 Nov 2016 20:16:14 -0800 Subject: New #; syntax for erasing following object. * parser.c (parser_circ_ref): Don't generate the circular reference if circular suppression is in effect. * parser.h (struct parser): New member, circ_suppress. We use this for suppressing the generation of circular #n# references in erased objects. * parser.l (grammar): Scan #; producing HASH_SEMI token. * parser.y (HASH_SEMI): New token. (hash_semis_n_expr, hash_semis_i_expr, ignored_i_exprs, ignored_n_exprs): New nonterminals, needed for supporting the use of #; in front of top-level forms. (spec): Use hash_semis_n_expr and hash_semis_i_expr instead of n_expr and i_expr. (r_expr): Support object erasure within nested syntax. (yybadtoken): Handle H_SEMI token. (parse): Initialize new circ_suppress member of parser struct to zero. * txr.1: Documented. * genvim.txr (txr_ign_par, txr_ign_bkt, txr_ign_par_interior, txr_ign_bkt_interior): New regions for colorizing erased objects (partial support). (txr_list, txr_bracket, txr_mlist, txr_mbrackets): Include erased objects by including regions txr_ign_par and txr_ign_bkt. * txr.vim, tl.vim: Regenerated. --- parser.h | 1 + 1 file changed, 1 insertion(+) (limited to 'parser.h') diff --git a/parser.h b/parser.h index a12d45ee..6980e0f4 100644 --- a/parser.h +++ b/parser.h @@ -56,6 +56,7 @@ struct parser { val syntax_tree; val circ_ref_hash; cnum circ_count; + int circ_suppress; scanner_t *scanner; struct yy_token recent_tok; struct yy_token tok_pushback[4]; -- cgit v1.2.3