Читайте также:
|
|
В программах форматирования текста удобно рассматривать входную информацию как иерархию блоков (boxes). Эти блоки являются прямоугольными областями битовых образов, представляющих светлые и темные пиксели на выводящем устройстве.
Так, например, система TЕX ([260]) работает именно таким образом. Каждый символ,
который не является частью команды, представляет собой блок, содержащий битовый образ этого символа в определенном шрифте требуемого размера. Последовательные символы, не отделенные "разделителями" (пробелами или символами новой строки), группируются в слова, состоящие из последовательностей горизонтальных блоков, как схематически показано на рис. 1.6. Группирование символов в слова (или команды) представляет собой линейный, или лексический аспект анализа программы форматирования текста.
Рис. 1.6. Группировка символов и слов в блоки
В ТЕХ блоки могут быть построены из меньших блоков в различных горизонтальных и вертикальных сочетаниях. Например,
\hbox{ <список блоков> }
группирует список блоков, собранных по горизонтали. По вертикали блоки группируются с помощью команды \vbox. Таким образом, следующая конструкция в ТЕХ
\hbox{\vbox{! 1} \vbox{@ 2}}
представляет набор блоков, показанный на рис. 1.7. Определение иерархического расположения блоков, заданного входным потоком, является частью синтаксического анализа в ТЕХ.
! |
@ |
Рис. 1.7. Иерархия блоков в ТЕС
Еще одним примером могут послужить математические препроцессоры EQN ([246]) и Т^Х, создающие математические выражения из операторов типа sub и sup для нижних и верхних индексов. Если EQN встречает входной текст вида
BOX sub box
он изменяет размеры блока box и присоединяет к блоку BOX справа внизу, как показано на рис. 1.8. Оператор sup приведет к блоку такого же размера, но размещенному справа вверху.
BOX |
box |
Рис. 1.8. Построение нижнего индекса в математическом тексте
Такие операторы могут использоваться рекурсивно, т.е. EQN-текст
a sub { i sup 2}
дает в результате аi. Группировка операторов sub и sup в токены представляет собой часть лексического анализа текста EQN. Однако для определения размера и размещения блоков требуется синтаксическая структура текста.
Дата добавления: 2015-11-30; просмотров: 41 | Нарушение авторских прав