なんとな~くしあわせ?の日記

JavaとかAWSの設定とかをメモする技術ブログ

パーサジェネレータについて調べた

パーサジェネレータの位置づけ

少しだけパーサジェネレータについて書く。パーサジェネレータとはパーサを生成できるソフトウェアのことである。

そもそもパーサとはなんだったか確認しよう。

パーサ(=構文解析器)

パーサとは 構文解析器 - Wikipedia である。

XMLを読み取るパーサの例としては Document Object Model - WikipediaSimple 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を見ると、以下のような手法があるようだ