コードを追加して、式の配列性を式ツリーの上方に伝播

g95_match_expr() に似た g95_match_scalar_expr() が追加されましたが、厳密なスカラー式が必要です。g95_match_expr のすべての発生を調べ、2 つのクラスのいずれかに分類しました。また、reduce_stack() にコードを追加して、式の配列性を式ツリーの上方に伝播させます。

その後、match_varspec() を書き終え、それを呼び出すように do_name() を修正しました。コンパイルはしますが、確かに動作しません。

これをテストする前に、配列参照を示すコード (現在は show_expr() に埋め込まれています) を、配列参照を具体的に示すサブルーチンとして array.c に移動する必要があります。その他のさまざまなタスクには、g95_comp_ref 構造体のリストを解放するサブルーチンが含まれており、これをシンボルの解放および元に戻すメカニズムに追加します。

4月18日
今日は多くのコードはありませんが、Fortran 95 の配列値式について持っていた多くの誤解を取り除きました。現在の主な問題は、これまでに行われた式の一致はすべてスカラー式の一致であるということです。既存の配列参照の一致の変更には、大きな変更は必要ありませんでした。

g95_match は、%e コードとその型相対を考慮して、スカラー式のみに一致するようになりました。%E コードは、スカラー式または配列式のいずれかに一致します。これには、%e に一致する既存のコードが引き続き機能するという利点があります。同様に区別するために g95_match_expr() を変更しないことにしたので、このサブルーチンへのすべての直接呼び出しを調べる必要があります。それらの多くはありません。

4月17日
変数の完全一致の実装を開始しました。

Tobi Schlüter は、私たちが I/O ライブラリの説明に取り組んでいることについていくつかのメモを ここに掲載しました。

4月16日
g95_expr 構造体の変更について、じっくり考えました。最後に、EXPR_SCALAR_CONST、EXPR_SCALAR_VAR、EXPR_ARRAY_CONST、および EXPR_ARRAY_VAR 列挙型を削除し、それらを EXPR_CONSTANT および EXPR_VARIABLE に置き換えました。配列性は構造体のフラグになりました。

これにより、前述の問題は次のように解決されます。式の右辺には何でも機能しますが、割り当てステートメント、READ などで何かに設定できるのは EXPR_VARIABLE 式だけです。

「変数」の指定は、配列の指定と構造によってさらに複雑になります。g95_expr は依然としてルート シンボルを保持していますが、配列と構造体の仕様は g95_comp_ref 構造体の単一リンク リストに保持されています。

この変更が既存のコードをあまり壊さなかったという事実は、これが進むべき道だと私に思わせます。

タイトルとURLをコピーしました