Чтобы заворачивать всякие вещи, которые делаются обычно копипастой ибо лицезреть эти портянки - боль.
Мне нужно:
Разворачивать конструкции вида a > 0 ? b : c
до case when a > 0 then b else c end
Из конструкции во from типа # table t : fk => ext.id , ext.id2 #
оставлять в from только table t и дописывать в where t.fk = ext.id and t.fk = ext.id2
(если надо отметить куда что вставлять - не страшно, если fk нет, то вставлять, например, t.id)
Макросы типа %id => func(id, 0)
или a<date<b => date between a and b
Ну и простые постановки $fields = m.id, m.date, m.value
Может еще какие-то хитрые извращения, которые пока не пришли мне в голову. Думаю пилить свой но не хочу велосипедить напрасно. Если таки ничего не найдется, предлагайте на чём его писать.