重新2c 2.0

20 月 2 日星期一,發布了快速詞法分析器生成器 reXNUMXc。
主要變化:

  • 增加了對 Go 語言的支持
    (通過 re2c 的 --lang go 選項啟用,或作為獨立的 re2go 程序啟用)。
    C 和 Go 的文檔是從相同的文本生成的,但使用不同的
    代碼示例。 re2c 中的代碼生成子系統已經完全重新設計,這
    應該會讓以後更容易支持新的語言。

  • 在 CMake 上添加了替代構建系統(感謝 利福克斯!)。
    將 re2c 轉換為 CMake 的嘗試已經進行了很長時間,但是在 ligfx 之前沒有人
    提供了完整的解決方案。
    繼續支持和使用 Autotools 上的舊構建系統,
    並且在可預見的未來沒有放棄它的計劃(部分是為了不創造
    分發開發人員的問題,部分原因是舊的構建系統
    比新的更穩定和簡潔)。
    這兩個系統同樣使用 Travis CI 進行持續測試。

  • 添加使用時在配置中設置接口代碼的功能
    通用API(generic API)。 以前,大多數 API 必須在表單中指定
    函數或函數宏。 現在它們可以以任意的形式設置
    具有 @@{name} 或 @@ 形式的命名模板參數的字符串(如果
    只有一個參數,沒有歧義)。 API風格可配置
    re2c:api:style(函數值指定功能樣式,而自由格式值是任意的)。

  • 改進了 -c, --start-conditions 選項的操作,它允許您組合多個
    一個 re2c 塊中的互連詞法分析器。 現在你可以使用
    普通塊與條件塊相提並論,並設置幾個不相關的條件
    塊在一個文件中。
    改進的 -r, --reuse 選項(重複使用一個塊中的代碼
    在其他塊中)結合 -c, --start-conditions 和 -f, --storable-state 選項
    (可以在任意位置中斷的有狀態詞法分析器
    稍後繼續執行)。

  • 修復了新添加的處理輸入數據結束的算法中的一個錯誤
    (EOF 規則),在極少數情況下會導致不正確的處理
    重疊的規則。

  • 簡化的引導過程。 以前,構建系統試圖動態查找已經
    構建了可用於重建自身的 re2c。
    這導致了不正確的依賴關係(因為依賴關係圖原來是
    動態的,大多數構建系統不喜歡)。
    現在,要重建詞法分析器,明確要求
    配置構建系統並設置 RE2C_FOR_BUILD 變量。

感謝所有為此版本做出貢獻的人!

來源: linux.org.ru

添加評論