あるテキストの解析をすることになり、パーサジェネレータでパーサを作ってみようと思っています。昔々、yacc/lex (bison/flex) を使ってある言語のパーサーを作成しましたが、今は文法ファイルの作成を支援するツールも含まれた強力なツールがありますね。今回はANTLRを使ってみることにしました。年末年始のお休み中に遊んでみようと思います。
ANLTRを少し試してみるなら公式サイトにANTLR Labというページもあります。ブラウザ上で文法定義と入力となるテキストを渡してあげると構文木を表示してくれます。
ローカルで試すならantlr4-tools
というものが実行に必要な環境も作ってくれるので良さそうです。今回はこちらを使います。
antlr4-toolsの導入
antlr4-toolsの導入に必要なのはPython3のみです。ここではPythonパッケージをPython仮想環境venv
にインストールすることにします。次のコマンドで仮想環境を作成して有効化します。
$ python3 -m venv .venv $ . .venv/bin/activate
次にantlr4-tools
をインストールします。
$ pip install antlr4-tools Collecting antlr4-tools Collecting install-jdk (from antlr4-tools) Installing collected packages: install-jdk, antlr4-tools Successfully installed antlr4-tools-0.1 install-jdk-0.3.0
仮想環境には次の2つのコマンドがインストールされました。この時点ではまだANTLR4もJavaもインストールされていません。
.venv/ antlr4 antlr4-parse
ここでantlr4
コマンドを実行してみると、つぎのようなメッセージが表示されます。
Downloading antlr4-4.11.1-complete.jar ANTLR tool needs Java to run; install Java JRE 11 yes/no (default yes)?
ANTLR4のJARファイルをダウンロードしようとしています。さらに次の行でJRE 11をインストールするか聞いてきます。デフォルトがyesなのでそのままリターンキーを押下すると次のように表示されます。
Installed Java in /home/someone/.jre/jdk-11.0.17+8-jre; remove that dir to uninstall ANTLR Parser Generator Version 4.11.1 -o ___ specify output directory where all output is generated -lib ___ specify location of grammars, tokens files -atn generate rule augmented transition network diagrams -encoding ___ specify grammar file encoding; e.g., euc-jp -message-format ___ specify output style for messages in antlr, gnu, vs2005 -long-messages show exception details when available for errors and warnings -listener generate parse tree listener (default) -no-listener don't generate parse tree listener -visitor generate parse tree visitor -no-visitor don't generate parse tree visitor (default) -package ___ specify a package/namespace for the generated code -depend generate file dependencies -D<option>=value set/override a grammar-level option -Werror treat warnings as errors -XdbgST launch StringTemplate visualizer on generated code -XdbgSTWait wait for STViz to close before continuing -Xforce-atn use the ATN simulator for all predictions -Xlog dump lots of logging info to antlr-timestamp.log -Xexact-output-dir all output goes into -o dir regardless of paths/package
JRE 11がインストールされ、antlr4
コマンドのオプションの説明が表示されます。
ANTLR4のJARファイルとJRE 11はそれぞれ次の場所にインストールされました。
$HOME/.m2/repository/org/antlr/antlr4/4.11.1/antlr4-4.11.1-complete.jar $HOME/.jre/jdk-11.0.17+8-jre
ここまででantlr4-tools
の導入が終わり、ANTLR4を動かす準備ができました。
次回はantlr4-parse
コマンドを使って構文解析してみます。