2014-09-29 94 views
0

我有一個像(不失一般性(僅圖像可能的語法))一個源文件區分中綴形式語言功能

function a() 
    return g // global variable without any internal structure exactly 
end 

function b(x, y) 
    local z = x * y 
    return z + 1 
end 

function c(z, t) 
    return b(z * z, a()) 
end 

// ...etc 

我想defferentiate任何功能WRT一些變量。

所有正式的參數我們可以視爲一個功能與未知在派生時間內部結構。

如果我站在正確進一步,再下面是真相(用於根據符號'是符號的一部分,全局變量是在替補時間操作階段(DEF:g{g}是其中之一,但g{y}是零)):

function a'() 
    return g'; 
end 

function b'(x, y, x', y') 
    local z' = x' * y + x * y' 
    return z' + 0 
end 

但是如何處理上一個函數呢?即用實際參數代替功能b

是否有任何準備使用通用算法的實現來處理上述問題?如何處理高階導數(特別有趣,如何處理形式參數)?還有其他可能不明確的案件嗎?

+0

@HighPerformanceMark我正在嘗試實現上述玩具語言的AST變換器衍生物。 – Orient 2014-09-29 11:09:32

回答

1

我建議讓你的參數成爲符號表達式,知道如何響應衍生物,並讓所有操作接受函數和返回函數。然後你會得到一個知道如何表示爲派生詞的最終表達式。此外,您可以稍後進行偏導數等事情,因爲您擁有符號表達式。

對於我的意思一個真實的例子,看到http://www.elem.com/~btilly/kelly-criterion/js/advanced-math.js爲我寫來解決在JavaScript中一個微積分問題,並搜索庫「優化,如果要求」中的源http://www.elem.com/~btilly/kelly-criterion/betting-returns2.html,看看我是如何使用的。請參閱http://www.elem.com/~btilly/kelly-criterion/瞭解我爲何編寫該代碼的說明。

在那個例子中,我當然不是從中綴表示法開始工作的。但這是一個標準的解析問題,我認爲你知道如何解決。

+0

謝謝。我立即開始探索您提供的鏈接。 – Orient 2014-09-29 15:46:42