2015-07-06 13 views
5

Dal riferimento ANTLR4 definitivo, ho eseguito il primo esempio e generato il target JAVA. Nella directory C: \ JavaLib ho antlr-4.5-complete.jar Quando provo a compilarlo con;Esempio di compilazione dell'uscita ANTRL4

javac -classpath C:\JavaLib *.java 

Crea i seguenti messaggi di errore;

helloBaseListener.java:13: error: class HelloBaseListener is public, should be declared in a file named HelloBaseListener.java 
public class HelloBaseListener implements HelloListener { 
^
helloListener.java:9: error: class HelloListener is public, should be declared in a file named HelloListener.java 
public interface HelloListener extends ParseTreeListener { 
^
helloParser.java:12: error: class HelloParser is public, should be declared in a file named HelloParser.java 
public class HelloParser extends Parser { 
^
helloBaseListener.java:3: error: package org.antlr.v4.runtime does not exist 
import org.antlr.v4.runtime.ParserRuleContext; 
        ^
helloBaseListener.java:4: error: package org.antlr.v4.runtime.misc does not exist 
import org.antlr.v4.runtime.misc.NotNull; 
          ^
helloBaseListener.java:5: error: package org.antlr.v4.runtime.tree does not exist 
import org.antlr.v4.runtime.tree.ErrorNode; 
.... 

Cosa sto facendo male?

+0

classe HelloBaseListener è pubblico, deve essere dichiarato in un file denominato HelloBaseListener.java –

risposta

5

Ci sono stati 2 problemi. Uno era il file deve essere chiamato "Hello.g4" non "ciao.g4" perché la grammatica è specificata come Ciao. Il secondo era il classpath, richiede il percorso e il nome del file jar, oltre alla directory corrente. Il seguente comando ha funzionato;

javac -classpath .;C:\JavaLib\antlr-4.5-complete.jar *.java