Требуется разработать метагенератор на основе LLVM/Clang(http://clang.llvm.org/), который парсит C++ код (классы, методы, переменные, комментарии), затем генерирует по заданному шаблону(см. ниже) выходной файл. Результатом парсинга должен быть сгенерированный файл с метаинформацией.
Пример: входящий файл: MyClass.h и MyClass.cpp
--------MyClass.h-------- #include <string> /* description of MyClass */ class MyClass { public: //desc of someFunc void someFunction(int n, const std:string & str);
===>запускаем метагенератор из командной строки: metage MyClass.cpp
парсим MyClass.cpp и на выходе получаем файл с метаинформацией приблизительно следующего вида: --------MyClass_meta.cpp-------- GDefineMetaClass<MyClass> ::Policy<GMetaPolicyNoCopyConstructor> ::declare("MyClass") ._method("someFunction", &MyClass...
Видеть полную информацию и оставлять заявки могут только авторизованные пользователи.
Заявок нет
Оставлять заявки могут только авторизованные пользователи.
Метагенератор/парсер С++ файлов
Реклама
Метагенератор/парсер С++ файлов
Требуется разработать метагенератор на основе LLVM/Clang(http://clang.llvm.org/), который парсит C++ код (классы, методы, переменные, комментарии), затем генерирует по заданному шаблону(см. ниже) выходной файл.
Результатом парсинга должен быть сгенерированный файл с метаинформацией.
Пример:
входящий файл: MyClass.h и MyClass.cpp
--------MyClass.h--------
#include <string>
/*
description of MyClass
*/
class MyClass
{
public:
//desc of someFunc
void someFunction(int n, const std:string & str);
//desc of var1
int var1;
}
--------MyClass.cpp--------
#include "MyClass.h"
void MyClass::someFunction(int n, const std:string & str)
{
//..body
}
===>запускаем метагенератор из командной строки:
metage MyClass.cpp
парсим MyClass.cpp и на выходе получаем файл с метаинформацией приблизительно следующего вида:
--------MyClass_meta.cpp--------
GDefineMetaClass<MyClass>
::Policy<GMetaPolicyNoCopyConstructor>
::declare("MyClass")
._method("someFunction", &MyClass...