読者です 読者をやめる 読者になる 読者になる

hs2bf - はじめてのぶれいんふぁっく

今回は初めてhs2bfでコンパイルが通るようになった(注:バグあり)ので現状の説明と合わせて報告します。

まずは

結果から見てみましょう。

main=Halt

コンパイルすると

>>[-]>+<<++++>>>+>>>+>>>+<<<<<[-]+[<<<<<[>>[-<<<+>>>]>>>[-<<<+>>>]<<<<<<<<]>>>>>
>>>[-]<<<<<<<<<<<[->>>>>>>>>>>+<<<<<<<<<<<]>>>[>>[-<<<+>>>]>>>[-<<<+>>>]>>>[-<<<
+>>>]<<<<<<<<<<<]>>>>>>>>-[>>>[-]>>>[-]<<<<<<<<<<<<<[->>>>>>>>>>+<<<<<<<<<<]>>>>
>>>>>>[-<<<<<<<<<<+>>>>>>>>>>>>>+<<<][-]>>>[-<<<<<<<<<<<<[->>>+<<<]>>>[->>>+<<<]
>>>[->>>+<<<]>>>>>>[->>>+<<<]>>>][-]<<<<<<][-][-]>>>[-]<<<<<<<[->>>>>>>+<<<<<<<]
>>>>>>>[-<<<<<<<+>>>>+>>>]<<<<<<<<<[-]>>>>>>-[<<<<<<[-]>>>>>>--[<<<<<<[-]+>>>>>>
]<<<<<<[>>>>>[->>>>+<<<<]>>>>>>>[-]<<<[-<<<<+>>>>>>>+<<<]<<<<<<<<<[-]>>>>>>>>>>>
>--[<<<<<<<<<<<<[-]+>>>>>>>>>>>>]<<<<<<<<<<<<[>>>[-]<<<[-]]>>>>>>>>>>>>[-]<<<<<<
<<<<<<[-]][-]+>>>>>>]<<<<<<[>>>>>[->>>>+<<<<]>>>>[-<<<<+<<+>>>>>>]<<<<<<<<<[-]]>
>>>>>[-]>>>[-]<<<[-]>>>[-]<<<<<<[->>>+>>>+<<<<<<]>>>[-<<<+>>>][-]<<<<<<[-]>>>>>>
>>>[<<<<<<<<<[-]>>>>>>>>>-[<<<<<<<<<[-]>>>>>>>>>-[<<<<<<<<<[-]>>>>>>>>>-[<<<<<<<
<<[-]+>>>>>>>>>]<<<<<<<<<[<<[>>[-<<<+>>>]>>>[-<<<+>>>]>>>>>>[-<<<+>>>]<<<<<<<<<<
<<<<]>>>>>>>>[-]>>>>>>[-]<<<<<<<<<<<<<[[->>>>>>>+<<<<<<<]>>>>>>>[-<<<<<<<+>>>>>>
>>>>>>>+<<<<<<]>>>>>>[-<<<<<<<<<<<<[->>>+<<<]>>>[->>>+<<<]>>>[->>>+<<<]>>>[->>>+
<<<]>>>[->>>+<<<]>>>]<<<<<<<<<<<<<]<<<[->>>>>>>>>>>>>>>>+<<<<<<+<<<<<<<<<<]>>>>>
>>>>>>>>>>>[-<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>][-]<<<<<<+>>[-]<<[->>+<<][-]<<<<<
<<++++>>>[-]>>>[-]+>>>>>>[-]<<<<<<<<<<<<<[>>[-<<<+>>>]>>>[-<<<+>>>]>>>>>>[-<<<+>
>>]<<<<<<<<<<<<<<][>>[->>>+<<<]>>>[->>>+<<<]>>>>>>[->>>+<<<]<<<<<<<<]>>[-<<<+>>>
]>>>[-<<<+>>>]>>>>>>[-<<<+>>>]<<<<<<<<<<<<<<[-<<<+>>>]>>[-]][-]+>>>>>>>>>]<<<<<<
<<<[<<[>>[-<<<+>>>]>>>[-<<<+>>>]>>>>>>[-<<<+>>>]<<<<<<<<<<<<<<][>>[->>>+<<<]>>>[
->>>+<<<]>>>>>>[->>>+<<<]<<<<<<<<]>>>>>>>>[-]<<<<<<<<<<<<<<[->>>>>>+>>>>>>>>+<<<
<<<<<<<<<<<]>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<+>>>>>>>>>>>>>>][-]<<<<<<<<[>>[-<<<+>>
>]>>>[-<<<+>>>]>>>>>>[-<<<+>>>]<<<<<<<<<<<<<<][>>[->>>+<<<]>>>[->>>+<<<]>>>>>>[-
>>>+<<<]<<<<<<<<]>>>>>>>>[-]<<<<<<<<<<<<<<<<<<<<[->>>>>>>>>>>>+>>>>>>>>+<<<<<<<<
<<<<<<<<<<<<]>>>>>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>][-]
<<<<<<<<[>>[-<<<+>>>]>>>[-<<<+>>>]>>>>>>[-<<<+>>>]<<<<<<<<<<<<<<]>>>>>>>>[-]>>>>
>>[-]<<<<<<<<<<<<<[[->>>>>>>+<<<<<<<]>>>>>>>[-<<<<<<<+>>>>>>>>>>>>>+<<<<<<]>>>>>
>[-<<<<<<<<<<<<[->>>+<<<]>>>[->>>+<<<]>>>[->>>+<<<]>>>[->>>+<<<]>>>[->>>+<<<]>>>
]<<<<<<<<<<<<<]<<<[->>>>>>>>>>>>>>>>+<<<<<<+<<<<<<<<<<]>>>>>>>>>>>>>>>>[-<<<<<<<
<<<<<<<<<+>>>>>>>>>>>>>>>>][-]<<<<<<+>>>>>>>>[-]<<<<<<<<[->>>>>>>>+<<<<<<<<][-]<
<<<<<<++++++>>>[-]+++>>>[-]+>>>>>>>>>>>>[-]<<<<<<<<<<<[-]<<<<<<<<[>>[-<<<+>>>]>>
>[-<<<+>>>]>>>[-<<<+>>>]>>>[-<<<+>>>]<<<<<<<<<<<<<<][>>[->>>+<<<]>>>[->>>+<<<]>>
>[->>>+<<<]>>>[->>>+<<<]<<<<<<<<]>>[-<<<+>>>]>>>[-<<<+>>>]>>>[-<<<+>>>]>>>[-<<<+
>>>]<<<<<<<<<<<<<<[->>>>>>>>+<<<<<<<<][>>[-<<<+>>>]>>>[-<<<+>>>]>>>[-<<<+>>>]>>>
[-<<<+>>>]<<<<<<<<<<<<<<]>>>>>>>>>>>>>>[-]>>>[-]<<<<<<<<<<<<<<<<[[->>>>>>>>>>>>>
+<<<<<<<<<<<<<]>>>>>>>>>>>>>[-<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>+<<<]>>>[-<<<<<<<<<<
<<<<<[->>>+<<<]>>>[->>>+<<<]>>>[->>>+<<<]>>>[->>>+<<<]>>>[->>>+<<<]>>>[->>>+<<<]
>>>]<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>[-]>>>[-]<<<<<<<<<[-<<<<<<<<<<<<<<<<+>>>>>>>>>
>>>>>>>]<<<<<<<<[>>[-<<<+>>>]>>>[-<<<+>>>]>>>[-<<<+>>>]>>>[-<<<+>>>]<<<<<<<<<<<<
<<][>>[->>>+<<<]>>>[->>>+<<<]>>>[->>>+<<<]>>>[->>>+<<<]<<<<<<<<]>>[-<<<+>>>]>>>[
-<<<+>>>]>>>[-<<<+>>>]>>>[-<<<+>>>]<<<<<<<<<<<<<<[->>>>>>>>+<<<<<<<<][>>[-<<<+>>
>]>>>[-<<<+>>>]>>>[-<<<+>>>]>>>[-<<<+>>>]<<<<<<<<<<<<<<]>>>>>>>>>>>>>>[-]>>>[-]<
<<<<<<<<<<<<<<<[[->>>>>>>>>>>>>+<<<<<<<<<<<<<]>>>>>>>>>>>>>[-<<<<<<<<<<<<<+>>>>>
>>>>>>>>>>>+<<<]>>>[-<<<<<<<<<<<<<<<[->>>+<<<]>>>[->>>+<<<]>>>[->>>+<<<]>>>[->>>
+<<<]>>>[->>>+<<<]>>>[->>>+<<<]>>>]<<<<<<<<<<<<<<<<]>>>>>>>>>>>>>[-]>>>[-]<<<<<<
<<<[-<<<<<<<<<<<<<+>>>>>>>>>>>>>][-]<<<<<<<<[>>[-<<<+>>>]>>>[-<<<+>>>]>>>>>>[-<<
<+>>>]<<<<<<<<<<<<<<][>>[->>>+<<<]>>>[->>>+<<<]>>>>>>[->>>+<<<]<<<<<<<<]>>[-<<<+
>>>]>>>[-<<<+>>>]>>>>>>[-<<<+>>>]<<<<<<<<<<<<<<[-<<<<<<<<<+>>>>>>>>>]<<<[-]<<<[-
]>>>>>>>>[-]][-]+>>>>>>>>>]<<<<<<<<<[<<[>>[-<<<+>>>]>>>[-<<<+>>>]>>>>>>[-<<<+>>>
]<<<<<<<<<<<<<<][>>[->>>+<<<]>>>[->>>+<<<]>>>>>>[->>>+<<<]<<<<<<<<]>>>>>>>>[-]<<
<<<<<<<<<<<<[->>>>>>+>>>>>>>>+<<<<<<<<<<<<<<]>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<+>>>>
>>>>>>>>>>][-]<<<<<<<<[>>[-<<<+>>>]>>>[-<<<+>>>]>>>>>>[-<<<+>>>]<<<<<<<<<<<<<<]>
>>>>>>>[-]>>>>>>[-]<<<<<<<<<<<<<[[->>>>>>>+<<<<<<<]>>>>>>>[-<<<<<<<+>>>>>>>>>>>>
>+<<<<<<]>>>>>>[-<<<<<<<<<<<<[->>>+<<<]>>>[->>>+<<<]>>>[->>>+<<<]>>>[->>>+<<<]>>
>[->>>+<<<]>>>]<<<<<<<<<<<<<]<<<[->>>>>>>>>>>>>>>>+<<<<<<+<<<<<<<<<<]>>>>>>>>>>>
>>>>>[-<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>][-]<<<<<<+>>>>>[-]<<<<<[->>>>>+<<<<<][-
]<<<<<<<+++++>>>[-]+++>>>[-]>>>>>>>>>[-]<<<<<<<<[-]<<<<<<<<[>>[-<<<+>>>]>>>[-<<<
+>>>]>>>[-<<<+>>>]>>>[-<<<+>>>]<<<<<<<<<<<<<<][>>[->>>+<<<]>>>[->>>+<<<]>>>[->>>
+<<<]>>>[->>>+<<<]<<<<<<<<]>>[-<<<+>>>]>>>[-<<<+>>>]>>>[-<<<+>>>]>>>[-<<<+>>>]<<
<<<<<<<<<<<<[->>>>>>>>+<<<<<<<<][>>[-<<<+>>>]>>>[-<<<+>>>]>>>[-<<<+>>>]>>>[-<<<+
>>>]<<<<<<<<<<<<<<]>>>>>>>>>>>>>>[-]>>>[-]<<<<<<<<<<<<<<<<[[->>>>>>>>>>>>>+<<<<<
<<<<<<<<]>>>>>>>>>>>>>[-<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>+<<<]>>>[-<<<<<<<<<<<<<<<[
->>>+<<<]>>>[->>>+<<<]>>>[->>>+<<<]>>>[->>>+<<<]>>>[->>>+<<<]>>>[->>>+<<<]>>>]<<
<<<<<<<<<<<<<<]>>>>>>>>>>>>>[-]>>>[-]<<<<<<<<<[-<<<<<<<<<<<<<+>>>>>>>>>>>>>][-]<
<<<<<<<[>>[-<<<+>>>]>>>[-<<<+>>>]>>>>>>[-<<<+>>>]<<<<<<<<<<<<<<][>>[->>>+<<<]>>>
[->>>+<<<]>>>>>>[->>>+<<<]<<<<<<<<]>>[-<<<+>>>]>>>[-<<<+>>>]>>>>>>[-<<<+>>>]<<<<
<<<<<<<<<<[-<<<<<<+>>>>>>]<<<[-]>>>>>[-]][-]+>>>>>>>>>]<<<<<<<<<[<<[>>[-<<<+>>>]
>>>[-<<<+>>>]>>>>>>[-<<<+>>>]<<<<<<<<<<<<<<]>>>>>>>>[-]>>>>>>[-]<<<<<<<<<<<<<[[-
>>>>>>>+<<<<<<<]>>>>>>>[-<<<<<<<+>>>>>>>>>>>>>+<<<<<<]>>>>>>[-<<<<<<<<<<<<[->>>+
<<<]>>>[->>>+<<<]>>>[->>>+<<<]>>>[->>>+<<<]>>>[->>>+<<<]>>>]<<<<<<<<<<<<<]<<<[->
>>>>>>>>>>>>>>>+<<<<<<+<<<<<<<<<<]>>>>>>>>>>>>>>>>[-<<<<<<<<<<<<<<<<+>>>>>>>>>>>
>>>>>][-]<<<<<<+>>[-]<<[->>+<<][-]<<<<<<<++++>>>[-]+++>>>[-]++>>>>>>[-]<<<<<[-][
-]<<<<<<<<[>>[-<<<+>>>]>>>[-<<<+>>>]>>>>>>[-<<<+>>>]<<<<<<<<<<<<<<][>>[->>>+<<<]
>>>[->>>+<<<]>>>>>>[->>>+<<<]<<<<<<<<]>>[-<<<+>>>]>>>[-<<<+>>>]>>>>>>[-<<<+>>>]<
<<<<<<<<<<<<<[-<<<+>>>]>>[-]]>>>>>>>>>[-]<<<<<<][-]<<<[-]<<

になります(5979文字)。

しかし

残念なことにアドレス94の命令でメモリの負領域にアクセスしてしまいます。
が、それがどの部分に対応するのかさっぱり分かりません。


ちなみに今のソースコードの状況は

合計1964行 (Front以外のフェーズはこのプログラムが通る最低限の実装)


なのでとりあえずSAMのインタプリタを実装してみて

  1. エラーが出る: GM->SAM
  2. 出ない: SAM->BF

の切り分けをしてみようと思います。SAMは簡単な言語なのでインタプリタは数時間で実装できるかと思います。