2010-06-08 149 views
1

我需要解析一個括號內的字符串,它看起來像(A,B,C),其中A,B和C是可以包含任何合法JavaScript代碼的字符串。例如,B可能是一個非常長的字符串,嵌套結構類似於(A,B,C)。解析這樣一個字符串的最好方法是什麼?JavaScript解析括號

字符串到分析器的一個例子是調用函數:

FUNC(參數1,參數2,參數3)

其中所有的三個參數可以是其他函數定義。

+0

你能舉一個真實的例子嗎? – dcp 2010-06-08 00:32:14

+0

太糟糕了,您無法將該字符串作爲JSON傳送給您!但是,是的,如果我們能看到一個樣本字符串,這將有所幫助。 – Funka 2010-06-08 01:05:14

回答

1

創建這種解析器的最簡單方法之一是編寫一個recursive descent parser。這種類型的解析器相對容易創建,並且比更復雜的解析器生成器(如「yacc」等)更容易理解。

+0

是否有任何這樣的解析器在JavaScript中實現? – Paul 2010-06-08 00:35:05

+0

@Paul:我發現了一些Google搜索「javascript遞歸下降」。但是,通常遞歸下降解析器是您爲特定語法編寫的東西。語法的結構與解析器本身的結構密切相關(如您可以從維基百科的示例中看到的那樣)。 – 2010-06-08 00:42:06

+1

@Paul:如果您需要解析實際的JavaScript源代碼,那麼構建一個處理所有情況的解析器本身就可以是一個相當項目。如果您可以將輸入限制爲JavaScript的一個子集,則可能會有相當簡單的時間。另外,關於正則表達式:正則表達式可以解析[正式語言](http://en.wikipedia.org/wiki/Regular_language),它是形式語言理論中的一個特定術語。具有任意深度嵌套結構的任何語言(如JavaScript)都不是常規語言。 – 2010-06-08 01:55:55