とある地味なブログ

プログラミングとお絵かきに関する雑記。

ScalaのパーサコンビネータでHTML風テキストを解析する

HTMLの開始タグと終了タグがちゃんと対応してるか確認するパーサコンビネータを書いてみました。 まあ、似たようなことやるなら、既存のライブラリやら、XMLとして文字列をロードすればいいと思いますけどね。

タグの対応をチェックする上で肝要なのは、^?関数です。

http://www.scala-lang.org/api/2.10.2/#scala.util.parsing.combinator.Parsers$Parser

こいつは、第一引数にパーシャルファンクション、第二引数にStringを返す関数を渡すと、 パーシャルファンクションにマッチしなかった場合、パースエラーにしてくれます。

なので、エラーになっている行がわかるわけです。

^?関数を使えば、より複雑な構文をパースすることができますね!