J'ai récemment dû utiliser l'analyseur pour faire un projet. Je télécharge ANTLR4
et suivez les étapes décrites dans le livre The Definitive ANTLR4 Reference
. Voici les étapes que je tape en ligne de commande:
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
Tout fonctionne bien, il génère des fichiers Java dont j'ai besoin. Cependant, après avoir entré
5. grun Hello r -tokens
Il rapporte
Impossible de charger Hello en tant que lexer ou analyseur.
Je recherche des informations sur Google, mais je ne parviens toujours pas à comprendre ce qui s'est passé.
Vous avez généré des fichiers source Java en exécutant ANTLR sur la grammaire, mais TestRig recherche des fichiers . Class compilés. Vous devez exécuter les fichiers Java compilateur sur les fichiers source avant d'utiliser TestRig.
J'ai eu exactement la même erreur sur Windows. Mon lot est défini comme ceci au début:
Java -cp "C:\ANTLR\antlr-4.4-complete.jar" org.antlr.v4.runtime.misc.TestRig %*
Il s'avère que tous mes compilés Hello*.class
les fichiers se trouvent dans le dossier actuel et j'oublie d'inclure le current folder
dans le -cp
. Après je change en dessous. Ça marche. Notez le premier point dans le -cp
.
Java -cp ".;C:\ANTLR\antlr-4.4-complete.jar" org.antlr.v4.runtime.misc.TestRig %*
Après tout votre *.Java
fichiers ont été générés et votre *.class
fichiers ont été générés et votre %CLASSPATH%
est défini correctement, sur la base de l'exemple de grammaire "Hello World", vous ne devriez pas voir cette erreur.
Si vous n'avez pas le "antlr-runtime-4.4.jar" dans votre %CLASSPATH%
variable d'environnement et exécutez le code "grun" à partir du livre, vous recevrez cette erreur lorsque vous exécuterez votre analyseur généré en fonction de la grammaire que vous avez fournie.
%CLASSPATH%
devrait être:
C:\libraries\antlr-4.4-complete.jar;C:\libraries\antlr-runtime-4.4.jar;
Entrez l'entrée après avoir entré cette commande. Comme "bonjour parrt" dans l'exemple de livre. Entrez ensuite CTRL+Z
(sous Windows) pour terminer l'entrée, ou CTRL+D
(sous Unix).
Afin de faire cela correctement, je vais supposer que vous avez installé un JDK et ajouté à votre variable PATH système.
Dans ce cas, vous aurez besoin de deux fichiers batch pour vous aider.
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 %*
Cela suppose également que vous disposez du antlr-4.2-complete.jar
dans le répertoire courant. Au-delà, suivez simplement les instructions du guide de démarrage .
Notez que j'ai utilisé le -cp
flag car, sur Windows 7, je ne vois pas de variable CLASSPATH
.
Vous avez besoin du fichier jar Antlr et des fichiers .bat dans votre CLASSPATH
. Je sais parce que j'avais exactement le même problème.
Accédez au menu Démarrer et recherchez Environment Variables
et vous trouverez Set Environment Variables for Users
ou quelque chose comme ça. Il devrait y avoir une section intitulée Variables for all Users
. Si tu vois %CLASSPATH%
, cliquez dessus, puis cliquez sur le bouton edit
sous cette case. Accédez à la fin de la liste et ajoutez C:\**PATH TO JAR FILE**\antlr-X.X-complete.jar;
jusqu'à la fin. Répétez cela avec le chemin d'accès à chacun des fichiers .bat. Si vous ne voyez pas %CLASSPATH%
, puis sous la boîte, cliquez sur le bouton qui dit ajouter et ajoutez %CLASSPATH%
, et effectuez le même processus.
Je ne connais pas aussi bien OSX et le système de stockage, mais vous pouvez faire export CLASSPATH="/Users/**USER**/**PATH TO JAR FILE**/antlr-X.X-complete.jar:$CLASSPATH"
dans le terminal. Répétez, mais avec les chemins d'accès à chacun des fichiers .bat. J'espère aussi simple que cela. Faites-moi savoir si c'est faux, car comme je l'ai dit plus haut, OSX n'est pas mon point fort. Vous pouvez également consulter cette question sur StackOverflow: Comment puis-je ajouter définitivement un chemin de classe à mon terminal Mac?
J'ai ajouté des instructions OSX juste au cas où quelqu'un d'autre aurait ce problème, mais sur OSX! :)
AUSSI: Remplacez les X dans antlr-X.X-complete.jar
avec le numéro de version, ou faites-en simplement le nom du fichier jar. Tout ce qui fait flotter votre bateau.