Analyseur de regex léger

J’aimerais utiliser un parsingur syntaxique Regex pour faciliter le traitement de certaines chaînes dans une application C. Je recherche idéalement quelque chose de léger et de source ouverte. La plate-forme cible étant un système intégré, nous cherchons à économiser le plus possible avec la consommation de mémoire en particulier. J’ai trouvé plusieurs options en ligne, mais je me demandais si quelqu’un pouvait faire d’autres suggestions qui pourraient aider dans ce contexte particulier.

Merci beaucoup,

Scintilla , un composant d’éditeur de texte open source, utilise le moteur RE d’Ozan S. Yigit

Il a été choisi car il fait partie du domaine public (donc pas de licence encombrante) et est très léger. Mais c’est un peu limité … Pour ce que ça vaut, RESearch.cxx utilise un code légèrement plus moderne (converti en C ++ mais il ne devrait pas être complexe de le reconvertir en C) avec quelques extensions mineures faites par moi-même support de \ d \ s \ w etc.).

Il existe des alternatives, comme les bibliothèques d’expression régulière de Henry Spencer .

À bien y penser, le moteur de regex de Lua (dans la bibliothèque de chaînes, avec la mise en oeuvre de gsub, entre autres) est probablement aussi petit et rapide que le langage lui-même. Il a ses bizarreries et ses limites, mais il est très utilisable.

Le projet parallèle LPeg peut être une alternative intéressante aux RE, toujours léger mais puissant.

Si vous n’avez pas besoin d’une implémentation regex complète (et vous avez l’impression que vous n’en avez pas besoin), le code écrit par Brian Kernighan et Rob Pike mis en évidence dans Beautiful Code répondra probablement à vos besoins. J’ai trouvé un article du Dr. Dobb qui, je pense, est à l’origine du code qui apparaît dans le livre.

Compte tenu de votre faible poids, je recommanderais la bibliothèque de regex de Henry Spencer qui implémente les saveurs de regex POSIX BRE et ERE . Ce sont des types de regex standard que vos utilisateurs connaissent probablement déjà.