1 Star 0 Fork 86

Fuchen/pythonvm

forked from hinus/pythonvm 
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
interpreter.hpp 1.38 KB
一键复制 编辑 原始数据 按行查看 历史
hinus 提交于 2018-10-10 10:27 +08:00 . Summary: generator
#ifndef INTERPRETER_HPP
#define INTERPRETER_HPP
#include "code/bytecode.hpp"
#include "code/codeObject.hpp"
class FrameObject;
class HiDict;
class OopClosure;
class ModuleObject;
class Generator;
class Interpreter {
enum Status {
IS_OK,
IS_BREAK,
IS_CONTINUE,
IS_EXCEPTION,
IS_RETURN,
IS_YIELD,
};
private:
ModuleObject* _builtins;
HiDict* _modules;
FrameObject* _frame;
HiObject* _ret_value;
HiObject* _exception_class;
HiObject* _pending_exception;
HiObject* _trace_back;
Status _int_status;
static Interpreter* _instance;
Interpreter();
void destroy_frame ();
public:
static Interpreter* get_instance();
void initialize();
void run (CodeObject* codes);
HiDict* run_mod (CodeObject* codes, HiString* mod_name);
void build_frame (HiObject* callable, ObjList args, int op_arg);
void enter_frame (FrameObject* frame);
void eval_frame ();
void leave_frame ();
HiObject* eval_generator (Generator* g);
HiObject* call_virtual (HiObject* func, ObjList args);
Status do_raise (HiObject* exc, HiObject* val, HiObject* tb);
void oops_do (OopClosure* f);
};
#endif
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/foocoder/pythonvm.git
git@gitee.com:foocoder/pythonvm.git
foocoder
pythonvm
pythonvm
master

搜索帮助