From: kwa@... Date: 2008-04-21T23:36:52+09:00 Subject: [ruby-list:44852] Re: [Q] Ruby のパーサについて 桑田です。 斉藤さん、実に興味深い情報ありがとうございます。 $LD_PRELOADは初めて知りました。奥が深いというかなんというか。 > QIQという物は始めて知りました。なんの略か? と思ったのですが、きっと > "PHP".scan(/./).map(&:succ).join > なんでしょうね。 らしいです。しかし拡張ライブラリで本体のパーサを乗っ取るという アイデアには驚かされました。若い人の発想ってすごい。 -- makoto kuwata On 4/21/08, Tadashi Saito wrote: > 斎藤と申します。hackyなお話を。 > > On Sun, 20 Apr 2008 23:43:43 +0900 > "Makoto Kuwata" wrote: > > > 予約語を追加するとか、PHP における QIQ のように、拡張ライブラリで > > パーサ関数を乗っ取るようなことはできないかと考えています。 > > そこで冒頭のような質問をさせていただきました。 > > もしかしたらご存知の上でメールを投げられたのかもしれませんが、UNIX系OSでは > $LD_PRELOAD で ruby_yyparse を「乗っ取る」事はできると思います。 > ……という BinaryHacks#60 の超受け売りですが、 > > LD_PRELOAD=./myparser.so ruby > > で、rubyはlibruby.so以前にmyparser.so内からシンボルを解決しようと > するので、この中にruby_yyparseを定義して置けば乗っ取れます。 > > > (初心者にこそ使ってもらいたいパッチなので、導入の敷居をなんとか > > 下げられないものかと検討しています。) > > とのことですが、上記シェルスクリプトを"ruby"として保存し、本物のrubyよりも > 先の$PATHに置いておけば、透過的に自前パーザを起動できるでしょう。この辺は > インストール時に仕込めるはずです。 > > Windowsでの同様の方法は存じませんが、似たようなhackで実現できるかもしれません。 > この場合もやはり、.batを準備するという手段が使える、かもしれません。 > > 以下は余談ですが、 > > > 予約語を追加するとか、PHP における QIQ のように、拡張ライブラリで > > QIQという物は始めて知りました。なんの略か? と思ったのですが、きっと > "PHP".scan(/./).map(&:succ).join > なんでしょうね。 > > -- > 斎藤ただし > >