メインコンテンツまでスキップ

フローと制御

controlst = gost / subst / loopstr / casest;

GO TO文​

gost = "GO" "TO" (labelv / .id);
assignlabel = "ASSIGN" .id "TO" labelv;

サブルーチン​

subst = callst / returnst / cortnout;
callst = "CALL" procname (exp / .emptyu);
returnst = "RETURN" (exp / .empty);
cortnout = "STUFF" exp "IN" pipename;
cortnin = "FETCH" pipename;
  • FETCHは組み込み関数であり、その値は指定されたコルーチンを起動することによって計算されます。

ループ文​

構文​

loopst = whilest / untilst / forst;
whilest = "WHILE" conjunct "DO" statement;
untilst = "UNTIL" conjunct "DO" statement;
forst = "FOR" integerv '- exp ("BY" exp / .empty) "TO" exp
"DO" statements;
  • while文とuntil文の値は、それぞれ偽と真 (または0と非ゼロ) であると定義されます。

  • for文は、初期化時に、その初期exp、by部分、およびto部分を一度だけ評価します。for文の実行インデックスは、ループ内で変更できず、読み取ることしかできません。もし、いくつかのコンパイラがこれを利用できる (例えばレジスタに置く) なら、なおさらよいです。増分とtoの境界はどちらも、初期化中に整数に丸められます。