Ich versuche, ein Beispiel von CUP zur Verfügung gestellt: Parsing directly to XML.JFlex mit CUP kompilieren Fehler
ich die 'Minijava Grammatik' in minijava.cup und den Scanner in eine xml.flex benannte Datei mit dem Namen Datei gespeichert. Ich habe JFlex ausgeführt, um Lexer.java aus der xml.flex-Datei zu erhalten. Danach erhielt ich Parser.java und sym.java nach dem Befehl auf dem CUP Beispiel angegeben ausgeführt wird:
java -jar java-cup-11b.jar -locations -interface -parser Parser -xmlactions minijava.cup
Meine Auswahl wie folgt aussieht:
input.xml
java-cup-11b.jar
java-cup-11b-runtime.jar
jflex-1.6.1.jar
Lexer.java
minyjava.cup
Parser.java
sym.java
xml.flex
Ich versuche zu kompilieren die Datei Lexer.java mit dem folgenden Befehl:
javac -cp java-cup-11b-runtime.jar Lexer.java
aber ich bekomme 47 Fehler in den Forma t "... kann kein Symbol finden ...". Die ersten geben an, dass die Klassen sym und minijava.Constants nicht gefunden werden können.
Lexer.java:17: error: cannot find symbol
public class Lexer implements java_cup.runtime.Scanner, sym, minijava.Constants{
^ symbol: class sym
Lexer.java:17: error: package minijava does not exist
public class Lexer implements java_cup.runtime.Scanner, sym, minijava.Constants {
^ Lexer.java:679: error: cannot find symbol
{return symbolFactory.newSymbol("EOF", EOF, new Location(yyline+ 1,yycolumn+1,yychar), new Location(yyline+1,yycolumn+1,yychar+1));
Ich verstehe nicht, warum die sym.java Datei nicht sichtbar Lexer ist oder wo die minijava.Constants-Datei zu erhalten.
Das hat funktioniert, danke. Ich habe vorher etwas ähnliches versucht: "javac -cp. *; Java-cup-11b-runtime.jar Lexer.java", hat aber nicht funktioniert. Jetzt bekomme ich 15 Fehler, die mit den Minijava.Constants verwandt sind, werde ich versuchen zu finden, wo erwartet das Beispiel von mir, es zu bekommen. –
'. *' Ist nicht dasselbe wie '.': Der erste sucht alle Dateien des aktuellen Verzeichnisses, was in meinem Sinne falsch ist, während' .' das aktuelle Verzeichnis zum Durchsuchen der Klassen hinzufügt. – Seki
Ja, ich merkte, dass nachdem ich geantwortet hatte, mischte ich die beiden in meinem Kopf und lehrte jeder den anderen ... –