Phát hành trình tạo bộ phân tích từ vựng re2c 2.0

diễn ra giải phóng re2c 2.0, một trình tạo trình phân tích từ vựng miễn phí cho ngôn ngữ C và C++. Dự án re2c ban đầu được tạo ra vào năm 1993 bởi Peter Bamboulis như một trình tạo thử nghiệm các máy phân tích từ vựng rất nhanh, được phân biệt với các trình tạo khác bởi tốc độ của mã được tạo và giao diện người dùng linh hoạt khác thường cho phép các trình phân tích được nhúng dễ dàng và hiệu quả vào một hệ thống hiện có. cơ sở mã. Kể từ đó, dự án đã được cộng đồng phát triển và tiếp tục là nền tảng cho các thử nghiệm và nghiên cứu trong lĩnh vực ngữ pháp hình thức và máy trạng thái hữu hạn.

Sự thay đổi chính:

  • Đã thêm hỗ trợ cho ngôn ngữ Go (được bật bằng tùy chọn “--lang go” cho re2c hoặc dưới dạng chương trình re2go riêng biệt). Tài liệu về C và Go được tạo từ cùng một văn bản nhưng có các ví dụ mã khác nhau. Hệ thống con tạo mã trong re2c đã được thiết kế lại hoàn toàn, điều này sẽ giúp hỗ trợ các ngôn ngữ mới trong tương lai dễ dàng hơn.
  • Đã thêm hệ thống xây dựng thay thế trên CMake (cảm ơn ligfx!). Nỗ lực dịch re2c sang CMake đã được thực hiện từ lâu, nhưng cho đến khi ligfx không có ai đề xuất một giải pháp chính thức. Hệ thống xây dựng Autotools cũ tiếp tục được hỗ trợ và sử dụng và không có kế hoạch từ bỏ nó trong tương lai gần (một phần để tránh gây khó khăn cho các nhà phát triển phân phối, một phần vì hệ thống xây dựng cũ ổn định hơn và ngắn gọn hơn hệ thống mới ). Cả hai hệ thống đều được kiểm tra liên tục bằng Travis CI.
  • Đã thêm khả năng chỉ định mã giao diện trong cấu hình khi sử dụng API chung. Trước đây, hầu hết các API phải được chỉ định ở dạng hàm hoặc macro hàm. Giờ đây, chúng có thể được chỉ định ở dạng chuỗi tùy ý với các tham số mẫu được đặt tên có dạng “@@{name}” hoặc đơn giản là “@@” (nếu chỉ có một tham số và không có sự mơ hồ). Kiểu API được đặt theo cấu hình re2c:api:style (giá trị hàm chỉ định kiểu chức năng và dạng tự do chỉ định kiểu tùy ý).
  • Hoạt động của tùy chọn “-c”, “—start-conditions” đã được cải thiện, cho phép bạn kết hợp nhiều từ vựng được kết nối với nhau trong một khối re2c. Bây giờ bạn có thể sử dụng các khối thông thường cùng với các khối có điều kiện và xác định một số khối có điều kiện không liên quan trong một tệp. Cải thiện hoạt động của tùy chọn "-r", "--reuse" (sử dụng lại mã từ một khối trong các khối khác) kết hợp với "-c", "--start-conditions" và "-f", "-- tùy chọn trạng thái có thể lưu trữ" (một từ vựng có trạng thái có thể bị gián đoạn tại bất kỳ thời điểm nào và tiếp tục thực hiện sau đó).
  • Đã khắc phục lỗi trong thuật toán cuối đầu vào (quy tắc EOF) được thêm gần đây, lỗi này trong một số ít trường hợp dẫn đến việc xử lý không chính xác các quy tắc chồng chéo.
  • Quá trình khởi động đã được đơn giản hóa. Trước đây, hệ thống xây dựng đã cố gắng tự động tìm một re2c đã được tạo sẵn có thể được sử dụng để tự xây dựng lại. Điều này dẫn đến sự phụ thuộc không chính xác (vì biểu đồ phụ thuộc là động, điều mà hầu hết các hệ thống xây dựng không thích). Bây giờ, để xây dựng lại các từ vựng, bạn cần định cấu hình rõ ràng hệ thống xây dựng và đặt biến RE2C_FOR_BUILD.

Nguồn: opennet.ru

Thêm một lời nhận xét