summaryrefslogtreecommitdiffhomepage
path: root/src/parse.y
diff options
context:
space:
mode:
Diffstat (limited to 'src/parse.y')
-rw-r--r--src/parse.y12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/parse.y b/src/parse.y
index 506e6e279..90a0eeb3b 100644
--- a/src/parse.y
+++ b/src/parse.y
@@ -1617,6 +1617,7 @@ op : '|' { $$ = intern("|"); }
| tUMINUS { $$ = intern("-@"); }
| tAREF { $$ = intern("[]"); }
| tASET { $$ = intern("[]="); }
+ | '`' { $$ = intern("`"); }
;
reswords : keyword__LINE__ | keyword__FILE__ | keyword__ENCODING__
@@ -4021,6 +4022,17 @@ parser_yylex(parser_state *p)
return parse_string(p);
case '`':
+ if (p->lstate == EXPR_FNAME) {
+ p->lstate = EXPR_ENDFN;
+ return '`';
+ }
+ if (p->lstate == EXPR_DOT) {
+ if (cmd_state)
+ p->lstate = EXPR_CMDARG;
+ else
+ p->lstate = EXPR_ARG;
+ return '`';
+ }
p->lex_strterm = new_strterm(p, str_xquote, '`', 0);
return tXSTRING_BEG;