diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2011-11-26 16:25:39 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2011-11-26 16:25:39 -0800 |
commit | ff9efa28206ca7c6aaaedbe0418106867868d129 (patch) | |
tree | 6ed26f6918ccabb3ca2826f5bc329fce910ea044 /parser.y | |
parent | bb83f68455149edd0acd6996115de881ed0e77a2 (diff) | |
download | txr-ff9efa28206ca7c6aaaedbe0418106867868d129.tar.gz txr-ff9efa28206ca7c6aaaedbe0418106867868d129.tar.bz2 txr-ff9efa28206ca7c6aaaedbe0418106867868d129.zip |
* match.c (subst_vars): Handle expr_s, so that
Lisp expressions can be interpolated into quasiliterals.
(extract_vars): Avoid recursing into expressions marked
with expr_s.
(do_output_line): Handle expr_s so that Lisp expressions
can be interpolated into output.
* parser.y (o_elem, quasi_items): Handle list expressions,
annotated with expr_s.
Diffstat (limited to 'parser.y')
-rw-r--r-- | parser.y | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -515,6 +515,7 @@ o_elem : TEXT { $$ = string_own($1); | SPACE { $$ = string_own($1); rl($$, num(lineno)); } | o_var { $$ = $1; } + | list { $$ = rlcp(cons(expr_s, $1), $1); } | rep_elem { $$ = $1; } ; @@ -746,7 +747,7 @@ quasi_items : quasi_item { $$ = cons($1, nil); } quasi_item : litchars { $$ = lit_char_helper($1); } | TEXT { $$ = string_own($1); } | var { $$ = $1; } - | list { $$ = $1; } + | list { $$ = rlcp(cons(expr_s, $1), $1); } ; litchars : LITCHAR { $$ = cons(chr($1), nil); } |