Мне по работе необходимо написать утилиту, которая по определенным правилам проводила бы преобразование исходного текста программы. Есть ряд изменений в объектной модели нашей программы и мы хотим, чтобы можно было делать изменения во всех наших программных продуктах (полу)автоматически. Кроме того, есть ряд изменений в самой объектной модели приложений (например переход на MS SQL Server, переход от DAO к ADO, и прочее).
Понятно, что автоматически все это не получится -- задача сделать tool, который максимально упростит подобно рода "рутинные" изменения кода, то есть который мог бы довольно гибко изменять [текстовые] данные одной структуры другой структурой.
Я уже запрограммировал Schnittstelle, которая разбирает regexp'ы, но здесь нужен какой-то
надязык по отношению к regexp, на котором можно было бы описывать исходные паттерны и изменения их, потому что там не просто "найти Х заменить на Y", а там сложные преобразования (с низкой степенью формализуемости), включающие преобразования:
- безусловные циклы <-> условные циклы
- преобразование вызовов методов класса (зачастую другие методы и с другим синтаксисом, для чего нужно объявлять ряд дополнительных переменных).
- преобразование имен переменных (добавление типа при однозначном определении, например не MyFile, а либо strMyFile, либо osMyFile), функций и названий классов и универсальная замена их.
Есть какие-то идеи?
У меня уже есть наброски такого языка, но может быть я просто изобретаю велосипед?