flex+bison を使用して簡単なアセンブラを作成しました。アセンブリ言語にプリプロセッサ (マクロ) を追加したいと考えています。flex+bison を使用するのはこれが初めてで、どうすればよいかわかりません。
flex+bison の別のインスタンスを追加し、前処理を完全に個別に行うことは適切ですか? それとも、処理のさまざまな段階でさまざまな構造の表現をサポートしていますか?
興味があれば、DCPU-16 アーキテクチャ用のアセンブラはこちらにあります。
flex+bison を使用して簡単なアセンブラを作成しました。アセンブリ言語にプリプロセッサ (マクロ) を追加したいと考えています。flex+bison を使用するのはこれが初めてで、どうすればよいかわかりません。
flex+bison の別のインスタンスを追加し、前処理を完全に個別に行うことは適切ですか? それとも、処理のさまざまな段階でさまざまな構造の表現をサポートしていますか?
興味があれば、DCPU-16 アーキテクチャ用のアセンブラはこちらにあります。
あなたは間違いなく別のパーサーが必要です。これがgccのやり方です。前処理だけでコンパイルを停止できます(-E
私は信じています)。単一のパーサーとして記述することは技術的には可能かもしれませんが、それははるかに厄介であり、それが役立つ理由は特にわかりませんが、分離しておくと、前処理だけでコンパイルを停止できます。 、プリプロセッサ/アセンブラ自体だけでなく、それを使用して作成されたプログラムのエラーを簡単に追跡できるようにします。
あなたは私のものを見ることができます。私はあなたが持っているのと同じ考えになりました:P ここで見つけることができます 式をサポートしていますが、前方参照をサポートしたい場合は ast が必要であることに気付きました。たぶん、サイズが固定されていない op コードはアセンブラを作るのが難しいと Notch が判断したとき、彼はそれを変更するでしょう :)
この件に関するまともな本はFlex and Bison です。これは、レクサー状態をプッシュしてファイルバッファーを変更できる「状態」を実行する方法を示しています。それはまさにそのための初歩的なパーサー/レックスを示しています。それは私の学習に大いに役立ちました:)