这是以库的形式提供的。
我觉得应该做到语言里面。比如,c# 可以弄个 .csc 类型的文件,编译器运行之前先找到一下工程目录底下所有 .csc 类型的文件,编译并把它们作为模块插入编译器,作为插件。再弄一种类似于 python 的 decorator 语法,凡是被 decorator 描述的函数,都把 ast 传给编译器插件处理。
【 在 leadu (leadu) 的大作中提到: 】
: 这个c#早就能干了,roslyn几年前就搞了个compiler as a service,程序访问自己的语法树什么的,只需要引用个nuget包就行。在17年就有出版的书介绍compiler as a service了,具体什么时候开始的不太清楚。
: 有几个序列化的库使用了这个特性,编译期自动分析并产生代码,因为在ios上是禁止动态生成代码的。
: source generator是compiler as a service进一步方便用户的简化
: ...................
--
FROM 121.205.116.*