さまざまなサブルーチンに移動する

コンパイルの解決フェーズを実現するために、より多くの作業を行いました。ほとんどの場合、解析フェーズから後で発生するさまざまなサブルーチンに移動する必要がありました。

デバッグを開始したところ、最初のバグは新しい解決フェーズが呼び出されないことであることが判明し、それをいつ呼び出すかについて大きな疑問が生じました。内部サブルーチン自体が解析された後、プログラム単位の解析の最後に呼び出す必要があることがわかりました。

メイン サブプログラムを最初に解決し、次に内部サブプログラムを解決する必要があります。この順序付けは、この方法で正確にリンクされている名前空間構造をトラバースすることを示唆しています。今日はこれ以上の作業を行う時間はあまりありません。

sourceforge の権限がまだ正しくないため、表示されるファイルは 11 日以降になります。

5月13日
sourceforge ftp サーバーのパーミッションが再び台無しになりました。そこにあるのは 5 月 11 日のアップロードです。

長さゼロの引数リストを処理するために先週の金曜日に書いたサブルーチンを修正し、それらを少しきれいにしました。引数リスト間の型と種類の比較を行うサブルーチンを追加し、これらのサブルーチンを呼び出して組み込み関数とサブルーチンをチェックするサブルーチンを追加しました。この時点で、特別なチェックを必要としないサブルーチンをチェックできるはずです。

私はこの新しいものをテストすることを考え始めました.最も簡単な方法は、組み込みの名前解決を、プログラムユニットのコンパイルの最後に発生する必要がある大きな名前の解決にフックすることです. 標準の第 14 章を読んだことがない場合は、標準のどこよりも密度の高い散文になっています。いつものように、単純だが間違った実装を最初に行い、後で改善に取り組みます。

私は、他の人が取り組むことができるプロジェクトについてもっと考えてきました。私たちが使用できるもう 1 つのことは、コンパイラ内で組み込み関数の作業を行う関数を実装することです。つまり、特定の組み込み関数が定数で動作する場合、事前計算する必要があります。実行時に実行させるのではなく、答えを見つけてください。これについては後で詳しく説明します。

5月11日
sourceforge の連中は ftp サーバーのパーミッションの問題を修正しました — 過去 4 日間、新しいファイルで上書きできなかったので、世界は 7 日のファイルを見てきました。現在のファイルが配置されます。

組み込み引数リストを照合するためのサブルーチンに取り組みました。仮リストと実リストが与えられた場合、実際のリストの各要素が仮リストの引数に対応するように実リストをソートするという考え方です。これは、省略可能な引数や欠落している引数に空白の実引数ノードを割り当てる必要がある場合でも同様です。

実引数リストが適切に処理されると、両方のリストを同時にトラバースすることで、仮引数と実引数を比較できます。

5月10日
Niels Jensen のパッチをmatch_dummy()削除して最終ステートメント マッチャー用にスタブを挿入すると、g95 は 15,000 行を超えます。万歳!

それ以外では、実引数リストを組み込み手続きが期待するものと比較するためのサブルーチンを書き始めました。

sourceforge ftp の問題はまだ修正されていません。Web から見ると問題ないように見えますが、ftp ファイルは数日経過しています。

 

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