description:ast2src-将ast tree反向编译回合法的python源代码

ast2src的Python项目详细描述


描述:ast2src-将ast tree反向编译回合法的python源代码

r/>最近的更改日志:
20100121-添加ast2src
20091231-添加<;<;>;>;>;>;sugar
20091224-添加pseumethod交互控制台-修改pseumethod导入挂钩
20091224-模块化包-修复安装问题-添加sdist check
20091209改进文档.BR/> 20091205 -源代码到C++ +BR/> 20091116包集成:
BR/>演示用法:BR/> BR/>伪SUP-添加HOX/LT;AST2SRC伪对象在0xB7BA856C上;以ast2src的源代码为例,用ast2src的源代码作为例子,导入ast2src,ast
>>gt;source_code1=open(ast2src.\u file\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\是的os,sys
如果os.name!='posix':sys.stderr.write('\nast2src需要Linux操作系统\n\n');exit()
如果sys.version_info[:2]!(3,1):sys.stderr.write('\n ast2src需要python3.1\n\n');exit()
if 1:如果init
将ast2src导入ast2src模块
if''u setup'不在globals()中,则将ast2src导入ast2src模块
if''u setup'不在globals()中,则setup=sys.modules.get('ast2src.setup','nonne)
def闭包(args,**kwds):返回lambda fnc:fnc(*args,**参数,**c,**kwds)
定义标识(aa):返回aa
def廑import(ss,globals=globals()):
ss.split(''):globals[aa]=廑import廑(aa)
返回identity
类命名空间(对象):
def廑init廑(self,**kwds):vars(self).update(kwds)
@import('ast内置集合re'廑编译器
"imp importlib importlib.abc importlib.util"35; import hook
"locale"python错误
类伪糖(ast.nodevisitor,importlib.abc.finder,importlib.abc.pyloader):
便利函数
@staticmethod
def exec(ss,globa…)

>
>>gt>gt;
>>>>>将源代码编译到ast
>gt>gt;ast\u tree1=compile(源代码1,'exec','exec,ast.pycf\u only'ast)
>gt>gt;打印(ast 2src.debugnode(ast\u tree1)[:1024],"…")
<;lt;class'\u ast.ast.module'>;body[<;<;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;如果对象位于0x9c6e7cc>;,<;<;ast.if object at 0x9ab2b0c>;,<;<;<;ast.if object at 0x9ab2fec>;]
<;class'\ast.import'>;col\u offset 0 lineno 2 names[<;<;ast.alias object at 0x9c6e2ec>;,<;ast.alias object at 0x9c6e9ac>;]
<;class'\ast.alias'>;asname none name'os'
<;class'\u ast.alias'>;asname none name'sys'
<;class'\u ast.if'>;body[<;&u ast.expr object at 0x9ccc92c>;,<;&u ast.expr object at 0x9ab2cac>;]col\offset 0 lineno 3 orelse[]test<;<;&u ast.compare object at 0x9c6eccc>;
<;class'\u ast.compare'>;col\u offset 3 comparators[<;_ ast.str object at 0x9ccc9ec>;]left<;\u ast.attribute object at 0x9c948cc>;lineno 3 ops[<;\u ast.noteq object at 0xb7b3682c>;]
<;class'\u ast.attribute'>;attr'name'col廑offset 3 ctx<;\u ast.load object at 0xb7bb2cc>;lineno 3 value<;\u ast.name object at 0x9ccc46c>;
<;class''u ast.name'>;col_offset 3 ctx<;\u ast.load object at 0xb7bb2cc>;id'os'lineno 3
<;class''u ast.load'>;
<;class''u ast.load'>;
<;class''u ast.noteq'>;
<;class''u ast。

>
>>gt>gt;
gt>gt;逆向编译ASTAST返回源代码的逆向编译返回源代码的逆向编译回源代码的逆向编译回源代码的逆向编译回源代码的逆向编译回源代码的逆向编译回源代码的逆向编译回源代码的逆向编译回源代码的逆向编译回源代码的逆向编译回源代码的逆向分析(AST树e1)的逆向编译
;打印('\n'+re.re.sub('\n+"\n+",'\n',\n',源代码1[:1024])+"…"))
>

