Перечень статей   Choose language


11 новых управляющих символов



Отметки (2)

Транжирить знако-места в таблице кодировки на прописные буквы - недопустимое расточительство. Все буквы строчные. В тех случаях, когда встречается имя собственное или начало предложения, достаточно одного префиксного байта перед словом чтобы указать, что первая буква прописная. Этот префиксный байт будем называть знак "имя собственное" (own name). Работает он так: anna -> Anna.

То же самое нужно сказать об аббревиатурах. Достаточно одного префиксного байта перед словом чтобы указать, что все буквы до знака "пробел" прописные. Этот байт будем называть знак "аббревиатура" (abbreviation). Работает он так: uno -> UNO.

Термин отметка (mark) обозначает любой из этих двух префиксных байтов. Пользователь сам их ставит нажимая клавиши "Shift" и "Caps Lock".

Теперь при поиске похожего слова сравнение многих вариантов написания (все буквы строчные, первая буква прописная, все прописные буквы) сводится к сравнению в одном варианте написания (все буквы строчные). Распространенное заблуждение состоит в том, что отождествляют обозначение букв (кодировку) и их графическое изображение (шрифт). Это совсем разные вещи. Кроме того, отметки помогут поисковым серверам найти имена собственные и аббревиатуры на языках и алфавитах без прописных букв.

Индексы и пределы (6)

Индексы прочно вошли в нашу жизнь - без них невозможно такое социальное явление, как наука, без них немыслима такая все-охватывающая индустрия, как программирование. Поражает убогий, пещерный способ записи индексов в текстовых файлах - это нужно исправить.

Введем термины. Пределы - над-строчные и под-строчные записи, например, пределы интегрирования и суммирования. Довески (makeweights) - пределы и индексы; существует всего четыре вида довесков: верхние и нижние пределы, верхние и нижние индексы. База (base) - слово, для которого написаны довески. Открывающие символы (open symbols) - управляющие символы, указывающие, что после них расположен довесок; существует четыре открывающих символа - по числу видов довесков: нижний предел (bottom limit), верхний предел (top limit), нижний индекс (bottom index), верхний индекс (top index). Ввиду того, что довески пишутся слитно с базой и заканчиваются у ближайшего пробела, для пробелов в довесках используется новый символ space (пробел между словами будем называть blank).

В пределах могут быть индексы. У индексов могут быть диакритические знаки (по сути являющиеся теми же пределами). Таким образом открывающий символ предела не означает окончания индекса и наоборот. База может иметь множество индексов с суб-индексами. Если после суб-индекса некоторого индекса нужно написать другой суб-индекс этого же индекса, то нужно вернуться на предыдущий уровень. Введем управляющий символ "возврат" (return) для возврата на предыдущий уровень. Работает он так: aij -> .

Итак, для написания пределов и индексов необходимы шесть новых управляющих символов и шесть новых клавиш на клавиатуре. Термин веха (herald) обозначает любой из этих шести символов.

Аппаратное форматировние цвета и размера шрифта (3)

Внутри параграфа могут содержаться фразы, которые нужно отметить другим цветом, размером, подчеркиванием, жирностью или наклонным начертанием - будем называть их фракциями (фракции не могут быть вложенными). Кроме того, современный текст немыслим без гипер-ссылок. Получается, что мы приходим к специальным знакам для текста, вроде "<" и ">" в html. Пусть перед каждой фракцией находятся управляющие символы начало региона (beginning of region) и середина региона (middle of region), а после нее - управляющий символ конец региона (end of region). Между "началом региона" и "концом региона" находятся специальные бинарные (не текстовые) структуры байт-предсказатель и фракционная запись.

text BytePredictor Fractional record fraction text

Байт-предсказатель состоит из 6 бит: 3 из них указывают, присутствуют ли параметры "color" (цвет), "fontsize" (размер шрифта), "number" (идентификатор гипер-ссылки; этот идентификатор передается аппаратным обеспечением программе, когда пользователь нажимает мышью на фракцию) во фракционной записи, а следующие 3 бита указывают, что фракция подчеркнута, жирная, наклонная.

Фракционна запись состоит из полей "color", "fontsize", "number" and имеет переменный размер: поля "color", "fontsize", "number" могут в ней быть или не быть - это зависит от значения одноименных бит байта-предсказателя (если они равны единице, то соответствующее поле в фракционной записи существует). Если эти поля есть, то они указывают цвет, размер шрифта и номер фракции.

