カラクリスタ

独自記法をどうやって実装するか

はてな記法や Wiki の記法のような独自記法をどうやって実装するかで悩み中。


今この Blog で使っている独自記法を、微妙な点を改善しつつ、Perl モジュールにしようと思っているのだけど、どうやって実装するかで悩んでいる。

色々な独自記法を見た限り、大きくわけて、

  • 一行ずつ読み込んでして処理
  • 正規表現でまとめて処理

の 2 タイプに分かれる。前者の場合、Text::Hatena や Text::Trac がそうで、後者の場合 Text::Markdown がそうなっている。

で、今使っている記法の実装は Text::Markdown と同じ後者で、Perl 書き始めたあたりに書いたやつなので、コードがいい加減で、メンテナンスしづらかったりする。

で、色々なスクリプト等で使いたいため、モジュール化しようと考えているんだけど、どう実装するかのめどが立たない。

XML を処理する SAX(:=Simple API for XML)とか参考になりそうなんだけど、なかなかいい資料が見つからない。(英語だと読む気しない><)

独自記法の作成/実装とかどこかにノウハウがありそうなんだけど、みつからないんだよなー。

さて、どうしたものやら。

追記:2006-12-20T17:27:00

YACC とか ANTLR とか Lex なるものがあるらしい。

うむむむむ。知らなかった。