О тэгах DSL

Устройство тэгов

Метасимволы и литералы

Общий синтаксис

Устройство тэгов

Тэги — это структурные и семантические элементы, которые определяют внешний вид или функциональное значение фрагментов текста.

Каждый тэг включает в себя два дескриптора: открывающий и закрывающий. Открывающий дескриптор обозначает начало зоны действия тэга, закрывающий — окончание зоны действия тэга. Открывающий дескриптор состоит из имени тэга в обрамлении квадратных скобок. Имя тэга — это последовательность латинских букв, которая является, как правило, сокращением английского названия той функции, которую тэг выполняет. Например: [i] — от англ. italic (наклонное начертание), [com] — от англ. comment (комментарий) или [m2] — от англ. margin (поле страницы). Цифры, присоединённые к имени справа, называются расширением имени. В закрывающем дескрипторе к имени тэга прибавляется косая черта: [/i], [/com] и [/m] соответственно. Функция тэга — присваивание определённого свойства тексту, находящемуся в зоне его действия.

В примере на иллюстрации текст «кому-либо, чему-либо» будет отображаться в наклонном начертании, поскольку именно это свойство присваивает ему обрамляющий тэг [i]. Пара дескрипторов вместе с находящимся между ними содержимым составляют т.н. область тэга.

Некоторые тэги в DSL располагают атрибутами, а те, в свою очередь, набором допустимых значений:

В данном примере тэг [lang] (языковой разметки) используется с двумя разными атрибутами: id и name. Допустимыми значениями атрибута id являются числовые коды языков, а атрибута name — английские названия языков.

Метасимволы и литералы

Не все символы в тексте DSL одинаково воспринимаются словарной программой. Некоторые из них служат для неё сигналом к выполнению определённых действий. На основе этого признака все символы делятся на две группы: литералы и метасимволы.

Литералы — это простые символы без дополнительного значения. Такие символы адресованы более к пользователю, чем к программе, следовательно программа перенаправляет их в окно словарной карточки, где они отображаются «как есть». Латинский корень littera (буква) указывает в данном случае на буквальность значения.

Метасимволы — это символы с дополнительным значением, подающие программе сигнал к выполнению определённых операций. Встретив такой символ, программа воспринимает его как адресованный к самой себе, а не к пользователю, следовательно его перенаправление для отображения уже не требуется. Греческая приставка μετα- указывает в данном случае на переносность значения.

Для того, чтобы отобразить метасимвол в окне словарной карточки, его необходимо экранировать, т.е. поставить перед ним обратную косую черту \. Например, чтобы отобразить в карточке метасимвол @, в DSL понадобится сделать такую запись: \@.

Для литерального отображения квадратных скобок, помимо экранирования можно также их удваивать: [[…]]. При удваивании за квадратными скобками не должны следовать тэги. Так, например, запись [[[t] вызовет ошибку при компилировании. Для корректной обработки этого примера необходимо записать его [[ [t] или \[[t].

Список метасимволов, употребляемых в DSL

В теле статей и заголовках метасимволами являются:
  [ ] квадратные скобки
  @ знак «эт»
  # знак номера, «решётка»
  \ обратная косая черта
  ~ тильда
  ^ циркумфлекс, «крышка»
  << >> двойные угловые скобки,
при этом одинарные воспринимаются как литералы
  {{ }} двойные фигурные скобки,
при этом одинарные воспринимаются как литералы только в теле статей
 
В заголовках метасимволами также являются:
(при этом в теле статей воспринимаются как литералы)
  ( ) круглые скобки
  { } фигурные скобки

Общий синтаксис

Имена тэгов должны писаться в нижнем регистре. Например, [ref] — правильно, а [REF] — неправильно.

Не допускается размещение одинаковых тэгов в зоне действия друг друга. Т.е. запись типа [b][b]strong[/b][/b] является неправильной и будет отвергнута компилятором при конвертации.

Шесть тэгов в DSL стандартно выделяются цветом: помет [p], вспомогательной части [*], ударений ['] и ссылок << >>, [ref], [url]. Цвет для их отображения выбирается только в диалоге настроек Lingvo, и изменить его на уровне DSL при помощи специального тэга цвета [c] невозможно.