2008年4月21日

[ruby-list:44852] Re: [Q] Ruby のパーサについて

桑田です。
斉藤さん、実に興味深い情報ありがとうございます。
$LD_PRELOADは初めて知りました。奥が深いというかなんというか。

> QIQという物は始めて知りました。なんの略か? と思ったのですが、きっと
> "PHP".scan(/./).map(&:succ).join
> なんでしょうね。

らしいです。しかし拡張ライブラリで本体のパーサを乗っ取るという
アイデアには驚かされました。若い人の発想ってすごい。

--
makoto kuwata


On 4/21/08, Tadashi Saito <shiba@xxxxx> wrote:
> 斎藤と申します。hackyなお話を。
>
> On Sun, 20 Apr 2008 23:43:43 +0900
> "Makoto Kuwata" <kwa@xxxxx> 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
> なんでしょうね。
>
> --
> 斎藤ただし
>
>

投稿者 xml-rpc : 2008年4月21日 23:36
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/72371
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。