M12i.スマートフォン用の表示で見るM12i.学術書・マンガ・アニメ・映画の消費活動とプログラミングについて2015-08-10それはParserというよりScannerだったのかJavaプログラミングの用語法とJava標準ライブラリのAPIに関するちょっとした話。結論を先にいえば「標準ライブラリ」についてきちんと理解しておくことは生産性の観点で重要」というそれだけの話です。以前、JP1/AJS2(日立製のスイートに含まれるジョブ実行管理システム)のユニット定義情報をパースしてJavaコードからのアクセスを可能にするライブラリをつくったのですが、そのなかでParserという言葉にちょっとしっくり来ないものを感じていました(JP1/AJS2のユニット定義パースライブラリはこちら。そこから分離したパーサライブラリはこちら)。いう2段階の処理を行う前提があって、とくに前者の部分はLexerとかTokenizerとか呼ばれるのが一般的なようです。後者が狭義のParserというわけです。実際、正規表現のコンパイラとランタイムを実装するときなどにはこの2段階構成が概念整理的にもモジュールの役割分担的にも便利に思えました。上述のJP1/AJS2のユニット定義ファイルに関していうとトークンレベルの仕様書は見つからず、構文レベルの仕様書を見たところ各種の識別子やリテラルそれらの出現順序について「ああも書ける」「こうも書ける」という感じでなんだか煩雑。っぽいもの、タプルもどきな何か、などなどについて順次読み取りをおこなう実装となりました。Parts』に示されているJSONパーサに影響を受けたのかもしれません。8のために旧PCJ-Pの復習をしていて気がついたのですが、私がParserと称して作りこんでいたモジュールはどうも標準ライブラリでいうところのScanner(java.util.Scanner)ではないかと思い始めた次第(参考までそのメソッド一覧を下段に転載)。知っていればこのクラスを拡張したり模倣したりすることでいろいろ時間の節約にもなった気がします。標準ライブラリについての理解というのはやはり重要だなぁという話です。現在のスキャナをクローズします。区切り文字を無視して、次に現れる指定されたパターンの検索を試みます。区切り文字を無視して、次に現れる、指定された文字列から構築されたパターンの検索を試みます。次に現れる指定されたパターンの検索を試みます。区切り文字を無視して、次に現れる、指定された文字列から構築されたパターンの検索を試みます。