2010-12-30 7 views
1

私は現在、BASIC言語のための簡単なコンパイラを開発しており、私はあなたに質問したいいくつかの問題を発見しました。JFlex/CUPといくつかの質問でコンパイラを構築する

最初のものは簡単ですが、どこでトークンを定義する必要がありますか?つまり、Lexer.javaファイルで、式を使ってパーサーにトークンを送ります: 戻り記号(sym.STATIC); STATICは私のトークンですが、どこで定義するのか分かりません。

2番目に、私はLexerとParserのインスタンスを作成するメインクラスを定義する必要がありますか?パーサークラスまたは別のクラスですか?

ありがとうございました。

答えて

1

まず:これらのシンボルを定義したクラスのファイルがあなた

セカンドのために自動的に生成されます:あなたはどのに、あなたが発生したレクサーからオブジェクトを作成する場所をメインに独自のクラスを作成しますあなたはLexerを渡すParserからInputStreamと1つを渡します。 これら2つのオブジェクトを作成した後、Parserに属するparse()メソッドを呼び出します。

0

最初に: .javaファイルを直接編集しないでください。 Scanner.jflexファイルを編集する必要があります。それには リターンシンボル(sym.STATIC)が含まれている必要があります。

.jflexファイルで何かを使用する場合は、Parser.cupファイルで同時に宣言する必要があります。 以下のブロックの下に:パーサーコード{::}、 次のようにSTATICシンボルを宣言する必要があります。 端末STATIC;

第二:あなたがメインのファイルを自分で作成する必要はありません。 JFLEXとCUPを併用する場合は、Apache Antビルド・ツールまたはNetBeansを使用してファイルをコンパイルするだけで済みます。メインファイルが自動的に作成されます。

関連する問題