Я думаю, что вы хотите, a система преобразования программы.
Они могут позволить вам определить правила относиться к исходному коду, например, algrebraic законы, чтобы оптимизировать код.
То, что вы обнаружите, - то, что есть множество проблем. Первое обращается с правилами обзора и побочными эффектами на языках. Второе упорядочивает преобразований; заказ, в котором они применяются часто, приводит к радикально различным результатам.