CUPによって提供された例:Parsing directly to XMLを実行しようとしています。CUPコンパイルエラーのあるJFlex
私はminijava.cupとxml.flexという名前のファイルにスキャナという名前のファイルに「Minijava文法」を保存。私はJFlexを実行してxml.flexファイルからLexer.javaを取得しました。その後私は、CUPの例で指定されたコマンドを実行した後Parser.javaとsym.javaを得た:私は、コンパイルしようとしています
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
:
java -jar java-cup-11b.jar -locations -interface -parser Parser -xmlactions minijava.cup
私のディレクトリは次のようになります次のコマンドを使用してLexer.javaファイルを作成します。
しかし、私はformaで47のエラーを受け取りますt ".. can not find symbol ..."と表示されます。最初のクラスは、sym 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"が動作しませんでした。 今、私はminijava.Constantsに関連する15のエラーを取得します。私は、そのサンプルがどこからそれを得ることを期待しているのかを探そうとします。 –
'。*'は '.'と同じではありません。最初のものは現在のディレクトリのすべてのファイルを検索しますが、それは間違っていますが、' .'はクラスを検索するために現在のディレクトリを追加します。 – Seki
ええ、あなたが答えた後、私は頭の中で2つを混ぜ合わせて、それぞれがもう1つを教えた... –