diff --git a/ChangeLog b/ChangeLog index 2091367a49..51006c0d5d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Fri Jul 13 11:09:38 2007 Nobuyoshi Nakada + + * parse.y (program, stmt, primary): reduced duplicated code. + Fri Jul 13 10:33:29 2007 Nobuyoshi Nakada * array.c (rb_ary_flatten_bang): check argument if valid diff --git a/parse.y b/parse.y index bb39af8e30..23f2aef3d1 100644 --- a/parse.y +++ b/parse.y @@ -708,11 +708,10 @@ static void ripper_compile_error(struct parser_params*, const char *fmt, ...); %% program : { - /*%%%*/ lex_state = EXPR_BEG; + /*%%%*/ local_push(compile_for_eval); /*% - lex_state = EXPR_BEG; %*/ } compstmt @@ -926,15 +925,12 @@ stmt : keyword_alias fitem {lex_state = EXPR_FNAME;} fitem } | keyword_BEGIN { - /*%%%*/ if (in_def || in_single) { yyerror("BEGIN in method"); } + /*%%%*/ /* local_push(0); */ /*% - if (in_def || in_single) { - yyerror("BEGIN in method"); - } %*/ } '{' compstmt '}' @@ -2765,14 +2761,12 @@ primary : literal } | keyword_class cpath superclass { - /*%%%*/ if (in_def || in_single) yyerror("class definition in method body"); + /*%%%*/ local_push(0); $$ = ruby_sourceline; /*% - if (in_def || in_single) - yyerror("class definition in method body"); %*/ } bodystmt @@ -2823,14 +2817,12 @@ primary : literal } | keyword_module cpath { - /*%%%*/ if (in_def || in_single) yyerror("module definition in method body"); + /*%%%*/ local_push(0); $$ = ruby_sourceline; /*% - if (in_def || in_single) - yyerror("module definition in method body"); %*/ } bodystmt