BFuck
| 字段/函数 | 作用 |
|---|---|
std::vector<uint8_t> cells |
模拟纸带,即单元格数组 |
int pos |
当前[伪]指针 |
uint8_t get() const |
返回当前单元格的值,called in operator<<(...) |
void set(uint8_t) |
设置当前单元格的值,called in operator>>(...) |
void prev() |
指针往前(左)移动 |
void next() |
指针往后(右)移动 |
BFuck& operator++()/BFuck& operator++(int) |
当前单元格的值自增 |
BFuck& operator--()/BFuck& operator--(int) |
当前单元格的值自减 |
operator bool() const |
判断当前单元格的值是否不为0 |
clear() |
将目前所有单元格的值清零,并使指针指向第一个单元格 |
FuckerTemplate
| 字段/函数 | 作用 |
|---|---|
string stmt |
待解释的BF代码 |
bfuck |
BFuck类型的对象 |
int which |
指向当前在处理的符号 |
void action() |
处理stmt中的每个符号,执行相应的动作 |
void loop() |
当读到[时,对应的动作便是调用此函数 |
void fuck() |
处理的入口 |
bool dead() const |
当stmt为exit/quit/bye时,表示关闭解释器。该函数用于判断stmt是否属于上面的情况 |
operator bool() const |
判断stmt中的左右括号([、])是否匹配 |
operator>>(...) |
从stdin中获取代码,或者从文件流中读取 |
在Sublime Text 中为BrainFuck添加语法高亮支持
更多介绍
BrainFuck之旅 - 知乎
TODO
- 实现可视化功能
- 基于LLVM实现为编译器
- JIT
