summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro Matz Matsumoto <[email protected]>2013-03-22 15:53:08 +0900
committerYukihiro Matz Matsumoto <[email protected]>2013-03-22 15:53:08 +0900
commitb547a7ed2cc781500a572b3a24fdfba7aed85e40 (patch)
tree2a11095a2da662f286ed741c0bed16efbf631349
parentab7bd61596e0d684c27d08088e51cca092291751 (diff)
downloadmruby-b547a7ed2cc781500a572b3a24fdfba7aed85e40.tar.gz
mruby-b547a7ed2cc781500a572b3a24fdfba7aed85e40.zip
allow backtick as a symbol
-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;