2015-07-06 4 views
5

Von der endgültigen ANTLR4-Referenz habe ich das erste Beispiel durchlaufen und es hat das JAVA-Ziel generiert. Im Verzeichnis C: \ JavaLib habe ich antlr-4.5-complete.jar Wenn ich versuche, es mit zu kompilieren;Kompilieren der Probe ANTRL4-Ausgabe

javac -classpath C:\JavaLib *.java 

Es erstellt die folgenden Fehlermeldungen;

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; 
.... 

Was mache ich falsch?

+0

Klasse HelloBaseListener ist öffentlich, sollte in einer Datei namens HelloBaseListener.java deklariert werden –

Antwort

5

Es gab 2 Probleme. Eine davon war, dass die Datei "Hello.g4" und nicht "Hallo.g4" heißen muss, weil die Grammatik als Hello angegeben ist. Der zweite war der Klassenpfad, er benötigt den Pfad und den Namen der JAR-Datei sowie das aktuelle Verzeichnis. Der folgende Befehl funktionierte;

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