Question

Quel générateur lexer / parser est le meilleur (plus facile à utiliser, plus rapide) pour C ou C ++? J'utilise flex et bison en ce moment, mais le bison ne gère que LALR (1 grammaires). La langue que je suis l'analyse syntaxique ne pas vraiment besoin illimité préanalyse, mais illimité préanalyse ferait l'analyse syntaxique beaucoup plus facile. Antlr devrais-je essayer? Coco / R? Elkhound? Quelque chose d'autre?

Était-ce utile?

La solution

Mise à jour 05/01/2015:

Ma réponse originale pointant à une question maintenant supprimé:

  

Il y a un tas de bonnes réponses à cette question déjà Quel générateur analyseur-vous recommander

J'ai donc pris la liste des articles de la réponse supprimé sur archive.org avec au moins 1 vote ici:

Je l'ai fait plusieurs flex / systèmes de bison moi-même, mais maintenant je remplacer à la fois avec Lemon de sqlite car il est un outil, rentrante et thread-safe ainsi que d'avoir une diffusion en continu / modèle basé-pull.

Autres conseils

Les mauvaises nouvelles sont que la plupart langauges réel d'ordinateur ne sont pas « LALR (1) », ce qui signifie que vous devez recourir à beaucoup pour faire carriole YACC parse langauges réelles.

Si vous concevez une connexion DSL, vous pouvez utiliser tous les générateurs d'analyseur LALR sans beaucoup d'ennuis avec précision parce que vous pouvez changer la grammaire de votre DSL lorsque le générateur d'analyseur gloussements. générateurs d'analyseur LL travaillent surtout ici aussi pour la même raison, mais le manque de récursivité gauche peut être une vraie douleur.

Si vous uncomprising dans la façon dont vous aimez votre syntaxe, parseurs GLR sont gagnants mains vers le bas. Nous les utilisons dans le DMS Software Reengineering Toolkit et avons construit parseurs qualité de production quelques 30 langues, y compris C ++, qui a un théorème populaire affirmant que son presque impossible à analyser. Le théorème populaire a commencé par des personnes utilisant LL et LALR parseurs pour essayer de gérer C ++. GLR fait facilement.

ANTLR rend très facile illimitée préanalyse en utilisant l'option 'backtrack'. Il pourrait aussi qualifier vos critères « plus facile à utiliser, plus rapide » car il a ANTLRWORKS que vous permet de visualiser et déboguer votre grammaire.

Un autre avantage est que cela rend la construction d'AST trivialement facile avec son support intégré pour RSHS de construction qui manque dans le bison.

Avec deux livres publiés - « ANTLR: Definitive Guide » et « modèles de conception de langue », il est l'un parmi les outils très bien documentés disponibles. Vous avez également une liste de diffusion très active.

Je ne sais pas ce que vous cherchez exactement, mais je pense que Boost Xpressive est intéressant de regarder ...

pas exactement un générateur d'analyseur, mais un excellent outil pour gérer Grammaires et je me sens qu'il peut gérer les étranges.

J'utilise le système d'analyse syntaxique GOLD ( http://www.devincook.com/goldparser) avec de très bons résultats. Mon projet est petit, un système d'analyse syntaxique pour les fichiers NC en C. Mais je pense que l'outil peut gérer des projets plus complexes aussi bien.

Le dernier bison prétend faire illimitée préanalyse, par (en vigueur) faisant plusieurs Parsis simultanément. Si vous avez déjà l'investissement dans le bison alors il peut être intéressant d'essayer ceci, plutôt que de passer à un autre paquet.

http://www.gnu.org/software /bison/manual/bison.html#GLR-Parsers

Je ne l'ai pas utilisé cette fonction moi-même, cependant.

En ce qui concerne d'autres systèmes vont, je l'ai utilisé ANTLR. Je ne l'ai pas particulièrement comme elle (la documentation n'a pas été très bon, et il faut tenir compte manuellement sa grammaire pour répondre à la priorité des opérateurs), mais il fait le travail, et tant jurent que par elle qu'il est certainement intéressant de regarder.

LRSTAR 9,1 peut générer LR (1) et LR (*) parseurs. Il est un système basé sur C ++, convivial pour Windows et Visual Studio. Il crée des parseurs déterminés par des tables et lexers déterminés par des tables, qui sont petits et rapides à compiler. parseurs LRSTAR peut construire un AST automatiquement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top