邏輯函數的三種表示方法如何相互轉換?
“函數”有幾種理解——1. c中存在的、在邏輯上表示“函數”的物件,包括帶c函數指針的結構體、可被識別的AST或IR結構體、表示代碼的字符串……內部及相互之間的轉換:可以且很常見。按題主所問,有不少用c實現的CAS系統,可以對以AST函數進行求導。
2. 上述物件到c函數的轉換:可以,稱為JIT編譯。例如Lua的JIT引擎。
3. c函數到上述物件的轉換:依然可以,但有一些限制。例如c函數內部的結構無法直接獲知,因此只能“包裝”而難以實現代碼級別的處理。基本無法真正意義上進行“求導”。
4. 涉及未編譯的c代碼的轉換:參見1,需要使用c代碼分析器。
5. c函數到c函數的轉換:參見3以及2,可做到的有意義的事主要是包裝和即時優化,除此以外意義不大。