2008-11-20 6 views
8

Je voudrais utiliser un analyseur Regex pour faciliter le traitement de chaînes dans une application C. Je recherche idéalement quelque chose de léger et d'open-source. La plate-forme cible est un système embarqué, donc nous cherchons à économiser autant que possible avec la consommation de mémoire en particulier. J'ai trouvé un certain nombre d'options en ligne, mais je me demandais si quelqu'un peut faire des suggestions supplémentaires qui pourraient aider dans ce contexte particulier.Analyseur syntaxique léger

Un grand merci,

Répondre

7

Scintilla, un composant éditeur de texte open source, utilise Ozan S. Yigit's RE engine

Il a été choisi parce qu'il est dans le domaine public (donc pas de licence de grèvement) et 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 quelques alternatives, comme Henry Spencer's regular expression libraries. À bien y penser, le moteur de regex Lua (dans la bibliothèque de chaînes de caractères, l'implémentation de gsub entre autres) est probablement rapide et petit, comme 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.

+0

Merci pour les détails ... Je pense que je vais aller avec RESearch.cxx pour le moment. Il fait ce dont j'ai besoin et il semble le faire efficacement. Merci! –

5

Si vous ne souhaitez pas une implémentation regex très complet (et il semble que vous n'avez pas), le code écrit par Brian Kernighan et Rob Pike a souligné dans Beautiful Code probablement travailler pour votre Besoins. Je found a Dr. Dobb's article qui je pense est l'origine du code qui apparaît dans le livre.