2008年4月21日

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

斎藤と申します。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日 15:21
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/72368
トラックバック
コメント
コメントする




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