CCBI は仕様に従っています。
ファイルの終わりまたはその他のファイル エラー状態の場合、& と ~ は両方とも r のように動作します。
組み込みのトレーサー/デバッガーを使用して確認できるように:
$ echo "~~~...@" > test.fg
$ echo "a" > input
$ ccbi --trace test.fg
Instruction: 126 0x7e '~'
Position: (0,0) -- Delta: (1,0) -- Offset: (0,0)
Stack: 0 cell(s): [ - - - - - - - -] ""
Tick: 0 -- IPs: 1 -- Index/ID: 0/0 -- Stacks: 1 -- Mode:
(Tracer) stdin < input
Successfully set stdin to file 'input'.
(Tracer) s
Instruction: 126 0x7e '~'
Position: (1,0) -- Delta: (1,0) -- Offset: (0,0)
Stack: 1 cell(s): [ - - - - - - - 97] "a"
Tick: 1 -- IPs: 1 -- Index/ID: 0/0 -- Stacks: 1 -- Mode:
(Tracer) s
Instruction: 126 0x7e '~'
Position: (2,0) -- Delta: (1,0) -- Offset: (0,0)
Stack: 2 cell(s): [ - - - - - - 97 10] "a^J"
Tick: 2 -- IPs: 1 -- Index/ID: 0/0 -- Stacks: 1 -- Mode:
(Tracer) s
Instruction: 126 0x7e '~'
Position: (1,0) -- Delta: (-1,0) -- Offset: (0,0)
Stack: 2 cell(s): [ - - - - - - 97 10] "a^J"
Tick: 3 -- IPs: 1 -- Index/ID: 0/0 -- Stacks: 1 -- Mode:
(Tracer) s
Instruction: 126 0x7e '~'
Position: (2,0) -- Delta: (1,0) -- Offset: (0,0)
Stack: 2 cell(s): [ - - - - - - 97 10] "a^J"
Tick: 4 -- IPs: 1 -- Index/ID: 0/0 -- Stacks: 1 -- Mode:
(Tracer) s
Instruction: 126 0x7e '~'
Position: (1,0) -- Delta: (-1,0) -- Offset: (0,0)
Stack: 2 cell(s): [ - - - - - - 97 10] "a^J"
Tick: 5 -- IPs: 1 -- Index/ID: 0/0 -- Stacks: 1 -- Mode:
(Tracer) s
Instruction: 126 0x7e '~'
Position: (2,0) -- Delta: (1,0) -- Offset: (0,0)
Stack: 2 cell(s): [ - - - - - - 97 10] "a^J"
Tick: 6 -- IPs: 1 -- Index/ID: 0/0 -- Stacks: 1 -- Mode:
ティック 3 で、デルタは から(1,0)
に変更されました(-1,0)
。つまり、~
列 3 (位置(2,0)
) の命令は、予想どおり EOF に反映されました。その後、コードは 2 つの~
命令の間でループします。
~
次のように、適合する-on-EOF 動作をチェックするようにコードを修正できます。
~~#v~...a"tcelfer ton did">:#,_@
>..a"detcelfer">:#,_@