2012-01-27 25 views
5

Đôi khi, sẽ thuận tiện khi có một hàm được tối ưu hóa cao cho tìm kiếm regex thay vì bao gồm một thư viện tạo các trình phân tích cú pháp khi chạy. Có một trình tạo trình phân tích cú pháp phù hợp với vai trò như vậy không?Trình tạo phân tích cú pháp biểu thức chính quy

Lý tưởng nhất, nó sẽ:

  • tạo C chức năng duy nhất
  • tạo ra một DFA tương ứng với biểu thức chính quy cho
  • được hiệu quả như KMP hoặc Boyer-Moore trong những trường hợp đơn giản

Trả lời

6

Dưới đây là danh sách các công cụ mà tất cả phù hợp với nhu cầu của bạn:

  1. Lex/Flex có lẽ là công cụ nổi tiếng nhất để xây dựng các trình phân tích cú pháp từ các biểu thức chính quy. Lex rất hữu ích trong nhiều trường hợp nhưng nó có thể áp đặt quá nhiều chi phí cho các ứng dụng phân tích cú pháp đơn giản vì vòng lặp xử lý hạng nặng áp đặt mô hình "kéo" luồng và bộ đệm đầu vào. Nó được thiết kế để phân tích toàn bộ các tệp thay vì các chuỗi đơn giản.

  2. . Nó là một bộ xử lý trước tạo ra các bộ nhận dạng dựa trên C từ các biểu thức chính quy. Các máy trạng thái được tạo chạy rất nhanh và tích hợp dễ dàng vào bất kỳ chương trình nào, không phụ thuộc vào.

  3. Ragel State Machine Compiler. Một bộ xử lý trước khác tạo mã FSM từ ký hiệu ngôn ngữ thông thường ở mức cao (biểu thức chính quy là một trường hợp của định nghĩa này). Nó hoạt động với một loạt các ngôn ngữ (C, C++, Mục tiêu-C, D, Java và Ruby), có thể thực thi các hành động của người dùng trên các sự kiện FSM khác nhau, v.v. Hơn nữa, nó có thể tạo định nghĩa máy trạng thái theo định dạng của Graphviz của các tiểu bang và quá trình chuyển đổi.

5

Lex và Flex là trình biên dịch regexp-to-C hiệu quả.

+0

Bằng cách nào đó, tôi đã nghĩ chúng là trình mã thông báo độc quyền. –

Các vấn đề liên quan