mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Avoid syntax error regarding colons in the expression; fix #5290
Reported and inspired by @hasumikin; based on CRuby's `parse.y`.
This commit is contained in:
@@ -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()) {
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
Reference in New Issue
Block a user