我想知道是否已經有很好的算法來檢測函數聲明,函數內容,它的開括號和關閉之一。 爲了開發,調試和測試錯誤,在某些需要在大多數函數中添加大量代碼的情況下,這可能會很不錯。在源代碼中檢測和匹配函數的開放和結束括號
實施例的源代碼:
Test.onLoad=function(event){
Test.initialize();
};
結果:
- 函數名:
Test.onLoad
- 內容:
Test.initialize();
- 在行發現開括號:
1
。 - 在
3
處找到閉合大括號。
我們可以舉例來說,上面的信息,很容易在所有功能的開始添加一行,並在他們的結束,要記錄一些參數:
Test.onLoad=function(event){
Log("LogInit","function:Test.onLoad","openbraceline:1","content: Test.initialize();");
Test.initialize();
Log("LogEnd ","function:Test.onLoad","endbraceline :5","content: Test.initialize();");
};
我知道這個功能也可以用一個簡單的全局日誌和一個調用堆棧來創建,但仍然有很多示例可能非常有用。
製作一個簡單的算法來檢測和匹配括號,並獲得功能的信息可能是容易的,但也有很多例外情況也可能是非常複雜的,而這就是爲什麼林詢問是否已經有很好的已知方法檢測它。
我不介意示例算法或提示是否使用任何語言,只是想看看最好的方法。
記事本++是一個很好的例子,因爲它有一個插件,它檢測許多不同的源代碼語言,並用每個部分的顏色分析代碼並匹配大括號。
謝謝兩位,塞巴斯蒂安和雅各布·帕克你的答案,是非常有用的。不知道犀牛,JSLint和UglifyJS,很高興知道:) – xtrm