summaryrefslogtreecommitdiffhomepage
path: root/mrbgems
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-01-15 22:47:13 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-01-15 22:49:40 +0900
commit4bba769b951faa370ce210d28bf8cb46734304e6 (patch)
treeaef13c24037365dac1513266435bbd5539c9354f /mrbgems
parent28d5dabacd61fa91d7bf5a99628858cf95fdf924 (diff)
downloadmruby-4bba769b951faa370ce210d28bf8cb46734304e6.tar.gz
mruby-4bba769b951faa370ce210d28bf8cb46734304e6.zip
Avoid syntax error regarding colons in the expression; fix #5290
Reported and inspired by @hasumikin; based on CRuby's `parse.y`.
Diffstat (limited to 'mrbgems')
-rw-r--r--mrbgems/mruby-compiler/core/parse.y10
-rw-r--r--mrbgems/mruby-compiler/core/y.tab.c10
2 files changed, 10 insertions, 10 deletions
diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y
index 5b58c902e..909dcef7c 100644
--- a/mrbgems/mruby-compiler/core/parse.y
+++ b/mrbgems/mruby-compiler/core/parse.y
@@ -5882,14 +5882,14 @@ parser_yylex(parser_state *p)
p->lstate = EXPR_BEG;
return tLABEL_TAG;
}
- if (!ISSPACE(c) || IS_BEG()) {
+ if (IS_END() || ISSPACE(c) || c == '#') {
pushback(p, c);
- p->lstate = EXPR_FNAME;
- return tSYMBEG;
+ p->lstate = EXPR_BEG;
+ return ':';
}
pushback(p, c);
- p->lstate = EXPR_BEG;
- return ':';
+ p->lstate = EXPR_FNAME;
+ return tSYMBEG;
case '/':
if (IS_BEG()) {
diff --git a/mrbgems/mruby-compiler/core/y.tab.c b/mrbgems/mruby-compiler/core/y.tab.c
index c389c19e2..7d1ec9e90 100644
--- a/mrbgems/mruby-compiler/core/y.tab.c
+++ b/mrbgems/mruby-compiler/core/y.tab.c
@@ -11883,14 +11883,14 @@ parser_yylex(parser_state *p)
p->lstate = EXPR_BEG;
return tLABEL_TAG;
}
- if (!ISSPACE(c) || IS_BEG()) {
+ if (IS_END() || ISSPACE(c) || c == '#') {
pushback(p, c);
- p->lstate = EXPR_FNAME;
- return tSYMBEG;
+ p->lstate = EXPR_BEG;
+ return ':';
}
pushback(p, c);
- p->lstate = EXPR_BEG;
- return ':';
+ p->lstate = EXPR_FNAME;
+ return tSYMBEG;
case '/':
if (IS_BEG()) {