编码尝试:使用Brainfuck实现Brainfuck解释器
- 内容介绍
- 文章标签
- 相关推荐
问题描述:
最近我们朋友间流传起一个神秘的比赛(赛题如下):
image1129×1215 176 KB
这么好玩的比赛,必须参加啊
而且,必须拉坨 大 的
于是,决定选择解释器赛道。不是不会写编译器,是不会用Brainfuck写编译器…这玩意工作量疑似有点不是人了
但是,使用Brainfuck写个解释器我还是有把握的。
所以,开干!
接下来这里就慢慢更新>w<
第一部分:技术路线
首先,全部手写,进行到底!
对于路线,我一开始就很清晰:选我极其擅长和熟悉的C系语言做跳板。
然后在C和C++中,毫不犹豫地选了C。
总体分成下面几步:
- 挑选语法,设计一个C的子集。
- 使用这个子集完成BF解释器逻辑的编写。
- 编写一个C子集 → BF的编译器。
- 编译后手动优化目标BF代码。
这个C子集姑且就叫它bfrtc吧,BrainFuck RunTime C。
bfrtc → bf的编译器就叫它bfrtcc。
问题描述:
最近我们朋友间流传起一个神秘的比赛(赛题如下):
image1129×1215 176 KB
这么好玩的比赛,必须参加啊
而且,必须拉坨 大 的
于是,决定选择解释器赛道。不是不会写编译器,是不会用Brainfuck写编译器…这玩意工作量疑似有点不是人了
但是,使用Brainfuck写个解释器我还是有把握的。
所以,开干!
接下来这里就慢慢更新>w<
第一部分:技术路线
首先,全部手写,进行到底!
对于路线,我一开始就很清晰:选我极其擅长和熟悉的C系语言做跳板。
然后在C和C++中,毫不犹豫地选了C。
总体分成下面几步:
- 挑选语法,设计一个C的子集。
- 使用这个子集完成BF解释器逻辑的编写。
- 编写一个C子集 → BF的编译器。
- 编译后手动优化目标BF代码。
这个C子集姑且就叫它bfrtc吧,BrainFuck RunTime C。
bfrtc → bf的编译器就叫它bfrtcc。

