<@ 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語句的語法糖(嘗試打印帶有匹配的引號,你會看到)。另一個重要的是計算表達式,但我想你可以跳過這些。
然後有一個含糊不清的兔子洞,你必須解決,與像管道運營商約定開始新行,讓開始新行,縮進,中綴,前綴,特殊情況下,如(:: )運營商等等。
總而言之,這是可行的,但並非微不足道。有點像反編譯。