On 13 Sep 2005, at 04:26, leonardo.pires / gmail.com wrote:

> I forgot to say what I want to know in my first email (sorry!) and
> noticed this only now: why I can't use the do form with BEGIN or END?
>
> END do
>   puts 'wow'
> end
>
> It's invalid! Because there's something implicit?

It is required to use { }, from parse.y:

                 | klBEGIN
                     {
                         if (in_def || in_single) {
                             yyerror("BEGIN in method");
                         }
                         local_push(0);
                     }
                   '{' compstmt '}'
                     {
                         ruby_eval_tree_begin = block_append 
(ruby_eval_tree_begin,
                                                              
NEW_PREEXE($4));
                         local_pop();
                         $$ = 0;
                     }
                 | klEND '{' compstmt '}'
                     {
                         if (in_def || in_single) {
                             rb_warn("END in method; use at_exit");
                         }

                         $$ = NEW_ITER(0, NEW_POSTEXE(), $3);
                     }

-- 
Eric Hodel - drbrain / segment7.net - http://segment7.net
FEC2 57F1 D465 EB15 5D6E  7C11 332A 551C 796C 9F04