parse.y: should allow newline after ....

This commit is contained in:
Yukihiro "Matz" Matsumoto
2021-11-11 22:22:26 +09:00
parent 885a87e408
commit 7c1878669a
3 changed files with 5 additions and 3 deletions
+1 -1
View File
@@ -56,7 +56,7 @@ enum mrb_lex_state_enum {
EXPR_ENDFN, /* ditto, and unbound braces. */
EXPR_ARG, /* newline significant, +/- is an operator. */
EXPR_CMDARG, /* newline significant, +/- is an operator. */
EXPR_MID, /* newline significant, +/- is an operator. */
EXPR_MID, /* newline significant, +/- is a sign. */
EXPR_FNAME, /* ignore newline, no reserved words. */
EXPR_DOT, /* right after '.' or '::', no reserved words. */
EXPR_CLASS, /* immediate after 'class', no here document. */
+2 -1
View File
@@ -5693,7 +5693,7 @@ parser_yylex(parser_state *p)
case '.':
{
int is_beg = IS_BEG();
p->lstate = EXPR_BEG;
p->lstate = EXPR_MID;
if ((c = nextc(p)) == '.') {
if ((c = nextc(p)) == '.') {
return is_beg ? tBDOT3 : tDOT3;
@@ -5702,6 +5702,7 @@ parser_yylex(parser_state *p)
return is_beg ? tBDOT2 : tDOT2;
}
pushback(p, c);
p->lstate = EXPR_BEG;
if (c >= 0 && ISDIGIT(c)) {
yyerror(p, "no .<digit> floating literal anymore; put 0 before dot");
}
+2 -1
View File
@@ -11916,7 +11916,7 @@ parser_yylex(parser_state *p)
case '.':
{
int is_beg = IS_BEG();
p->lstate = EXPR_BEG;
p->lstate = EXPR_MID;
if ((c = nextc(p)) == '.') {
if ((c = nextc(p)) == '.') {
return is_beg ? tBDOT3 : tDOT3;
@@ -11925,6 +11925,7 @@ parser_yylex(parser_state *p)
return is_beg ? tBDOT2 : tDOT2;
}
pushback(p, c);
p->lstate = EXPR_BEG;
if (c >= 0 && ISDIGIT(c)) {
yyerror(p, "no .<digit> floating literal anymore; put 0 before dot");
}