<���Список формальных аргументов>::= <���Формальный аргумент> [; <���Список формальных аргументов>]
<���Формальный аргумент>::= {<���Формальный аргумент типа 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>
Третье четвертое и пятое предложения данного фрагмента пришлось бы повторить для каждого из остальных тринадцати типов аргументов. Поскольку приведенные в книге БНФ описания языков призваны задать и объяснить синтаксис языка, а не служить исходным кодом компилятора компиляторов, автор счел возможным отступить от канонов БНФ, тем более, что для профессионала в области языков программирования не составит большого труда заменить неформальные конструкции на точные формальные фрагменты.
Описание общих синтаксических конструкций
В данном разделе приведено описание общего подмножества языков описания компонентов. В некоторых случаях, когда БНФ описание понятия сложно, а неформальное описание просто и однозначно, в БНФ описание включаются фрагменты неформального описания таких понятий.
Список синтаксических конструкций общего назначения:
<���Идентификатор>::= <���Буква> [<���Символьная строка>]
<���Буква>::= { 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 | 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 }
<���Символьная строка>::= {<���Буква> | <���Цифра> | _ } [<���Символьная стока>]
<���Цифра>::= { 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 }
<���Число>::= {<���Целое число> | <���Действительное число>}
<���Целое число>::= [—] <���Положительное целое число>
<���Положительное целое число>::= <���Цифра> [<���Положительное целое число>]
<���Действительное число>::= <���Целое число>[.<���Положительное целое число>][ e<���Целое число>]
<���Целочисленная константа>::= {<���Предопределенная константа типа Integer> | < Предопределенная константа типа Long> | <���Целое число>}
<���Цветовая константа>::= H <���Шестнадцатеричная цифра> <���Шестнадцатеричная цифра> <���Шестнадцатеричная цифра> <���Шестнадцатеричная цифра>
<���Шестнадцатеричная цифра>::= { 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F }
<���Строковая константа>::= “<���Строка произвольных символов>”
<���Логическая константа>::= { True| False}
<���Строка произвольных символов> — Последовательность произвольных символов из набора ANSI. В этой последовательности допускаются символы национальных алфавитов. При необходиости включить в эту конструкцию символ кавычек, он должен быть удвоен.
Читать дальше