From: Shugo Maeda Date: 2011-12-10T23:25:19+09:00 Subject: [ruby-dev:44966] Re: [ruby-trunk - Bug #5738][Rejected] if false; BEGIN {}; end が syntax error になる 前田です。 2011年12月10日22:10 Yukihiro Matsumoto : > エラーのタイプは異なりますが、この変更は意図的です。ifでくくってあってもBEGINはコンパイル時に登録されます。ので、トップレベルでしか登録できないように文法が変更されました。 エラーメッセージがわかりにくくなっている気がするのですが、こんな感じで エラーメッセージを表示してはどうでしょうか。 https://gist.github.com/1455275 せめて、以下のパスは通らないので削った方がいいように思います。 if (in_def || in_single) { yyerror("BEGIN in method"); } -- Shugo Maeda