Chapter 3. A Starter ANTLR Project^3
3.3 Integrating a Generated Parser into a Java Program
文法で良いスタートが切れれば、ANTLRが生成したコードをより大きなアプリへ統合できる。ここでは、初期化子パーサーを起動し、TestRigの-treeオプションに似た構文解析木を出力するシンプルなmain()を見てみよう。
<snip>starter/Test.java</snip>
$ javac ArrayInit*.java Test.java $ java Test {1,{2,3},4} ^Z (init { (value 1) , (value (init { (value 2) , (value 3) })) , (value 4) })
このプログラムではCommonTokenStramやParserTreeのような、4.1 Matching an Arithmetic Expression Language以降で詳しく見ていく、ANTLR実行時ライブラリのクラスをいくつか使っている。
ANTLRの構文解析器は、構文誤りの報告および回復も自動的に行う。例えば、初期化子の最後の } を入力し忘れると次のようになる。
$ java Test {1,2 EOF line 2:0 missing '}' at '<EOF>' (init { (value 1) , (value 2) <missing '}'>)
ここでは、ANTLRの実行方法と生成された構文解析器をJavaプログラムへ統合する方法を見てきた。単に構文をチェックするアプリケーションではぱっとしないので、short配列初期化をStringオブジェクトへ変換する翻訳器を作って終わりにする。
from The Definitive ANTLR4 Reference by Terence Parr