ruby-changes:41008
From: yugui <ko1@a...>
Date: Sun, 13 Dec 2015 19:37:44 +0900 (JST)
Subject: [ruby-changes:41008] yugui:r53087 (trunk): * parse.y: debug output of lex_state transition if PARSER_DEBUG
yugui 2015-12-13 19:37:25 +0900 (Sun, 13 Dec 2015) New Revision: 53087 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=53087 Log: * parse.y: debug output of lex_state transition if PARSER_DEBUG Modified files: trunk/ChangeLog trunk/parse.y Index: ChangeLog =================================================================== --- ChangeLog (revision 53086) +++ ChangeLog (revision 53087) @@ -1,3 +1,7 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Sun Dec 13 18:40:45 2015 Yuki Yugui Sonoda <yugui@y...> + + * parse.y: debug output of lex_state transition if PARSER_DEBUG + Sun Dec 13 18:49:25 2015 Nobuyoshi Nakada <nobu@r...> * io.c (parse_mode_enc): preserve encoding of mode string in Index: parse.y =================================================================== --- parse.y (revision 53086) +++ parse.y (revision 53087) @@ -94,7 +94,14 @@ enum lex_state_e { https://github.com/ruby/ruby/blob/trunk/parse.y#L94 #define IS_lex_state_all(ls) IS_lex_state_all_for(lex_state, (ls)) #if PARSER_DEBUG +# define SET_LEX_STATE(ls) do { \ + printf("lex_state: %s -> %s at L%d\n", \ + lex_state_name(lex_state), lex_state_name((ls)), __LINE__); \ + lex_state = (ls); \ + } while (0) static const char *lex_state_name(enum lex_state_e state); +#else +# define SET_LEX_STATE(ls) do { lex_state = (ls); } while (0) #endif typedef VALUE stack_type; @@ -927,7 +934,7 @@ static void token_info_pop(struct parser https://github.com/ruby/ruby/blob/trunk/parse.y#L934 %% program : { - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); /*%%%*/ local_push(compile_for_eval || rb_parse_in_main()); /*% @@ -1121,7 +1128,7 @@ stmt_or_begin : stmt https://github.com/ruby/ruby/blob/trunk/parse.y#L1128 %*/ } -stmt : keyword_alias fitem {lex_state = EXPR_FNAME;} fitem +stmt : keyword_alias fitem {SET_LEX_STATE(EXPR_FNAME);} fitem { /*%%%*/ $$ = NEW_ALIAS($2, $4); @@ -1920,12 +1927,12 @@ fname : tIDENTIFIER https://github.com/ruby/ruby/blob/trunk/parse.y#L1927 | tFID | op { - lex_state = EXPR_ENDFN; + SET_LEX_STATE(EXPR_ENDFN); $$ = $1; } | reswords { - lex_state = EXPR_ENDFN; + SET_LEX_STATE(EXPR_ENDFN); /*%%%*/ $$ = $<id>1; /*% @@ -1957,7 +1964,7 @@ undef_list : fitem https://github.com/ruby/ruby/blob/trunk/parse.y#L1964 $$ = rb_ary_new3(1, $1); %*/ } - | undef_list ',' {lex_state = EXPR_FNAME;} fitem + | undef_list ',' {SET_LEX_STATE(EXPR_FNAME);} fitem { /*%%%*/ $$ = block_append($1, NEW_UNDEF($4)); @@ -2686,7 +2693,7 @@ primary : literal https://github.com/ruby/ruby/blob/trunk/parse.y#L2693 $$ = dispatch1(begin, $3); %*/ } - | tLPAREN_ARG {lex_state = EXPR_ENDARG;} rparen + | tLPAREN_ARG {SET_LEX_STATE(EXPR_ENDARG);} rparen { /*%%%*/ $$ = 0; @@ -2699,7 +2706,7 @@ primary : literal https://github.com/ruby/ruby/blob/trunk/parse.y#L2706 $<val>1 = cmdarg_stack; cmdarg_stack = 0; } - expr {lex_state = EXPR_ENDARG;} rparen + expr {SET_LEX_STATE(EXPR_ENDARG);} rparen { cmdarg_stack = $<val>1; /*%%%*/ @@ -3037,11 +3044,11 @@ primary : literal https://github.com/ruby/ruby/blob/trunk/parse.y#L3044 in_def = $<num>4 & 1; current_arg = $<id>3; } - | k_def singleton dot_or_colon {lex_state = EXPR_FNAME;} fname + | k_def singleton dot_or_colon {SET_LEX_STATE(EXPR_FNAME);} fname { $<num>4 = in_single; in_single = 1; - lex_state = EXPR_ENDFN|EXPR_LABEL; /* force for args */ + SET_LEX_STATE(EXPR_ENDFN|EXPR_LABEL); /* force for args */ local_push(0); $<id>$ = current_arg; current_arg = 0; @@ -4305,7 +4312,7 @@ string_content : tSTRING_CONTENT https://github.com/ruby/ruby/blob/trunk/parse.y#L4312 { $<node>$ = lex_strterm; lex_strterm = 0; - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); } string_dvar { @@ -4329,7 +4336,7 @@ string_content : tSTRING_CONTENT https://github.com/ruby/ruby/blob/trunk/parse.y#L4336 } { $<num>$ = lex_state; - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); } { $<num>$ = brace_nest; @@ -4344,7 +4351,7 @@ string_content : tSTRING_CONTENT https://github.com/ruby/ruby/blob/trunk/parse.y#L4351 cond_stack = $<val>1; cmdarg_stack = $<val>2; lex_strterm = $<node>3; - lex_state = $<num>4; + SET_LEX_STATE($<num>4); brace_nest = $<num>5; heredoc_indent = $<num>6; heredoc_line_indent = -1; @@ -4386,7 +4393,7 @@ string_dvar : tGVAR https://github.com/ruby/ruby/blob/trunk/parse.y#L4393 symbol : tSYMBEG sym { - lex_state = EXPR_END; + SET_LEX_STATE(EXPR_END); /*%%%*/ $$ = $2; /*% @@ -4403,7 +4410,7 @@ sym : fname https://github.com/ruby/ruby/blob/trunk/parse.y#L4410 dsym : tSYMBEG xstring_contents tSTRING_END { - lex_state = EXPR_END; + SET_LEX_STATE(EXPR_END); /*%%%*/ $$ = dsym_node($2); /*% @@ -4493,7 +4500,7 @@ backref : tNTH_REF https://github.com/ruby/ruby/blob/trunk/parse.y#L4500 superclass : '<' { - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); command_start = TRUE; } expr_value term @@ -4517,7 +4524,7 @@ f_arglist : '(' f_args rparen https://github.com/ruby/ruby/blob/trunk/parse.y#L4524 /*% $$ = dispatch1(paren, $2); %*/ - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); command_start = TRUE; } | { @@ -4529,7 +4536,7 @@ f_arglist : '(' f_args rparen https://github.com/ruby/ruby/blob/trunk/parse.y#L4536 { parser->in_kwarg = !!$<num>1; $$ = $2; - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); command_start = TRUE; } ; @@ -4982,7 +4989,7 @@ singleton : var_ref https://github.com/ruby/ruby/blob/trunk/parse.y#L4989 $$ = $1; %*/ } - | '(' {lex_state = EXPR_BEG;} expr rparen + | '(' {SET_LEX_STATE(EXPR_BEG);} expr rparen { /*%%%*/ if ($3 == 0) { @@ -7371,7 +7378,7 @@ parse_numeric(struct parser_params *pars https://github.com/ruby/ruby/blob/trunk/parse.y#L7378 int suffix; is_float = seen_point = seen_e = nondigit = 0; - lex_state = EXPR_END; + SET_LEX_STATE(EXPR_END); newtok(); if (c == '-' || c == '+') { tokadd(c); @@ -7606,7 +7613,7 @@ parse_qmark(struct parser_params *parser https://github.com/ruby/ruby/blob/trunk/parse.y#L7613 register int c; if (IS_END()) { - lex_state = EXPR_VALUE; + SET_LEX_STATE(EXPR_VALUE); return '?'; } c = nextc(); @@ -7643,7 +7650,7 @@ parse_qmark(struct parser_params *parser https://github.com/ruby/ruby/blob/trunk/parse.y#L7650 } ternary: pushback(c); - lex_state = EXPR_VALUE; + SET_LEX_STATE(EXPR_VALUE); return '?'; } newtok(); @@ -7680,7 +7687,7 @@ parse_qmark(struct parser_params *parser https://github.com/ruby/ruby/blob/trunk/parse.y#L7687 } tokfix(); set_yylval_str(STR_NEW3(tok(), toklen(), enc, 0)); - lex_state = EXPR_END; + SET_LEX_STATE(EXPR_END); return tCHAR; } @@ -7760,7 +7767,7 @@ parse_percent(struct parser_params *pars https://github.com/ruby/ruby/blob/trunk/parse.y#L7767 case 's': lex_strterm = NEW_STRTERM(str_ssym, term, paren); - lex_state = EXPR_FNAME; + SET_LEX_STATE(EXPR_FNAME); return tSYMBEG; default: @@ -7770,13 +7777,13 @@ parse_percent(struct parser_params *pars https://github.com/ruby/ruby/blob/trunk/parse.y#L7777 } if ((c = nextc()) == '=') { set_yylval_id('%'); - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); return tOP_ASGN; } if (IS_SPCARG(c)) { goto quotation; } - lex_state = IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG; + SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG); pushback(c); warn_balanced("%%", "string literal"); return '%'; @@ -7801,7 +7808,7 @@ tokenize_ident(struct parser_params *par https://github.com/ruby/ruby/blob/trunk/parse.y#L7808 set_yylval_name(ident); if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) && is_local_id(ident) && lvar_defined(ident)) { - lex_state = EXPR_END; + SET_LEX_STATE(EXPR_END); } } @@ -7831,7 +7838,7 @@ parse_gvar(struct parser_params *parser, https://github.com/ruby/ruby/blob/trunk/parse.y#L7838 { register int c; - lex_state = EXPR_END; + SET_LEX_STATE(EXPR_END); newtok(); c = nextc(); switch (c) { @@ -7923,7 +7930,7 @@ parse_gvar(struct parser_params *parser, https://github.com/ruby/ruby/blob/trunk/parse.y#L7930 } if (tokadd_ident(parser, c)) return 0; - lex_state = EXPR_END; + SET_LEX_STATE(EXPR_END); tokenize_ident(parser, last_state); return tGVAR; } @@ -7962,7 +7969,7 @@ parse_atmark(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L7969 } if (tokadd_ident(parser, c)) return 0; - lex_state = EXPR_END; + SET_LEX_STATE(EXPR_END); tokenize_ident(parser, last_state); return result; } @@ -8013,7 +8020,7 @@ parse_ident(struct parser_params *parser https://github.com/ruby/ruby/blob/trunk/parse.y#L8020 if (IS_LABEL_POSSIBLE()) { if (IS_LABEL_SUFFIX(0)) { - lex_state = EXPR_ARG|EXPR_LABELED; + SET_LEX_STATE(EXPR_ARG|EXPR_LABELED); nextc(); set_yylval_name(TOK_INTERN()); return tLABEL; @@ -8026,7 +8033,7 @@ parse_ident(struct parser_params *parser https://github.com/ruby/ruby/blob/trunk/parse.y#L8033 kw = rb_reserved_word(tok(), toklen()); if (kw) { enum lex_state_e state = lex_state; - lex_state = kw->state; + SET_LEX_STATE(kw->state); if (IS_lex_state_for(state, EXPR_FNAME)) { set_yylval_name(rb_intern2(tok(), toklen())); return kw->id[0]; @@ -8051,7 +8058,7 @@ parse_ident(struct parser_params *parser https://github.com/ruby/ruby/blob/trunk/parse.y#L8058 return kw->id[0]; else { if (kw->id[0] != kw->id[1]) - lex_state = EXPR_BEG | EXPR_LABEL; + SET_LEX_STATE(EXPR_BEG | EXPR_LABEL); return kw->id[1]; } } @@ -8059,17 +8066,17 @@ parse_ident(struct parser_params *parser https://github.com/ruby/ruby/blob/trunk/parse.y#L8066 if (IS_lex_state(EXPR_BEG_ANY | EXPR_ARG_ANY | EXPR_DOT)) { if (cmd_state) { - lex_state = EXPR_CMDARG; + SET_LEX_STATE(EXPR_CMDARG); } else { - lex_state = EXPR_ARG; + SET_LEX_STATE(EXPR_ARG); } } else if (lex_state == EXPR_FNAME) { - lex_state = EXPR_ENDFN; + SET_LEX_STATE(EXPR_ENDFN); } else { - lex_state = EXPR_END; + SET_LEX_STATE(EXPR_END); } tokenize_ident(parser, last_state); @@ -8093,7 +8100,7 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8100 token = here_document(lex_strterm); if (token == tSTRING_END) { lex_strterm = 0; - lex_state = EXPR_END; + SET_LEX_STATE(EXPR_END); } } else { @@ -8108,7 +8115,7 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8115 if (token == tSTRING_END || token == tREGEXP_END || token == tLABEL_END) { rb_gc_force_recycle((VALUE)lex_strterm); lex_strterm = 0; - lex_state = token == tLABEL_END ? EXPR_BEG|EXPR_LABEL : EXPR_END; + SET_LEX_STATE(token == tLABEL_END ? EXPR_BEG|EXPR_LABEL : EXPR_END); } } return token; @@ -8201,14 +8208,14 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8208 } normal_newline: command_start = TRUE; - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); return '\n'; case '*': if ((c = nextc()) == '*') { if ((c = nextc()) == '=') { set_yylval_id(tPOW); - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); return tOP_ASGN; } pushback(c); @@ -8227,7 +8234,7 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8234 else { if (c == '=') { set_yylval_id('*'); - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); return tOP_ASGN; } pushback(c); @@ -8243,19 +8250,19 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8250 c = '*'; } } - lex_state = IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG; + SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG); return c; case '!': c = nextc(); if (IS_AFTER_OPERATOR()) { - lex_state = EXPR_ARG; + SET_LEX_STATE(EXPR_ARG); if (c == '@') { return '!'; } } else { - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); } if (c == '=') { return tNEQ; @@ -8297,7 +8304,7 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8304 } } - lex_state = IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG; + SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG); if ((c = nextc()) == '=') { if ((c = nextc()) == '=') { return tEQQ; @@ -8325,12 +8332,12 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8332 if (token) return token; } if (IS_AFTER_OPERATOR()) { - lex_state = EXPR_ARG; + SET_LEX_STATE(EXPR_ARG); } else { if (IS_lex_state(EXPR_CLASS)) command_start = TRUE; - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); } if (c == '=') { if ((c = nextc()) == '>') { @@ -8342,7 +8349,7 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8349 if (c == '<') { if ((c = nextc()) == '=') { set_yylval_id(tLSHFT); - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); return tOP_ASGN; } pushback(c); @@ -8353,14 +8360,14 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8360 return '<'; case '>': - lex_state = IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG; + SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG); if ((c = nextc()) == '=') { return tGEQ; } if (c == '>') { if ((c = nextc()) == '=') { set_yylval_id(tRSHFT); - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); return tOP_ASGN; } pushback(c); @@ -8376,14 +8383,14 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8383 case '`': if (IS_lex_state(EXPR_FNAME)) { - lex_state = EXPR_ENDFN; + SET_LEX_STATE(EXPR_ENDFN); return c; } if (IS_lex_state(EXPR_DOT)) { if (cmd_state) - lex_state = EXPR_CMDARG; + SET_LEX_STATE(EXPR_CMDARG); else - lex_state = EXPR_ARG; + SET_LEX_STATE(EXPR_ARG); return c; } lex_strterm = NEW_STRTERM(str_xquote, '`', 0); @@ -8399,10 +8406,10 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8406 case '&': if ((c = nextc()) == '&') { - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); if ((c = nextc()) == '=') { set_yylval_id(tANDOP); - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); return tOP_ASGN; } pushback(c); @@ -8410,11 +8417,11 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8417 } else if (c == '=') { set_yylval_id('&'); - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); return tOP_ASGN; } else if (c == '.') { - lex_state = EXPR_DOT; + SET_LEX_STATE(EXPR_DOT); return tANDDOT; } pushback(c); @@ -8429,15 +8436,15 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8436 warn_balanced("&", "argument prefix"); c = '&'; } - lex_state = IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG; + SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG); return c; case '|': if ((c = nextc()) == '|') { - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); if ((c = nextc()) == '=') { set_yylval_id(tOROP); - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); return tOP_ASGN; } pushback(c); @@ -8445,17 +8452,17 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8452 } if (c == '=') { set_yylval_id('|'); - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); return tOP_ASGN; } - lex_state = IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL; + SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL); pushback(c); return '|'; case '+': c = nextc(); if (IS_AFTER_OPERATOR()) { - lex_state = EXPR_ARG; + SET_LEX_STATE(EXPR_ARG); if (c == '@') { return tUPLUS; } @@ -8464,18 +8471,18 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8471 } if (c == '=') { set_yylval_id('+'); - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); return tOP_ASGN; } if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous('+'))) { - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); pushback(c); if (c != -1 && ISDIGIT(c)) { return parse_numeric(parser, '+'); } return tUPLUS; } - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); pushback(c); warn_balanced("+", "unary operator"); return '+'; @@ -8483,7 +8490,7 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8490 case '-': c = nextc(); if (IS_AFTER_OPERATOR()) { - lex_state = EXPR_ARG; + SET_LEX_STATE(EXPR_ARG); if (c == '@') { return tUMINUS; } @@ -8492,28 +8499,28 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8499 } if (c == '=') { set_yylval_id('-'); - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); return tOP_ASGN; } if (c == '>') { - lex_state = EXPR_ENDFN; + SET_LEX_STATE(EXPR_ENDFN); return tLAMBDA; } if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous('-'))) { - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); pushback(c); if (c != -1 && ISDIGIT(c)) { return tUMINUS_NUM; } return tUMINUS; } - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); pushback(c); warn_balanced("-", "unary operator"); return '-'; case '.': - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); if ((c = nextc()) == '.') { if ((c = nextc()) == '.') { return tDOT3; @@ -8525,7 +8532,7 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8532 if (c != -1 && ISDIGIT(c)) { yyerror("no .<digit> floating literal anymore; put 0 before dot"); } - lex_state = EXPR_DOT; + SET_LEX_STATE(EXPR_DOT); return '.'; case '0': case '1': case '2': case '3': case '4': @@ -8539,9 +8546,9 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8546 COND_LEXPOP(); CMDARG_LEXPOP(); if (c == ')') - lex_state = EXPR_ENDFN; + SET_LEX_STATE(EXPR_ENDFN); else - lex_state = EXPR_ENDARG; + SET_LEX_STATE(EXPR_ENDARG); if (c == '}') { if (!brace_nest--) c = tSTRING_DEND; } @@ -8551,16 +8558,16 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8558 c = nextc(); if (c == ':') { if (IS_BEG() || IS_lex_state(EXPR_CLASS) || IS_SPCARG(-1)) { - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); return tCOLON3; } - lex_state = EXPR_DOT; + SET_LEX_STATE(EXPR_DOT); return tCOLON2; } if (IS_END() || ISSPACE(c) || c == '#') { pushback(c); warn_balanced(":", "symbol literal"); - lex_state = EXPR_BEG; + SET_LEX_STATE(EXPR_BEG); return ':'; } switch (c) { @@ -8574,7 +8581,7 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8581 pushback(c); break; } - lex_state = EXPR_FNAME; + SET_LEX_STATE(EXPR_FNAME); return tSYMBEG; case '/': @@ -8584,7 +8591,7 @@ parser_yylex(struct parser_params *parse https://github.com/ruby/ruby/blob/trunk/parse.y#L8591 } if ((c = nex (... truncated) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/