Я желаю инструмент командной строки для вывести определение или объявление (typedef, structure, enumeration, variable или function) из исходного файла C или C++. Также путем заменить было бы удобно использовать существующее определение/объявление (после преобразования извлеченного определения с помощью сценария, представленного пользователем). Существует ли такой общий инструмент или есть какое-то резонансное приближение такого инструмента?Есть ли инструмент командной строки для извлечения typedef, structure, enumeration, variable, function из файла C или C++?
Здесь важна возможность подключения и возможности подключения к пользовательским скриптам или программам, хотя я также академически интересуюсь программами GUI. Рекомендуются решения с открытым исходным кодом для лагеря Unix/Linux (хотя мне также интересны инструменты Windows и OS X). Первичные языковые интересы - это C и C++, но более общее решение было бы еще лучше (я думаю, нам не нужны сверхточные возможности синтаксического анализа для поиска, извлечения и замены определения в исходном файле программы).
Образец Прецеденты (за дополнительную плату - за любопытного ума):
- Учитывая глубоко вложенным
struct
s и переменная (массив) инициализаций этих типов, предположим, что существует необходимость изменить определение структуры путем добавления или переупорядочения полей или переопределения определений переменных/массивов в более читаемом формате без введения ошибок, возникающих в результате ручного труда. Это будет работать, извлекая старые инициализации, а затем используя скрипт/программу для записи новых инициализаций для замены старых. - Для реализации инструмента просмотра кода - извлеките определение.
- Декоративная генерация кода (например, запись/возврат записей).
- Сценарированное структурирование кода (например, извлечение этой и той вещи и размещение в другом месте без изменений - комментарий фиксации контроля версий может документировать команду для выполнения этой операции, чтобы сделать ее очевидной и проверяемой, что ничего не изменилось).
Альтернативная проблема: Если есть инструмент сказать местоположение определения (начало и конец строки будет достаточно - мы даже могли предположить, все определения/декларации мы заинтересованы в в своей собственной линии) , то это будет односвязное осуществление ловкости пальцев, чтобы написать программу для
- определений экстракта,
- заменить определения, или даже
извлечь определение, запустить программу специфичного Fied с помощью параметров командной строки (или редактора), чтобы
- получить желаемые извлеченные определения из
stdin
(или из временного файла), - выполнить преобразование (редактирование), и
- вывода новых определений до
stdout
(или сохранить их в указанном временном файле)
должно быть заменено исполняющей программой.
- получить желаемые извлеченные определения из
Таким образом, главная, более сложная проблема - найти начальную и конечную линии определения.
Примечание о тегах: Более точный тег, чем code-generation
будет code-transformation
, но она не существует.
Вы, кажется, имеете в виду C. Нет языка C/C++. – aschepler
С помощью C/C++ я имею в виду C или C++. Меня в первую очередь интересует C (я активно использую и использую устаревший код), но C++ тоже представляет интерес (я бы предпочел использовать для проектов чистой таблицы, если был предоставлен выбор). Я считаю, что для описанных задач вам не требуется очень тонкое понимание синтаксиса языка, поэтому различия между C и C++ не кажутся столь важными. – FooF
Я бы использовал также тег 'C++', но максимальное количество тегов - 5. Нет меток 'code-extract' или' code-transform' ... и каким-либо образом максимальное количество тегов уже было достигнуто. :-) – FooF