おまぬけ活動日誌

最近のツッコまれどころ

この日誌から Google してもらう


2005年07月07日(Thu) おもちゃ届きました。わーい♪ [長年日記]

RD文法の中のRubyスクリプトをパースするには?

かずひこさんが、Hikiの文書に埋めこまれたRubyスクリプトのパースに挑戦されています。僕もこっそり(?)RDのパースに挑戦*1していて、そのうちRDに埋めこまれたRubyスクリプトのパースもしないといけないのです。

さて。現実的に、こうやって複数の文法が混ざっているデータって厳密に処理できるものなのでしょうか?

なんとなく、文法が変わった瞬間にレクサもパーサも動作を変えないといけないような気がしますよね。さらに、埋め込まれてるRubyのプラグイン呼び出しを解釈する時には、どこまでがプラグインの呼び出しなのか、をRubyのレクサ&パーサが知っていて、プラグインの呼び出しが終わった時点で元のレクサ&パーサに処理を戻さないといけない。つまり、Rubyのレクサ&パーサをさらに改造する必要があるような気がします。

僕は、プラグインを呼び出すスクリプト片にはプラグインの終わりをあらわす文字列は書けない、という制限をつけて日和ろうかと思ってたのです。そんなわけで、Hiki-ITS:6の動向はとても気になるところであります。

*1 このパーサはトークンがやってきた瞬間にまずreduceしてしまい、そいつに後からshiftしていくようになってます。世の中一般にあるレクサ&パーサとは順番が逆になっていて、なんだか大きな間違いが無いでもないような気がする。

[memo] 正しい情報とは何か

isanaさんの「検索サイトから来た君へ」と、essaさんの「デジタルトルーマンショー」を読んで、あまりに対照的なので笑いがこみあげてしまった。でもちょっと考えてみると、実は互いに対称な記事なのかもしれないと思う。

時間を置いてまた読んでみよう。

いずれにせよ、こういう文章を書けるのはうらやましいな。

[run] 3マイルコース 30分弱

ずーっとさぼってました。でも、明日も走れたら来週からちょっと距離を延ばそうかな。

本日のツッコミ(全2件) [ツッコミを入れる]
> かずひこ (2005年07月07日(Thu) 20:07)

あくまでもプラグインのパースであって、Ruby の文法をなんでも許すわけじゃないですよ。で、方針としてはプラグインとしてつじつまがあったらそこでプラグイン部分の解釈は終了、みたいな感じでやる予定です。

> zunda (2005年07月07日(Thu) 23:58)

あら、そうなのですか。ちょっとだけ想像すると、()とか'とか"とか{}とか<<とかの可能性を考えると、中途半端にRubyの文法を追うよりは、プラグインの終わりのマークだけ許されない、というきまりにした方がコードもシンプルになるし人間にもわかりやすいのかな、と思ってしまいました。


作り手とその取り巻きだけが楽しんでる間は本物じゃない。その中身が理解できない人々の生活を変えてこそ本物だ


zunda <zunda at freeshell.org>