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

処理手順

data読み込み

><+-[].,1..8に適当に対応付け、1文字1byteで格納
先頭byteを0とし番兵、data末尾で停止

data移動

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

作業用空間の確保のため、全体を3byte右へずらしながら先頭へ
番兵0でwhileを脱出し、data部分の先頭に移動し停止

data部出力

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

>を出力し、*ptr+にして準備
+を出力しつつdataを次回利用のため後方に保存
dataを舐め終わると、作業領域の分だけ多めに左へ戻る

先頭へ

[<]>

program部出力

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

><+-[].を出力しながら右へ進む
dataはもう使わないので破壊的に舐める
decr ; if (non-0) then { *recur* } else { write }のようにし、1~8のswitch文のようなものを実現
+の共通部分と.は共通化している

最も短縮の余地を残す部分である

改行出力

++++++++++.