2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 На чем быстро написать парсер?
Сообщение08.04.2024, 14:23 
Добрый день,

имеется код, который писало много людей и много лет, примерно 8 миллионов строк кода, да не оговорился, восемь миллионов. Код рабочий и сейчас работает, может не весь, но по крайней мере весь залинкован в рабочей системе.

Код содержит примерно поровну классический С, (до 99-го стандарта), С++ (точно не 14, а скорей всего и не 11-ый, а еще раньше), Фортран, который 77, но с enddo/endif, и объектный 95-ый фортран, который с произвольными отступами и классами.

Моя задача написать парсер всего этого так, чтобы в каждую function, subroutine и entry первым оператором засунуть вызов моей функции с уникальным номером, а номер залинковать на название этой подпрограммы и сохранить в отдельную таблицу, причем сделать это на уровне ifdef, чтобы можно было бы включить-выключить или хотя бы чтобы на уровне препроцессинга включать-выключать.

Понимаю, как писать такое на С или С++, но как-то длинно получается, особенно если поддерживать весь этот зоопарк языков.

Накидайте, пожалуйста, идей, что использовать, чтобы не писать честные препроцессоры со всех этих вариантов языков. В самих этих языках и диалектах - разбираюсь хорошо, дополнительно немного знаю жаву с питоном, а также всякие перлы, баши и авк. При необходимости готов что-то не сложное освоить.

Спасибо!

 
 
 
 Re: На чем быстро написать парсер?
Сообщение08.04.2024, 14:29 
Пожно попробовать на perl/python скрипт сделать.
Если слишком сложно выходит, то можно готовый парсер взять (для C/C++ обычно Clang используют, как с фортраном там - не уверен) и в него встроить. Но это довольно трудоёмко.
Ещё можно парсер из GCC взять, но у него, говорят, струкутра тяжелее чем у Clang.

 
 
 [ Сообщений: 2 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group