- 博客(5)
- 资源 (2)
- 收藏
- 关注
原创 python 编译过程 从py文件到bytecode
在os 角度,文件最终由file_str 来表示一个文件,我们从 mp_raw_code_t *raw_code = mp_raw_code_load_file(file_str);作为今天追踪代码的起点。raw_code 这个结构体我们已经看到好多次了,里面放了有bytecode 这么一个成员。typedef struct _mp_raw_code_t { mp_raw_
2016-07-24 18:39:28 1300
原创 编译器之语义分析
semantic: 语言的意义编译器的语义分析阶段将变量与其用法关联起来,检查每个表达式是否有正确的类型,还有, 将抽象的语法翻译成更简单的形式以方便生成机器语言(码)。符号表符号表将标识符和其类型、位置关联起来,当我们去处理变量,函数的声明时,就是将这些信息组织(绑定)起来,放在表里,当需要知道这些函数,变量的意义时,就去这个表里查。 每一个局部变
2016-07-20 19:36:38 3836
原创 python byte code 的生成以投放到虚拟机的过程
当我们在python shell 下面输入1+1, shell 会返回一个2给我们,那具体过程是什么样的呢?如果打开源代码,其思路是非常清晰的: // parse mp_parse_tree_t parse_tree = mp_parse(lex, input_kind); // compile mp_obj_t module_fun = mp_
2016-07-17 15:40:20 738
原创 python语言的本质-- 从bytecode 到虚拟机
先得到type ,然后执行type里面的成员函数call. // get the type mp_obj_type_t *type = mp_obj_get_type(fun_in); // do the call if (type->call != NULL) { return type->call(fun_in, n_args, n_kw,
2016-07-12 20:03:44 885
原创 python 语法树生成过程
直接上代码,语法树在C语言里面,就是这个样子:typedef struct _mp_parse_t { mp_parse_node_t root; struct _mp_parse_chunk_t *chunk;} mp_parse_tree_t;先行知识:语法(分析)树可以以图形化的方式告诉我们一个start symbol 如何产生(drive) 一串字符, 如果
2016-07-08 23:02:24 8545
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人