Я пытаюсь запустить пример, предоставленный CUP: Parsing directly to XML.JFlex с ошибками компиляции CUP
Я хранил «Minijava Грамматика» в файле с именем minijava.cup и сканера в файл с именем xml.flex. Я запустил JFlex для получения Lexer.java из файла xml.flex. После этого я получил Parser.java и sym.java после выполнения указанной команды на примере CUP:
java -jar java-cup-11b.jar -locations -interface -parser Parser -xmlactions minijava.cup
Мой каталог выглядит следующим образом:
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
Я пытаюсь скомпилировать файл Lexer.java, используя следующую команду:
javac -cp java-cup-11b-runtime.jar Lexer.java
но я получаю 47 ошибок в формат «..connot find symbol ...». Первые указывают, что классы sym и minijava.Constants не могут быть найдены.
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));
Я не понимаю, почему файл sym.java не виден Lexer или где получить файл minijava.Constants.
Это сработало, спасибо. Я пробовал нечто подобное ранее: «javac -cp. *; Java-cup-11b-runtime.jar Lexer.java», но не работал. Теперь я получаю 15 ошибок, связанных с minijava.Constants, я попытаюсь найти, где этот пример ожидает от меня. –
'. *' Не то же самое, что '.': первый будет искать все файлы текущего каталога, которые в моем понимании ошибочны, а' .' добавляет текущий каталог для поиска классов. – Seki
Да, я понял, что после того, как вы ответили, я смешал двух в моей голове и научил каждого из них делать другой ... –