@Trasher, Теперь понятно, интересует метапрограммирование.
Ну… Зависит от среды, в которой запускается. Легче всего реализовать как плагин для редактора кода. Как это сделано, допустим, для KSP.
Там плагин офигеть какой здоровый и развёрнутый. Но в целом, в вашем случае, можно обойтись буквально ~30 строчками кода:
P.S. Тут надо понимать, что прямо совсем кошерно всё равно не получится, потому что в том же JSFX препроцессора нет. Но в целом, никто не мешает в билд добавить свой препроцессор, если и так там что-то экспандится.
Ну… Зависит от среды, в которой запускается. Легче всего реализовать как плагин для редактора кода. Как это сделано, допустим, для KSP.
Там плагин офигеть какой здоровый и развёрнутый. Но в целом, в вашем случае, можно обойтись буквально ~30 строчками кода:
- Получаем из буфера редактора текст (В SublimeText это какая-то из вариаций API view.lines())
- Сравниваем через regex нужный вам паттерн
- Если надо заменить макрос на несколько строк, то пушим в вывод наши строки
- если regex не находит соответствие ‒ пушим оригинальную строку
- Пушим строки обратно в буфер редактора. Или в новый файл, как вам удобно.
P.S. Тут надо понимать, что прямо совсем кошерно всё равно не получится, потому что в том же JSFX препроцессора нет. Но в целом, никто не мешает в билд добавить свой препроцессор, если и так там что-то экспандится.