Skip to content

Latest commit

 

History

History

section-level-process

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

甲州計算機の処理の流れ

甲州記法で書かれたデータと計算式は、 section という単位にまとめられます。 このノートでは、ファイルのような計算資源から読まれた区を 資源区 RS: resource section とよぶことにします。 複数の区をひとつの区に合併することもでき、 それを 合併区 MS: merged section、 区に含まれる計算式を実行した結果も区になり、 それを 結果区 CS: calculated section とよぶことにします。 (註: 資源区、合併区、結果区という用語は、甲州記法の正式の用語ではありません)

例として、つぎのようなコマンドで甲州計算機を実行したときの 処理の流れを区の変換に注目して説明してみます。

koshu AAA.k BBB.k CCC.k

複数のファイルを読み出し、それらを合併して計算し、 その結果を判断集合として書き出すという処理は、 以下の 4 つに分けて説明できます。

1. 読み出し

ファイル F ... を資源区 RS ... として読み出します

ファイルの内容 String は、まず、行番号をつけて、 行ごとに区切られます [(Int, String)]。 その後、各行をトークン化し [B.TokenLine]、 継続行をトークン節にまとめます [B.TokenClause]。 トークン節の種類を判定して節集合 [C.Clause] に変換し、 節集合を区 C.Section として整理します。

ここで、BBase モジュールを、 CCore モジュールをあらわします。

2. 合併

資源区 RS ... を合併して、合併区 MS をつくります

複数のファイルから得られた区 C.Section を合併して、 ひとつの区をつくります。合併区も C.Section であり、 もとの区の判断集合や計算式をすべてもちます。 こうすることで、データと計算式を別々に書いたり、 固定のデータと可変のデータを別々に書いたり、 複数のデータソースを簡単にまとめられるようになります。

3. 計算

合併区 MS に含まれる計算式を実行して、結果区 CS をつくります

合併区に含まれる計算式をつなぎあわせ、 違反判断計算 |=V と肯定判断計算 |== と否定判断計算 |=X の結果の判断集合をもつ新しい区をつくります。 この判断集合は、計算済みである必要はなく、 計算の予約となっていれば十分です。

4. 書き出し

結果区 CS に含まれる判断 CJ ... を書き出します

違反判断計算の結果が空でなければ、 その違反判断を書き出し、ステータス 1 で終了します。 違反判断が空ならば、否定判断と肯定判断を標準出力に書き出し、 ステータス 0 で終了します。


このノートはバージョン 0.40 に対して記述されました。