tôi sử dụng để sử dụng OpenC++ (http://opencxx.sourceforge.net/opencxx/html/overview.html) để thực hiện sinh mã như:Nguồn-to-nguồn khuôn khổ biên dịch muốn
Nguồn:
class MyKeyword A {
public:
void myMethod(inarg double x, inarg const std::vector<int>& y, outarg double& z);
};
tạo:
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);
}
};
Kiểu này tạo mã trực tiếp khớp với trường hợp sử dụng trong hướng dẫn của OpenC++ (http://www.csg.is.titech.ac.jp/~chiba/opencxx/tutorial.pdf) bằng cách viết một chương trình siêu cấp để xử lý "MyKeyword", "inarg" và "outarg" và performin g tạo mã. Tuy nhiên, OpenC++ là loại lỗi thời và không hoạt động, và trình tạo mã của tôi chỉ có thể hoạt động trên g ++ 3.2 và nó gây ra lỗi khi phân tích cú pháp các tệp tiêu đề của g ++ ở phiên bản cao hơn.
Tôi đã xem VivaCore nhưng không cung cấp cấu trúc nội dung để biên dịch chương trình cấp meta. Tôi cũng đang tìm kiếm LLVM, nhưng tôi không thể tìm thấy tài liệu hướng dẫn tôi làm việc trong việc sử dụng biên dịch nguồn của tôi. Tôi cũng biết về khung công tác biên dịch ROSE, nhưng tôi không chắc liệu nó có phù hợp với việc sử dụng của tôi hay không, và liệu bản nhị phân đầu cuối C++ độc quyền có thể được sử dụng trong một sản phẩm thương mại hay không.
Bất kỳ nhận xét và chỉ dẫn nào về hướng dẫn/giấy/tài liệu cụ thể đều được đánh giá cao.
Bạn không thể sử dụng khung công tác Rose trong ngữ cảnh thương mại mà không nhận được giấy phép của riêng bạn cho giao diện người dùng của EDG. Dunno nếu Rose có phiên bản Windows. –