ในวันศุกร์ที่ 2 สิงหาคม การเปิดตัว re2c ซึ่งเป็นโปรแกรมสร้างตัววิเคราะห์คำศัพท์ฟรีสำหรับภาษา C และ C++ ได้รับการเผยแพร่ Re2c เขียนขึ้นในปี 1993 โดย Peter Bamboulis ในฐานะเครื่องกำเนิดการทดลองของเครื่องวิเคราะห์คำศัพท์ที่เร็วมาก แตกต่างจากเครื่องกำเนิดอื่นด้วยความเร็วของโค้ดที่สร้างขึ้นและอินเทอร์เฟซผู้ใช้ที่ยืดหยุ่นผิดปกติซึ่งช่วยให้เครื่องวิเคราะห์สามารถฝังลงในฐานโค้ดที่มีอยู่ได้อย่างง่ายดายและมีประสิทธิภาพ ตั้งแต่นั้นมา โครงการนี้ได้รับการพัฒนาโดยชุมชน และยังคงเป็นเวทีสำหรับการทดลองและการวิจัยในสาขาไวยากรณ์ที่เป็นทางการและเครื่องจักรสถานะจำกัด

นวัตกรรมหลักในเวอร์ชัน 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*/ and
    /*!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 ,
    ซึ่งช่วยให้คุณเปลี่ยนพฤติกรรมและแยกวิเคราะห์ "∀x ∃y" เป็น
    2200 78 20 2203 79

  • ตอนนี้ Re2c อนุญาตให้ใช้บล็อก re2c ปกติในโหมด -r --reuse
    วิธีนี้จะสะดวกหากไฟล์อินพุตมีหลายบล็อกและมีเพียงบางส่วนเท่านั้น
    จำเป็นต้องนำมาใช้ซ้ำ

  • ตอนนี้คุณสามารถกำหนดรูปแบบของคำเตือนและข้อความแสดงข้อผิดพลาดได้แล้ว
    ใช้ตัวเลือก --location-format ใหม่ . รูปแบบ GNU จะปรากฏขึ้น
    เป็นชื่อไฟล์:line:column: และรูปแบบ MSVC เป็นชื่อไฟล์(line,column)
    คุณสมบัตินี้อาจมีประโยชน์สำหรับผู้ชื่นชอบ IDE
    นอกจากนี้ยังมีการเพิ่มตัวเลือก --verbose ซึ่งจะพิมพ์ข้อความชัยชนะสั้นๆ หากสำเร็จ

  • โหมด "ความเข้ากันได้" พร้อมดิ้นได้รับการปรับปรุง - ข้อผิดพลาดในการแยกวิเคราะห์บางอย่างได้รับการแก้ไขแล้ว
    ลำดับความสำคัญของตัวดำเนินการไม่ถูกต้องในบางกรณี
    ในอดีต ตัวเลือก -F --flex-support อนุญาตให้คุณเขียนโค้ดได้
    ผสมกันในรูปแบบ flex และ re2c ซึ่งทำให้การแยกวิเคราะห์ทำได้ยากเล็กน้อย
    โหมดความเข้ากันได้ของ Flex ไม่ค่อยได้ใช้ในโค้ดใหม่
    แต่ re2c ยังคงรองรับความเข้ากันได้แบบย้อนหลัง

  • ตัวดำเนินการลบคลาสอักขระ / นำไปใช้แล้ว
    ก่อนที่จะขยายการเข้ารหัสซึ่งทำให้สามารถใช้งานได้ในจำนวนที่มากขึ้น
    หากใช้การเข้ารหัสความยาวอักขระแบบแปรผัน (เช่น UTF8)

  • ตอนนี้ไฟล์เอาต์พุตถูกสร้างขึ้นแบบอะตอมมิก: re2c สร้างไฟล์ชั่วคราวก่อน
    และเขียนผลลัพธ์ลงไป จากนั้นเปลี่ยนชื่อไฟล์ชั่วคราวเป็นเอาต์พุต
    การดำเนินการหนึ่งครั้ง

  • เอกสารประกอบเสร็จสมบูรณ์และเขียนใหม่ โดยเฉพาะอันใหม่ที่ถูกเพิ่มเข้ามา
    ภาษาไทย เกี่ยวกับการเติมบัฟเฟอร์
    и เกี่ยวกับวิธีการตรวจสอบจุดสิ้นสุดของข้อมูลที่ป้อนเข้า.
    เอกสารใหม่จะถูกรวบรวมไว้ในแบบฟอร์ม
    คู่มือหนึ่งหน้าที่ครอบคลุม
    พร้อมตัวอย่าง (แหล่งเดียวกันถูกแสดงผลใน manpage และในเอกสารออนไลน์)
    มีความพยายามที่ไม่ดีในการปรับปรุงความสามารถในการอ่านไซต์บนโทรศัพท์

  • จากมุมมองของนักพัฒนา re2c ได้รับระบบย่อยที่สมบูรณ์ยิ่งขึ้น
    การดีบัก ขณะนี้รหัสการดีบักถูกปิดใช้งานในรุ่นรีลีสและ
    สามารถเปิดใช้งานได้โดยใช้ตัวเลือกการกำหนดค่า --enable-debug

การเปิดตัวครั้งนี้ใช้เวลานานเกือบทั้งปี
เวลาส่วนใหญ่เช่นเคยถูกใช้ไปกับการพัฒนากรอบทางทฤษฎีและการเขียน
บทความ "การแยก POSIX Submatch ที่มีประสิทธิภาพบน NFA".
อัลกอริธึมที่อธิบายไว้ในบทความถูกนำไปใช้ในไลบรารีทดลอง libre2c
(การสร้างไลบรารีและการวัดประสิทธิภาพจะถูกปิดใช้งานโดยค่าเริ่มต้น และเปิดใช้งานโดยตัวเลือกการกำหนดค่า
--enable-libs) ห้องสมุดไม่ได้ถูกมองว่าเป็นคู่แข่งกับที่มีอยู่
โครงการเช่น RE2 แต่เป็นเวทีการวิจัยเพื่อการพัฒนาสิ่งใหม่
อัลกอริธึม (ซึ่งสามารถใช้ใน re2c หรือในโครงการอื่น ๆ )
นอกจากนี้ยังสะดวกในแง่ของการทดสอบ การวัดประสิทธิภาพ และการสร้างการเชื่อมโยงกับภาษาอื่นๆ

ขอขอบคุณจากนักพัฒนา re2c ถึงทุกคนที่ช่วยให้การเปิดตัวครั้งนี้เกิดขึ้น
และต่อชุมชนโดยทั่วไปสำหรับแนวคิด รายงานข้อผิดพลาด แพตช์ ขวัญกำลังใจ ฯลฯ ;]

ที่มา: linux.org.ru

เพิ่มความคิดเห็น