解決プロセスがシンボルにどのように影響するかについて考えてPARAMETER>みたところ、フレーバーの 1 つであるはずの属性が属性リストのビットフィールドであることに気付きました。aPARAMETERは他の多くのフレーバーと相互に排他的であるためです。
これらの変更と、先日の新しい単純化メンバーに関するintrinsic.cへの変更をデバッグしました。
5月23日
intrinsic.ca ビットを更新し、各組み込みプロシージャーの説明を保持する構造体に新しいフィールドを追加しました。フィールドは、そのプロシージャへの呼び出しを保持する式ノードを簡略化するサブルーチンへのポインタです。これらの一部はコンパイラに必須であり、一部はオプションです。これは、少し入力することを意味しました…
5月22日
に関する私の質問について、Steve Johnson から適切な回答を得ました va_arg。
[…]
これは合法でも移植性でもありませんが、幸いなことに、gcc が提供する __va_copy マクロを使用する適切な方法があります。これは ANSI C99 標準で実際に採用されており、va_copy と呼ばれています (autoconf スクリプトを使用して正しい名前を確認するとよいでしょう)。(ANSI C89 では、va_list 変数をコピーして移植することは単純に不可能でした。)
マクロは Martin Otte のソリューションのva_copy_1 つでしたが、当時の私はその移植性について知りませんでした。
error_print()Toon Moene は、彼のアルファ 版の現在のバージョンでいくつかのコンパイル警告を指摘するために書き込みました。簡単な修正は、保存された引数ポインターの単一の配列を、実引数 (整数、文字、および文字ポインター) のいくつかの小さな配列に置き換えることでした。この実装により、 で呼び出すことができる引数の数が制限されますg95_error()が、これはコンパイラ自体の内部のみであるため、あまり深刻な制限には思えません。
Martin Otte は、現在のバージョンが PPC で問題なくコンパイルできると報告しています。
しばらくの間、intrinsic.c のデバッグを行い、多くの単純なバグを修正しました。関数解決サブルーチンは、組み込み関数の解決を呼び出すようになりました。したがって、現時点で関数を呼び出すと、それが呼び出されている組み込み関数であると想定されます。
キャサリンが関数の作業を再開して、現在の単純なモデルに適合しない組み込み関数のインターフェイスを検証できるようになるまで、そう長くはかからないはずです。別の可能なプロジェクトは、誰かがコミラー内の組み込み関数をエミュレートする関数を実装することだと思います。
5月21日
昨夜はどこかで興奮していて、ウェブページを更新するのを忘れていました. 既存のコードの解決フェーズのすべての変更が完了したようです。error_print() の書き換えも完了です。新しいものに!
5月19日
Martin Otte は、私の修正がうまくいかなかったと返信し、いくつかの提案を送ってくれました。ここで 1 つだけコンパイルした後、関数/マクロva_listをいじる以外に 何かをするのは悪い考えであることに気付きました。va_*だから私は書き直す必要がありerror_print()ます。
それ以外は、ステートメントの解決を完了し、SELECT ステートメントの解決を追加してDO、配列の指定を開始しました。