パーサー・コンビネーター (parser.ss) を使って、テキスト全体の解析だけでなく、部分を抽出することも可能なんじゃないかと思い付き、実験してみました。 例として、はてなダイアリーに貼り付けられているコードを抽出するパーサーを作ります。 このページのソースを見ていただくと良く分かると思いますが、Scheme のコード部分は PRE タグに囲まれています。 構文ハイライト無しの場合はシンプルにタグの間の文字列を読み取れば良いんですが、有りの場合、構文要素ごとに細かく SPAN タグが埋め込まれています。 そのまま抽出しても読みにくいので何とかしたいんですが、とりあえず、タグ無しの文字列を読み取るパーサーを作ることにしましょう。 基本的には "<" 以外の文字を読み取るだけで良いと思うんですが、文字実体参照が有った場合には特別な処理が必要となります。 (define entities '