namazu-dev(ring)


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

Re: NMZ.f vs NMZ.field (Re: namazu's command line options)



Yukinori Maeda <yuki@xxxxxxx> wrote:

>> ただ、こういった処理を C言語で実現するのは面倒なのが難点です。
>> どなたか書きません? :)
>
>flexを使うのはだめですかね?

flexは使ったことがありませんでした。添付されていたコードをさっ
そく試したところ、

  % flex namazu-test.l 
  % gcc lex.yy.c -lfl
  % ./a.out 
  <dt>
  <strong><a href="http://www.namazu.org/">namazuのページ</a></strong>
  <dd>
  <strong>Author</strong>: <em>Satoru Takabayashi</em><br>
  <strong>Date</strong>: <em>1999年6月1日</em><br>
  <strong>Size</strong>: <em>1024 bytes<\em><br>
  namazuの公式ホームページ
  <dd><a href="http://www.namazu.org/">http://www.namazu.org/</a><br><br>

と、きちんと動きました。すごい!


>正規表現無しなら、strstr(3)つかっても簡単にできそうかな?

えっと、やりたいことをもう一度、考え直してみました。

  <dt>
  <strong><a href="${uri}">${title}</a></strong>
  <dd>
  <strong>Author</strong>: <em>${author}</em><br>
  <strong>Date</strong>: <em>${date}</em><br>
  <strong>Size</strong>: <em>${size} bytes<\em><br>
  ${summary}
  <dd><a href="${uri}">${uri}</a><br><br>

置換部分は ${フィールド名} とする。フィールド名は 
"[-_a-z0-9]+" という正規表現で表す。 (任意のフィールド名が使
える e.g. ${popularity-ranking}, ${recommendation-level})

検索結果の表示の際には NMZ.result を scan して、 ${フィール
ド名} を見つけたら、 "NMZ.field.フィールド名" から当該ファイ
ルのエントリを取りだし、置換する。

こういったコードは flex を使えば割に簡単に生成できますよね?
(たぶん)

# .namazurc の解析も flex にやらせたいと思います。なぜか手元
# に O'Reilly の『lex and yacc入門』があることですし。なによ
# り flex を使うと玄人っぽくてよいです :) 

-- Satoru Takabayashi
第I期の試験は明日でおしまい