Вход/Регистрация
Учебное пособие по курсу «Нейроинформатика»
вернуться

Миркес Е. М.

Шрифт:

<Буква>::= { A | B |C | D | E | F | G | H | I | J | K |L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z }

означает, что понятие буква является одной из заглавных букв латинского алфавита. Отметим, что фигурные скобки, набранные курсивом, являются терминальными символами.

В целях сокращения описания в тех случаях, когда БНФ описание понятия сложно, а неформальное описание просто и однозначно, в БНФ описание включаются фрагменты неформального описания таких понятий.

Кроме того в данную модификацию БНФ включены нетерминальные символы с параметрами. В теле нетерминального символа параметры набраны полужирным курсивом. В качестве примера приведем набор предложений, описывающих формальные аргументы:

<Список формальных аргументов>::= <Формальный аргумент> [; <Список формальных аргументов>]

<Формальный аргумент>::= <Список имен аргументов>:<Скалярный тип>

<Список имен аргументов>::= <Имя аргумента> [,<Список имен аргументов>]

<Имя аргумента>::= <Идентификатор>

<Аргумент типа Тип> — одно из следующих понятий:

 имя аргумента, который при описании формальных аргументов имел тип Тип

 имя элемента аргумента-массива, если элементы массива имеют тип Тип

 результат приведения произвольного аргумента или элемента аргумента-массива к типу Тип.

В этом фрагменте содержится предложение, раскрывающее понятие <Аргумент типа Тип>, являющееся нетерминальным символом с параметром. Из последнего предложения легко понять, что представляет собой понятие <Аргумент типа Тип>. Для описания этого понятия в соответствии с требованиями стандартной БНФ пришлось бы описывать отдельно следующие понятия: <Аргумент типа long>, <Аргумент типа real>, <Аргумент типа integer>, <Аргумент типа color>, <Аргумент типа logic>, <Аргумент типа string>, <Аргумент типа prealarray>, <Аргумент типа pintegerarray>, <Аргумент типа plongarray>, <Аргумент типа plogicarray>, <Аргумент типа pstring>, <Аргумент типа visual>, <Аргумент типа pointer>, <Аргумент типа functype>. Кроме того, пришлось бы отказаться от простой и понятной конструкции описания формальных аргументов. Ниже приведена часть конструкции описания формальных аргументов, которую пришлось бы включить в БНФ. В данном фрагменте приведена расшифровка только одного понятия — <Аргумент типа long>. Остальные нераскрытые понятия описываются аналогично. Понятия <Идентификатор> и <Номер элемента> считаются раскрытыми ранее.

<Список формальных аргументов>::= <Формальный аргумент> [; <Список формальных аргументов>]

<Формальный аргумент>::= {<Формальный аргумент типа Long> | <Формальный аргумент типа Real> | <Формальный аргумент типа Integer> | <Формальный аргумент типа Color> | <Формальный аргумент типа Logic> | <Формальный аргумент типа String> | <Формальный аргумент типа PRealArray> | <Формальный аргумент типа PIntegerArray> | <Формальный аргумент типа PLongArray> | <Формальный аргумент типа PLogicArray> | <Формальный аргумент типа PString> | <Формальный аргумент типа Visual> | <Формальный аргумент типа Pointer> | <Формальный аргумент типа FuncType>}

<Формальный аргумент типа Long>::= <Список имен аргументов типа Long>: Long;

<Список имен аргументов типа Long>::= <Имя аргумента типа Long> [,<Список имен аргументов типа Long>]

<Имя аргумента типа Long>::= <Идентификатор>

<Аргумент типа Long>::= {<Имя аргумента типа Long> | <Имя аргумента типа PLongArray>^[ <Номер элемента>] | TLong( <Имя произвольного аргумента>) }

<Имя произвольного аргумента>::= <Имя аргумента типа Long>, <Имя аргумента типа Real>, <Имя аргумента типа Integer>, <Имя аргумента типа Color>, <Имя аргумента типа Logic>, <Имя аргумента типа String>, <Имя аргумента типа PRealArray>, <Имя аргумента типа PIntegerArray>, <Имя аргумента типа PLongArray>, <Имя аргумента типа PLogicArray>, <Имя аргумента типа PString>, <Имя аргумента типа Visual>, <Имя аргумента типа Pointer>, <Имя аргумента типа FuncType>

Третье четвертое и пятое предложения данного фрагмента пришлось бы повторить для каждого из остальных тринадцати типов аргументов. Поскольку приведенные в книге БНФ описания языков призваны задать и объяснить синтаксис языка, а не служить исходным кодом компилятора компиляторов, автор счел возможным отступить от канонов БНФ, тем более, что для профессионала в области языков программирования не составит большого труда заменить неформальные конструкции на точные формальные фрагменты.

Описание общих синтаксических конструкций
  • Читать дальше
  • 1
  • ...
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: