發布 re2c 2.0 詞法分析器產生器

發生 釋放 重新2c 2.0,用於 C 和 C++ 語言的免費詞法分析器產生器。 re2c 專案最初由Peter Bamboulis 在1993 年創建,作為非常快速的詞法分析器的實驗生成器,與其他生成器的區別在於生成程式碼的速度和異常靈活的使用者介面,允許分析器輕鬆有效地嵌入到現有的程式碼庫。 從那時起,該計畫一直由社群開發,並繼續成為形式語法和有限狀態機領域的實驗和研究平台。

主要變化:

  • 新增了對 Go 語言的支援(透過 re2c 的「--lang go」選項啟用,或作為單獨的 re2go 程式啟用)。 C 和 Go 的文件是從相同的文字產生的,但具有不同的程式碼範例。 re2c中的程式碼產生子系統已經完全重新設計,這應該可以更容易地支援未來的新語言。
  • 在 CMake 上添加了替代構建系統(感謝 利福克斯!)。 將 re2c 轉換為 CMake 的嘗試已經進行了很長時間,但直到 ligfx 為止,沒有人提出成熟的解決方案。 舊的 Autotools 建置系統繼續受到支援和使用,並且在可預見的將來沒有計劃放棄它(部分是為了避免給發行版開發人員帶來問題,部分是因為舊的構建系統比新的更穩定、更簡潔)。 這兩個系統都使用 Travis CI 進行持續測試。
  • 新增了使用通用 API 時在配置中指定介面代碼的功能。 以前,大多數 API 必須以函數或函數巨集的形式指定。 現在,它們可以以任意字串的形式指定,命名模板參數的形式為“@@{name}”或簡單的“@@”(如果只有一個參數並且沒有歧義)。 API 風格由 re2c:api:style 配置設定(functions 值指定函數式風格,free-form 指定任意風格)。
  • 「-c」、「—start-conditions」選項的操作已得到改進,可讓您將多個互連的詞法分析器組合在一個 re2c 區塊中。 現在,您可以將常規區塊與條件區塊一起使用,並在一個檔案中定義多個不相​​關的條件區塊。 改進了「-r」、「--reuse」選項(在其他區塊中重複使用一個區塊中的程式碼)與「-c」、「--start-conditions」和「-f」、「--」的操作可儲存狀態」選項(有狀態的詞法分析器,可以隨時中斷並稍後繼續執行)。
  • 修正了最近新增的輸入結束(EOF 規則)演算法中的一個錯誤,該演算法在極少數情況下會導致重疊規則的錯誤處理。
  • 引導過程已簡化。 以前,建置系統嘗試動態查找已建置的可用於重建自身的 re2c。 這導致了不正確的依賴關係(因為依賴關係圖是動態的,這是大多數建置系統不喜歡的)。 現在,為了重建詞法分析器,您需要明確配置建置系統並設定 RE2C_FOR_BUILD 變數。

來源: opennet.ru

添加評論