В лекциях 9 и 10 давалось определение
Мы рассмотрели основные области применения регулярных выражений:
Однако существуют и другие области применения регулярных выражений. Об одной из них автор расскажет ниже.
Язык XML (eXtended
DTD расшифровывается как: "
Все
В документе на XML-совместимом языке могут использоваться только те элементы, которые были заранее объявлены в DTD.
<!ELEMENT Имя_Элемента Указание_на_тип>
Тут мы подходим к самому главному: элемент <Указание_на_тип> может быть не только предопределенным в ЭВМ типом, но и регулярным выражением, включающий в себя другие элементы!
В качестве индикаторов вхождений используются следующие символы:
[Пример 01]
<!ELEMENT JDATA (OBJECT)+>
означает, что элемент JDATA должен содержать хотя бы один элемент OBJECT ;
<!ELEMENT OBJECT (PRIMITIVE | OBJECT | ARRAY)+>
этот пример показывает, что элемент OBJECT должен включать в себя, по крайней мере, один из следующих элементов: , OBJECT или ARRAY ;
<!ELEMENT PRIMITIVE (#PCDATA)>
элемент может содержать только первичные (символьные)данные и не может - вложенные субэлементы. PCDATA расшифровывается как "
<!ELEMENT ARRAY (PRIMITIVE+ | OBJECT+ | ARRAY)>
расшифруйте это определение сами;
<!ELEMENT FOO ((PRIMITIVE, ARRAY) | (ARRAY, PRIMITIVE))>
последний пример показывает, каким образом можно использовать группы субэлементов. В нашем случае элемент FOO может содержать вложенные элементы и ARRAY, причем в любой последовательности.
Как можно убедиться, что нотация РБНФ и нотация DTD имеет много общего. Но, если РБНФ порождает собой грамматику и основанный на ней язык, то DTD служит только для определения формата XML файла.
[Пример 02]
Рассмотрим "программную запись"
При этом адрес содержит:
В этом случае РБНФ для
<адресная книга> ::= {<адресная запись>}*
<адресная запись> ::= <Фамилия><Имя><Адрес><Телефон>
<Фамилия> ::= #PCDATA
<Имя> ::= #PCDATA
<Телефон> ::= #PCDATA
<Адрес> ::= {<Улица>}+<Город>[<Область>]<Страна><Индекс>
<Улица> ::= #PCDATA
<Город> ::= #PCDATA
<Область> ::= #PCDATA
<Страна> ::= #PCDATA
<Индекс> ::= #PCDATA
Та же запись на DTD будет:
<?xml version="1.0"?> <!DOCTYPE ADDRESS_BOOK SYSTEM "a_book.dtd"> <!ELEMENT ADDRESS_BOOK (ADDR)*> <!ELEMENT ADDR (SURNAME, NAME, ADDRESS, PHONE)> <!ELEMENT ADDRESS ((STREET)+, CITY, (REGION)?, ZIP)> <!ELEMENT SURNAME (#PCDATA)> <!ELEMENT NAME (#PCDATA)> <!ELEMENT PHONE (#PCDATA)> <!ELEMENT STREET (#PCDATA)> <!ELEMENT CITY (#PCDATA)> <!ELEMENT REGION (#PCDATA)> <!ELEMENT ZIP (#PCDATA)>
Пример структуры записи в
<ADDRESS_BOOK> <ADDR> <SURNAME></SURNAME> <NAME></NAME> <ADDRESS> <STREET></STREET> <STREET></STREET> <CITY></CITY> <ZIP></ZIP> </ADRESS> <PHONE></PHONE> </ADDR> </ADDRESS_BOOK>
Как и грамматику, так и XML-документы проверяют на однозначность.
Основное применение XML - создание новых языков разметки,
Эта форма записи
Отличительные особенности
'< … >' ;Например, грамматика из примера 01 лекции 10 будет выглядеть так:
[Пример 03]
<число> ::= <чс> <чс> ::= <чс><цифра>|<цифра> <цифра> ::= 0|1|2|3|4|5|6|7|8|9
Предложенная Бэкусом форма записи
В литературе для описания синтаксиса различных языков используются и другие формы записи, примером которой может служить РБНФ. Она обладает такой же мощностью, что и
Выражение с их участием записывается как:
{<терминал или нетерминал>}<модификатор>
Фигурные скобки означают, что выражения в них может повторяться от 0 до бесконечности, или согласно модификатору:
* " означает, что выражение в скобках может повторяться ноль или бесконечное число раз;+ " означает, что выражение в скобках может повторяться от 1 до бесконечного числа раз;(m,n) означает, что выражение в скобках может повторяться от m до n числа раз.[Пример 04]
<U> ::= a{ab} - цепочка, начинающаяся с a и содержащая ноль или более (до бесконечности) ab ;<U> ::= a{ab}+ - цепочка, начинающаяся с a и содержащая от одного до бесконечности повторений цепочки ab ;<U> ::= a{ab}(2,3) - содержит цепочки: aabab и aababab.В них заключено выражение, повторяющееся ноль или один раз.
В правых частях правил оператор конкатенации предшествует AB|C означает либо AB либо C. Если использовать круглые скобки как метасимвол, мы получим, что A(B|C) будет означать: либо AB, либо .
Чтобы указать, что символы, участвующие в разборе, расположены подряд один за другим, используется символ диапазона "-". Например, запись A-Z включает в себя все символы, расположенные между A и Z, включая эти символы.
A-Za-z - означает латинские литеры во всех кодировках, диапазон: А-Яа-я - означает все литеры русского алфавита в кодировках А-Яа-пр-я - все русские литеры в кодировке Для того чтобы
Таким образом, грамматика из (примера 01 лекции 10) в РБНФ будет выглядеть так:
[Пример 05]
<число> ::= {<цифра>}+
<цифра> ::= 0-9
Пример 06 лекции 10 в РБНФ может выглядеть так:
[Пример 06]
<врж> ::= [<врж>(\+|\-)]<терм> <терм> ::= [<терм>(*|/)]<множ> <множ> ::= [<множ>^]<степ> <степ> ::= \(<врж>\)|<идентификатор>|<число>
Однако чтобы приблизить пример 06 к регулярной грамматике, его следует записать следующим образом:
[Пример 07]
<врж> ::= <терм>[(\+|\-)<врж>] <терм> ::= <множ>[(*|/)<терм>] <множ> ::= [<множ>^]<степ> <степ> ::= \(<врж>\)|<идентификатор>|<число>
В данной главе вы познакомились с одним из основных понятий искусственного интеллекта, информатики и алгебры - понятием "
Конечно же, в этом кратком введении в формальную грамматику "за бортом" осталось множество интересных алгоритмов. Это, прежде всего, алгоритмы "экспертных систем", "
Теперь самое время отдохнуть, выпить чашку кофе, и … начать программировать!
Успехов Вам! Good Luck! Dankon!
| Термин (рус.) | Термин (англ.) | Толкование |
|---|---|---|
| представление грамматик | grammar notion | Компактная запись правил и фактов для |
| командная оболочка | command shell | Программа в операционной системе, служащая для подачи команд операционной системе, запуск программ и файлов на исполнение, |
| текстовый редактор | text editor | Программа-редактор, предназначенная для экранного редактирования текстовых файлов. В отличие от |
| скриптовый язык | script language | Язык, служащий специальным целям и расширяющий возможности |
| макрос | macro | Программа, написанная на скриптовом языке. Макрос всегда является интерпретируемой программой. |
| XML | XML, extended markup language | Расширенный язык разметки, предназначенный для создания сложных структур и других языков разметки. |
| язык 3 разметки | markup language | Язык разметки предназначен для выделения структуры текста отдельно от его содержания. Все языки разметки являются порожденными от языка SGML. Примерами языков разметки являются языки HTML и XML. |
| структура документа 1 | structure of a document | Это как бы представление "семантики языка при помощи его синтаксиса". В общем случае структура документа содержит в себе "структурные элементы" (теги, шрифтовое, абзацное выделение текста, поля и т.п.), позволяющая выделить "главный смысл" текста и облегчить его разбор и восприятие (все равно кому, машине или человеку). |
| DTD | DTD, document type definition | |
| имя документа 1 | document's name | В XML имя документа используется для связи самого XML файла с его описанием. |
| нотация DTD | DTD notation | Правила записи |
| нотация РБНФ | EBNF notation | Правила записи |
| элемент XML | XML element | |
| тег 1 | tag 1 | |
| объявление элемента | element declaration | В DTD объявление элемента имеет синтаксис: "<!ELEMENT Имя_Элемента Указатель_на_тип>", где Имя_Элемента представляет собой имя соответствующего тега, а типом элемента может быть как тип #PCDATA, так и регулярные выражения из ранее (или позже) определенных элементов. |
| PCDATA | PCDATA, parsed character data | Распознанные символьные данные, полученные при работе анализатора лексем. |
| HTML | HTML, hyper text markup language | |
| семантическая сеть | semantic network (circuit) | Представление смысла текста, передаваемого сообщения и т.п. при помощи |
| фрейм | frame | Более "высокоуровневое" представление смысла текста, сообщения, чем |
| интерфейс базы данных | database interface | "Внешняя оболочка" базы данных, позволяющая заносить данные в базу данных, извлекать их в определенном порядке, генерировать отчеты в форме, удобной для человека. |
| БНФ | BNF | См. Бэкусова |
| Бэкусова нормальная форма | Backus normal form | Способ записи |
| РБНФ | EBNF | См. расширенная форма Бэкуса - Наура |
| расширенная форма Бэкуса - Наура | Expanded Backus-Naur form | Более "компактная" запись |
| диапазон | range | Указание принимаемых значений символов в регулярном выражении "от и до", в порядке возрастания кодов в кодировке по-умолчанию. |
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.