>
;导入ast2src;导入ast2src;重新加载ast2src;重新加载(ast2src);从as系统
如果O名字!="posix":sys.stderr.write('\nast2src需要Linux操作系统;exit()
如果sys.version_info[:2]!(3,1):sys.stderr.write('\n ast2src需要python3.1\n\n');exit()
if 1:如果init
将ast2src导入ast2src模块
if''u setup'不在globals()中,则将ast2src导入ast2src模块
if''u setup'不在globals()中,则setup=sys.modules.get('ast2src.setup','nonne)
def闭包(args,**kwds):返回lambda fnc:fnc(*args,**参数,**c,**kwds)
定义标识(aa):返回aa
定义导入(ss,globals=globals()):
对于ss.split('''):globals[aa]=\u-importUUUU(aa)
return identity
>类名称空间(object):
def u-init UU(self,**kwds):vars(self).update(kwds)
@@import('ast-builtins collections collections re'进口挂钩
"locale’’’’’’python bug
类伪糖(ast.nodevisitor,importlib.abc.finder,importlib.abc.pyloader,importlib.abc.pyloader):
方便函数
@staticmethod
@deexec(ss,globa…

>
>
>>>>>>>gt>gt;;重新编译逆向编译源代码
>gt>gt;ast-tree2=compile(源代码2,'exec,'exec,'exec',ast.pycf)类伪糖:
br/>仅限于(ast)
>;。>;gt;gt;打印(ast2src.debugnode(ast-u-tree2)[:1024],"…")
<;lt;lt;class''u-ast.module'>;body[<;lt;'u-ast.import对象位于0x9ad7ecc>;,<;<;u-ast.if对象位于0x9b33316c>;,<;<;<;u-ast.if对象位于0x9b3abcc>;,<;<;<;<;<;<;<;如果对象位于0x9b3ae6c>;]]
<;br/><;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt没有2个名称[<;\u位于0x9c2966c的ast.alias对象>以及在0x9C022EC>;
<;lt;lt;lt;lt;lt;lt;lt;class''u ast.alias'>;asname none name none name'os''os'
<;lt;class''u ast.alias'>;asname none name'as''sys'
<;lt;class''u ast.if'>;在0x9B3aaac>;>;在0x9B322EC>;;在0x9B3AB6C>;<;在0x9B322EC>;<;在0x9B3AB6C>;<;在0x9B322EC.EXPR.EXPR对象;在0x9B3aaac>;>;>;<;在0xast.compare object at 0x9b332ac>;
<;lt;lt;lt;lt;lt;lt;lt;lt;lt;0x9B3A80C>;]0x9B3A80C处的AST.STR对象位于0x9B3490C>;]0x9B3490C处的AST.AST.attribute对象位于0x9B3490C>;lineno 3 ops[<;<;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;B3A型10c>;
<;类''ast.name'>;列偏移量4 ctx<;'ast.load对象位于0xb7bb2cc>;id'os'行号3
<;类''ast.load'>;
<;类''ast.load'>;
<;类''ast.noteq'>;
<;类''class''u ast。…

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
带子字符串的java StringIndexOutOfBoundsException   多线程为什么线程池中的任务不在FIFO、Java之后执行   java setText因NullPointerException而失败   java如何捕获SDBUS:C++中的错误异常?   java如何在apachebeam中进行SQL转换时将int转换为boolean   java和spring中的JCR是什么   java在weblogic服务器上部署Spring boot web app后,错误为ORA01427:singlerow子查询返回多行   Java序列化效率   java如何在请求参数spring中使用对象编码url字符串   java Apache Spark流媒体定制接收器(socket服务器)   java为什么我的stdout不能使用ZeroTurnound重定向输出实时流式传输   指针有一个对象的变量指向Java中另一个对象的变量   java向JPanel添加垂直滚动能力   java让ghostscript接收名称中带有空格的文件(比如“我的文档”中的某些内容)   java如何在php中引用其他对象?   java Android致命异常线程层次结构(请解释)   sql java sql查询错误   在java中刷新outputscreen并同时获取输入   Java 6语言与C#3.0语言的比较