ในวันจันทร์ที่ 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