Легкий парсер регулярных выражений - PullRequest
9 голосов
/ 21 ноября 2008

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

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

Ответы [ 3 ]

7 голосов
/ 21 ноября 2008

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

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

Есть несколько альтернатив, например Библиотеки регулярных выражений Генри Спенсера .

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

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

5 голосов
/ 21 ноября 2008

Если вам не требуется полнофункциональная реализация регулярных выражений (а это звучит так, как будто вы этого не делаете), тогда код, написанный Брайаном Керниганом и Робом Пайком, выделенный в Beautiful Code , вероятно, будет работать для ваших нужд , Я нашел статью доктора Добба , которая, как мне кажется, является источником кода, который появляется в книге.

0 голосов
/ 21 ноября 2008

Учитывая ваши легкие требования, я бы порекомендовал Библиотека регулярных выражений Генри Спенсера , в которой реализованы POSIX BRE и ERE регулярные выражения . Это стандартные разновидности регулярных выражений, с которыми ваши пользователи, вероятно, уже знакомы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...