e$BLZB<$G$9!#e(B
e$B$H$j$"$($:e(B ruby-deve$B$G?V$-$^$9$,!“I,MW$,$”$l$Pe(B
redminee$B$X$NEPO?$b$7$^$9!#e(B
Rubye$B$K$D$$$Fe(B Part 32
http://pc11.2ch.net/test/read.cgi/tech/1215531152/589
e$B$G?($l$i$l$F$$$ke(B
require ‘ripper’
p Ripper.lex(“puts ENCODING”)
e$B!de(B[Ripper FATAL] unknown token 306 (RuntimeError)
[email protected]$m$+e(B
ruby 1.9.0 (2008-08-26 revision 18849) [i686-linux]
e$B$G$9$,!“D>8e$Ne(B590e$B;a$N?dB,DL$j!”%U%)%m!<$9$Y$-JQ99$re(Brippere$B$G$d$C$F$$$J$$e(B
e$B$?$a$N$h$&$G$9!#e(B
e$B8=:_e(B keywords e$B%U%!%$%k$K$Oe(B
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
e$B$He(B ENCODING
e$B$,$"$j$^$9$,!“e(Bext/ripper/eventids2.ce$B$K$”$ke(B
e$B%F!<%V%ke(B
static const struct token_assoc {
int token;
ID *id;
} token_to_eventid[] = {
e$B$Ke(B ENCODING e$B$KBP1~$9$k$H;W$o$l$k$b$N$O$"$j$^$;$s!#e(B
{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},
e$B$H$"$k$N$G!"$3$NJU$Ke(B keyword__ENCODING__ e$B$N%(%s%H%j$rDI2Ce(B
e$B$7$F$d$l$PNI$$$+$H$b;W$&$N$G$9$,3NG’$7$F$$$^$;$s!#e(B
e$B>/$J$/$H$b$3$N%U%!%$%k$Oe(Bkeywordse$BEy$NJQ99$K=>$C$F<[email protected]@.$5$l$k$b$Ne(B
e$B$G$O$J$$$h$&$J$N$G!"<[email protected]$9$kI,MW$,$"$k$H;W$o$l$^$9!#e(B