ในวันจันทร์ที่ 20 กรกฎาคม การเปิดตัว re2c ซึ่งเป็นเครื่องมือสร้างตัววิเคราะห์คำศัพท์ที่รวดเร็วได้รับการปล่อยตัว
การเปลี่ยนแปลงที่สำคัญ:

  • เพิ่มการรองรับภาษา Go
    (เปิดใช้งานด้วยตัวเลือก --lang go สำหรับ re2c หรือเป็นโปรแกรม re2go แบบสแตนด์อโลน)
    เอกสารประกอบสำหรับ C และ Go สร้างขึ้นจากข้อความเดียวกัน แต่มีความแตกต่างกัน
    ตัวอย่างรหัส ระบบย่อยการสร้างรหัสใน re2c ได้รับการออกแบบใหม่ทั้งหมด ซึ่ง
    น่าจะช่วยให้รองรับภาษาใหม่ๆ ได้ง่ายขึ้นในอนาคต

  • เพิ่มระบบการสร้างทางเลือกบน CMake (ขอบคุณ ลิฟเอ็กซ์!)
    มีความพยายามที่จะแปล re2c เป็น CMake มานานแล้ว แต่ก่อน ligfx ไม่มีใคร
    เสนอโซลูชั่นที่สมบูรณ์
    ระบบการสร้างแบบเก่าบน Autotools ยังคงได้รับการสนับสนุนและใช้งานต่อไป
    และในอนาคตอันใกล้นี้ไม่มีแผนที่จะละทิ้ง (บางส่วนเพื่อไม่ให้สร้าง
    ปัญหาสำหรับผู้พัฒนาระบบจำหน่าย ส่วนหนึ่งเป็นเพราะระบบบิลด์เก่า
    มีความเสถียรและรัดกุมกว่าแบบใหม่)
    ทั้งสองระบบได้รับการทดสอบอย่างต่อเนื่องโดยใช้ Travis CI

  • เพิ่มความสามารถในการตั้งค่ารหัสอินเตอร์เฟสในการกำหนดค่าเมื่อใช้งาน
    API ทั่วไป (API ทั่วไป) ก่อนหน้านี้ API ส่วนใหญ่จะต้องระบุในแบบฟอร์ม
    ฟังก์ชันหรือมาโครฟังก์ชัน ตอนนี้สามารถตั้งค่าได้ตามอำเภอใจ
    สตริงที่มีพารามิเตอร์เทมเพลตที่มีชื่อในรูปแบบ @@{name} หรือเพียงแค่ @@ (ถ้า
    มีเพียงพารามิเตอร์เดียวและไม่มีความคลุมเครือ) รูปแบบ API สามารถกำหนดค่าได้
    re2c:api:style (ค่าของฟังก์ชันระบุรูปแบบการทำงาน ในขณะที่ค่ารูปแบบอิสระเป็นค่าที่กำหนดเอง)

  • ปรับปรุงการทำงานของอ็อพชัน -c, --start-conditions ซึ่งช่วยให้คุณรวมหลายๆ
    lexers ที่เชื่อมต่อกันในบล็อก re2c เดียว ตอนนี้คุณสามารถใช้
    บล็อกธรรมดาที่เท่าเทียมกับเงื่อนไขและตั้งเงื่อนไขที่ไม่เกี่ยวข้องหลายรายการ
    บล็อกในไฟล์เดียว
    ปรับปรุงตัวเลือก -r, --reuse (ใช้โค้ดซ้ำจากบล็อกเดียว
    ในบล็อกอื่นๆ) ร่วมกับตัวเลือก -c, --start-conditions และ -f, --storable-state
    (lexer สถานะที่สามารถถูกขัดจังหวะในสถานที่โดยพลการ
    และดำเนินการต่อไปในภายหลัง)

  • แก้ไขข้อผิดพลาดในอัลกอริทึมที่เพิ่มเข้ามาใหม่สำหรับจัดการการสิ้นสุดของข้อมูลอินพุต
    (กฎ EOF) ซึ่งในบางกรณีอาจนำไปสู่การประมวลผลที่ไม่ถูกต้อง
    กฎที่ทับซ้อนกัน

  • กระบวนการบูตแบบง่าย ก่อนหน้านี้ระบบบิลด์พยายามค้นหาแบบไดนามิกแล้ว
    สร้าง re2c ที่สามารถใช้สร้างตัวเองใหม่ได้
    สิ่งนี้นำไปสู่การพึ่งพาที่ไม่ถูกต้อง (เนื่องจากกราฟการพึ่งพาปรากฏออกมา
    ไดนามิกซึ่งระบบบิลด์ส่วนใหญ่ไม่ชอบ)
    ตอนนี้ เพื่อสร้าง lexers ใหม่ จำเป็นต้องมีอย่างชัดเจน
    กำหนดค่าระบบบิลด์และตั้งค่าตัวแปร RE2C_FOR_BUILD

ขอบคุณทุกคนที่มีส่วนร่วมในการเผยแพร่นี้!

ที่มา: linux.org.ru

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