發布的準備工作花費了近一年的時間。一如既往,大部分時間都花在發展理論框架和寫作上
文章“
文章中描述的演算法在實驗庫libre2c中實現
(預設為停用建置庫和效能測試,並透過配置選項「—enable-libs」啟用)。該庫並非作為 RE2 等現有項目的競爭對手,而是作為開發新項目的研究平台
演算法(然後可以在 re2c 或其他項目中使用)。從測試、測量效能和創建與其他語言的綁定的角度來看,它也很方便。
re2c 1.2版本主要創新:
- 新增了一種新的簡化方法來檢查輸入資料的結尾(「EOF 規則」)。為此,添加了“re2c:eof”配置,
允許您選擇終端字符,
和一個特殊規則“$”,如果詞法分析器會觸發該規則
成功到達輸入資料的末尾。
從歷史上看,re2c 提供了多種驗證方法的選擇
輸入端的限制、效率和簡單性各不相同
應用程式. 新方法旨在簡化程式碼編寫,同時
同時保持有效和廣泛適用。 老辦法
仍然有效,並且在某些情況下可能是首選。 - 新增了使用指令包含外部文件的功能
"/*!include:re2c "file.re" */",其中“file.re”是要包含的檔案的名稱。 Re2c在包含文件目錄中尋找文件,
以及使用“-I”選項指定的路徑清單中。
包含的文件可能包含其他文件。
Re2c 在「include/」目錄中提供「標準」文件
項目 - 預計有用的定義將在那裡積累
正規表示式,類似標準函式庫。
到目前為止,應工作人員的要求,已新增了一個包含 Unicode 類別定義的檔案。 - 新增了生成任意頭檔的功能
使用“-t --type-header”選項(或適當的
配置)和新指令“/*!header:re2c:on*/”和
「/*!標頭:re2c:關閉*/」。這在以下情況下可能很有用:
當re2c需要產生變數、結構體和巨集的定義時,
用於其他翻譯單元。 - Re2c 現在可以理解正規表示式中的 UTF8 文字和字元類別。
預設情況下,re2c 將“∀x ∃y”等表達式解析為
1 位元 ASCII 字元序列“e2 88 80 78 20 e2 88 83 79”
(十六進位代碼),使用者必須手動轉義 Unicode 字元:
“\\u2200x\\u2203y”。這對很多人來說是非常不方便和意想不到的
用戶(不斷的錯誤報告證明了這一點)。 所以現在
re2c 提供了選項“--input-encoding {ascii | ” utf8}”,
它允許您更改行為並將“∀x ∃y”解析為
“2200 78 20 2203 79。” - Re2c 現在允許在「-r --reuse」模式下使用常規 re2c 區塊。
如果輸入檔包含許多區塊並且僅包含其中的一些區塊,這會很方便
需要重複使用。 - 現在您可以設定警告和錯誤訊息的格式
使用新選項“--location-format {gnu | msvc}」。顯示 GNU 格式
為“檔案名稱:行:列:”,MSVC 格式為“檔案名稱(行,列)”。
此功能對於 IDE 愛好者可能很有用。
還添加了“--verbose”選項,如果成功,則會顯示簡短的勝利訊息。 - 與 Flex 的“兼容性”模式已改進 - 一些解析錯誤已修復並且
在極少數情況下,運算子優先順序不正確。
從歷史上看,“-F --flex-suppor”選項可讓您編寫程式碼
混合了flex風格和re2c風格,這使得解析有點困難。
Flex相容模式在新程式碼中很少使用,
但 re2c 繼續支援它以實現向後相容性。 - 現在應用字元類減法運算符“/”
在擴展編碼之前,這允許它在更多情況下使用,
如果使用可變字元長度編碼(例如 UTF8)。 - 現在,輸出檔案是自動建立的:re2c 首先建立一個臨時文件
並將結果寫入其中,然後將臨時檔案重新命名為輸出
一次操作。 - 文檔已完成並重寫; 特別是增加了新的
關於的章節http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
и關於檢查輸入資料結尾的方法 .
新文件以以下形式收集
全面的單頁指南
帶有範例(手冊頁和線上文件中提供了相同的來源)。
在提高網站在手機上的可讀性方面做出了一些糟糕的嘗試。 - 從開發者的角度來看,re2c獲得了更完整的子系統
偵錯現在在發布版本中禁用調試代碼,並且
可以使用設定選項“--enable-debug”啟用。
來源: opennet.ru