前两个周末写了《手写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