前两个周末写了《手写PHP转Python编译器》的词法,语法分析部分,上个周末卡文了。
访问器部分写了两次都不满意,没办法,只好停下来,参考一下Python的实现。我实现的部分正好和Python是一个思路,就是生成CST(Concrete syntax tree)之后,再生成AST。由于我想创(tou)新(lan),所以未没有详细实现AST,而想绕过AST去生成代码。这下有点欲速不达了。
先看看Python执行代码的过程:
1. Tokenizer进行词法分析,把源程序分解为Token
2. Parser根据Token创建CST
3. 将CST转换为AST
4. 将AST编译为字节码
5. 执行字节码
现在我们要实现第3步。参考一下Python源码:
/* Transform the CST rooted at node * to the appropriate AST*/mod_ty PyAST_FromNode(const node *n, PyCompilerF