Добрый день,
имеется код, который писало много людей и много лет, примерно 8 миллионов строк кода, да не оговорился, восемь миллионов. Код рабочий и сейчас работает, может не весь, но по крайней мере весь залинкован в рабочей системе.
Код содержит примерно поровну классический С, (до 99-го стандарта), С++ (точно не 14, а скорей всего и не 11-ый, а еще раньше), Фортран, который 77, но с enddo/endif, и объектный 95-ый фортран, который с произвольными отступами и классами.
Моя задача написать парсер всего этого так, чтобы в каждую function, subroutine и entry первым оператором засунуть вызов моей функции с уникальным номером, а номер залинковать на название этой подпрограммы и сохранить в отдельную таблицу, причем сделать это на уровне ifdef, чтобы можно было бы включить-выключить или хотя бы чтобы на уровне препроцессинга включать-выключать.
Понимаю, как писать такое на С или С++, но как-то длинно получается, особенно если поддерживать весь этот зоопарк языков.
Накидайте, пожалуйста, идей, что использовать, чтобы не писать честные препроцессоры со всех этих вариантов языков. В самих этих языках и диалектах - разбираюсь хорошо, дополнительно немного знаю жаву с питоном, а также всякие перлы, баши и авк. При необходимости готов что-то не сложное освоить.
Спасибо!
|