summaryrefslogtreecommitdiffstats
path: root/parser.y
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2011-11-26 16:25:39 -0800
committerKaz Kylheku <kaz@kylheku.com>2011-11-26 16:25:39 -0800
commitff9efa28206ca7c6aaaedbe0418106867868d129 (patch)
tree6ed26f6918ccabb3ca2826f5bc329fce910ea044 /parser.y
parentbb83f68455149edd0acd6996115de881ed0e77a2 (diff)
downloadtxr-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.y3
1 files changed, 2 insertions, 1 deletions
diff --git a/parser.y b/parser.y
index 5a5c340b..7a5730ea 100644
--- a/parser.y
+++ b/parser.y
@@ -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); }