2005年07月07日(Thu) おもちゃ届きました。わーい♪ [長年日記]
● RD文法の中のRubyスクリプトをパースするには?
かずひこさんが、Hikiの文書に埋めこまれたRubyスクリプトのパースに挑戦されています。僕もこっそり(?)RDのパースに挑戦*1していて、そのうちRDに埋めこまれたRubyスクリプトのパースもしないといけないのです。
さて。現実的に、こうやって複数の文法が混ざっているデータって厳密に処理できるものなのでしょうか?
なんとなく、文法が変わった瞬間にレクサもパーサも動作を変えないといけないような気がしますよね。さらに、埋め込まれてるRubyのプラグイン呼び出しを解釈する時には、どこまでがプラグインの呼び出しなのか、をRubyのレクサ&パーサが知っていて、プラグインの呼び出しが終わった時点で元のレクサ&パーサに処理を戻さないといけない。つまり、Rubyのレクサ&パーサをさらに改造する必要があるような気がします。
僕は、プラグインを呼び出すスクリプト片にはプラグインの終わりをあらわす文字列は書けない、という制限をつけて日和ろうかと思ってたのです。そんなわけで、Hiki-ITS:6の動向はとても気になるところであります。
● [memo] 正しい情報とは何か
isanaさんの「検索サイトから来た君へ」と、essaさんの「デジタルトルーマンショー」を読んで、あまりに対照的なので笑いがこみあげてしまった。でもちょっと考えてみると、実は互いに対称な記事なのかもしれないと思う。
時間を置いてまた読んでみよう。
いずれにせよ、こういう文章を書けるのはうらやましいな。
あくまでもプラグインのパースであって、Ruby の文法をなんでも許すわけじゃないですよ。で、方針としてはプラグインとしてつじつまがあったらそこでプラグイン部分の解釈は終了、みたいな感じでやる予定です。
あら、そうなのですか。ちょっとだけ想像すると、()とか'とか"とか{}とか<<とかの可能性を考えると、中途半端にRubyの文法を追うよりは、プラグインの終わりのマークだけ許されない、というきまりにした方がコードもシンプルになるし人間にもわかりやすいのかな、と思ってしまいました。
最近のツッコまれどころ