Как извлечь функции из заголовочного файла C ++ с haskell? - PullRequest
2 голосов
/ 09 мая 2011

Мне нужно получить все функции из заголовочного файла c ++ с помощью haskell (не только функции методов), мне нужны входные параметры и тип возврата, а также имя метода.

как я мог это понять? только с регулярным выражением? или я должен написать целый парсер (снизу вверх или сверху вниз)?

Ответы [ 3 ]

5 голосов
/ 09 мая 2011

Чтобы извлечь все объявления функций из файла заголовка, вам понадобится анализатор, а не регулярное выражение. Сложно найти парсеры для C ++, но, к счастью, у нас есть некоторые:

Используя любой из них, вы сможете надежно обрабатывать заголовки C или C ++ и извлекать объявления как типы данных Haskell для дальнейшей обработки.

1 голос
/ 09 мая 2011

Если вы решите разобрать их, я рекомендую вам использовать Parsec и попытаться выяснить, сделал ли это кто-нибудь еще.

Но уже есть много синтаксических анализаторов C ++- Я рекомендую вам использовать один из них и взаимодействовать с его выходом.

0 голосов
/ 13 мая 2011

Я написал программу под названием cgen , которая генерирует привязки C к библиотекам C ++, анализирует заголовки C ++ (используя Parsec) и собирает данные функций, как вы описали. Это смехотворно далеко от того, чтобы быть полным синтаксическим анализатором C ++, но он может анализировать некоторые простые заголовочные файлы - как этот пример .

Однако это не библиотека, поэтому вам может понадобиться адаптировать код под ваши нужды (и если вы сделаете какие-либо улучшения, пришлите мне патч). Соответствующий код можно найти по адресу github , в частности, модули HeaderParser и HeaderData.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...