2010-08-17 44 views
1

我寫了一個小而簡單的標記器,但沒有使用正則表達式。試圖寫一個標記器時,我應該使用正則表達式嗎?

我從第一個索引開始,迭代每個字符直到結束並創建所需的標記。

我將它展示給一位同事說,如果沒有進入任何深度,就會比使用正則表達式更簡單。

那麼我應該重寫並期望它「更好」嗎?

+0

如果你想。 – salathe 2010-08-17 09:13:28

回答

2

兩個問題,你應該問:

一)如果事情應該改變,其中之一將是最容易維護? b)如果它正在工作,並且你不希望有任何改變,你是否真的想花更多的時間在它上面?

我敢肯定,性能差異足夠小,可以忽略。編程經驗,並最大限度地減少潛在的錯誤,是最重要的問題。

+1

個人而言,我會選擇正則表達式,因爲它更酷,但正則表達式可能會變得複雜,以讀取/理解定義是否太寬泛。 – 2010-08-17 09:37:29

1

我不這麼認爲。正則表達式必須功能非常豐富,並且正因爲此,程序運行速度可能會變慢。

-1

很大程度上取決於解析的語言和「更好」的定義。

3

通常可以使用有限狀態機完成標記化,這相當於規範正則表達式。如果你做出正常的正則表達式,閱讀和維護比自制的FSA更容易。使用像flex或jflex等工具,他們會將正則表達式編譯爲最小的FSA,從而提供非常好的性能。手動操作只能作爲練習。

Lexers存在幾種實現方式,很可能是您最喜歡的語言。

相關問題