Home

Awesome

<pre> __ __ __ __ __ __ ______ __ __ /\ "-./ \ /\ \ /\ "-.\ \ /\ \ /\ == \ /\ \_\ \ \ \ \-./\ \ \ \ \ \ \ \-. \ \ \ \ \ \ _-/ \ \____ \ \ \_\ \ \_\ \ \_\ \ \_\\"\_\ \ \_\ \ \_\ \/\_____\ \/_/ \/_/ \/_/ \/_/ \/_/ \/_/ \/_/ \/_____/ </pre>

minipy

Build Status

迷你Python解释器,Python实现的编译器+C语言实现的VM.

注意:本项目主要是用于学习编译器相关原理,如果需要用于生产环境,可以参考以下项目

如何开始

编译解释器

cd minipy
make && make test

# and enjoy yourself ^_^

打包成可执行文件

# 编辑 pack/main.py

# 打包
python3 build.py pack

# 执行打包后的文件
./pack_main

特性

编译器

位于 /src/python

特性

工具

  1. minipy -dis {test.py} 打印字节码(常量处理过)

代码结构

  1. main.c 程序入口
  2. vm.c 虚拟机入口
  3. execute.c 解释器
  4. builtins.c 一些常用的内置方法
  5. obj_ops.c 对象的操作符实现
  6. argument.c 函数调用参数API
  7. exception.c 异常处理
  8. gc.c 垃圾回收器
  9. string.c 字符串处理
  10. number.c 数字处理
  11. list.c 列表处理
  12. dict.c 字典处理
  13. function.c 函数/方法处理

类型系统

  1. string, 是不可变对象
  2. number, 全部使用double类型
  3. list, 列表(动态数组)
  4. dict, 哈希表
  5. function, 包括native的C函数和自定义的Python函数
  6. class, 自定义Python类型
  7. None, None类型
  8. data, 自定义的C语言类型

相关项目

其他Python的实现

其他嵌入式脚本语言实现

更多有意思的编译器项目

协议