ANTLR チュートリアルを試す
ANTRL とは g4 と呼ばれる文法ファイルを入力し、構文木の解析を行う解析器を自動生成してくれるツールです。 公式サイトでは以下のように説明されています。
ANTLR (ANother Tool for Language Recognition) is a powerful parser generator for reading, processing, executing, or translating structured text or binary files. It's widely used to build languages, tools, and frameworks. From a grammar, ANTLR generates a parser that can build and walk parse trees.
今回は公式サイトにあるチュートリアルを実行した手順をメモしておきます。 検証は Ubuntu 22.04LTS 上で行いました。
java のインストール¶
Java 用のパーサを生成する際に利用する為、JDK をインストールしておきます。
1 |
|
ANTLR のインストール¶
.jar ファイルとして配布されていますので、ライブラリのパスにダウンロードしておきます。
1 2 3 |
|
環境変数の設定¶
Java のクラスパスと ANTLR で利用する alias を定義しておきます。 定義した後は source ~/.bashrc
するなり、ログアウト&ログインし直すなりして環境編集と alias を反映しておきます。
1 2 3 4 5 |
|
文法 (g4) ファイルの用意¶
「g4」と呼ばれる文法ファイルを用意しておきます。
1 2 3 4 5 6 7 8 9 10 11 |
|
解析器の生成¶
ANTLR は g4 ファイルを入力することで様々なプログラミング言語向けの解析器を生成することが出来ます。 今回は
1 |
|
ANTLR によって Java 用の解析器のソースコードが生成されました。
1 2 3 |
|
これをコンパイルし、解析器を生成します。
1 |
|
解析器が生成されました。
1 2 3 4 |
|
テスト用ファイルの準備¶
解析器で解析したいファイルを用意します。 今回は test1.txt
というファイル名で用意しました。 中身は「100+2*34
」となっており、これが前述の .g4 ファイルで定義された文法に従って解析されることを確認していく、ということになります。
1 2 3 |
|
以下のように実行し、「どのような構文木として解析されたのか?」を確認します。 -tree
オプションを指定すると以下のような構文木を表示させることが出来ます。
1 2 |
|