<@ 1 + 1 @>
我想要的
"Call (None, Int32 op_Addition[Int32,Int32,Int32](Int32, Int32), [Value (1), Value (1)])"
<@ 1 + 1 @>
我想要的
"Call (None, Int32 op_Addition[Int32,Int32,Int32](Int32, Int32), [Value (1), Value (1)])"
您将有 “1 + 1”
而不是自己编写。请参阅F# quotations visualizer代码,作为转换引用抽象语法树的指南。
没有,也不是那么容易,除非是非常简单的情况。例如,其中一个主要问题是匹配结构。它是一大堆if和switch语句的语法糖(尝试打印带有匹配的引号,你会看到)。另一个重要的是计算表达式,但我想你可以跳过这些。
然后有一个含糊不清的兔子洞,你必须解决,与像管道运营商约定开始新行,让开始新行,缩进,中缀,前缀,特殊情况下,如(:: )运营商等等。
总而言之,这是可行的,但并非微不足道。有点像反编译。