BFコンパイラー
以下のように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 - 秀丸マクロ
一番手間がかかったのはgetcharの実装です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | begingroupundo;
gofiletop;
$code['>'] = "#ptr=#ptr+1;";
$code['<'] = "#ptr=#ptr-1;";
$code['+'] = "#buf[#ptr]=#buf[#ptr]+1;";
$code['-'] = "#buf[#ptr]=#buf[#ptr]-1;";
$code['.'] = "insert char(#buf[#ptr]);";
$code[','] = "call get;";
$code['['] = "while(#buf[#ptr]){";
$code[']'] = "}";
#isUsedGetchar = false;
while( code != eof ) {
if( code == ',' ) #isUsedGetchar = true;
insert $code[code];
delete;
}
if( #isUsedGetchar ) {
insert "endmacro;get:if($get==\"\"&&#c<=0)$get=input(\"入力\");#c=ascii($get);if($get==\"\")#c=-1;$get=rightstr($get,strlen($get)-strlen(char(#c)));#buf[#ptr]=#c;return;";
}
endgroupundo;
|





dankogai
#3886()
Rating0/2=0.00
「どう書く?」でまだ出ていないのが不思議なお題。それがBF処理系。 ここでは、BFで書かれたソースを、同じ言語に変換するコンパイラーを募集します。
私自身、すでにPerlとJavaScriptに関しては http://blog.livedoor.jp/dankogai/archives/50545151.html でやっているのですが、他の言語バージョンも是非見たいので。
Dan the Brainf.ucker
see: Brainfuck - Wikipedia
1 reply [ reply ]