การเตรียมการสำหรับการเปิดตัวใช้เวลาเกือบทั้งปี เวลาส่วนใหญ่เช่นเคยถูกใช้ไปกับการพัฒนากรอบทางทฤษฎีและการเขียน
บทความ "
อัลกอริธึมที่อธิบายไว้ในบทความถูกนำไปใช้ในไลบรารีทดลอง libre2c
(การสร้างไลบรารีและการทดสอบประสิทธิภาพถูกปิดใช้งานโดยค่าเริ่มต้น และเปิดใช้งานโดยตัวเลือกการกำหนดค่า “—enable-libs”) ห้องสมุดไม่ได้มีวัตถุประสงค์เพื่อเป็นคู่แข่งกับโครงการที่มีอยู่เช่น RE2 แต่เป็นแพลตฟอร์มการวิจัยสำหรับการพัฒนาโครงการใหม่
อัลกอริธึม (ซึ่งสามารถใช้ใน re2c หรือในโครงการอื่น ๆ ) นอกจากนี้ยังสะดวกในแง่ของการทดสอบ การวัดประสิทธิภาพ และการสร้างการเชื่อมโยงกับภาษาอื่นๆ
นวัตกรรมหลักในเวอร์ชัน re2c 1.2:
- เพิ่มวิธีการใหม่ที่เรียบง่ายสำหรับการตรวจสอบจุดสิ้นสุดของข้อมูลที่ป้อน (“กฎ EOF”) ด้วยเหตุนี้ จึงมีการเพิ่มการกำหนดค่า “re2c:eof”
ช่วยให้คุณสามารถเลือกอักขระเทอร์มินัล
และกฎพิเศษ “$” ซึ่งจะถูกทริกเกอร์หาก lexer
ถึงจุดสิ้นสุดของข้อมูลที่ป้อนเรียบร้อยแล้ว
ในอดีต re2c มีตัวเลือกวิธีการตรวจสอบหลายวิธีให้เลือก
สิ้นสุดอินพุตที่แตกต่างกันในข้อจำกัด ประสิทธิภาพ และความเรียบง่าย
การใช้งาน วิธีการใหม่ได้รับการออกแบบเพื่อให้เขียนโค้ดได้ง่ายขึ้นในขณะที่
ในขณะที่ยังคงมีประสิทธิภาพและนำไปใช้ได้อย่างกว้างขวาง วิธีเก่า
ยังคงใช้งานได้และอาจเป็นที่นิยมในบางกรณี - เพิ่มความสามารถในการรวมไฟล์ภายนอกโดยใช้คำสั่ง
"/*!include:re2c "file.re" */" โดยที่ "file.re" คือชื่อของไฟล์ที่จะรวม Re2c ค้นหาไฟล์ในไดเร็กทอรีไฟล์รวม
เช่นเดียวกับในรายการเส้นทางที่ระบุโดยใช้ตัวเลือก “-I”
ไฟล์ที่รวมไว้อาจรวมถึงไฟล์อื่นๆ
Re2c จัดเตรียมไฟล์ "มาตรฐาน" ในไดเร็กทอรี "include/"
โครงการ - คาดว่าคำจำกัดความที่เป็นประโยชน์จะสะสมอยู่ที่นั่น
นิพจน์ทั่วไป บางอย่างเช่นไลบรารีมาตรฐาน
จนถึงตอนนี้ ตามคำร้องขอของคนงาน ได้มีการเพิ่มไฟล์หนึ่งไฟล์ที่มีคำจำกัดความของหมวดหมู่ Unicode - เพิ่มความสามารถในการสร้างไฟล์ส่วนหัวโดยพลการ
เนื้อหาโดยใช้ตัวเลือก "-t --type-header" (หรือเหมาะสม
configurations) และคำสั่งใหม่ "/*!header:re2c:on*/" และ
"/*!header:re2c:off*/". ซึ่งอาจเป็นประโยชน์ในกรณีที่
เมื่อ re2c ต้องการสร้างคำจำกัดความของตัวแปร โครงสร้าง และมาโคร
ใช้ในหน่วยการแปลอื่น ๆ - ตอนนี้ Re2c เข้าใจตัวอักษร UTF8 และคลาสอักขระในนิพจน์ทั่วไปแล้ว
ตามค่าเริ่มต้น re2c แยกวิเคราะห์นิพจน์เช่น "∀x ∃y" เป็น
ลำดับอักขระ ASCII 1 บิต “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 อนุญาตให้ใช้บล็อก re2c ปกติในโหมด "-r --reuse"
วิธีนี้จะสะดวกหากไฟล์อินพุตมีหลายบล็อกและมีเพียงบางส่วนเท่านั้น
จำเป็นต้องนำมาใช้ซ้ำ - ตอนนี้คุณสามารถกำหนดรูปแบบของคำเตือนและข้อความแสดงข้อผิดพลาดได้แล้ว
ใช้ตัวเลือกใหม่ "--location-format {gnu | msvc}" รูปแบบ GNU จะปรากฏขึ้น
เป็น "ชื่อไฟล์:บรรทัด:คอลัมน์:" และรูปแบบ MSVC เป็น "ชื่อไฟล์(บรรทัด,คอลัมน์)"
คุณสมบัตินี้อาจมีประโยชน์สำหรับผู้ชื่นชอบ IDE
นอกจากนี้ยังมีการเพิ่มตัวเลือก "--verbose" ซึ่งจะแสดงข้อความชัยชนะสั้นๆ หากทำสำเร็จ - โหมด "ความเข้ากันได้" พร้อมดิ้นได้รับการปรับปรุง - ข้อผิดพลาดในการแยกวิเคราะห์บางอย่างได้รับการแก้ไขแล้ว
ลำดับความสำคัญของตัวดำเนินการไม่ถูกต้องในบางกรณี
ในอดีต ตัวเลือก "-F --flex-suppor" อนุญาตให้คุณเขียนโค้ดได้
ผสมกันในรูปแบบ flex และ re2c ซึ่งทำให้การแยกวิเคราะห์ทำได้ยากเล็กน้อย
โหมดความเข้ากันได้ของ Flex ไม่ค่อยได้ใช้ในโค้ดใหม่
แต่ re2c ยังคงรองรับความเข้ากันได้แบบย้อนหลัง - ตอนนี้ใช้ตัวดำเนินการลบคลาสอักขระ "/" แล้ว
ก่อนที่จะขยายการเข้ารหัสซึ่งทำให้สามารถใช้งานได้ในจำนวนที่มากขึ้น
หากใช้การเข้ารหัสความยาวอักขระแบบแปรผัน (เช่น UTF8) - ตอนนี้ไฟล์เอาต์พุตถูกสร้างขึ้นแบบอะตอมมิก: re2c สร้างไฟล์ชั่วคราวก่อน
และเขียนผลลัพธ์ลงไป จากนั้นเปลี่ยนชื่อไฟล์ชั่วคราวเป็นเอาต์พุต
การดำเนินการหนึ่งครั้ง - เอกสารประกอบเสร็จสมบูรณ์และเขียนใหม่ โดยเฉพาะอันใหม่ที่ถูกเพิ่มเข้ามา
บทที่เกี่ยวกับhttp://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
иเกี่ยวกับวิธีการตรวจสอบจุดสิ้นสุดของข้อมูลที่ป้อนเข้า .
เอกสารใหม่จะถูกรวบรวมไว้ในแบบฟอร์ม
คู่มือหน้าเดียวที่ครอบคลุม
พร้อมตัวอย่าง (แหล่งเดียวกันถูกแสดงผลใน manpage และในเอกสารออนไลน์)
มีความพยายามที่ไม่ดีในการปรับปรุงความสามารถในการอ่านไซต์บนโทรศัพท์ - จากมุมมองของนักพัฒนา re2c ได้รับระบบย่อยที่สมบูรณ์ยิ่งขึ้น
การดีบัก ขณะนี้รหัสการดีบักถูกปิดใช้งานในรุ่นรีลีสและ
สามารถเปิดใช้งานได้โดยใช้ตัวเลือกกำหนดค่า "--enable-debug"
ที่มา: opennet.ru