Müller的目标是建立一种简单的、可以用最小的编译器来实现的、符合图灵完全思想的编程语言。这种语言由八种状态构成,为Amiga机器编写的编译器(第二版)只有240个字节大小。
就象它的名字所暗示的,brainfuck程序很难读懂。尽管如此,brainfuck图灵机一样可以完成任何计算任务。虽然brainfuck的计算方式如此与众不同,但它确实能够正确运行。
这种语言基于一个简单的机器模型,除了指令,这个机器还包括:一个以字节为单位、被初始化为零的数组、一个指向该数组的指针(初始时指向数组的第一个字节)、以及用于输入输出的两个字节流。
这种 语言,是一种按照“Turing complete(完整图灵机)”思想设计的语言,它的主要设计思路是:用最小的概念实现一种“简单”的语言,BrainF**k 语言只有八种符号,所有的操作都由这八种符号的组合来完成。
#include <stdio.h>
int p,r;
char a[5000],f[5000],b,o,*s=f;
void itp(char *c){
char *d;
r++;
while(*c){
switch(o=1,*c++){
case '<':p--;break;
case '>':p++;break;
case '+':a[p]++;break;
case '-':a[p]--;break;
case '.':putchar(a[p]);break;
case ',':a[p]=getchar();break;
case '[':
for(b=1,d=c;b&&*c;c++)b+=*c=='[',b-=*c==']';
if(!b){
c[-1]=0;
while(a[p])itp(d);
c[-1]=']';
break;
}
}
}
r--;
}
main(int rc,char *rv[]){
FILE *z=fopen(rv[1],"r");
while((b=getc(z))>0)*s++=b;
*s=0;
itp(f);
}
这个是打印"Hello world"的代码:
+[-->-[>>+>-----<<]<--<---]>-.>>>+.>>..+++[.>]<<<<.+++.------.<<-.>>>>+.