Первый Прототип
Первый прототип языка, парсера и объектной модели готов, подробности в вики. По результату тестов можно отметить, что неявная квалификация даже в контексте текстовых человекочитаемых шаблонов есть фича неоднозначная.
В остальном всё довольно просто прошло, парсер -> объектная модель -> контекст. Даже немного боязно, не упустил ли чего за кажущейся простотой. Сомнения вызывает точка, как разделитель в квалификаторе, она не позволяет использовать точку, как часть идентификатора, хотя в роли квалификатора точка довольно органично смотрится. Сегодняшний формат выглядит примерно так:
module.class(id): content;
Куча вариантов было отброшено:
module>class(id)
[module]class(id)
module:class(id)
В последнем варианте двоеточие смотрится неплохо, как в xml namespace, но это сразу убивает возможность использования двоеточия, как негромоздкого символа, открывающего содержимое объекта.
UPD: Всё же не смог пожертвовать точкой в идентификаторе и на свежую голову придумал разделитель вместо точки: ~
.
module~class(id): content;
Конечно, пока никаких языков программирования встроить не требовалось, да и задача постепенно усложняется, так как встраивание требует модификации парсера, что может серьёзно повредить его, простой как сапог, сути. Возможно, встраивание ЯП должно выглядеть иначе, чем задумывалось в посте с рассуждениями.