Brainfuck解析器(Python)
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
Brainfuck解析器(Python)的更多相关文章
- Python解析器源码加密系列之(二):一次使用标准c的FILE*访问内存块的尝试
摘要:由于近期打算修改Python解释器以实现pyc文件的加密/解密,出于保密的要求,解密之后的数据只能放在内存中,不能写入到文件中.但是后续的解析pyc文件的代码又只能接受FILE*作为入参,所以就 ...
- Python 文本解析器
Python 文本解析器 一.课程介绍 本课程讲解一个使用 Python 来解析纯文本生成一个 HTML 页面的小程序. 二.相关技术 Python:一种面向对象.解释型计算机程序设计语言,用它可以做 ...
- python模块介绍- HTMLParser 简单的HTML和XHTML解析器
python模块介绍- HTMLParser 简单的HTML和XHTML解析器 2013-09-11 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq ...
- python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。
本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...
- Python爬虫(十四)_BeautifulSoup4 解析器
CSS选择器:BeautifulSoup4 和lxml一样,Beautiful Soup也是一个HTML/XML的解析器,主要的功能也是如何解析和提取HTML/XML数据. lxml只会局部遍历,而B ...
- Python HTML解析器BeautifulSoup(爬虫解析器)
BeautifulSoup简介 我们知道,Python拥有出色的内置HTML解析器模块——HTMLParser,然而还有一个功能更为强大的HTML或XML解析工具——BeautifulSoup(美味的 ...
- python 全栈开发,Day101(redis操作,购物车,DRF解析器)
昨日内容回顾 1. django请求生命周期? - 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端 请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者po ...
- Python 网页解析器
Python 有几种网页解析器? 1. 正则表达式 2.html.parser (Python自动) 3.BeautifulSoup(第三方)(功能比较强大) 是一个HTML/XML的解析器 4.lx ...
- Python爬虫——使用 lxml 解析器爬取汽车之家二手车信息
本次爬虫的目标是汽车之家的二手车销售信息,范围是全国,不过很可惜,汽车之家只显示100页信息,每页48条,也就是说最多只能够爬取4800条信息. 由于这次爬虫的主要目的是使用lxml解析器,所以在信息 ...
随机推荐
- 【RAY TRACING THE REST OF YOUR LIFE 超详解】 光线追踪 3-5 random direction & ONB
Preface 往后看了几章,对这本书有了新的理解 上一篇,我们第一次尝试把MC积分运用到了Lambertian材质中,当然,第一次尝试是失败的,作者发现它的渲染效果和现实有些出入,所以结尾处声明要 ...
- VB.Net中确认退出对话框的实现
实现方法分为两大类:窗体事件和控件事件,下面就一一展示: 一.FormClosing事件(又分以下几种方法) a. Private Sub frmPractise_FormClosing(ByVal ...
- iOS 11开发教程(十八)iOS11应用视图之使用代码添加按钮
iOS 11开发教程(十八)iOS11应用视图之使用代码添加按钮 由于使用编辑界面添加视图的方式比较简单,所以不在介绍.这里,直接讲解代码中如何添加.使用代码为主视图添加一个按钮的方式和在1.3.3节 ...
- 10.25 正睿停课训练 Day9
目录 2018.10.25 正睿停课训练 Day9 A 数独(思路 DP) B 红绿灯(最短路Dijkstra) C 轰炸(计算几何 圆并) 考试代码 B C 2018.10.25 正睿停课训练 Da ...
- Prism中命令可用性无法自动刷新
http://stackoverflow.com/questions/2444927/wpf-prism-canexecute-method-not-being-called It is most l ...
- 关于supervisor的入门指北
关于supervisor的入门指北 在目前这个时间点(2017/07/25),supervisor还是仅支持python2,所以我们要用版本管理pyenv来隔离环境. pyenv 根据官方文档的讲解, ...
- Oracle INTERVAL
转自:http://www.cnblogs.com/ungshow/archive/2009/04/11/1433747.html INTERVAL DAY TO SECOND数据类型 Oracle语 ...
- mxnet安装及NDArray初体验
一.mxnet安装 (以下均为mac环境) 有二种方式: 1.1 用conda安装 #创建gluon目录 mkdir gluon-tutorials && cd gluon-tutor ...
- 对请求并发数做限制的通用RequestDecorator
使用场景 在开发中,我们可能会遇到一些对异步请求数做并发量限制的场景,比如说微信小程序的request并发最多为5个,又或者我们需要做一些批量处理的工作,可是我们又不想同时对服务器发出太多请求(可能会 ...
- 系统wmiprvse.exe占用CPU非常高,求解决
1.wmiprvse.exe是微软Windows操作系统的一部分.用于通过WinMgmt.exe程序处理WMI操作.文件位置有二处: C:\WINDOWS\system32\wbem\wmiprvse ...