Всё что изложено пока является только идеей на далёкое будущее ... но кто знает когда оно наступит ;)
Любой конфигурационный файл есть ни что иное как текст на некотором формальном языке. Одни языки,например серии «параметр – значение», очень простые. Другие – достаточно сложные. Однако практически никто из этих языков даже близко не обладает некоторыми полезными свойствами языков естественных – а зря!
Возьмём традиционное описание интерфейса alterator.
Имеем схему следующего вида (объект атрибут атрибут ... ). Где атрибутом может выступать:
Всё конечно хорошо, достаточно примитивно и дубово. Но уже первые естестенные упрощения являются невозможными. Например я захотел изменить текст кнопки, естественно это сделать как (button text “new-text”). Но наш язык этой возможности не поддерживает.
Аналогично. Мы можем написать (button active). Но не можем – (active button). Попытаемся преодолеть эти странные ограничения. А именно, добавим категории хорошо знакомые нам по естественным языкам:
Сразу отметим, что хотим получить язык полностью совместимый с существующим, дабы пользователи не жедающие этих «улучшений» могли продолжать работать по стандартной схеме.
Просто не будет. За удовольствие надо платить ;)
Ну вот кажется и всё. Благодаря последним правилам можно даже задать такие конструкции как «две активные кпопки» – (two active buttons) ну или «активные кнопки с текстами aa и bb» – //(active buttons texts “aa” “bb”).
Вот мы и получили язык, в котором помимо стандартных конструкций допустимы ещё несколько «естественно» звучащих с точки зрения человеческих языков. Более того получают смысл конструкции (button text) – это прилагательное и (button text “aaa”) – это существительное с прилагательным. Кроме того мы получили возможность сразу проверять применимость тех или иных атрибутов к виджетам. Имеющиеся синтаксические правила позволяют автоматически создать документацию по языку описания интерфейса.
То что язык есть – это хорошо. Осталось превратить описание в реальный виджет. Для этого мы немного усложним базовое понятие нашего языка – существительное.
Прилагательное есть не что иное как существительное с заданными свойствами. Завершённое предложение описывающее виджет есть не что иное как прилагательное. Если это не так – значит предложение составлено не верно.
Существительное может быть как не раелизованное так и реализованное (уже есть соотв. ему кнопка). Когда идёт предварительный разбор предложения ещё ничего не существует и все прилагательные добавляемые к существительному – тщательно откладываются на будущее.
Как только следует команда на реализацию. Начинают последовательно возникать виджеты, им передаются их прилагательные в качестве аргументов и далее обрабатываются согласно правилам того или иного рода. Например при получении текста – задаётся соотв. аттрибут. А при получении виджета – последний становится дочерним вижетом к данному.
Если существительное уже реализовано, то его поведение уже несколько иное. При действиии на реализованное существительное сочетаемым с ним существительным получается не прилагательное, а возникает требование к реализации отдать свойство заданное соответствующим именем. (button text) – вернёт текст кнопки. При действии на реализованное существительное прилагательным, реализации поступает команда на изменнение свойстве (button text “aaa”) – изменит текст кнопки.
Вот и всё ;)