В большом C проекте есть много struct
с другими struct
или указателями на них в качестве полей. Я хочу создать ориентированный граф, чтобы показать зависимости между «типами». Примером может быть
typedef struct javaStat {
int idNo;
struct idIdentList *className;
struct typeModifiers *thisType;
struct symbol thisClass;
} ...
. Из этого я хотел бы сгенерировать структуру DOT, которая выглядела бы как
digraph {
javaStat -> idIdentList
javaStat -> typeModifiers
javaStat -> symbol
}
или, используя сокращение DOT:
digraph {
javaStat -> {idIdentList typeModifiers symbol}
}
Конечно, первая и последняя строки могут быть добавлены вручную, поэтому основной проблемой является преобразование структурных ссылок в строки указателя графа.
На данный момент я доволен Решение первого уровня, означающее, что более глубокое вложение может быть проигнорировано.
Сначала я попробовал простой grep struct *.h
, который дал что-то выполнимое:
typedef struct javaStat {
struct idIdentList *className;
struct typeModifiers *thisType;
struct symbol thisClass;
typedef struct <next struct> {
Это простая проблема, которая состоит из нескольких строк: Python решил бы, но есть ли другие удобные решения, возможно, с использованием sed
, grep
, awk
и их братьев?
РЕДАКТИРОВАТЬ: я понял, что причина, почему я хочу сделать это потому что мне нужно найти одну или несколько структур, которые лежат в основе "struct tree".