python3 - antlr4 tutorial español
antlr4: no se puede cargar Hello como lexer o analizador (6)
Recientemente tuve que usar el analizador para hacer un proyecto. ANTLR4
y sigo los pasos descritos en el libro The Definitive ANTLR4 Reference
. Los siguientes son los pasos que tipeo en la línea de comando:
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
Todas las cosas funcionan bien, genera archivos java que necesito. Sin embargo, después de ingresar
5. grun Hello r -tokens
Informa
No se puede cargar Hello como lexer o analizador.
Busco información, pero todavía no puedo entender qué sucedió.
Después de que se hayan generado todos sus archivos *.class
, y sus archivos *.class
hayan sido generados, y su %CLASSPATH%
esté configurado correctamente, basado en la gramática de ejemplo "Hello World", no debería ver este error.
Si no tiene el "antlr-runtime-4.4.jar" en su variable de entorno %CLASSPATH%
y ejecuta el código "grun" del libro, recibirá este error cuando ejecute el analizador generado en función de la gramática que proporcionó .
%CLASSPATH%
debe ser:
C:/libraries/antlr-4.4-complete.jar;C:/libraries/antlr-runtime-4.4.jar;
Ingrese la entrada después de ingresar este comando. Como "hola parrt" en el ejemplo del libro. Luego ingrese CTRL+Z
(en Windows) para finalizar la entrada, o CTRL+D
(en Unix).
Necesita el archivo jar Antlr y los archivos .bat en CLASSPATH
. Lo sé porque tenía exactamente el mismo problema.
Windows
Vaya al menú de inicio y busque Environment Variables
y encontrará Set Environment Variables for Users
o algo así. Debe haber una sección etiquetada Variables for all Users
. Si ve %CLASSPATH%
, haga clic en él, luego haga clic en el botón edit
en ese cuadro. Vaya al final de la lista y agregue C:/**PATH TO JAR FILE**/antlr-XX-complete.jar;
hasta el final. Repita eso con la ruta a cada uno de los archivos .bat. Si no ve %CLASSPATH%
, debajo del cuadro, haga clic en el botón que dice agregar y agregue %CLASSPATH%
y haga el mismo proceso.
OSX
No estoy tan familiarizado con OSX y el sistema de almacenamiento, pero sí puede export CLASSPATH="/Users/**USER**/**PATH TO JAR FILE**/antlr-XX-complete.jar:$CLASSPATH"
en la terminal. Repita, pero con las rutas a cada uno de los archivos .bat. Tan simple como eso con suerte. Avíseme si esto está mal, porque como dije antes, OSX no es mi punto fuerte. También puede consultar esta pregunta en : ¿Cómo puedo agregar permanentemente una ruta de clase a mi terminal Mac?
Agregué las instrucciones de OSX por si alguien más tenía este problema, ¡pero en OSX! :)
TAMBIÉN: Reemplace las X en antlr-XX-complete.jar
con el número de versión, o simplemente haga que sea el nombre del archivo jar. Lo que te venga bien.
Para hacer esto correctamente, voy a suponer que tienes un JDK instalado y agregado a la variable PATH de tu sistema.
En este caso, necesitará dos archivos por lotes para ayudarlo.
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 %*
Esto también supone que tiene el antlr-4.2-complete.jar
en el directorio actual. Más allá de eso, simplemente siga las instrucciones en la guía de introducción .
Tenga en cuenta que utilicé el indicador -cp
porque, en Windows 7, no veo una variable CLASSPATH
.
También vea el faq, que moví al repositorio antlr / antlr4 .
Tenía exactamente el mismo error en Windows. Mi lote está configurado así al principio:
java -cp "C:/ANTLR/antlr-4.4-complete.jar" org.antlr.v4.runtime.misc.TestRig %*
Resulta que todos mis archivos compilados Hello*.class
se encuentran en la carpeta actual y olvidé incluir la current folder
en -cp
. Después de cambiar a continuación. Funciona. Tenga en cuenta el punto -cp
en el -cp
.
java -cp ".;C:/ANTLR/antlr-4.4-complete.jar" org.antlr.v4.runtime.misc.TestRig %*
Usted generó archivos fuente Java ejecutando ANTLR en la gramática, pero TestRig está buscando archivos compilados .class . Necesita ejecutar el compilador de Java en los archivos fuente antes de usar TestRig.