C, парсер заголовочника
От: Sherlock  
Дата: 01.10.07 08:22
Оценка:
Хочется сделать такую прогу:
парсить заголовочник и получать на выходе некоторое древовидное описание структур в нем.
интересуют только имена и размер элементов-данных (функции не нужны). Собственно данная информация
требуется для последующего отображения значений полей структуры с указанием имен.

Есть что-то похожее, уже написанное? И если нет — кто-нибудь подскажет такой простенький парсер
для данной задачи?
Re: C, парсер заголовочника
От: vnp  
Дата: 01.10.07 18:07
Оценка:
Здравствуйте, Sherlock, Вы писали:

S>Хочется сделать такую прогу:

S>парсить заголовочник и получать на выходе некоторое древовидное описание структур в нем.
S>интересуют только имена и размер элементов-данных (функции не нужны). Собственно данная информация
S>требуется для последующего отображения значений полей структуры с указанием имен.

S>Есть что-то похожее, уже написанное? И если нет — кто-нибудь подскажет такой простенький парсер

S>для данной задачи?

Однажды сталкивался с такой задачей. Ничего хорошего не нашел; делал сам. Оказалось, что проще всего скомпилировать заголовок с отладочной информацией, и вытаскивать все необходимое уже из объектного файла. И конечно — внимательно следить за ключами компиляции.
Re: C, парсер заголовочника
От: denaturat  
Дата: 02.10.07 05:55
Оценка:
Здравствуйте, Sherlock, Вы писали:

S>Хочется сделать такую прогу:

S>парсить заголовочник и получать на выходе некоторое древовидное описание структур в нем.
S>интересуют только имена и размер элементов-данных (функции не нужны). Собственно данная информация
S>требуется для последующего отображения значений полей структуры с указанием имен.

S>Есть что-то похожее, уже написанное? И если нет — кто-нибудь подскажет такой простенький парсер

S>для данной задачи?

если умеешь пользоваться yacc, то можно соорудить простой парсер примерно так:
(на вскидку)

Файл : ПоследовательностьСтруктур
     ; // хватит

ПоследовательностьСтруктур : Структура
                           | ПоследовательностьСтруктур Структура
                           ;

Структура : 'struct' Идентификатор '{' ТелоСтруктуры '}' ';' // <- вот здесь структура
                                                             // разобрана, можно 
                                                             // сохранить ее где-нибудь
          | error ';' // - пошло все куда подальше до 
                      // следующей точки с запятой
          ;

ТелоСтруктуры : СписокПолей
              ;

СписокПолей : ОбъявлениеПеременной
            | СписокПолей ОбъявлениеПеременной
            ;

ОбъявлениеПеременной : Тип Идентификатор ';' // <- тут объявление переменной разобрано
                                             // можно его где-нибудь сохранить
                     ;

Тип : ПростойТип
    // можно попробовать и со своими типами
    ;

ПростойТип : 'int'
           | 'long'
           // и т.д.
           ;
Re: C, парсер заголовочника
От: Рома Мик Россия http://romamik.com
Дата: 02.10.07 11:59
Оценка: +1
Здравствуйте, Sherlock, Вы писали:

S>Хочется сделать такую прогу:

S>парсить заголовочник и получать на выходе некоторое древовидное описание структур в нем.
S>интересуют только имена и размер элементов-данных (функции не нужны). Собственно данная информация
S>требуется для последующего отображения значений полей структуры с указанием имен.

S>Есть что-то похожее, уже написанное? И если нет — кто-нибудь подскажет такой простенький парсер

S>для данной задачи?
http://ctags.sourceforge.net/
Re: C, парсер заголовочника
От: AleksandrN Россия  
Дата: 02.10.07 19:10
Оценка:
Здравствуйте, Sherlock, Вы писали:

S>Хочется сделать такую прогу:

S>парсить заголовочник и получать на выходе некоторое древовидное описание структур в нем.
S>интересуют только имена и размер элементов-данных (функции не нужны). Собственно данная информация
S>требуется для последующего отображения значений полей структуры с указанием имен.

S>Есть что-то похожее, уже написанное? И если нет — кто-нибудь подскажет такой простенький парсер

S>для данной задачи?

GCCXML
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.