challenge BFコンパイラー

「どう書く?」でまだ出ていないのが不思議なお題。それがBF処理系。 ここでは、BFで書かれたソースを、同じ言語に変換するコンパイラーを募集します。

私自身、すでにPerlとJavaScriptに関しては http://blog.livedoor.jp/dankogai/archives/50545151.html でやっているのですが、他の言語バージョンも是非見たいので。

Dan the Brainf.ucker

以下のようにonelinerで可能です。 ただしLanguage::BF 0.03が必要です。 CodeRepos経由 で、

  • svn co svn.coderepos.org/share/lang/perl/Language-BF
  • cd Language-BF/trunk
  • perl Makefile.PL
  • make install

するか、CPANにVersion 0.03が現れるのをお待ち下さい。

Dan the Brainf.cker

1
2
3
4
perl -MLanguage::BF \
  -e 'print Language::BF->new_from_file(shift)->as_perl' t/hello.bf \
  | perl
Hello World!

Posted feedbacks - なでしこ

なでしこへ変換。1.50047以降用。出力されるコードはもはや日本語でもなんでもない(^ ^;

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
!変数宣言が必要
FNとは文字列
BFCODEとは文字列
NAKOとは文字列=`mとは配列 
pとは整数=0
//コード開始
`
INDとは文字列=""
TABとは整数=0

FN="bf"の""でファイル選択
もし(FN="")ならば、おわり
BFCODE=FNを開く
BFCODEの改行を""に置換して文字列分解
反復
    対象で条件分岐
        ">"ならば
            NAKO=NAKO&IND&`p=p+1`&改行
        "<"ならば
            NAKO=NAKO&IND&`p=p-1`&改行
        "+"ならば
            NAKO=NAKO&IND&`m[p]=m[p]+1`&改行
        "-"ならば
            NAKO=NAKO&IND&`m[p]=m[p]-1`&改行
        "."ならば
            NAKO=NAKO&IND&`継続表示(CHR(m[p]))`&改行
        ","ならば
            NAKO=NAKO&IND&`m[p]=INT("${HEXエンコード(文字抜出(入力(空),1,1))}")`&改行
        "["ならば
            NAKO=NAKO&IND&`(m[p]<>0)の間`&改行
            TAB=TAB+1
            IND=リフレイン(タブ,TAB)
        "]"ならば
            TAB=TAB-1
            IND=リフレイン(タブ,TAB)
「nako」のファイル名抽出(FN)&「.nako」で保存ファイル選択
NAKOをそれに保存
おわり

Index

Feed

Other

Link

Pathtraq

loading...