Ça dépend vraiment de ce que vous commencez avec et ce que vous voulez faire. Il n'y a pas une taille unique pour tous.
Si vous avez une grammaire LR (par exemple, vous travaillez à partir d'une grammaire Yacc), c'est beaucoup de travail pour en faire un LL, adapté pour Parsec ou uu parsinglib. Cependant le nombre, de sepBy etc. les analyseurs sont très utiles ici, mais vous devriez vous attendre de l'analyseur à être plus lent que d'Heureux+Alex.
Pour LL combinateur de l'analyse, uu-parsinglib et c'prédécesseur uu-analyse sont gentils, mais ils manquent de quelque chose comme Parsec du Jeton et les modules de Langue sont donc peut-être moins pratique. Certaines personnes comme Malcolm Wallace Parselib parce qu'ils ont un modèle différent de Parsec de revenir en arrière mais je n'ai aucune expérience dans le domaine.
Si vous êtes le décodage de certains fichier au format plutôt que quelque chose comme un langage de programmation, Attoparsec ou similaire peut-être mieux que Parsec ou uu parsinglib. Mieux, dans ce contexte, étant plus rapide - pas seulement ByteString vs Char, mais je pense que Attoparsec fait moins de travail concernant la gestion des erreurs / l'emplacement de la source de repérage les analyseurs doivent s'exécutent plus rapidement qu'ils font moins de travail par l'élément d'entrée.
Aussi, gardez à l'esprit que les formats de fichier texte peut ne pas toujours avoir des grammaires en tant que tel, alors vous pourriez avoir à définir un certain nombre de personnalisé combinators à faire de spécial lexicale des trucs plutôt que de simplement définir "analyseur combinators" pour chaque élément.
Pour LR analyse, j'ai trouvé Ralf Hinze de Froncer les sourcils de plus agréable que de Heureux - mieux erreur de soutien et un meilleur format pour les fichiers de grammaire mais froncement de sourcils n'est pas activement maintenu et n'est pas sur le Hackage. Je pense que c'est LR(k) plutôt LR(1) ce qui signifie qu'il est plus puissant w.r.t. d'anticipation.
La Performance n'est pas vraiment un gros souci w.r.t. une grammaire. Les langages de programmation ont des grammaires, mais vous pouvez vous attendre assez de petits fichiers. Comme pour les données de formats de fichiers-il vraiment incombe au concepteur du format de la concevoir de telle manière qu'il permet efficace de l'analyse. Pour combinator analyseurs vous ne devriez pas avoir besoin de nombreuses fonctionnalités avancées pour un format de données de fichier - si vous le faites, le format est mal conçu (cela arrive parfois, malheureusement) ou de votre analyseur.
Pour le dossier que j'ai écrit un C analyseur avec un froncement de sourcils, GL-shading language avec Plaisir, un inachevé C analyseur avec UU_Parsing, et beaucoup de choses avec Parsec. Le choix pour moi était ce que j'avais au début, grammaire LR - Froncer les sourcils ou Heureux (Heureux comme froncement de sourcils n'est pas maintenu), sinon généralement Parsec (comme je l'ai dit uu_parse est sympathique mais manque la commodité de LanguageDef). Pour les formats binaires je roule moi-même, mais j'ai l'habitude d'avoir des exigences spéciales.