Как распарсить код

235
09 мая 2017, 06:23

Добрый день! Имеется текст, который содержит код на с++. Код состоит из описании нескольких классов(может быть наследование и полиморфизм) и основной программы, которая создает объекты этих классов. Методы классов не реализуются, только описываются(прототип). Хотелось бы по рассуждать как распарсить данный текст и как сохранить полученную информацию для дальнейшего использования.

Пример текста:

class ClassA (Может быть class ClassA:ClassB)
{
public:
  ClassA(); (Может быть не сколько параметров)
  int Print(int); (Функций может и не быть)
private:
 int y;
};
int main()
{
  int y = 0;
 ClassA foo;
y = foo.Print(10);   
 return 0;
}

В итоге нужно получить объектную модель с++. В итоге должна быть таблица того, как размещается это программа в оперативной памяти. Никакие ссылки, указатели, выражения кроме = не нужно обрабатывать

Мне интересно с чего начать. Пока что мысль такая: Считываю по символьно до первого разделительного знака(space, ;, {, }, (, ), =). Как дошли до этого знака идет сравнение: если class, то создаем структуру с 2 полями: название класса и структура для содержимого класса(возможно еще поля понадобятся для адреса размера и т.д.). Структура для содержимого класса будет содержать следующие поля: - Тип данных(конструктор это или деструктор, переменная, функция) - Имя содержимого - Модификатор (private public и тд) - Возвращаемый тип(Для функций, в других случаях пустое поле) - структуры для аргументов функций по аналогии(связынный список)

И вот потом по этим структурам я думаю возможно вывести в таблицу расположение данных в памяти ооп

Самое главное не нужна проверка на ошибки, текст должен содержать код без ошибок

READ ALSO
Проблема с выводом кириллицы в консоль C++

Проблема с выводом кириллицы в консоль C++

В проекте исходные файлы в UTF8 кодировке, поменять нельзя, мне нужна именно эта кодировкаПри попытке вывести в консоль русские буквы, получаю...

306
Вывод отсортированных строк из файла

Вывод отсортированных строк из файла

Дан файл с результатами игры с информацией об имени и времени игры примерно такой:

253
Метавычесление констант в boost::mpl

Метавычесление констант в boost::mpl

У меня есть задание на метавычисление констант с помощью boost::mpl:

282
Как подключить Vreen в проект Qt?

Как подключить Vreen в проект Qt?

Как подключить Vreen в проект Qt? Пытался сделать все по инструкции, но ничего не вышлоТак как инструкция для ОС Linux (Ubuntu), а у меня Windows и стоит...

381