AKDiplom (Разработка конвертора из текстового формата nroff в гипертекстовый формат HTML), страница 2
Описание файла
Документ из архива "Разработка конвертора из текстового формата nroff в гипертекстовый формат HTML", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "AKDiplom"
Текст 2 страницы из документа "AKDiplom"
align=”left” (“center”, “right”, “justify”) – выравнивание влево, по центру, вправо, по ширине.
size=толщина в пикселях – толщина линии
width=длина в пикселях
width=длина в процентах%
color=”Цвет”
Варьируя параметры длины и толщины можно представлять линию в виде прямоугольника.
- гиперссылки. Частный случай – шаблон для создания меток:
- элемент для создания базового адреса (UR) для ссылок.
Дальше рассмотрены элементы, относящиеся непосредственно к форматированию текста, то есть именно то, что будет необходимо для разработки программы-транслятора.
- элемент абзаца (paragraph). В принципе позволяет использовать только начальный тэг, так как следующий элемент Р обозначает конец предыдущего и начало следующего абзаца. Вместе с этим элементом используются атрибуты:
align=”left” (“center”, “right”)
- элемент, обеспечивающий принудительный переход на новую строку. Имеет только стартовый тэг. Строка заканчивается в месте его размещения.
- элемент противоположный предыдущему. Текст, заключенный между его тэгами, будет выведен в одну строку. Если строка будет слишком длинна придется использовать горизонтальную полосу прокрутки броузера.
- элемент для обозначения текста, отформатированного заранее (preformatted).
- обозначение цитаты. Этот элемент требует наличия конечного тэга. Текст не претерпевает никаких изменений, но абзац располагается с отступом. В настоящее время существует сокращенное написание этого элемента: BQ.
- элемент, похожий на предыдущий, позволяет выравнивать содержимое по левому, правому краю или по центру. Для этого стартовый тэг должен содержать атрибут:
align=”left” (“center”, “right”)
- выделение текста полужирным шрифтом.
- увеличенный размер шрифта
- уменьшенный размер шрифта
- выделение текста курсивом
и - элементы, обозначающие выразительность (emphasis) фрагмента текста и определение чего-либо (definition). Оба элемента аналогичны по своему действию элементу I, то есть в большинстве случаев позволяют выделить текст курсивом. Они имеют смысл, когда необходимо одинаково выделить фрагменты текста в разных частях документа.
- элемент, обозначающий текст телетайпа (teletype).
- элемент, создающий перечеркнутое начертание текста. В настоящее время его заменяют более простым .
- подчеркнутое начертание текста.
- элемент, отвечающий за выделение текста. Обычно его применение равносильно использование элемента для выделения полужирным .
- элемент, создающий эффект нижнего индекса (subscript).
- элемент, создающий эффект верхнего индекса (superscript).
- элемент, предназначенный для создания текста с конструкциями HTML, которые должны восприниматься именно как текст, а не как команды для броузера. Все тэги, заключенные в этот элемент, будут восприниматься только как произвольные символы.
, и - элементы, предназначенные для вывода фрагментов программ. CODE используется для форматирования текста программы. SAMP предполагается задействовать при иллюстрации примеров (sample) вывода данных на экран. VAR был создан для выделения переменных (variables).
- этот элемент предназначен для указания текста, который пользователь должен ввести с клавиатуры (keyboard).
- предполагается, что этот элемент может быть использован для форматирования цитат и ссылок в обычном понимании этого слова. Текст, расположенный внутри него, выводится по умолчанию курсивом.
- подобно предыдущему элементу, этот элемент отличается только предусмотренным содержанием.
- элемент, определяющий базовый (основной) размер шрифта. Внутри элемента необходимо указать атрибут:
size=Базовый размер шрифта – его величина может лежать в предела от 1 до 7. По умолчанию используется величина 3. Установка, выполняемая этим элементом, имеет значение для элемента FONT, который позволяет задавать относительный размер шрифта.
- определение типа, размера и цвета шрифта. Все эти характеристики определяются с помощью соответствующих атрибутов. Например, абсолютный размер шрифта задается с помощью атрибута:
size=абсолютный размер шрифта – этот атрибут может принимать значение от 1 до 7.
Также размер шрифта может задаваться относительно базового:
size=+число (-число)
Атрибут цвета:
color=”Цвет”
Тип шрифта:
face=”название шрифта”.
Также в HTML можно использовать таблицы, списки, ссылки, рисунки, различные формы, а также подключаемые апплеты и некоторые другие элементы. Но поскольку nroff не поддерживает подобные элементы, они не рассматриваются в данной работе. Более подробно узнать о них можно в литературе, посвященной HTML.
Вид документа в разных форматах.
Для наглядности приведу пример текстового документа с различными приемами форматирования текста, а затем представлю его в обоих рассматриваемых форматах (nroff и HTML).
Результирующий текст (тот, который мы хотим видеть на экране):
Это пример текстового документа
Здесь показаны некоторые возможности форматирования текста
Пропуск строки
Работа с расположением текста:
Выровнять по левому краю
Выровнять по центру
Выровнять по правому краю
Есть также команды, позволяющие работать со шрифтами:
Обычный шрифт
Другой (вызванный) шрифт
Подчеркнутый текст
Подчеркнутый отцентрированный текст
Представим теперь этот текст в формате nroff.
.ft Times New Roman
.ad l
.nf
Это пример текстового документа
.br
Здесь показаны некоторые возможности форматирования текста
.sp
Пропуск строки
.sp
Работа с расположением текста:
.ad l
Выровнять по левому краю
.ad c
Выровнять по центру
.ad r
Выровнять по правому краю
.br
Есть также команды, позволяющие работать со шрифтами:
.br
Обычный шрифт
.br
.ft Arial
Другой (вызванный) шрифт
.ft Times New Roman
.br
.ul 1
Подчеркнутый текст
.ce 1
.ul 1
Подчеркнутый отцентрированный текст
Как видно из примера, каждой строке предшествует определенная команда. Команда отсутствует в том случае, если над текстом не надо производить никаких дополнительных действий. Поясню некоторые команды.
.ft Times New Roman – установка для документа определенного шрифта (а позже его временная смена на шрифт Arial)
.ad l (c, r) – выравнивание текста по левому краю (центру, правому краю)
.sp – пропуск строки
.br – начало новой строки
.ul 1 – подчеркивание следующей (одной) строки
.ce 1 – центрирование следующей (одной) строки
Это простейший пример, в принципе, возможности формата nroff значительно шире. Используя весь набор команд nroff, можно достаточно полно применять разные способы и приемы форматирования текста.
А теперь представим тот же документ, но уже в формате HTML.
Это пример текстового документа
Здесь показаны некоторые возможности
форматирования текста
Пропуск строки
Работа с расположением текста:
Выровнять по левому краю
Выровнять по центру
Выровнять по правому краю
Есть также команды, позволяющие работать со
шрифтами:
Обычный шрифт
Другой(вызванный)шрифт
Подчеркнутый текст
Подчеркнутый
отцентрированный текст
Также как и с предыдущим форматом, поясню некоторые команды и конструкции языка.
… - эти тэги говорят о том, что мы имеем дело с документом в формате HTML
… - между этими тэгами находятся все команды, а также текст HTML-документа.
- начало новой строки
…
- начало и конец нового абзацаalign=”left” (center, right) – используется для указания типа выравнивания текста: по левому краю, центру или правому краю.
… - между этими тэгами текст выводится другим шрифтом, указанным в конструкции:
face=”font_name”
… - выводит подчеркнутый текст
Аналогично с форматом nroff, возможности HTML намного шире представленных в этом примере.
Стоит также отметить тот факт, что в целом формат HTML богаче формата nroff. В связи с этим при разработке программы-транслятора использовалась лишь та часть HTML, которая необходима для создания конструкций, аналогичных конструкциям созданным в формате nroff.
Контекстно-зависимые и контекстно-независимые грамматики.
Задача разработки транслятора соприкасается с дисциплиной, именуемой лингвистическое обеспечение САПР, некоторые положения которой мы и рассмотрим.
Прежде всего стоит отметить, что различают два основных типа грамматик: контекстно-зависимые и контекстно-независимые.
Если порождающее правило имеет следующий вид:
A ::= ,
то порождающее правило называется контекстно-зависимым, то есть замена нетерминального символа A на последовательность может иметь место только в контекстах и . Соответственно, и грамматика, содержащая подобное правило, называется контекстно-зависимой.
Если порождающее правило имеет вид:
A ::= , где A – нетерминальный символ, а - терминальный или нетерминальный. То есть, если левая часть порождающего правила состоит из одного нетерминального символа, который в итоге (через ряд промежуточных шагов) может заменяться на последовательность , стоящую в правой части, независимо от контекста, в котором этот нетерминальный символ встречается, то такое правило и, соответственно, грамматика называются контекстно-независимыми.
В нашей задаче грамматика является контекстно-независимой (или как ее еще называют контекстно-свободной), поэтому более подробно стоит остановиться именно на ее описании.
Контекстно-свободные грамматики.
Существует несколько основополагающих терминов в теории грамматик. Нетерминальный символ (нетерминал) – описываемые элементы. Например, при определении языков программирования нетерминалами служат <оператор>, <арифметическое выражение> и т.п. В контекстно-свободной грамматике может быть любое конечное число нетерминалов.
Слова из словаря языка играют роль терминальных символов (терминалов). Контекстно-свободная грамматика может также содержать любое конечное число терминалов. В языках программирования терминалами являются фактически используемые в них слова и символы: do, else, + и т.п.
Правила грамматики иногда называются продукциями и в общем виде выглядят так:
Один_нетерминал любая конечная цепочка из терминалов и нетерминалов.
При этом цепочка справа от стрелки может быть и пустой. Например,
Иногда подобные правила называют эпсилон-правилами. Контекстно-свободная грамматика может содержать любое конечное множество продукций. В качестве иллюстрации вернусь к описанию языка программирования. Продукция тогда выглядит так:
<оператор> IF <логическое_выражение> THEN <оператор>
Один из нетерминалов выделен как начальный нетерминал или начальный символ, с которого должны начинаться выводы цепочек языка. Для языков программирования таким нетерминалом может быть <программа>. Обычно начальный символ обозначают .
Итак, контекстно-свободная грамматика будет задаваться:
1) конечным множеством нетерминалов;
2) конечным множеством терминалов, которое не пересекается с множеством нетерминалов;
3) конечным множеством правил вида , где A – нетерминал, а - цепочка терминалов и нетерминалов (возможно, пустая); нетерминал называется левой частью правила, а - правой частью;
4) одним нетерминальным символом, выделенным в качестве начального.
Если множество правил приводится без специального указания множества терминальных и нетерминальных символов, то предполагается, что грамматика содержит в точности те терминалы и нетерминалы, которые встречаются в правилах.
Для описания грамматик очень часто используют способ записи, получивший название формы Бэкуса-Науэра или БНФ. Здесь символ заменяется символом ::=, за которым может следовать любое число правых частей, разделенных вертикальной чертой |. Здесь также нетерминалы заключаются в угловые скобки.
Правила грамматики используют для того, чтобы задавать способы подстановки или замены цепочек. Подстановка осуществляется путем замены некоторого нетерминала в какой-нибудь заданной цепочке терминалов и нетерминалов на правую часть правила, левой частью которого является этот нетерминал. Иногда говорят, что в таком случае правило применяется к нетерминалу цепочки.