私は最近、プロジェクトを行うためにパーサーを使用する必要があります。ダウンロードANTLR4
そして、本に記載されている手順に従ってくださいThe Definitive ANTLR4 Reference
。コマンドラインに入力する手順は次のとおりです。
1. export CLASSPATH=".:/<Mydirectory>/antlr-4.2.2-complete.jar:$CLASSPATH"
2. alias antlr4='Java -jar /<My directory>/antlr-4.2.2-complete.jar'
3. alias grun='Java org.antlr.v4.runtime.misc.TestRig'
4. antlr4 Hello.g4
すべて正常に機能し、Java必要なファイルを生成します。ただし、入力後
5. grun Hello r -tokens
報告する
Helloをレクサーまたはパーサーとしてロードできません。
私はいくつかの情報をグーグルで調べましたが、それでも何が起こったのかわかりません。
文法でANTLRを実行してJavaソースファイルを生成しましたが、TestRigはコンパイル済みの。classファイルを探しています。Java TestRigを使用する前のソースファイルのコンパイラ。
Windowsでもまったく同じエラーが発生しました。私のバッチは、最初は次のように設定されています。
Java -cp "C:\ANTLR\antlr-4.4-complete.jar" org.antlr.v4.runtime.misc.TestRig %*
コンパイルされたHello*.class
ファイルはすべて現在のフォルダーにあり、current folder
に-cp
を含めるのを忘れています。以下に変更した後。できます。 -cp
の先頭のドットに注意してください。
Java -cp ".;C:\ANTLR\antlr-4.4-complete.jar" org.antlr.v4.runtime.misc.TestRig %*
すべての*.Java
ファイルが生成され、*.class
ファイルが生成され、%CLASSPATH%
が正しく設定された後、「Hello World」のサンプル文法に基づいて、このエラーを参照してください。
%CLASSPATH%
環境変数に「antlr-runtime-4.4.jar」がなく、本から「grun」コードを実行すると、文法に基づいて生成されたパーサーを実行するとこのエラーが発生します。提供しました。
%CLASSPATH%
は次のようにする必要があります。
C:\libraries\antlr-4.4-complete.jar;C:\libraries\antlr-runtime-4.4.jar;
このコマンドの入力後に入力を入力してください。本の例の「hello parrt」のように。次に、CTRL+Z
(Windowsの場合)を入力して入力を終了するか、CTRL+D
(Unixの場合)を入力します。
これを正しく行うために、JDKがインストールされ、システムのPATH変数に追加されていると仮定します。
この場合、2つのバッチファイルが必要になります。
antlr4.bat
:
Java -cp antlr-4.2-complete.jar org.antlr.v4.Tool %*
grun.bat
:
Java -cp .;antlr-4.2-complete.jar org.antlr.v4.runtime.misc.TestRig %*
また、現在のディレクトリにantlr-4.2-complete.jar
があることを前提としています。それ以外は、 スタートガイド の指示に従ってください。
Windows 7ではCLASSPATH
変数が表示されないため、-cp
フラグを使用したことに注意してください。
CLASSPATH
にAntlr jarファイルと.batファイルが必要です。私はまったく同じ問題を抱えていたので知っています。
[スタート]メニューに移動してEnvironment Variables
を検索すると、Set Environment Variables for Users
などが見つかります。 Variables for all Users
というラベルのセクションがあるはずです。 %CLASSPATH%
が表示されたら、それをクリックしてから、そのボックスの下のedit
ボタンをクリックします。リストの最後に移動して、C:\**PATH TO JAR FILE**\antlr-X.X-complete.jar;
を最後に追加します。各.batファイルへのパスでそれを繰り返します。 %CLASSPATH%
が表示されない場合は、ボックスの下にある[追加]ボタンをクリックし、%CLASSPATH%
を追加して同じプロセスを実行します。
私はOSXとストレージシステムについてはそれほど詳しくありませんが、ターミナルでexport CLASSPATH="/Users/**USER**/**PATH TO JAR FILE**/antlr-X.X-complete.jar:$CLASSPATH"
を実行できます。繰り返しますが、各.batファイルへのパスを使用します。願わくばそのようにシンプル。上記で述べたように、OSXは私の長所ではないため、これが間違っているかどうかを教えてください。 StackOverflowで次の質問を確認することもできます。 Mac端末にクラスパスを永続的に追加するにはどうすればよいですか?
だれかがこの問題を抱えていた場合に備えて、OSXでOSX命令を追加しました! :)
ALSO:antlr-X.X-complete.jar
のXをバージョン番号に置き換えるか、単にjarファイルの名前にします。あなたのボートに浮かぶものは何でも。