|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.09.2011, 13:29 | #1 |
Новичок
Джуниор
Регистрация: 23.09.2011
Сообщений: 3
|
РБНФ
Здравствуйте. Сразу извиняюсь если не туда запостил. Мне поставлена задача
Постройте грамматику, описывающую структуру российских почтовых адресов, которой бы удовлетворяли приведенные ниже адреса, и запишите ее в нотации EBNF. Описание нотации и примеры записи по ссылке: http://en.wikipedia.org/wiki/Extende...80%93Naur_Form Почтовые адреса: 197738, Россия, Ленинградская область, Репино, Цветочный переулок, 6 194295, Россия, г. Санкт-Петербург, улица Ивана Фомина, 10к2 234223, Россия, Нижегородская область, г. Нижний Новгород, ул. Политотдельская, 32 140120, Россия, Московская область, Раменский район, хутор Ильинский, улица Наты Бабушкиной, 77 140120, Россия, Московская область, Раменский р-н, х-р Ильинский, 3-й Октябрьский пер., 3а 142403, Россия, Московская область, Ногинский район, г. Ногинск Больничный проезд, 6 347900, Россия, Ростовская область, Таганрог, улица Нижняя Линия, 295/2, корп. 3, кв. 25 347924, Россия, Ростовская область, Таганрог, 17-Й Квартальный проезд, 25, строение 2, корпус 4, квартира 110 347904, Россия, Ростовская обл, город Таганрог, 1-Я Садовая Площадка, 1 478545, Россия, Красноярский кр., г. Красноярск, пр-кт Молокова, 72г 658745, Россия, Сахалинская область, поселок Сахалинский, Петропавловское шоссе, 23-1, кв. 23 236544, Россия, Еврейская автономная область, Биробиджан, пр-кт им. Жукова, 32/3, кв 1 Сталкиваюсь с этим впервые. Мой код почтовый код = “индекс” “страна” [“регион”] “населённый пункт” “адрес”; индекс = число {число}; число = цифра {цифра}; цифра = “0” | “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9”; страна = “Россия”; регион = “название региона” “тип региона” [“район”]; название региона = буква {буква}; буква = “А” | ”Б” | ”В” | ”Г” | ”Д” | ”Е” | ”Ж” | ”З” | ”И” | ”Й” | ”К” | ”Л” | ”М” | ”Н” | ”О” | ”П” | ”Р” | ”С” | ”Т” | ”У” | ”Ф” | ”Х” | ”Ц” | ”Ч” | ”Ш” | ”Щ” | ”Ь” | ”Ы” | ”Ъ” | ”Э” | ”Ю” | ”Я; тип региона = “область” | “край” | “обл.” | “кр.” ; район = “название района”; название района = буква {буква}; пункт = “название пункта” “тип пункта”; название пункта = буква {буква}; тип пункта = “город” | ”хутор” | ”г.” | “х-р”, | “посёлок” | “ ”; адрес = “улица” “дом” “квартира”; улица = “название улицы” [“тип улицы”]; название улицы = буква | цифра {буква | цифра | “-” | “.”}; тип улицы = “улица” “проезд” “шоссе” “пр-кт” “пер.” “ул.” “переулок”; дом = цифра {цифра | “/” | “-“} [“строение” ”корпус”]; строение = “номер”; номер = цифра {цифра}; корпус = “номер”; номер = цифра {цифра}; квартира = “номер”; номер = цифра {цифра | буква}. Подскажите кто может, правильно ли я делаю, если нет то что исправить. |
23.09.2011, 15:38 | #2 |
Новичок
Джуниор
Регистрация: 23.09.2011
Сообщений: 3
|
немного переделал
<почтовый код> = <индекс> <знак> <страна> <знак> [<регион> <знак>] <населенный пункт> <знак> <адрес>; <индекс> = <число> {<число>}; <число> = <цифра> {<цифра>}; <цифра> = “0” | “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9”; <знак> = “,”; <страна> = “Россия”; <регион> = <название региона> <тип региона> <знак> [<район> <знак>]; <название региона> = <буква> {<буква>}; <буква> = “А” | ”Б” | ”В” | ”Г” | ”Д” | ”Е” | ”Ж” | ”З” | ”И” | ”Й” | ”К” | ”Л” | ”М” | ”Н” | ”О” | ”П” | ”Р” | ”С” | ”Т” | ”У” | ”Ф” | ”Х” | ”Ц” | ”Ч” | ”Ш” | ”Щ” | ”Ь” | ”Ы” | ”Ъ” | ”Э” | ”Ю” | ”Я; <тип региона> = “область” | “обл.” | “кр.” ; <район> = <название района> <тип района>; <название района> = <буква> {<буква>}; <тип района> = “район” | “р-н”; <населенный пункт> = <тип населенного пункта> <название населенного пункта>; <тип населенного пункта> = “город” | ”хутор” | ”г.” | “х-р”, | “посёлок” | “ ”; <название населённого пункта> = <буква> {<буква>}; <адрес> = <улица> <знак> <номер дома> <знак> [<строение> <знак> <корпус> <знак>] <квартира>; <улица> = [<тип улицы>] <название улицы> | <название улицы> [<тип улицы>]; <название улицы> = <буква> | <цифра> {<буква> | <цифра> | “-” | “.”}; <тип улицы> = “улица” | “проезд” | “шоссе” | “пр-кт” | “пер.” | “ул.” | “переулок”; <номер дома> = <цифра> {<цифра> | “/” | “-“}; <строение> = “строение” <номер строения>; <номер строения> = <цифра> {<цифра>}; <корпус> = “корпус” <номер корпуса>; <номер корпуса> = <цифра> {<цифра>}; <квартира> = [“квартира” | ”кв.” | “кв” ] <номер квартиры>; <номер квартиры> = <цифра> {<цифра> | <буква>}. |
23.09.2011, 17:44 | #3 |
Новичок
Джуниор
Регистрация: 23.09.2011
Сообщений: 3
|
ещё немного подкорректировал, незнаю, думаю это должен быть окончательный вариант.
<почтовый код> = <индекс> <знак> <страна> <знак> [<регион> <знак>] <населенный пункт> <знак> <адрес>; <индекс> = <число> {<число>}; <число> = <цифра> {<цифра>}; <цифра> = “0” | “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9”; <знак> = “,”; <страна> = “Россия”; <регион> = <название региона> <тип региона> <знак> [<район> <знак>]; <название региона> = <буква> {<буква>}; <буква> = “А” | ”Б” | ”В” | ”Г” | ”Д” | ”Е” | ”Ж” | ”З” | ”И” | ”Й” | ”К” | ”Л” | ”М” | ”Н” | ”О” | ”П” | ”Р” | ”С” | ”Т” | ”У” | ”Ф” | ”Х” | ”Ц” | ”Ч” | ”Ш” | ”Щ” | ”Ь” | ”Ы” | ”Ъ” | ”Э” | ”Ю” | ”Я; <тип региона> = “область” | “обл.” | “кр.” ; <район> = <название района> <тип района>; <название района> = <буква> {<буква>}; <тип района> = “район” | “р-н”; <населенный пункт> = [<тип населенного пункта>] <название населенного пункта>; <тип населенного пункта> = “город” | ”хутор” | ”г.” | “х-р”, | “поселок”; <название населённого пункта> = <буква> {<буква> | “-”}; <адрес> = <улица> <знак> <номер дома> [<знак> <строение>] [ <знак> <корпус>] [<знак> <квартира>]; <улица> = [<тип улицы>] <название улицы> | <название улицы> [<тип улицы>]; <название улицы> = <буква> | <цифра> {<буква> | <цифра> | “-” | “.”}; <тип улицы> = “улица” | “проезд” | “шоссе” | “пр-кт” | “пер.” | “ул.” | “переулок”; <номер дома> = <цифра> {<цифра> | <буква> | “/” | “-“}; <строение> = <название строения> <номер строения>; <название строения> = “строение”; <номер строения> = <цифра> {<цифра>}; <корпус> = <название корпуса> <номер корпуса>; <название корпуса> = “корпус”; <номер корпуса> = <цифра> {<цифра>}; <квартира> = [“квартира” | ”кв.” | “кв” | “к”] <номер квартиры>; <номер квартиры> = <цифра> {<цифра>}. Попробую описать. Здесь терминальные символы: символы "/", "-", точка, запятая, цифры от 0 до 9, буквы русского алфавита, слова "Россия", "область", "район", "город", "хутор", "поселок", "улица", "проезд", "шоссе", "переулок", "строение", "корпус", "квартира" и сокращения "обл.", "кр.", "р-н", "г.", "х-р", “пр-кт”, “пер.”, “ул.”, ”кв.”, “кв”. Нетерминальные символы: <индекс>, <страна>, <регион>, <населенный пункт>, <адрес>. Почтовые коды (данные здесь) можно определить через: индекс, указание страны, региона (который может быть не указан, как например в адресе 2), указания населённого пункта и адреса(и записанных через запятую). Индекс состоит из набора цифр, цифры от 0 до 9. Страна - Россия. Нетерминальный символ регион можно определить как <название региона>, <тип региона> и <район> (который может быть не всегда указан, как например в адресах 1-3, 7-12). Название региона определим через терминальные символы - это буквы русского алфавита, тип региона - это терминальные символы либо "область" либо "обл." либо "кр.". Район можно определить через <название района> и <тип района>. Название района - представляем как буквы русского алфавита от А до Я, тип района через терминальные символы которые могут быть либо "район" либо "р-н". Населенный пункт определяем через <тип населенного пункта> (который может быть указан не всегда, как например в адресах 1,7,8,12) и <название н.п.>. Тип определяем через терминальные символы либо “город” либо ”хутор” либо ”г.” либо “х-р” либо “посёлок”. Название через буквы русского алфавита и символы "-", например Санкт-Петербург. Адрес определяем через <улицу>, <номер дома>, иногда могут быть указаны <корпус>, <строение> и квартира. Улицу определяем через <тип улицы> (который может быть не указан как в адресе 9) <название улицы>. Может быть сначала указан тип улицы, а затем название, как например в адресе 2, либо сначала название, а затем тип, как в адресе 1. Название улицы может состоять из букв русского алфавита и символов "/", ".". Тип улицы определяем через терминальные символы либо “улица” либо “проезд” либо “шоссе” либо “пр-кт” либо “пер.” либо “ул.” либо “переулок”. <номер дома> может состоять из набора цифр, букв (например 3а), символов "/", "-". Строение и корпус я представил как названия и номера. <Квартира> можно определить через терминальные символы (которые могут быть “квартира”, ”кв.”, “кв”, “к”) и номера квартиры. Как-то так. Если кто разбирается в этом подскажите в чём я не прав. |
23.09.2011, 18:29 | #4 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,964
|
Вы думаете кому-нибудь, кроме Вас, интересно читать все эти три страницы сплошной галиматьи?
Вам во-фриланс надо. За денюжку люди прочтут и напишут, что надо.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |