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