global cs
global ip global ss
#global sp global ds
global bp global tab
global out cs='++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.'
ip = ss = []
#sp = ds = []
bp = tab =
out = [] def tab_():
i = tab
stab = ''
while i > :
stab += '\t'
i -=
return stab def push(var):
global ss
ss.append(var) def pop():
global ss
return ss.pop() def op_inc_val():
global ip
count =
while True:
op = cs[ip]
ip = ip +
if op == '+':
count = count +
else:
break
l = len(ds)
if l <= bp:
ds.append()
old = ds[bp]
old += count
ds[bp] = old
print tab_()+'ds[%d] += %d (%d)'%(bp, count, old) def op_dec_val():
global ip
count =
while True:
op = cs[ip]
ip = ip +
if op == '-':
count = count +
else:
break
old = ds[bp]
old -= count
ds[bp] = old
print tab_()+'ds[%d] -= %d (%d)'%(bp, count, old) def op_inc_dp():
global bp
bp = bp + def op_dec_dp():
global bp
bp = bp - def op_jmp_fwd():
global tab
global ip
print tab_()+'while ds[%d]=%d:'%(bp, ds[bp])
tab=tab +
if ds[bp] != :
curip = ip -
push(curip)
else:
c = ;
while c > :
op = cs[ip]
if op == '[':
c +=
elif op == ']':
c -=
ip += def op_jmp_bck():
global tab
global ip
tab = tab -
if ds[bp] != :
ip = pop() def op_out():
print tab_()+'putchar(ds[%d]) (%d)'%(bp, ds[bp])
out.append(ds[bp]) def op_in():
print tab_()+'getchar' end = len(cs)
while ip < end:
op = cs[ip]
ip = ip +
if op == '+':
ip = ip -
op_inc_val()
ip = ip -
elif op == '-':
ip = ip -
op_dec_val()
ip = ip -
elif op == '>':
op_inc_dp()
elif op == '<':
op_dec_dp()
elif op == '[':
op_jmp_fwd()
elif op == ']':
op_jmp_bck()
elif op == '.':
op_out()
elif op == ',':
op_in()
else:
print 'invalid opcode'
break print out
str = ''
for c in out:
str += '%c'%(c)
print str

最新文章

  1. 玩转JavaScript OOP[2]&mdash;&mdash;类的实现
  2. Linux添加主机路由
  3. DeviceOne接受了DevStore的专访
  4. JS调用自定义弹窗【bootstrap】
  5. 快速替换dll命名空间
  6. DDD学习笔记二
  7. 容器适配器之queue
  8. 【完结】利用 Composer 完善自己的 PHP 框架(三)——Redis 缓存
  9. mirantis fuel 学习
  10. iOS开发——OC篇&amp;OC高级语法
  11. 解决使用Touch ID API在回调时界面“长时间卡住”的问题
  12. web乱码问题
  13. 关于Coursera上的斯坦福机器学习课程的编程作业提交问题
  14. 剑指offer编程题Java实现——替换空格
  15. gawk的用法
  16. Android逆向工程
  17. JS引擎线程的执行过程的三个阶段(一)
  18. lavarel 中间件
  19. selenium 校验文件下载成功
  20. sql两列相除,保留n位小数

热门文章

  1. vue-particles粒子动画效果
  2. DataTable保存为Excel或者Txt
  3. 用postcss cli运行postcss
  4. N=NP?
  5. 多个 gradle 文件夹 \.gradle\wrapper\dists\ 设置gradle不是每次都下载
  6. pho文件操作
  7. VS2008 编译 libpng库
  8. xtrabackup备份MySQL并主从同步
  9. 关于在win8系统下用VMware 9.0装系统导致物理机不断重启的解决办法
  10. windows 启动关闭Oracle监听和服务