代码拉取完成,页面将自动刷新
__ __ __ __ __ __ ______ __ __ /\ "-./ \ /\ \ /\ "-.\ \ /\ \ /\ == \ /\ \_\ \ \ \ \-./\ \ \ \ \ \ \ \-. \ \ \ \ \ \ _-/ \ \____ \ \ \_\ \ \_\ \ \_\ \ \_\\"\_\ \ \_\ \ \_\ \/\_____\ \/_/ \/_/ \/_/ \/_/ \/_/ \/_/ \/_/ \/_____/
迷你Python解释器,Python实现的编译器+C语言实现的VM.
注意:本项目主要是用于学习编译器相关原理,如果需要用于生产环境,可以参考以下项目
cd minipy
make && make test
# and enjoy yourself ^_^
# 编辑 pack/main.py
# 打包
python3 build.py pack
# 执行打包后的文件
./pack_main
位于 /src/python
mp_opcode.py
字节码定义mp_tokenize.py
词法分析器,将代码转换成单词(tokens
)
python mp_tokenize.py {script.py}
可以打印出单词mp_parse.py
语法分析器,将单词(tokens
)转换成语法树(Syntax Tree
)
python mp_parse.py {script.py}
可以打印出语法树mp_encode.py
代码生成器,将语法树(Syntax Tree
)转换成字节码(opcodes
)
python mp_encode.py {script.py}
可以打印出字节码(未处理过的)src/python/mp_opcode.py
setjmp/longjmp
实现main.c
程序入口vm.c
虚拟机入口execute.c
解释器builtins.c
一些常用的内置方法obj_ops.c
对象的操作符实现argument.c
函数调用参数APIexception.c
异常处理gc.c
垃圾回收器string.c
字符串处理number.c
数字处理list.c
列表处理dict.c
字典处理function.c
函数/方法处理string
, 是不可变对象number
, 全部使用double类型list
, 列表(动态数组)dict
, 哈希表function
, 包括native的C函数和自定义的Python函数class
, 自定义Python类型None
, None类型data
, 自定义的C语言类型其他Python的实现
其他嵌入式脚本语言实现
更多有意思的编译器项目
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。