パーサー書けた。エラーの通知は面倒くさいからやらないことに。例えばインライン要素の終了識別子が見つからない場合、ブロック要素の終了と同時に終了を通知してやる等々。
次はHTMLへの変換用とXHTMLへの変換用の二種類のハンドラクラスを。SAXのContentHandler互換ッぽくしたかったけれど、ブロック要素の通知とインライン要素の通知が別々になっていた方が整形しやすいのでその線は捨てた(参照:クリップボードHTML)。
ハンドラも書いた。
でもアウトプットはHTMLにシリアライズするよりDOMのDocumentFragmentにしておいた方が幅が出そう。シリアライズされたものをlibxmlとかcDomletteとかで再構築した方が速かったら笑えないけれど。
何と言ったらいいのか、%mixedな内容のの最後に登場する「匿名ブロック」をパースできていなかったので、完成はまた来週だ。