2008-11-20 44 views
8

Tôi muốn sử dụng trình phân tích cú pháp Regex để hỗ trợ xử lý chuỗi trong ứng dụng C. Tôi lý tưởng tìm kiếm thứ gì đó nhẹ và mã nguồn mở. Nền tảng đích là một hệ thống nhúng nên chúng tôi đang tìm cách tiết kiệm càng nhiều càng tốt với mức tiêu thụ bộ nhớ nói riêng. Tôi đã tìm thấy một số tùy chọn trực tuyến nhưng đã tự hỏi liệu có ai có thể đưa ra các đề xuất bổ sung có thể giúp trong ngữ cảnh cụ thể này hay không.Bộ phân tích cú pháp regex nhẹ

Rất cám ơn,

Trả lời

7

Scintilla, một văn bản nguồn thành phần biên tập mở, sử dụng Ozan S. Yigit's RE engine

Nó được chọn vì nó là trong lĩnh vực công cộng (vì vậy không có giấy phép encumbering) và rất nhẹ. Nhưng nó là một chút hạn chế ... Đối với những gì nó có giá trị, RESearch.cxx sử dụng một mã hơi hiện đại hơn (chuyển đổi sang C + + nhưng nó không phải là phức tạp để chuyển đổi nó trở lại C) với một số phần mở rộng nhỏ được thực hiện bởi bản thân mình (hỗ trợ \ d \ s \ w, v.v.)

Có một số lựa chọn thay thế, như Henry Spencer's regular expression libraries.

Hãy suy nghĩ về nó, động cơ regex Lua (trong thư viện chuỗi, gsub thực hiện trong số những người khác) có lẽ là nhanh và nhỏ quá, giống như ngôn ngữ chính nó. Nó có những điều kỳ quặc và hạn chế của nó, nhưng nó rất có ích.

Dự án phụ LPeg có thể là một giải pháp thay thế thú vị cho REs, vẫn nhẹ nhưng mạnh mẽ.

+0

Cảm ơn các chi tiết ... Tôi nghĩ rằng tôi sẽ đi với RESearch.cxx cho bây giờ. Nó làm những gì tôi cần và nó dường như làm điều đó một cách hiệu quả. Cảm ơn! –

5

Nếu bạn không đòi hỏi phải có tính năng thực hiện regex đầy đủ (và có vẻ như bạn không) sau đó mã được viết bởi Brian Kernighan và Rob Pike nhấn mạnh trong Beautiful Code lẽ sẽ làm việc cho bạn nhu cầu. Tôi found a Dr. Dobb's article mà tôi nghĩ là nguồn gốc của mã xuất hiện trong cuốn sách.

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