Я рассматриваю возможность интеграции парсинга multipart form-data в модуле веб-сервера, чтобы я мог избавиться от бэкэнд-веб-приложений (часто написанных на динамических языках) от разбора самих многостраничных данных. Многогранная грамматика (RFC 2046) выглядит нетривиальной, и если я ее реализую вручную, многие вещи могут пойти не так. Есть ли уже хороший, легкий парсер/форма-данные, написанный на C или С++? Я ищу один без внешних зависимостей, кроме стандартной библиотеки C или С++. Мне не нужна обработка вложений электронной почты или буферизованные классы ввода-вывода или время выполнения переносимости или что-то еще, просто разбор массива/формы данных.
Вещи, которые я рассмотрел:
- GMime - зависит от glib, поэтому не уходи.
- libapreq - слишком большой, зависит от APR, плохо документирован, нет модульных тестов.
Я также смотрел на запись парсера с Ragel, но я не могу понять, как это сделать, потому что грамматика не статична: граница может меняться произвольно.