懸案の yylval 伝播をやろうと思って parse.y を見ると、 なぜか yylval への代入が既にパラメタライズされていた。
「おおっ? もしかして誰かがやってくれたのかっ!」
と思ったが、実装したのは昔の自分だったことがわかった。 やるな、過去の俺。
現在の状況……構文木がこんなふうになった
~/c/ruby % ruby -rripper/sexp -rpp -e 'pp Ripper.sexp("def obj.m(a,b) nil end")'
[:program,
[:stmts_add,
[:stmts_new],
[:defs,
[:var_ref, [:@ident, "obj", [1, 4]]],
[:@period, ".", [1, 7]],
[:@ident, "m", [1, 8]],
[:paren,
[:params,
[[:@ident, "a", [1, 10]], [:@ident, "b", [1, 12]]],
nil,
nil,
nil]],
[:bodystmt,
[:stmts_add, [:stmts_new], [:var_ref, [:@kw, "nil", [1, 15]]]],
nil,
nil,
nil]]]]
あと演算子がまるまる残ってるんだけど、 これをやると type clash (`' `val') の山に苦しめられるんだよなあ……
(14:35)
setup.rbを使っています。
ruby setup.rb all --rubypath=/usr/bin/ruby1.8と指定した場合、bin/のファイルの#!が上書きされないようです。
原因はFile.basename(rubypath)がrubyではないからなのですが、なんとかならないですかね。
あ、それは単なるミスみたいです。
CVS HEAD では直ってると思います。