Если вы действительно хотите расширить C ++, вам понадобится полный синтаксический анализатор C ++, а также разрешение имен и типов. Как вы узнали, это довольно сложно. Ваше лучшее решение - получить существующее и изменить его.
Наш инструментарий реинжиниринга программного обеспечения DMS представляет собой инфраструктуру для реализации языковых процессоров. это
разработан для поддержки создания инструментов, которые анализируют языки, выполняют преобразования и выплевывают один и тот же язык (с расширенным кодом) или другой язык / диалект.
DMS имеет полный C ++ Front End , который анализирует C ++, строит деревья абстрактного синтаксиса и таблицы символов (например, все эти средства разрешения имен и типов).
Внешний интерфейс DMS / C ++ поставляется с DMS в исходной форме, так что его можно настроить для достижения желаемого эффекта. Вы определяете свой DSL как расширение внешнего интерфейса C ++, а затем пишете преобразования, которые преобразуют ваши специальные конструкции в «ванильные» конструкции C ++, а затем выкладывают скомпилированный результат.
DMS / C ++ использовались для широкого круга задач преобразования, включая задачи, которые включали расширение C ++, как вы описали, и в том числе задачи, выполняющие масштабную реорганизацию больших приложений C ++. (См. Публикации на этом сайте).