From: Minero Aoki Date: 2000-01-05T16:45:35+09:00 Subject: [ruby-list:20055] Re: RD with method index (again) あおきです。 In mail "[ruby-list:20032] Re: RD with method index (again)" Toshiro Kuwabara wrote: > Toshです。 > >> 後半部分ですが、DescListの場合も > >> :ITEM > >> > >> DESCLIST > >> > >> は許されるようになってると思います。手元の簡単なテストではこれを通しま (略) > すいません。間違えてました。 > おっしゃる通り、WHITELINEはその位置だと許されていません。 > これはRDtoolの実装上の問題なのですが、RDの仕様はこういう細かい事まで > 決められてはいませんし、WHITELINEがその位置にいれられても特に便利な > わけでもないですので、まあいいかな、と思ってます。 ぼくはその機能すごく欲しいです。 というか、すでに net/* は全部そうなってて、この前始めて rdtool を 試したら全滅してて衝撃をうけました(試してないのがバレバレ ^^;;)。 日本語だとそうでもないんですが、英語だと文字がつまってみえるので あいだをあけたい感じがします。 # ちなみに net/* の RD はさっき直しました。 パッチだすかもしれません。 -- ところで、rdtool が遅いってことですが、とりあえずパーザ方面で 言えるのは、 * { result = val[0] } はアクションを省略するほうが全然速い。 そうするとアクション呼び出しと配列 val の生成が省略されます。 * result が val[0] に初期化されることを活用するほうがいい。 たとえば val[0].push val[1]; result = val[0] でなく いきなり result.push val[1] のほうがいい。 result が val[0] 以外に初期化されることは将来に渡ってありません。 * val はユーザの自由に使えるので使えるだけ使ったほうがいい。 たとえば val が二個のときは result = [ val[1], val[2] ] より result = val などとしたほうが配列の生成を抑えられます。 * スキャナを速くすると一気に高速になります。 方法は……工夫してもらうってことで ^^;; あと Racc とは関係ないですが Array#+ より concat が圧倒的に速いです。 どこで時間を食ってるのかは調べてませんが、 これらの修正でちょっとは速くなるんでないかと思います。 ------------------------------------------------------------------- あおきみねろう