パーサジェネレータについて調べた
パーサジェネレータの位置づけ
少しだけパーサジェネレータについて書く。パーサジェネレータとはパーサを生成できるソフトウェアのことである。
そもそもパーサとはなんだったか確認しよう。
パーサ(=構文解析器)
パーサとは 構文解析器 - Wikipedia である。
XMLを読み取るパーサの例としては Document Object Model - Wikipedia や Simple API for XML - Wikipedia。要はDOMやSaxである。Javaを書いたことがあればちょっとは使ったことがあるはず。最近はXMLからJavaに変換する時は Java Architecture for XML Binding - Wikipedia を使うかもしれない。
構造を持った入力テキストの処理をおこなうものはすべてパーサだと言える。
なぜテキストに構造を持たせなければいけないのか?それは データ記述言語 - Wikipedia に書かれている以下のような理由による:
データ記述言語は、以下の点に主眼を置いて作られた。
1.複雑なデータ構造をもつデータを格納する。
2.データの記述方法や個々のデータ要素へのアクセス方法の共通化をはかる。
3.データをテキスト形式で格納する。
ただのテキストファイルだと、日付や誰によって更新されたか、どの部分が列でどの部分が行か?わからない。そういったデータの格納の仕方を定めたXML, JSON, HTML, そしてCSVやTSVすべてデータ記述言語と言える。XMLがまどろっこしいのは別にプログラマーがマゾだからではなく、付与したい情報が多いからである。
パーサジェネレータの利点
パーサがデータ記述言語によって構造化されたデータを読み取れることはわかった。では、パーサジェネレータは何ができるのか?
パーサジェネレータは、なんとこのデータ記述言語のルールを記述するだけでパーサを作ってくれる。スゴイ!
次の記事でそれを実践していく:
パーサジェネレータの実装の種類
Wikipediaを見ると、以下のような手法があるようだ