2012-01-27 53 views
5

有時,爲正則表達式搜索使用高度優化的函數會比較方便,而不是在運行時包含生成解析器的庫。是否有一個解析器生成器可以適應這樣的角色?正則表達式解析器生成器

在理想情況下,這將:

  • 創建單個C函數
  • 產生對應於給定正則表達式DFA
  • 是作爲KMP或博耶-摩爾在簡單的情況下爲有效

回答

6

這裏是所有滿足您需求的工具列表:

  1. 萊克斯/ Flex也許是從正則表達式構造解析器的最有名的工具。 Lex在很多情況下都很有用,但是它可能會對簡單的解析應用程序造成太大的開銷,因爲重要的處理循環強加了流「拉」模型和輸入緩衝。它旨在解析整個文件而不是簡單的字符串。

  2. 。它是一個預處理器,用於從正則表達式生成基於C的識別器。生成的狀態機運行速度非常快,可輕鬆集成到任何程序中,無需依賴。

  3. Ragel State Machine Compiler。另一個預處理器從高級常規語言符號生成FSM代碼(正則表達式是該定義的一種情況)。它適用於各種語言(C,C++,Objective-C,D,Java和Ruby),可以在不同的FSM事件上執行用戶操作等。另外,它可以生成Graphviz格式的狀態機定義以供可視化的國家和轉型。

5

Lex和Flex是有效的regexp-to-C編譯器。

+0

不知何故,我認爲他們只是標記物。 – 2012-01-27 18:51:33