Swift用Swift编写的AST。 ∞的第1部分

我必须承认。 我喜欢类型。 我喜欢类型系统带给您的力量和约束。 我不喜欢打字,所以我喜欢打字推论允许我不要随身携带打字。

在拥有类型的同时,我想创建一些有意义的东西,这些东西可以显示强类型的力量。 我想在Swift类型系统中构建Swift AST。

AST(抽象语法树)-代码的机器可读表示。 这种表示形式使编译器可以操纵程序的不同部分,推断类型并执行优化。

在Swift中,您可以在单独的C ++库中检查它的语法。 这是一些通过代码构建树节点的示例:

 自动NewIdentifier = SyntaxFactory :: makeIdentifier( 
“您的结构”,
MyStruct.getIdentifier()。getLeadingTrivia(),
MyStruct.getIdentifier()。getTrailingTrivia()
);

MyStruct.withIdentifier(NewIdentifier).print(llvm :: outs());
  //结果 
  struct YourStruct {} 

Swift AST是一种庞大而复杂的数据类型,我想构建一个小的库,该库允许您在Swift代码中操作Swift代码。 如果您想体验真正的Swift元编程,请查看Sourcery lib。