Antlr4: Can't run example from getting started: "Can't load Hello as lexer or parser"

Created on 8 Apr 2016  Β·  6Comments  Β·  Source: antlr/antlr4

https://github.com/antlr/antlr4/blob/master/doc/getting-started.md

Microsoft Windows [Version 10.0.10586]
(c) ΠšΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΡ ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚ (Microsoft Corporation), 2015. ВсС ΠΏΡ€Π°Π²Π° Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹.
> type bin\antlr4.bat
java org.antlr.v4.Tool %*
> type bin\grun.bat
java org.antlr.v4.gui.TestRig %*
> java org.antlr.v4.Tool
ANTLR Parser Generator  Version 4.5.3
 -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
> java -version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)
> javac -version
javac 1.8.0_77
> type Hello.g4
// Define a grammar called Hello
grammar Hello;
r  : 'hello' ID ;         // match keyword hello followed by an identifier
ID : [a-z]+ ;             // match lower-case identifiers
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines
> echo %CLASSPATH%
C:\Users\ploskov\Documents\Javalib\antlr-4.5.3-complete.jar;C:\Users\ploskov\Documents\Javalib\antlr-runtime-4.5.3.jar
> antlr4 Hello.g4 && dir
> java org.antlr.v4.Tool Hello.g4
 Π’ΠΎΠΌ Π² устройствС C Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΊΠΈ.
 Π‘Π΅Ρ€ΠΈΠΉΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ Ρ‚ΠΎΠΌΠ°: 2257-E72E

 Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ ΠΏΠ°ΠΏΠΊΠΈ C:\Users\ploskov\Documents\tmp

08.04.2016  21:10    <DIR>          .
08.04.2016  21:10    <DIR>          ..
08.04.2016  21:07               241 Hello.g4
08.04.2016  21:10                31 Hello.tokens
08.04.2016  21:10             1Β 353 HelloBaseListener.java
08.04.2016  21:10             3Β 236 HelloLexer.java
08.04.2016  21:10                31 HelloLexer.tokens
08.04.2016  21:10               554 HelloListener.java
08.04.2016  21:10             3Β 707 HelloParser.java
               7 Ρ„Π°ΠΉΠ»ΠΎΠ²          9Β 153 Π±Π°ΠΉΡ‚
               2 ΠΏΠ°ΠΏΠΎΠΊ  672Β 314Β 544Β 128 Π±Π°ΠΉΡ‚ свободно
> javac Hello*.java
> dir
 Π’ΠΎΠΌ Π² устройствС C Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΊΠΈ.
 Π‘Π΅Ρ€ΠΈΠΉΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ Ρ‚ΠΎΠΌΠ°: 2257-E72E

 Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ ΠΏΠ°ΠΏΠΊΠΈ C:\Users\ploskov\Documents\tmp

08.04.2016  21:12    <DIR>          .
08.04.2016  21:12    <DIR>          ..
08.04.2016  21:07               241 Hello.g4
08.04.2016  21:10                31 Hello.tokens
08.04.2016  21:12               794 HelloBaseListener.class
08.04.2016  21:10             1Β 353 HelloBaseListener.java
08.04.2016  21:12             3Β 356 HelloLexer.class
08.04.2016  21:10             3Β 236 HelloLexer.java
08.04.2016  21:10                31 HelloLexer.tokens
08.04.2016  21:12               304 HelloListener.class
08.04.2016  21:10               554 HelloListener.java
08.04.2016  21:12               869 HelloParser$RContext.class
08.04.2016  21:12             4Β 160 HelloParser.class
08.04.2016  21:10             3Β 707 HelloParser.java
              12 Ρ„Π°ΠΉΠ»ΠΎΠ²         18Β 636 Π±Π°ΠΉΡ‚
               2 ΠΏΠ°ΠΏΠΎΠΊ  672Β 314Β 523Β 648 Π±Π°ΠΉΡ‚ свободно
> grun Hello r -tree
> java org.antlr.v4.gui.TestRig Hello r -tree
Can't load Hello as lexer or parser

What I did wrong? (without antlr-runtime-4.5.3.jar I have same behavior)

Most helpful comment

I change .bat files and problem was solved:

@ECHO OFF
java org.antlr.v4.Tool %*
@ECHO OFF
SET TEST_CURRENT_DIR=%CLASSPATH:.;=%
if "%TEST_CURRENT_DIR%" == "%CLASSPATH%" ( SET CLASSPATH=.;%CLASSPATH% )
java org.antlr.v4.gui.TestRig %*

Is that a good solution?

All 6 comments

First guess would be that your current working directory (pwd) isn't included in the CLASSPATH variable. It's throwing a ClassNotFoundException here, so maybe try invoking java with -cp flag and explicitly define your path.

Right you are! Thank you!

I change .bat files and problem was solved:

@ECHO OFF
java org.antlr.v4.Tool %*
@ECHO OFF
SET TEST_CURRENT_DIR=%CLASSPATH:.;=%
if "%TEST_CURRENT_DIR%" == "%CLASSPATH%" ( SET CLASSPATH=.;%CLASSPATH% )
java org.antlr.v4.gui.TestRig %*

Is that a good solution?

If it's working, I don't see how it could be bad. :smile:

The proposed solution doesn't work. It just hangs in cmd.

I have the same problem as ghost - I try java -cp ".;C:\antlr\antlr-4.8-complete.jar grun Hello r -tree but it just hangs.

The proposed solution doesn't work. It just hangs in cmd.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

dzavodnikov picture dzavodnikov  Β·  5Comments

willfaught picture willfaught  Β·  9Comments

arcaartem picture arcaartem  Β·  3Comments

BeyzaSuna picture BeyzaSuna  Β·  5Comments

kaba2 picture kaba2  Β·  6Comments