brainfuck 语言的golang实现.
- in
go run gobrainfuck.go hello.bf- out:
Hello World!
> 增加数据指针 (使其指向当前右边内存单元).
< 减少数据指针(使其指向当前左边内存单元).
+ 对当前内存单元加 1
- 对当前内存单元减 1
. 输出当内存单元
, 接受一个字节的输入,将其放到当前数据指针指向的内存单元
[ 如果当前数据指针指向的单元,值为非0, 进入循环,执行紧靠 [ 后面的指令;否则,向前跳转到与此 [ 匹配的 ] 之后开始执行
] 如果当前数据指针指向的单元,值为非0,向后跳转,回到与此 ] 匹配的 [ 后面执行, 否则,正常流程,继续向下执行
> 右
< 左
+ 上
- 下
[ 始
] 终
. 写
, 读
遇到什么都没写的格子就当里面写了 0 <br>
右:向右移动一个格子。嗯你盯着它看就行了,什么都不用做 <br>
左:向左移动一个格子 <br>
上:给格子里的数字加上 1,擦掉原来的数字再写回去。现在你知道为什么要用铅笔了吧,少年! <br>
下:给格子里的数字减去 1 <br>
始:开始重复「始……终」之间的指令,直到你读到「始」之前盯着的那个格子里的数字变成 0 <br> 为止。(什么?那个格子里已经是负数了?……不要这么没有下限好不好) <br>
终:如果当前格子里的数字为 0,就跳过,否则回头到「始」那里 <br>
写:查当前格子里的数字在 ASCII 表上对应的字母,把它写下来(不,别写在格子里,就写在你买来一直立志想用但是没有用的日记本上吧) <br>
读:随便想一个英文字母,查表找到它对应的数字,写到当前格子里 <br>