web-dev-qa-db-ja.com

antlr4-Helloをレクサーまたはパーサーとしてロードできません

私は最近、プロジェクトを行うためにパーサーを使用する必要があります。ダウンロード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をレクサーまたはパーサーとしてロードできません。

私はいくつかの情報をグーグルで調べましたが、それでも何が起こったのかわかりません。

45
user3162707

文法でANTLRを実行してJavaソースファイルを生成しましたが、TestRigはコンパイル済みの。classファイルを探しています。Java TestRigを使用する前のソースファイルのコンパイラ。

34
Sam Harwell

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 %*

23
smwikipedia

すべての*.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の場合)を入力します。

3
MacGyver

これを正しく行うために、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フラグを使用したことに注意してください。

1
Forest Kunecke

CLASSPATHにAntlr jarファイルと.batファイルが必要です。私はまったく同じ問題を抱えていたので知っています。

Windows

[スタート]メニューに移動して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 [〜#〜]

私は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ファイルの名前にします。あなたのボートに浮かぶものは何でも。

1
James Lynch