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 - JavaScript
処理系間の差を吸収するため,入出力用の関数を受け取る関数を生成。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function BF(code){
var s = '', o = {
'>': 'm[p+=?]|=0;',
'<': 'm[p-=?]|=0;',
'+': 'm[p]+=?;',
'-': 'm[p]-=?;',
',': 'm[p]=get().charCodeAt(0);',
'.': 'put(c(m[p]));',
'[': 'while(m[p]){',
']': '}' };
code.replace(/>+|<+|\++|-+|([,.[\]])/g, function($, _){
s += _ ? o[$] : o[$.charAt(0)].replace('?', $.length) });
return eval('0,function(get,put){var m=[0],p=0,c=String.fromCharCode;'+ s +'}');
}
/// Rhinoで「hello world」のテスト ///
BF('++++++++++[>+++++++>++++++++++>+++>+<<<<-]\
>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.'
)(function(){ return '?' }, function(c){ java.lang.System.out.print(c) });
/// WSHで「echo」のテスト ///
//BF(',+[-.,+]')(function(){ return WSH.stdIn.read(1) }, function(c){ WSH.stdOut.write(c) });
|




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 ]