diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2011-11-26 18:07:38 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2011-11-26 18:07:38 -0800 |
commit | 92514021697a83be8332457b3dcc437f029ee786 (patch) | |
tree | 10788c646eebf606dc4da498988693b8b4ddd636 | |
parent | ff9efa28206ca7c6aaaedbe0418106867868d129 (diff) | |
download | txr-92514021697a83be8332457b3dcc437f029ee786.tar.gz txr-92514021697a83be8332457b3dcc437f029ee786.tar.bz2 txr-92514021697a83be8332457b3dcc437f029ee786.zip |
* parser.y (expr): Set source location info on elements.
(strlit): Set location info.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | parser.y | 19 |
2 files changed, 17 insertions, 7 deletions
@@ -1,5 +1,10 @@ 2011-11-26 Kaz Kylheku <kaz@kylheku.com> + * parser.y (expr): Set source location info on elements. + (strlit): Set location info. + +2011-11-26 Kaz Kylheku <kaz@kylheku.com> + * match.c (subst_vars): Handle expr_s, so that Lisp expressions can be interpolated into quasiliterals. (extract_vars): Avoid recursing into expressions marked @@ -623,17 +623,21 @@ exprs_opt : exprs { $$ = $1; } | /* empty */ { $$ = nil; } ; -expr : IDENT { $$ = intern(string_own($1), nil); } - | KEYWORD { $$ = intern(string_own($1), - keyword_package); } +expr : IDENT { $$ = rl(intern(string_own($1), nil), + num(lineno)); } + | KEYWORD { $$ = rl(intern(string_own($1), + keyword_package), + num(lineno)); } | METAVAR { $$ = list(var_s, - intern(string_own($1), nil), nao); } + intern(string_own($1), nil), nao); + rl($$, num(lineno)); } | NUMBER { $$ = num($1); } | list { $$ = $1; } | meta_expr { $$ = $1; } | regex { $$ = cons(regex_compile(rest($1)), - rest($1)); } - | chrlit { $$ = $1; } + rest($1)); + rlcp($$, $1); } + | chrlit { $$ = rl($1, num(lineno)); } | strlit { $$ = $1; } | quasilit { $$ = $1; } ; @@ -714,7 +718,8 @@ newl : '\n' ; strlit : '"' '"' { $$ = null_string; } - | '"' litchars '"' { $$ = lit_char_helper($2); } + | '"' litchars '"' { $$ = lit_char_helper($2); + rl($$, num(lineno)); } | '"' error { $$ = nil; yybadtoken(yychar, lit("string literal")); } ; |