木兰语言 0.0.17:着手由 Python 语法树生成木兰源码
刚开始实现从 Python 源码转为木兰源码,现在支持无参数函数定义以及函数调用等,刚在 pypi 发布了 ulang 0.0.17 版本包含此功能。 下面左侧为 Python 代码,运行 $ 木兰 -兰 XX.py 后生成右侧的对应木兰代码: 实现机制是扩展 Python ast 库的 NodeVisitor,对每个相关语法节点编写相关生成规则。以函数定义部分为例,可见 主体 将函数体内声明分行显示并以大括号包围: def visit_FunctionDef(self, 节点): self.另起一行(额外=1) self.另起一行(节点) self.编写('func ') self.编写('%s(' % 节点.name) self.编写(')') self.主体(节点.body) def 主体(self, 所有声明): self.编写(' {') for 声明 in 所有声明: self.visit(声明) self.另起一行() self.编写('}') 函数定义部分(visit_FunctionDef)现在看起来很简单,是因为仅仅复现了无参数函...