Метаязык представляет собой набор правил, на основе которых строятся различные предметно-ориентированные языки. Создание пользователем DSL делает систему более гибкой, относительно подхода, заключающегося в использовании стандартных метаязыков, за счет возможности самостоятельной настройки метамодели, а затем и модели, что в свою очередь позволяет выполнять многоуровневое моделирование [4].
В рамках курсовой работы в качестве основы для описания метаязыка были выбраны формы Бэкуса-Наура. Однако, некоторые конструкции должны быть включены в разрабатываемый DSL по умолчанию, поскольку они необходимы для проектирования большинства моделей. Поэтому следует расширить стандартный набор конструкций метаязыка списком предопределенных нетерминалов, включающим в себя такие нетерминалы, как буква, цифра, идентификатор и пропуск (рис. 2.2).
Рисунок 2.2. Описание предопределенных нетерминалов.
Таким образом, для использования данных конструкций в описании метамодели не потребуется выполнять их инициализацию, а достаточно будет вызвать необходимые нетерминалы посредством ввода соответствующих зарезервированных слов. Кроме того, важно сохранить возможность переопределения данных нетерминалов пользователем, чтобы не создавать искусственные ограничения в виде жестко установленных правил для их описания.