* parse.y (symbol): symbols should be followed by EXPR_ENDARG.
* parse.y (dsym): ditto. * parse.y (parser_yylex): strings should be followed by EXPR_ENDARG. * parse.y (parser_yylex): ditto for numbers. * parse.y (parser_yylex): EXPR_ENDARG after ']' and '}'. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12207 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
22826be640
commit
138362834f
13
ChangeLog
13
ChangeLog
@ -64,6 +64,19 @@ Thu Apr 19 18:37:49 2007 Koichi Sasada <ko1@atdot.net>
|
|||||||
|
|
||||||
* test/ruby/test_settracefunc.rb: hook "c-return" of set_trace_func.
|
* test/ruby/test_settracefunc.rb: hook "c-return" of set_trace_func.
|
||||||
|
|
||||||
|
Thu Apr 19 20:57:50 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* parse.y (symbol): symbols should be followed by EXPR_ENDARG.
|
||||||
|
|
||||||
|
* parse.y (dsym): ditto.
|
||||||
|
|
||||||
|
* parse.y (parser_yylex): strings should be followed by
|
||||||
|
EXPR_ENDARG.
|
||||||
|
|
||||||
|
* parse.y (parser_yylex): ditto for numbers.
|
||||||
|
|
||||||
|
* parse.y (parser_yylex): EXPR_ENDARG after ']' and '}'.
|
||||||
|
|
||||||
Thu Apr 19 17:46:36 2007 Koichi Sasada <ko1@atdot.net>
|
Thu Apr 19 17:46:36 2007 Koichi Sasada <ko1@atdot.net>
|
||||||
|
|
||||||
* lib/optparse.rb: fix to override conv proc.
|
* lib/optparse.rb: fix to override conv proc.
|
||||||
|
27
parse.y
27
parse.y
@ -66,9 +66,9 @@ int ruby_sourceline; /* current line no. */
|
|||||||
enum lex_state_e {
|
enum lex_state_e {
|
||||||
EXPR_BEG, /* ignore newline, +/- is a sign. */
|
EXPR_BEG, /* ignore newline, +/- is a sign. */
|
||||||
EXPR_END, /* newline significant, +/- is a operator. */
|
EXPR_END, /* newline significant, +/- is a operator. */
|
||||||
|
EXPR_ENDARG, /* ditto, and unbound braces. */
|
||||||
EXPR_ARG, /* newline significant, +/- is a operator. */
|
EXPR_ARG, /* newline significant, +/- is a operator. */
|
||||||
EXPR_CMDARG, /* newline significant, +/- is a operator. */
|
EXPR_CMDARG, /* newline significant, +/- is a operator. */
|
||||||
EXPR_ENDARG, /* newline significant, +/- is a operator. */
|
|
||||||
EXPR_MID, /* newline significant, +/- is a operator. */
|
EXPR_MID, /* newline significant, +/- is a operator. */
|
||||||
EXPR_FNAME, /* ignore newline, no reserved words. */
|
EXPR_FNAME, /* ignore newline, no reserved words. */
|
||||||
EXPR_DOT, /* right after `.' or `::', no reserved words. */
|
EXPR_DOT, /* right after `.' or `::', no reserved words. */
|
||||||
@ -3773,10 +3773,10 @@ string_dvar : tGVAR
|
|||||||
symbol : tSYMBEG sym
|
symbol : tSYMBEG sym
|
||||||
{
|
{
|
||||||
/*%%%*/
|
/*%%%*/
|
||||||
lex_state = EXPR_END;
|
lex_state = EXPR_ENDARG;
|
||||||
$$ = $2;
|
$$ = $2;
|
||||||
/*%
|
/*%
|
||||||
lex_state = EXPR_END;
|
lex_state = EXPR_ENDARG;
|
||||||
$$ = dispatch1(symbol, $2);
|
$$ = dispatch1(symbol, $2);
|
||||||
%*/
|
%*/
|
||||||
}
|
}
|
||||||
@ -3791,7 +3791,7 @@ sym : fname
|
|||||||
dsym : tSYMBEG xstring_contents tSTRING_END
|
dsym : tSYMBEG xstring_contents tSTRING_END
|
||||||
{
|
{
|
||||||
/*%%%*/
|
/*%%%*/
|
||||||
lex_state = EXPR_END;
|
lex_state = EXPR_ENDARG;
|
||||||
if (!($$ = $2)) {
|
if (!($$ = $2)) {
|
||||||
yyerror("empty symbol literal");
|
yyerror("empty symbol literal");
|
||||||
}
|
}
|
||||||
@ -3820,7 +3820,7 @@ dsym : tSYMBEG xstring_contents tSTRING_END
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*%
|
/*%
|
||||||
lex_state = EXPR_END;
|
lex_state = EXPR_ENDARG;
|
||||||
$$ = dispatch1(dyna_symbol, $2);
|
$$ = dispatch1(dyna_symbol, $2);
|
||||||
%*/
|
%*/
|
||||||
}
|
}
|
||||||
@ -5591,7 +5591,7 @@ parser_yylex(struct parser_params *parser)
|
|||||||
token = here_document(lex_strterm);
|
token = here_document(lex_strterm);
|
||||||
if (token == tSTRING_END) {
|
if (token == tSTRING_END) {
|
||||||
lex_strterm = 0;
|
lex_strterm = 0;
|
||||||
lex_state = EXPR_END;
|
lex_state = EXPR_ENDARG;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -5599,7 +5599,7 @@ parser_yylex(struct parser_params *parser)
|
|||||||
if (token == tSTRING_END || token == tREGEXP_END) {
|
if (token == tSTRING_END || token == tREGEXP_END) {
|
||||||
rb_gc_force_recycle((VALUE)lex_strterm);
|
rb_gc_force_recycle((VALUE)lex_strterm);
|
||||||
lex_strterm = 0;
|
lex_strterm = 0;
|
||||||
lex_state = EXPR_END;
|
lex_state = EXPR_ENDARG;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return token;
|
return token;
|
||||||
@ -5920,7 +5920,7 @@ parser_yylex(struct parser_params *parser)
|
|||||||
}
|
}
|
||||||
tokfix();
|
tokfix();
|
||||||
set_yylval_str(rb_str_new(tok(), toklen()));
|
set_yylval_str(rb_str_new(tok(), toklen()));
|
||||||
lex_state = EXPR_END;
|
lex_state = EXPR_ENDARG;
|
||||||
return tCHAR;
|
return tCHAR;
|
||||||
|
|
||||||
case '&':
|
case '&':
|
||||||
@ -6069,7 +6069,7 @@ parser_yylex(struct parser_params *parser)
|
|||||||
int is_float, seen_point, seen_e, nondigit;
|
int is_float, seen_point, seen_e, nondigit;
|
||||||
|
|
||||||
is_float = seen_point = seen_e = nondigit = 0;
|
is_float = seen_point = seen_e = nondigit = 0;
|
||||||
lex_state = EXPR_END;
|
lex_state = EXPR_ENDARG;
|
||||||
newtok();
|
newtok();
|
||||||
if (c == '-' || c == '+') {
|
if (c == '-' || c == '+') {
|
||||||
tokadd(c);
|
tokadd(c);
|
||||||
@ -6286,7 +6286,10 @@ parser_yylex(struct parser_params *parser)
|
|||||||
case '}':
|
case '}':
|
||||||
COND_LEXPOP();
|
COND_LEXPOP();
|
||||||
CMDARG_LEXPOP();
|
CMDARG_LEXPOP();
|
||||||
|
if (c == ')')
|
||||||
lex_state = EXPR_END;
|
lex_state = EXPR_END;
|
||||||
|
else
|
||||||
|
lex_state = EXPR_ENDARG;
|
||||||
return c;
|
return c;
|
||||||
|
|
||||||
case ':':
|
case ':':
|
||||||
@ -6547,7 +6550,7 @@ parser_yylex(struct parser_params *parser)
|
|||||||
|
|
||||||
case '$':
|
case '$':
|
||||||
last_state = lex_state;
|
last_state = lex_state;
|
||||||
lex_state = EXPR_END;
|
lex_state = EXPR_ENDARG;
|
||||||
newtok();
|
newtok();
|
||||||
c = nextc();
|
c = nextc();
|
||||||
switch (c) {
|
switch (c) {
|
||||||
@ -6718,11 +6721,11 @@ parser_yylex(struct parser_params *parser)
|
|||||||
last_state = lex_state;
|
last_state = lex_state;
|
||||||
switch (tok()[0]) {
|
switch (tok()[0]) {
|
||||||
case '$':
|
case '$':
|
||||||
lex_state = EXPR_END;
|
lex_state = EXPR_ENDARG;
|
||||||
result = tGVAR;
|
result = tGVAR;
|
||||||
break;
|
break;
|
||||||
case '@':
|
case '@':
|
||||||
lex_state = EXPR_END;
|
lex_state = EXPR_ENDARG;
|
||||||
if (tok()[1] == '@')
|
if (tok()[1] == '@')
|
||||||
result = tCVAR;
|
result = tCVAR;
|
||||||
else
|
else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user