Chcę narzędzie wiersza polecenia do wyciąg definicji lub deklaracji (typedef, struktury, wyliczenia, zmiennej lub funkcji) z pliku źródłowego C lub C++. Również sposób na zastąpić istniejącej definicji/deklaracji byłby przydatny (po przekształceniu wyodrębnionej definicji przez skrypt przesłany przez użytkownika). Czy jest dostępne takie ogólne narzędzie, czy też pewne przybliżone przybliżenie takiego narzędzia?Czy istnieje narzędzie wiersza polecenia do wyodrębniania typedef, struktury, wyliczenia, zmiennej, funkcji z pliku C lub C++?
Poufność i możliwość łączenia się z tworzonymi przez siebie skryptami lub programami ma tutaj duże znaczenie, chociaż jestem również ciekawy akademickich programów GUI. Preferowane są rozwiązania open source dla obozu Unix/Linux (choć ciekawi mnie również system Windows i OS X). Podstawowe zainteresowania językowe to C i C++, ale bardziej ogólne rozwiązanie byłoby jeszcze lepsze (myślę, że nie potrzebujemy super dokładnych możliwości analizowania w celu znalezienia, wyodrębnienia i zastąpienia definicji w pliku źródłowym programu).
Przykładowe użycie walizki (dodatkowo - za ciekawy umysł):
- Biorąc głęboko zagnieżdżone
struct
s i zmienne (array) inicjowania tych typów, załóżmy, istnieje potrzeba, aby zmienić definicję struct przez dodawanie lub zmiana kolejności pól lub przepisywanie definicji zmiennych/tablic w bardziej czytelnym formacie bez wprowadzania błędów wynikających z pracy ręcznej. To działałoby przez wyodrębnienie starych inicjalizacji, a następnie użycie skryptu/programu do napisania nowych inicjalizacji w celu zastąpienia starych. - Aby zastosować narzędzie do przeglądania kodu - wypakuj definicję.
- Dekoracyjne generowanie kodu (np. Zapisy/zgłoszenia funkcji rejestrowania).
- Strukturowanie kodu skryptowego (np. Wypakuj to i tamto i umieść w innym miejscu bez zmian - komentarz zatwierdzenia kontroli wersji może udokumentować polecenie wykonania tej operacji, aby było oczywiste i weryfikowalne, że nic się nie zmieniło).
alternatywna Problem: Jeśli istnieje narzędzie powiedzieć lokalizację definicji (początek i koniec linii wystarczyłyby - możemy nawet przejąć wszystkie definicje/deklaracje jesteśmy zainteresowani są we własnym wierszu) , to byłoby jest po prostu ćwiczenie zręczności palca aby napisać program do
- definicji ekstraktu
- zastąpić definicje, lub nawet
wyodrębnić definicję, uruchom specy programu fied przez opcji wiersza poleceń (lub redaktor) do
- otrzymać żądane wyodrębnione definicje z
stdin
(lub z pliku tymczasowego), - przeprowadzenia transformacji (edycja), a
- wyjściu nowe definicje do
stdout
(lub zapisać je w podanym pliku tymczasowym)
do zastąpienia przez program wykonujący.
- otrzymać żądane wyodrębnione definicje z
Tak więc głównym, trudniejszym problemem byłoby znalezienie początku i końca linii definicji.
Informacja o tagach: Dokładniejsze tag niż code-generation
byłoby code-transformation
ale to nie istnieje.
Wydaje się, że masz na myśli C. Nie ma języka o nazwie C/C++. – aschepler
Przez C/C++ mam na myśli C lub C++. Interesuje mnie przede wszystkim C (aktywnie używam i radzę sobie ze starszym kodem), ale interesuje mnie również C++ (wolałbym używać do czystych projektów tabel, jeśli dany wybór byłby możliwy). W opisywanych zadaniach nie trzeba bardzo dobrze rozumieć składni języka, tak myślę, więc różnice między C i C++ nie wydają się tak ważne. – FooF
Używałbym także tagu 'C++', ale maksymalna liczba tagów to 5. Nie ma tagów 'code-extraction' lub' code-transformation' ... oraz w jakikolwiek sposób osiągnięto maksymalną liczbę tagów. :-) – FooF