bitスマートフォン用の表示で見るbitこの広告は、90日以上更新していないブログに表示しています。いじっていて、ようやく文法ファイルの書き方がわかってきた。初心者向けの解説記事を書けるほど頭の中がこなれていないので、サンプルだけ示すことにする。こんなファイルを考える。text.」「(空文字)」という四つの文字列を認識するパーサを書きたいとする。ファイル解析のプログラムはスクラッチからがりがり書いてもよいけど、文法が複雑になってくるとプログラムが汚くなりがちである。便利ということになる。プログラムを生成してくれる。いった流れは簡単なのだが、文法ファイルの書き方はそれほど初心者には優しくない。文法ファイルは、字句解析部分と構文解析部分の二つの部分から成り立つが、最近はこれを個別のファイルとして書くのが流行り(?)である。StringLexer.g4。;「lexer」の行はおまじない。最初の「mode」より上のグローバル部分と、二つの「mode」で、グローバル部分を一つのモードと考えると、合計三つのモードから構成される。最初の「RQUOTE」は、引用符を読み込んだら元のモードに戻るという意味である。その中のエスケープ文字を処理する部分である。あとは説明しなくても分かるでしょ。(\と")に限定しているが、字句解析の段階でエラーにすると現場プログラム的にはエラー処理が面倒になるので、任意文字にしてもよいかもしれない。字句解析ルールは何もしないとグローバルに効いてしまうので、その場合、字句解析プログラムは文字列の中だろうがコメントだろうが、お構いなしに字句解析ルールを当てはめてしまう。使うときれいに字句解析文法ファイルを書ける。字句解析文法部分にしか使えないので、必然的に字句解析と構文解析とで文法ファイルを分ける必要が出てくる。次に構文解析の文法ファイル。ところが、さっきの字句解析ファイルのトークンを使っているよという宣言。後の部分が、アクションというやつである。いう変数に返すようにしている。コードを生成させて、動かすだけである。antのjavaタスクのarg要素に空白を含むパスを複数指定するにはantもANTLRも今更感はあるけど、久しぶりにいじると楽しい。月別アーカイブはてなブログをはじめよう!iwstttyさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。