2011-12-16 16 views
0

我正在龍書中使用算法實現正則表達式分析器。現在我可以生成一個DTran表並解析一些基本的正則表達式,如:(a|b)*abb如何在實現正則表達式分析器時實現點(。)符號?

但是在執行.符號時遇到了問題,它符合任何字符。在龍書中沒有關於它的文字,是否有關於實現它的一些例子或文章?

回答

0

解決它自己,這是它的樂趣。下面的答案並不多,但是。

  1. 跟蹤n個匹配項的狀態/條件「」。所以。[n]然後繼續模式匹配。
  2. 作弊和展望,不是一個好主意。 since。[n]可能很大,但可能不大。

它與其他模式匹配非常類似,比如*,並且記住在同一文本上可能會出現多個匹配;這就是爲什麼它可能被遺漏(當語法很豐富時,Dtran或狀態機會變得很難);加上它非常相似,但接受一個字符。你可能不得不轉換到NFA(非確定型有限自動機)以保持簡單。

很明顯,我沒有通過龍書,但在大學,「計算理論」報道。我畫了很多狀態機。

相關問題