Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Очень расплывчатая на самом деле задача.
#include "NLP2SQL.h"
#include "Война и Мир"
(a) на практике это толком никому не нужно,
(b) если и нужно — то *гораздо* проще оформить свои изменения в четко выделенном плагине к компилятору, а все эти итеративные изыскания выделить в систему сборки (а ля makefiles)
Если все то же самое, но без изменения парсера — то по сути любой язык, в котором есть какие-то code blocks и closures можно считать языком метапрограммирования, в котором на пустом месте можно сделать любые управляющие структуры — хоть if-then, хоть exceptions, хоть guarded commands, хоть что. Чемпионом на этом поле лет 10 назад был Perl, сейчас вроде как все активно любят Scala или в крайнем случае Ruby (хотя там парсер куда более примитивный, чем в Scala).
Если рассматривать с точки зрения правильного lingua franca — то, боюсь, путь code transformation а ля haXe (или тот же pyrb) — единственно практически разумный.
Говорить о том, что «каждый пишет на своем языке, а потом все это работает вместе» — можно, но на практике нужно не это.
Нужно, чтобы не машины понимали друг друга (с этим, внезапно, фактически-то проблем и нет уже лет 30 как), а чтобы люди понимали — а эта проблема — она не в средствах, а в головах.
У haXe, надо отметить, тоже проблем практических мильён. Основная — в stdlibs, которые очень так себе map'ятся в многообразие стандартных структур и библиотек во всех поддерживаемых таргетах.
Автоматическая генерация типизированных структур данных для Си