diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-04-24 07:04:41 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-04-24 07:04:41 +0000 |
commit | 5f34227718b20c1f7b10798ff2180629a391e1a8 (patch) | |
tree | 7798584ee9cff43c0d4ceaa1054e0db2e33c5ea5 /parse.y | |
parent | 4f2b00429e9f98a91ae94f10d2d0435a120ed5e7 (diff) |
* parse.y (parser_yylex): EXPR_BEG by keywords is a start point of
commands. [ruby-dev:45563][Bug #6347]
* parse.y (superclass): ditto for superclass.
* parse.y (parser_parse_string, parser_here_document): ditto for
string interpolation.
* parse.y (parser_yylex): ditto for singleton class.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r-- | parse.y | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -4407,6 +4407,7 @@ superclass : term | '<' { lex_state = EXPR_BEG; + command_start = TRUE; } expr_value term { @@ -6144,6 +6145,7 @@ parser_parse_string(struct parser_params *parser, NODE *quote) pushback(c); return tSTRING_DVAR; case '{': + command_start = TRUE; return tSTRING_DBEG; } tokadd('#'); @@ -6369,6 +6371,7 @@ parser_here_document(struct parser_params *parser, NODE *here) pushback(c); return tSTRING_DVAR; case '{': + command_start = TRUE; return tSTRING_DBEG; } tokadd('#'); @@ -7009,6 +7012,8 @@ parser_yylex(struct parser_params *parser) switch (lex_state) { case EXPR_FNAME: case EXPR_DOT: lex_state = EXPR_ARG; break; + case EXPR_CLASS: + command_start = TRUE; default: lex_state = EXPR_BEG; break; } @@ -7997,8 +8002,10 @@ parser_yylex(struct parser_params *parser) set_yylval_name(rb_intern(kw->name)); return kw->id[0]; } - if (kw->id[0] == keyword_do) { + if (lex_state == EXPR_BEG) { command_start = TRUE; + } + if (kw->id[0] == keyword_do) { if (lpar_beg && lpar_beg == paren_nest) { lpar_beg = 0; --paren_nest; |