2009-01-27 14 views
1

Si vous avez un schéma assez simple avec des champs de base booléens, comment écrire un générateur de code en C++. Si vous avez déjà écrit, comment avez-vous commencé. Articles/recommandation bienvenue.Comment écrire un générateur de code avec un IDL personnalisé?

EDIT: Notez qu'il ne s'agit pas de l'idl CORBA standard.

+0

Qu'essayez-vous de générer? Si vous dites 'IDL', je pense 'CORBA'. Pourquoi n'utilisez-vous pas un générateur/un compilateur CORBA existant? –

+0

Ou COM, faites attention –

+0

Question mal posée. Pourquoi ne pas reformuler? – user51568

Répondre

0

Comet est assez bonne bibliothèque pour mettre en œuvre COM.

1

En résumé:

  1. Convertir quelque chose à la main,
  2. copie que la production dans une chaîne littérale puis
  3. généralisent avec des boucles et des variables au lieu des noms fixes.

C'est particulièrement bon problème à aborder avec TDD - commencer par la mise en place d'un cadre tel que cppunit (ou one of many alternatives) avec stupidement simple tests qui vous assurer que vous pouvez charger un fichier et itérer son contenu par écrit les sortir.

Approchez la solution très progressivement - obtenez quelque chose de simple et de général, avec un test pour confirmer que cela fonctionne, puis ajoutez une variation plus sophistiquée. Par exemple: gérer les fonctions d'un seul paramètre en premier.

Pour un code jusqu'à une gamme de complexité modérée, ayez juste un long jeu d'instructions de sortie utilisant les classes d'ostream C++ standard qui vous permettront d'écrire beaucoup de littéraux de mélange de code avec n'importe quelles variables.

0

Malheureusement votre question manque de détails sur ce que vous essayez de générer exactement. Cependant, je vais prendre un coup de couteau et vous recommandons de regarder l'esprit de la bibliothèque C++ boost (http://spirit.sourceforge.net). Avec Spirit, vous pouvez créer des parseurs. Donc, en supposant que vous avez écrit un analyseur d'esprit pour votre DSL (langage spécifique au domaine - votre IDL), vous obtiendrez un AST (arbre de syntaxe abstraite) après avoir analysé votre fichier IDL que vous pouvez marcher avec le modèle de visiteur et en créant des visiteurs appropriés. vous pouvez générer n'importe quelle sortie dont vous avez besoin, par exemple générer du code.

Questions connexes