ich verwendet OpenC++ zu verwenden (http://opencxx.sourceforge.net/opencxx/html/overview.html) Codegenerierung wie ausführen:Source-to-Source-Compiler Rahmen wollte
Quelle:
class MyKeyword A {
public:
void myMethod(inarg double x, inarg const std::vector<int>& y, outarg double& z);
};
generiert:
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);
}
};
Diese Art von Die Codegenerierung stimmt direkt mit dem Anwendungsfall im Lernprogramm von OpenC++ überein (http://www.csg.is.titech.ac.jp/~chiba/opencxx/tutorial.pdf), indem ein Meta-Level-Programm geschrieben wird, das "MyKeyword", "inarg" und "outarg" verarbeitet und ausführt g die Code-Generierung. Allerdings ist OpenC++ jetzt veraltet und inaktiv, und mein Code-Generator kann nur mit g ++ 3.2 arbeiten und löst einen Fehler beim Parsen von Header-Dateien von g ++ höherer Versionen aus.
Ich habe mir VivaCore angeschaut, aber es bietet nicht die Infrastruktur zum Kompilieren von Meta-Level-Programmen. Ich schaue mir auch LLVM an, aber ich kann keine Dokumentation finden, die mich bei der Ausarbeitung meiner Source-to-Source-Kompilierung unterstützt. Ich kenne auch das ROSE-Compiler-Framework, aber ich bin mir nicht sicher, ob es meiner Verwendung entspricht und ob seine proprietäre C++ - Frontend-Binärdatei in einem kommerziellen Produkt verwendet werden kann und ob eine Windows-Version verfügbar ist.
Alle Kommentare und Hinweise auf bestimmte Tutorial/Papier/Dokumentation werden sehr geschätzt.
Sie können das Rose-Framework nicht in einem kommerziellen Kontext verwenden, ohne Ihre eigene Lizenz für das EDG-Frontend zu erhalten. Weiß nicht ob Rose eine Windows Version hat. –