2008-11-20 2 views
8

Я бы хотел использовать парсер Regex, чтобы помочь в некоторой обработке строк в приложении C. Я идеально ищу что-то легкое и с открытым исходным кодом. Целевая платформа - это встроенная система, поэтому мы стараемся как можно больше экономить на использовании памяти. Я нашел несколько вариантов в Интернете, но задавался вопросом, может ли кто-нибудь сделать дополнительные предложения, которые могут помочь в этом конкретном контексте.Легкий синтаксический анализатор regex

Большое спасибо,

ответ

7

Scintilla, открытый исходный текст компонент редактора, использует Ozan S. Yigit's RE engine

Он был выбран потому, что в общественном достоянии (поэтому нет лицензии обременения) и очень легкой. Но это немного ограничено ... Для чего стоит, RESearch.cxx использует немного более современный код (преобразованный в C++, но его не должно быть сложно преобразовать обратно в C) с некоторыми незначительными расширениями, сделанными мной (поддержка \ d \ s \ w и т. д.).

Есть несколько альтернатив, например Henry Spencer's regular expression libraries.

Подумайте об этом, двигатель regex Lua (в библиотеке строк, реализация gsub среди других), вероятно, быстр и мал, как и сам язык. Он имеет свои причуды и ограничения, но он очень полезен.

Боковой проект LPeg может быть интересной альтернативой RE, еще более легкий, но мощный.

+0

Спасибо за подробности ... Я думаю, что я собираюсь пойти с RESearch.cxx на данный момент. Он делает то, что мне нужно, и, похоже, делает это эффективно. Благодаря! – 2008-12-03 18:06:34

5

Если вам не требуется полнофункциональное внедрение регулярных выражений (и это звучит, как вы этого не сделаете), то код, написанный Керниган и Роб Пайк выделены Beautiful Code вероятно, будет работать для вашего необходимо. I found a Dr. Dobb's article, который, я думаю, является источником кода, который появляется в книге.

0

Учитывая ваши легкие требования, я бы рекомендовал Henry Spencer's regex library, который реализует POSIX BRE and ERE regex flavors. Это стандартные ароматы регулярных выражений, которые, вероятно, уже знакомы вашим пользователям.

Смежные вопросы