wqsong 发表于 2010-12-6 09:16

BrainFuck语言

本帖最后由 wqsong 于 2010-12-6 19:15 编辑

在上一个帖子里面说到了BrainFuck,BrainFuck就是一个最小化的图灵机抽象,语法简单,发明者是Urban Müller。这里简单介绍一下,增加对编程的兴趣,也可以简单了解一下解释性语言解释器是什么样子,大家可以用自己擅长的语言写一个,练习一下。


语法很简单,只有8中运算符:
> Increment the pointer.
< Decrement the pointer.
+ Increment the byte at the pointer.
- Decrement the byte at the pointer.
. Output the byte at the pointer.
, Input a byte and store it in the byte at the pointer.
[ Jump forward past the matching ] if the byte at the pointer is zero.
] Jump backward to the matching [ unless the byte at the pointer is zero.

与C中运算符比较一下就明白了:
> becomes ++p;
< becomes --p;
+ becomes ++*p;
- becomes --*p;
. becomes putchar(*p);
, becomes *p = getchar();
[ becomes while (*p) {
] becomes }

这是Hello World!程序
>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++++>-]<.#>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]>++++++++[<++++>-]<+.[-]++++++++++.
下面这个打印字符串keke he yaoyao!,我的两个好朋友。
>>>++++++++[<+++++++++++++<+++++++++++++>>-]<<
+++.>---.<.>.
>>++++[<++++++++>-].
>>>++++++++[<+++++++++++++<+++++++++++++>>-]<---<.>.
>>++++[<++++++++>-].
>>+++++++++++[<+++++++++++>-]<.
>>++++++++++++[<++++++++>-]<+.
>>++++++++++[<+++++++++++>-]<+.
<<.>.>.
>>+++++[<++++++>-]<+++.

下面其中一个附件是我写的一个解释器,可自动扩展内存。



Rainyboy 发表于 2010-12-6 14:35

本帖最后由 Rainyboy 于 2010-12-6 14:35 编辑

这个帖子让我想起了这些:

6个变态的C语言HelloWorld程序
http://coolshell.cn/articles/914.html
编程真难啊!
http://coolshell.cn/articles/1391.html

看之前:{:{02}:}

看之后:{:{41}:}


smtmobly 发表于 2010-12-11 15:28

这.....,活着真累

tiger0004 发表于 2012-6-24 22:30

这语言名字碉堡了。

xtf314 发表于 2012-6-27 14:59

好有趣的语言
页: [1]
查看完整版本: BrainFuck语言