Термин сингулярность (singularity) обозначает любой из трех новых символов, а термин регион (region) обозначает полную конструкцую:

BytePredictor color fontsize numberfraction

Последствия

Текстовые редакторы сами ставят отметку "имя собственное" после каждой точки, т.е. после окончания предложения, таким образом клавиши "Shift" и "CapsLock" являются редко употребляемыми и должны быть вынесены на периферию клавиатуры. Кроме того, достаточно одной клавиши "Shift" (без второй, парной ей).

Клавиши "Del" и "BkSp" в текстовых редакторах не удаляют управляющие символы (за исключением символа перехода на новую строку "/n") до тех пор, пока не встретится по два непечатных символа подряд - если непечатный символ всего один, то эти клавиши сначала перепрыгивают через него, а только затем удаляют печатный символ. Таким образом выполняются своеобразные прыжки:

abcd    abd
abcd    acd
abcde    abce
abcd    acd
abcd    abcd

Клавишу "Shift" не нужно удерживать во время нажатия другой клавиши - достаточно нажать перед другой клавишей. Клавишу "CapsLock" не нужно нажимать второй раз после окончания аббревиатуры - режим "CapsLock" выключается самостоятельно при окончании слова. Ошибочное нажатие этих клавиш отменяется повторным их нажатием.

Число имеет вид [-|+]x[(.x)][[(|]e)|(*10)[-|+]x], где "x" - последовательность цифр; в квадратных скобках записаны необязательные компоненты; в круглых скобках записаны компоненты, которые присутствуют только одновременно; через знак "|" перечислены альтернативные компоненты.

В редакторах "as is" (MS Word, etc) движение курсора отличается от движения в текстовом файле: клавиши-стрелки "вверх", "вниз" перемещают курсор между индексами, лимитами и базовой линией, (в текстовом файле - всегда между базовыми линиями).

В HTML-документах не нужны теги "sub" и "sup" для создания индексов. Пробел "space" может применяться не в довесках, а на базовой линии в значении &nbsp;. Значения атрибутов html/xml-документов должны заключаться в открывающие и закрывающие двойные кавычки, т.к. значением атрибута может быть строка, сама содержащая двойные кавычки (например, запрос в базу данных с текстовой строкой).

Для генераторов парсеров и сканеров (bison, yacc, byacc; flex). Обозначим как "$b" операцию, левым операндом которой является база, а правым - нижний индекс этой базы.


Правило parser-а выглядит как показано ниже и будет активизировано только после того, как будут выполнены все правила для содержимого самого этого нижнего индекса.
$1 $b $3 {  }
Аналогично остальные положения довеска относительно базы являются для parser-а операциями $u, $d, $l, $t, $r. Далее такие операции мы будем называть довесочными операциями. Порядок их выполнения: $u, $d, $l, $b, $t, $r. Будем называть положением (position) слова его расположение относительно базовой линии. Для довеска оно обозначается последовательностью из произвольного количества букв "d", "u", "l", "r", "b", "t" в любом порядке. Порядок этих букв указывает, как надо двигаться от базовой линии, чтобы попасть в необходимое место. Например, "ttt" - это верхний индекс верхнего индекса верхнего индекса, "tb" - нижний индекс верхнего индекса, "rt" - верхний индекс верхнего предела. Корневую базу (находящуюся на уровне базовой линии) будем называть источником; положение источника всегда обозначается словом, состоящим только из одной буквы "s" (source). Правила могут отличаться в зависимости от положения левого операнда правила, поэтому будем его (положение левого операнда) будем записывать перед правилом. Отсутствие в правиле указания положения означает, что правило применяется во всех положениях. Например:

u  $1 $t $3 {  }
b  $1 $t $3 {  }
tb $1 $t $3 {  }
rt $1 $t $3 {  }
s  $1 $t $3 {  }
   $1 $t $3 {  }

Специальные обозначения, необходимые в архаичных языках программирования для управляющих символов, приведены ниже:

/o	own name
/a	abbreviation
 /m	mark

/l	left limit
/r	right limit
/b	bottom index
/t	top index
/c	spaCe
/k	bacK
 /h	herald
/n	new line

 /s	singularity

Тюрин Дмитрий, dmitryturin@yandex.ru, PGP




Перечень статей   Choose language