最近比较流行的程序员招租 brainfuck的代码 用java写了个解释器
来源:互联网 发布:免费空间可绑定域名 编辑:程序博客网 时间:2024/04/28 12:53
最近无聊 逛社交 看到个比较火的程序员招租的代码如++++++[+++>+++++++>++++++<<-]++.>---.>(我是随便贴的代码 不知道会翻译成什么样子) 翻译成联系方式。
brainfuck是一种比较简单的动态语言,这种语言只有八种状态构成如下图:(详见百度百科)
“[ ]“内部实际上是一个循环
下面是这种语言的java解释器
import java.io.IOException;/** * project Interpreter * package PACKAGE_NAME * Created by xsm on 2016/7/29. */public class Interpreter { private byte[] data = new byte[3000]; private int point; private int index; public void run(String src) { run(src, src.length()); } public void run(String src, int end){ while (index < end){ switch (src.charAt(index)) { case '+': data[point]++; break; case '-': data[point]--; break; case '>': point++; break; case '<': point--; break; case '[': int temp = index; int count = 0; int e = index+1; while (count != 0 || src.charAt(e) != ']') { if (src.charAt(e) == '[') { count++; } if (src.charAt(e) == ']') { count--; } e++; } while (data[point] != 0) { index = temp + 1; run(src, e); } break; case ']': break; case ',': try { data[point] = (byte) System.in.read(); } catch (IOException ex) { ex.printStackTrace(); } break; case '.': System.out.printf("%c", data[point]); break; } index++; } }}
打印输出
/** * project Interpreter * package PACKAGE_NAME * Created by xsm on 2016/7/29. */public class Demo { public static void main(String[] args) { String src = "++++++++++[>+++++>++++++>+++++<<<-]>+++++.>---.-.>-.++.++.----.-.<+."; Interpreter interpreter = new Interpreter(); interpreter.run(src); System.out.println(" aa"); }}解释器代码中switch语句里,遇到 “ [ ”说明进入到了一个循环里面,在这个循环里面可能还会遇到 “ [ ”,因此需要用到递归调用。遇到 “ ] ”说明最近的一个循环结束,直接执行brack语句。
0 0
- 最近比较流行的程序员招租 brainfuck的代码 用java写了个解释器
- 用java写一个Brainfuck解释器
- 写一个brainfuck语言的解释器
- 简单写了个时下比较流行的tabStrip
- 本人写的第一个 brainfuck 程序
- BrainFuck语言的解释器(java实现)
- 「Perl」一个brainfuck 语言解释器的混乱代码版本
- 最近比较流行的网站配色
- 最近比较流行的界面欣赏
- BrainFuck语言一个58行的解释器
- BrainFuck语言的解释器以及中文录入
- brainfuck 的 c++ 编译器代码
- BrainFuck 解释器(java语言实现)
- 最近流行JS写游戏了,那我也来试试一个打砖块的游戏
- BrainFuck解释器
- BrainFuck解释器 (BrainFuck Interpreter) JavaScript实现
- 最近在研究enigma2的代码,那叫个庞大,C/C++写中间件,上层应用全部用python实现,可以学习一下plugin的实现机制了.
- 最近写了个音乐播放器
- Linux学习笔记(一)
- unix环境高级编程-进程关系
- TensorFlow - ImportError: cannot import name pywrap_tensorflow
- javac编译、运行
- hdu 1565 方格取数(1)/hdu 1569 方格取数(2)(最小割,黑白染色)
- 最近比较流行的程序员招租 brainfuck的代码 用java写了个解释器
- 【数据库】给商品表添加上属性
- Oracle 11g系列:数据库
- Week 1 Quiz
- hdu 5778 abs (数论)
- angualrJS之checkbox默认选中项实例
- Oracle 11g系列:数据表对象
- Linux学习笔记(二)
- Android 中的 Service 全面总结