2010-03-13 13 views
8

MISE À JOUR: Cette question est obsolète mais à titre indicatif.LALR (1) ou GLR sous Windows - Des alternatives à Bison ++/Flex ++ actuelles?

Original Question

J'utilise la même version de bison ++ (1,21 à 8) et flex ++ (2.3.8-7) depuis 2002.

Je ne cherche pas une alternative à LALR (1) ou GLR en ce moment, juste à la recherche des options les plus courantes. Est-ce que quelqu'un est au courant des ports ultérieurs de ceux-ci que l'original qui ne dépendent pas de Cygwin? Quels sont les autres gens qui utilisent dans les environnements Windows pour le développement du compilateur C++ (en dehors de ANTLR ou Boost.spirit)? Les options commerciales sont ok, si vous avez une expérience de première main. J'ai aussi besoin de compiler sur Linux.

MISE À JOUR: Cette vieille question a été posée quand je n'étais pas au courant des politiques concernant les recommandations de l'outil (pas sûr si la politique existait en 2010, mais peu importe ...

I depuis mis à jour à Bison 3.0 qui a des capacités de GLR J'ai finalement décidé que toute réécriture de mon analyseur serait une descente récursive, pour améliorer les rapports d'erreur et permettre une utilisation plus facile dans les outils en dehors du compilateur, donc pour l'instant je vais compléter la version de référence dans Bison: Je ne vois pas pourquoi il serait temps de passer à un autre outil de PG:

+1

Pourquoi pas ANLTR? IMO ça marche bien sur Windows. – kenny

+0

Principalement parce que je ne voulais pas porter ma grammaire de Yacc/Bison à ANTLR. Rien contre ANTLR, j'ai joué avec, mais jamais "adopté". Je travaille sur mon compilateur dans mon temps libre, comme un passe-temps, et tout portage à un dialecte différent peut attacher plusieurs week-ends. – codenheim

+0

Donc, vous demandez un outil qui fait exactement la même chose que flex + bison, mais refuse d'accepter les changements de syntaxe de flex/bison? Pourquoi ne pas s'en tenir à ce que vous utilisez alors? –

Répondre

2

Vous pouvez essayer Elsa (maintenant c'est une partie du projet Oink). Mais il est presque mort maintenant. La seule caractéristique intéressante est qu'il y a un analyseur C et C++ complet et robuste écrit dessus. LLVM contient un cadre d'analyse syntaxique raisonnablement moderne. Et il y a aussi un analyseur C++ (voir le projet clang).

Certaines implémentations Packrat pour C++ sont disponibles, ce qui est une des choses les plus à la mode dans l'analyse syntaxique.

+0

Aucune des réponses n'était spécifique à ma question, mais m'a quand même aidé. – codenheim

1

J'aime beaucoup ANTLR. Boost Spirit est un peu "là-bas" pour les applications de production sérieuses.

+3

@mrjoltcola: ANTLR a une cible C et est complètement utilisable en C++. Il n'y a pas de cible C++ séparée car elle serait redondante - la plupart des composants C ne sont utilisés que par ANTLR lui-même.Vous pouvez utiliser C++ dans les actions sémantiques autant que vous le souhaitez. –

+0

Ok, +1 à votre suivi car il est utile. – codenheim