我正在編輯我的javascript.lang文件以突出顯示函數名稱。 這是我目前使用的gtksourceview的表達式。在gedit中,突出顯示括號內的函數調用
<define-regex id="function-regex" >
(?<=([\.|\s]))
([a-z]\w*)
(?=([\(].*))(?=(.*[\)]))
</define-regex>
這裏的正則表達式本身
(?<=([\.|\s]))([a-z]\w*)(?=([\(].*))(?=(.*[\)]))
這似乎爲如FOO(A)這是我很滿意的情況下工作。 但是,我遇到麻煩的是,如果我想要突出顯示另一個函數調用括號內的函數名稱。
foo(bar(A))
或把它更加嚴格
foo{N}(foo{N-1}(...(foo{2}(foo{1}(A))...))
因此,與本例中,
foo(bar(baz(A)))
我的目標是,它突出FOO,酒吧,巴茲而已。
我不知道如何處理欄功能。我已閱讀了有關使用(?R)或(?0)遞歸執行正則表達式的方法,但我沒有成功使用它在gedit中遞歸地突出顯示函數。
P.S. 以下是我目前用來確定成功的測試。
initialDrawGraph(toBeSorted);
$(element).removeClass(currentclass);
myFrame.popStack();
context.outputCurrentSortOrder(V);
myFrame.nextFunction = sorter.Sort.;
context.outputToDivConsole(formatStr(V),1);
它看起來像正則表達式有它只是突出了括號內的一切問題。 – joelliusp
如果您有任何東西_but_'F1(F2(F3(...))) - 'F1(F2()+ F3())'不適用於此解決方案 –
@UriAgassi,謝謝您的輸入。現在就開始工作吧。 – sshashank124