Разбор заголовков функций c ++ из файла с помощью GNU toolchain - PullRequest
4 голосов
/ 12 декабря 2010

Мне нужно проанализировать заголовки функций из файла .i, используемого SWIG, который содержит все виды мусора рядом с заголовками функций.(окончательный вывод будет список объявлений функций)
Лучшим вариантом для меня было бы использовать для этого цепочку инструментов GNU (GCC, Binutils и т.SWIG.Если я, пожалуйста, скажите мне!
Спасибо:]

edit: я также не знаю, как это сделать с помощью GCC toolchain, если у вас есть идея, это будет здорово.

Ответы [ 3 ]

2 голосов
/ 15 декабря 2010

Я бы попытался получить дамп XML абстрактного синтаксического дерева из clang или из gccxml .Оттуда вы можете легко извлечь интересующие вас объявления функций.

1 голос
/ 12 декабря 2010

Наш инструментарий реинжиниринга программного обеспечения DMS предоставляет возможности синтаксического анализа, анализа и преобразования программ общего назначения.Он имеет интерфейсы для широкого спектра языков, включая C ++.

. Он использовался для анализа и преобразования очень сложных программ на C ++ и их заголовочных файлов.

Вы не совсем понимаете, чточто вы будете делать после "разбора заголовков функций";обычно люди хотят извлечь некоторую информацию или произвести другой артефакт.DMS с его внешним интерфейсом C ++ может выполнять анализ;вы можете настроить DMS для выполнения нестандартных задач.

На практике это обычно не дневное упражнение;DMS - сложное животное, потому что оно имеет дело со сложными животными, такими как C ++.И я ожидаю, что вы столкнетесь с такой же сложностью для любого инструмента, который может обрабатывать C ++.Набор инструментов GCC может четко обрабатывать C ++, так что вы можете сделать это с этим (на том же уровне сложности), но GCC предназначен для компиляции, и ИМХО вы найдете в нем борьбу, чтобы заставить его делать то, что Вы хотите.

Ваша цель "объявления функций вывода" не ясна.Вы хотите только имена функций?Вы хотите подпись функции?Вы хотите все объявления типов, от которых зависит функция?Вам нужны все объявления типов, от которых зависит функция, если они еще не присутствуют в существующем включаемом файле, который вы собираетесь использовать?

0 голосов
/ 12 декабря 2010

Лучший способ извлечь функции decls из мусора, который является заголовочными файлами C, состоит в том, чтобы заменить то, что составляет самый вонючий мусор: макросы.Вы можете сделать это с помощью:

   cpp - The C Preprocessor
...