Je l'habitude d'utiliser OpenC++ (http://opencxx.sourceforge.net/opencxx/html/overview.html) pour effectuer la génération de code comme:cadre du compilateur Source-source voulait
Source:
class MyKeyword A {
public:
void myMethod(inarg double x, inarg const std::vector<int>& y, outarg double& z);
};
Generated:
class A {
public:
void myMethod(const string& x, double& y);
// generated method below:
void _myMehtod(const string& serializedInput, string& serializedOutput) {
double x;
std::vector<int> y;
// deserialized x and y from serializedInput
double z;
myMethod(x, y, z);
}
};
Ce genre de la génération de code correspond directement au cas d'utilisation dans le tutoriel d'OpenC++ (http://www.csg.is.titech.ac.jp/~chiba/opencxx/tutorial.pdf) en écrivant un programme de méta-niveau pour gérer "MyKeyword", "inarg" et "outarg" et performin g la génération de code. Cependant, OpenC++ est en quelque sorte désuet et inactif maintenant, et mon générateur de code ne peut fonctionner que sur g ++ 3.2 et il déclenche une erreur sur les fichiers d'en-tête d'analyse de g ++ de version supérieure.
J'ai regardé VivaCore, mais il ne fournit pas l'infrastructure pour compiler le programme de méta-niveau. Je suis aussi en train de regarder LLVM, mais je ne trouve pas de documentation pour m'enseigner l'utilisation de la compilation source-source. Je suis également conscient du framework de compilateur ROSE, mais je ne suis pas sûr que cela corresponde à mon utilisation, et que son binaire frontal C++ propriétaire puisse être utilisé dans un produit commercial, et si une version Windows est disponible.
Tous les commentaires et les pointeurs vers un tutoriel/papier/documentation spécifique sont très appréciés. Connaissez-vous la pratique de la métaprogrammation de modèle?
Vous ne pouvez pas utiliser le framework Rose dans un contexte commercial sans avoir votre propre licence sur le frontal EDG. Dunno si Rose a une version Windows. –