(编辑:jimmy 日期: 2024/12/28 浏览:2)
整个开发过程98%以上都是使用python编写的,所以需要有小小的python入门基础
1)递归函数:解析语法使用递归是必不可少的,因为我们无法预先知道的镶嵌深度,只能使用递归的方法一层一层去解析。
2)字典与列表:整个解析过程可以说是对字典和列表的各种增删改查的操作,熟练操作字典与列表必不可少。
3)json:主要是json的序列化和反序列化,用于与node教程编程
JavaScript需要有基本了解,能读懂一般的js代码就可以。需要了解函数、对象、if语句和while语句等,这些都是后面必要的步骤。
在这基础上需要慢慢了解ast的节点类型和源代码中的对应关系。例如ast中的【VariableDeclaration】类型就表示【声明一个变量】,至于用什么声明,变量名是什么,声明成什么就要继续往后看。
更多内容可以查看JavaScriptAST
1)python:我是用的是3.7.0版本,并需要设置环境变量
2)PyCharm:集成环境的编辑器,2019.3.3版本
3)nodejs:13.9.0版本,并需要设置环境变量
4)node三方库:esprima和escodegen,分别是将js代码转换为AST和将AST转换为js代码
5)pythn三方库:execjs用于在python中调用js代码,需要使用pip install PyExecJS安装
execjs模块可能会出现编码问题,根据Python使用 execjs 出现 gbk报错的问题记录和解决的帖子,可以在【python的安装目录\lib\subprocess.py】,用文本打开,修改637行的构造函数,将参数的encoding=None改为encoding="utf-8",保存关闭即可。
def __init__(self, args, bufsize=-1, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=True, shell=False, cwd=None, env=None, universal_newlines=None, startupinfo=None, creationflags=0, restore_signals=True, start_new_session=False, pass_fds=(), *, encoding="utf-8", errors=None, text=None): """Create new Popen instance.""" _cleanup()