namazu-dev(ring)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: date query



masao@xxxxxxxxxx (Masao Takaku) wrote:

>日付範囲指定による検索機能(のほんの一部)をコーディングしてみました。

すばらしい。


>CVSが使っているgetdate.cを使って
>日付指定文字列の解析を行なっています。
>なので、CVSで使える日付指定方法がそのまま利用可能。(多分)

いいですね。自分で書くと確実にバグに悩まされそうですから。:)


>* 指定方法
>  - オプションで指定するよりも、queryの一部として指定できた方が良いかも。

そう思います。query の指定方法はどんな風がいいのだろう?

ただ、 query の処理は Namazuのコードでも最も汚い部分の 1つな
ので、今の状況で機能を追加することは困難です。書き直します。

現状:

  * いきあたりばったりな方法で token に分ける
  * 再帰下降パーザで token のリストを探索しながら処理する

改善案:

  a. lex + yacc で書き直す

  b. libl を使うのが嫌なので lex は使わないで yacc のみ使う

  c. すべて Cで書き直す
     1. まともに字句解析して token に分ける
     2. 再帰下降パーザで逆ポーランド記法のスタックに変換
     3. スタックを頭から順に処理していく
     # yacc なら 2, 3 の代わりに LALR構文解析表を作ってもっと
     # 効率よく処理してくれますね

a, b, cのどれがいいと思います? 作業としては a, b, c の順に手
間が (手間に比例してバグも) 多くなります。

僕は a がいいと思います。保守および拡張が容易でしょうから。

# lex + yacc の勉強にもなるし


>コメントなど是非お願いします。

上記の query の処理を書き直したら、Namazuに取り込みたいと思
います。よろしくお願いします。

p.s.
高久さんはそろそろ修論から解放されました? :-)

-- Satoru Takabayashi