2011-11-08 4 views
0

私はプログラミング言語のコンバーターを作っています。例えばフレックス/バイソンにインポートを組み込む方法

import com.nanana.MyClassFile 
include "myfile.any" 

私は私が、私はそれを作ることができる方法に迷ってしまいました意味の初心者です。 私は可能な場合、別のファイルを解析している間に解析することができますか?

どうすればいいですか?

編集:私は、main関数内のファイルを解析するために使用してい

コードは次のとおりです。

yyin = fopen(argv[1], "r"); 
return yyparse(); 

私はこの同じコードを使用することができ、または別のはありますか?

答えて

1

レクサーはYY_INPUTマクロを使用してデータを取得します。パーサ内で、 "myfile.any"コマンドが解析されると、パーサーは新しいファイルを開き、元のファイルではなくYY_INPUTからデータが返されるようにする必要があります。 EOFに達すると、YY_INPUTは元のファイルから読み込みを続ける必要があります。これらの開いているファイルをスタックに格納して、インクルードされたファイルに他のファイルを含めることができますが、無限のインクルードループがないよう注意してください。

+0

私が言ったように、私は初心者です、私はもう少し深く、模範的な答えを願っています。お願いします。どうも。 –

+0

正確な解決策は、あなたの特定のパーサー/レクサーに大きく依存するでしょう。これは実際には、そのような詳細に入る適切なフォーラムではありません。この考え方は、YY_INPUTを使って一度に1文字ずつデータをレクサーに送り込むことです。パーサーは、それらの文字がどのファイルから来るかを制御します。生成されたコードを見て、これがどのように結びついているかを見てみましょう。このトピックの末尾に触れるflex FAQにはいくつかのエントリがあります(複数の入力ソースを同じスキャナに同時に供給するにはどうすればいいですか?) – Dan

関連する問題