けいじゅ@日本ラショナルソフトウェアです.

In [ruby-list :11793 ] the message: "[ruby-list:11793] Re: [racc] help
me ", on Jan/29 00:04(JST) aamine / dp.u-netsurf.ne.jp writes:

>あおきです。

>> パーズそのものの速度は大部早いみたいですね. 処理はscannerのボトルネッ
>> クだけって感じです.
>
>みたいですね。
>lexもどきの文法ファイルからCとRubyのソースを出力するとかも考えたの
>ですが、RubyのProcをよびだすコストが正規表現の速度差をうわまわったら
>意味がないし。
>Rubyでがんばる方向では、正規表現を複数回よびだすのをやめて
>
>/(\Apat1)|(\Apat2)|(\Apat3)|(\Apat4)|...|(\ApatN)/
>
>でスキャンするとか。
>それで、あとからどのカッコにマッチしたのか調べる。
>モード変化は、Regexpをまるごととりかえてしまうことで実装。
>MatchingDataに「nilでない最初の括弧」とかいう情報があると
>かなり高速になるんですけどね。(できるかな?もしかして)

rtagsで使っているrubyのscannerは正規表現を使っていないんですけどね. だ
からかえって遅いのかな(^^;;;

でも, 私の実力ではrubyの字句を完全に識別できるような複雑な正規表現は書
けないし(^^;;; 

>> >> # あと, もうちょっとraccのコンパイル速度が早くなると嬉しいんですが(^^;;;

>うう。いろいろやってみたのですが、アルゴリズムを変えない限り
>今の速度で限界みたいです。これは明日にでも。
>
># bisonのコードでも見て勉強してきますです。

(^^;;; すばらしいっ!!

>> rtags.ryの件は後半にあるほとんど無駄なトークンをscanner側で1つにしちゃ
>> えばきっと状態数がかなり少なくなるので, rtagsのパーズは早くなるとは思
>> うのですが...
>
>そうですね。INTEGERとFLOATとXSTRINGと…あれ?即値全部かな

rtagsのレベルだとほとんどいらないですよね.

>> ところで, 生成したパーザで出てくるデフォルトのエラーのメッセージの意味
>> が良く分からないのですが... 
>> 
>> Racc parse error
>>   unexpected token ''
>> 
>>   LR state  = 0136139127128136139131151136139123124136139117136139117136139106
>> 
>> ってなっている時, どういう意味になっているのでしょうか?
>
>すみません、parser.rbのバグでした。パッチつけます。

バグでしたか(^^;;; フカーイ意味があるのかと...

>tokenが空文字列になってるほうはひきつづき調査中です。

お願いします(__


__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju / rational.com <<---