尋找代碼中RPAREN的最佳方法是什麼? 舉例來說,我有這樣的僞代碼:正確尋找RPAREN(以啓用快速解析)
if(a && (b || "c)"))
| ^---------^| CASE A
^----------------^ CASE B
舉例來說,如果我考慮的第一LPAREN,它需要匹配的最後RPAREN(案例B)。如果我考慮第二個LPAREN,它需要與最後一個RPAREN匹配(情況A)。
請注意,有字符串"C)"
有一個RPAREN,但它需要被忽略的情況下。
嗯......我想到了正則表達式,但我想這將是非常複雜的(注意,需要匹配字符串,正則表達式,而另一個認爲可以包括RPAREN或類似的東西)。然後我考慮使用手動掃描(通過代碼)來檢測每個部分(如手動正則表達式)。
我需要那個解析我正在構建的代碼(自己的編程語言)。我想忽略閱讀一些代碼以使其更快。
例如:
function a() { return 1; }
function b() { return 2; }
alert(b());
在這種情況下,只需要b()
被解析,因爲a()
從來沒有被使用。所以我會通過starter {
掃描並忽略(但是存儲)直到真實}
。如果使用該函數,它將被解析。
我的疑惑:
- 正則表達式或手動代碼?
- 這是一件好事還是壞事?如果從不使用代碼,將會有助於提高解析器的速度嗎?
- 題外話:提高分析器的一些技巧?也許一個「預解析」文件,用計算機代碼(操作碼???)存儲語言代碼?
你不能使用正則表達式來分析嵌套結構。使用詞法分析器和解析器。 – leppie 2012-02-29 04:33:08