木兰语言 0.0.17.1:源码生成支持更多函数、类相关语法
这几个星期继续重现由 Python 语法树生成木兰源码的功能(0.0.17.1 已发布在 PyPI,可通过 pip install ulang 安装): 单参数、多参数、带默认值参数函数定义 类、类方法、构造方法、嵌套类、扩展类 引用属性、类方法 如下 Python 代码: class C1: class C2: def __init__(self): print(2) def __init__(self): print(1) C1() C1.C2() 可生成木兰源码: type C1 { type C2 { func $C2() { println(2) } } func __init__(self) { println(1) } } C1() C1.C2() 期间发现了一些费解之处。比如上面的第二个 __init__,为何不转换为 $C1 呢? 还有更明显的问题,比如对变长指名参数: def a(**kwargs): print(kwargs) a(k1="v1", k2="v2") 原始木兰可执行文件 ...