木村です。
とりあえず ruby-devで訊きますが、必要があれば redmineへの登録もします。
Rubyについて Part 32
http://pc11.2ch.net/test/read.cgi/tech/1215531152/589
で触れられている
require 'ripper'
p Ripper.lex("puts __ENCODING__")
>[Ripper FATAL] unknown token 306 (RuntimeError)
なんでだろか
ruby 1.9.0 (2008-08-26 revision 18849) [i686-linux]
ですが、直後の590氏の推測通り、フォローすべき変更をripperでやっていない
ためのようです。
現在 keywords ファイルには
struct kwtable;
%%
__ENCODING__, {keyword__ENCODING__, keyword__ENCODING__}, EXPR_END
__LINE__, {keyword__LINE__, keyword__LINE__}, EXPR_END
__FILE__, {keyword__FILE__, keyword__FILE__}, EXPR_END
BEGIN, {keyword_BEGIN, keyword_BEGIN}, EXPR_END
と __ENCODING__ がありますが、ext/ripper/eventids2.cにある
テーブル
static const struct token_assoc {
int token;
ID *id;
} token_to_eventid[] = {
に __ENCODING__ に対応すると思われるものはありません。
{keyword_yield, &ripper_id_kw},
{keyword__FILE__, &ripper_id_kw},
{keyword__LINE__, &ripper_id_kw},
{keyword_BEGIN, &ripper_id_kw},
{keyword_END, &ripper_id_kw},
{tAMPER, &ripper_id_op},
とあるので、この辺に keyword__ENCODING__ のエントリを追加
してやれば良いかとも思うのですが確認していません。
少なくともこのファイルはkeywords等の変更に従って自動生成されるもの
ではないようなので、手で修正する必要があると思われます。
--
木村浩一/KIMURA Koichi
I thought what I'd do was, I'd pretend I was one of those deaf-mutes or
shoud I?
mail kbk at kt.rim.or.jp
web www.kt.rim.or.jp/~kbk/zakkicho/index.html