2010-02-15 14 views
26

Tôi đang xem xét tích hợp phân tích dữ liệu biểu mẫu nhiều phần trong mô-đun máy chủ web để tôi có thể giảm các ứng dụng web phụ trợ (thường được viết bằng ngôn ngữ động) từ phân tích cú pháp dữ liệu nhiều phần. Ngữ pháp nhiều phần (RFC 2046) trông không tầm thường và nếu tôi thực hiện nó bằng tay thì rất nhiều thứ có thể sai. Đã có một trình phân tích cú pháp multipart/form-data tốt, nhẹ được viết bằng C hoặc C++ chưa? Tôi đang tìm kiếm một với no các phụ thuộc bên ngoài khác với thư viện chuẩn C hoặc C++. Tôi không cần xử lý tập tin đính kèm email hoặc các lớp I/O đệm hoặc thời gian chạy di động hoặc bất cứ điều gì, chỉ cần phân tích cú pháp đa phần/biểu mẫu dữ liệu.Có một trình phân tích cú pháp đa phần/dữ liệu biểu mẫu nhẹ trong C hoặc C++ không?

Những điều mà tôi đã xem xét:

  • GMime - phụ thuộc vào lém lỉnh, vì vậy không có đi.
  • libapreq - quá lớn, tùy thuộc vào APR, tài liệu bị lỗi, không có kiểm tra đơn vị.

Tôi cũng đã xem xét viết một trình phân tích cú pháp với Ragel, nhưng tôi không thể tìm ra cách thực hiện vì ngữ pháp không tĩnh: ranh giới có thể thay đổi tùy ý.

+0

"GMime - phụ thuộc vào lém lỉnh, vì vậy không đi" - quan tâm giải thích tại sao? –

+4

Bạn đã đọc chủ đề này chưa: http://stackoverflow.com/questions/218089/simple-c-mime-parser? – Manuel

+1

@John: Mỗi phụ thuộc mới thêm rắc rối cài đặt cho người dùng của tôi và tôi muốn tránh điều đó ở mức tối thiểu. Nhiều máy chủ không có cài đặt glib. Ngoài ra, mọi phụ thuộc mới đều làm tăng mức sử dụng tài nguyên. Không có nhiều ứng dụng máy chủ sử dụng glib, vì vậy nếu tôi phụ thuộc vào glib, tôi sẽ kéo tất cả lượng tiêu thụ bộ nhớ của nó chỉ để phân tích một số dữ liệu mime. – Hongli

Trả lời

1

mimetic khiếu nại để hỗ trợ. Tôi nghĩ GNU cgicc cũng có thể hỗ trợ nó.

1

cgicc hỗ trợ nó ... Nhưng được viết khá kém và chuyển tiếp trên bộ đệm nhập trong bộ nhớ.

-4

điều này có thể không trả lời trực tiếp câu hỏi của bạn, nhưng bạn có xem xét hiphop cho php từ facebook không?

nó chuyển đổi mã php của bạn thành C++ rồi biên dịch bằng g ++.

có thể giúp bạn tiết kiệm thời gian bằng cách tự viết một cái gì đó.

5

Có, có một. Không bí mật nó là của riêng tôi. Hãy sử dụng nó. Liên kết là: MPFDParser. Nó không có phụ thuộc chút nào.

9

Tôi biết câu hỏi này là một vài tuổi bây giờ, nhưng tôi cần giống nhau và kết thúc bằng cách sử dụng này:

https://github.com/iafonov/multipart-parser-c

+0

Chắc chắn kiểm tra các vấn đề mặc dù! Ví dụ. thuật ngữ ranh giới phải được bắt đầu bằng "-" rồi, nếu không thì nó sẽ không hoạt động. –