Форма Бэкуса-Наура

Лексемы, разделители и комментарии

Алфавит

Начальные сведения

а) все большие и малые латинские буквы, причем Паскаль не делает различия между большими и малыми буквами.

б) все арабские цифры от 0 до 9

в) специальные знаки

+ – * / = < > ( )

. , : ; ' [ ] { } ^

а также пробел и знак конца строки. Обычно знак конца строки состоит из двух знаков – перевод строки (LF) и возврат каретки (CR). Оба эти знака не печатаются.

Лексема – наименьший элемент языка, имеющий самостоятельное значение. Лексема может записываться одним или несколькими знаками алфавита кроме пробела и конца строки. В Паскале выделяют такие лексемы:

а) Имена, или идентификаторы. Именами программист называет объекты, которые он вводит в программу. Имя начинается с латинской буквы и может состоять из произвольного количества букв и цифр. Во многих реализациях длина имени ограничена, либо она произвольна, но обрабатывается только некоторое количество первых символов (например, в Turbo Pascal, 63 первых символа должны образовывать уникальные имена, а вообще длина имени произвольная).

Примеры: A, b5 Alpha, ThisLongIdentifierIsAlsoValid

б) Ключевые слова. В стандартном определении Паскаля их 35, и они нужны для построения языковых конструкций.

And Downto If Or Then

Array Else In Packed To

Begin End Label Procedure Type

Case File Mod Program Until

Const For Nil Record Var

Div Function Not Repeat While

Do Goto Of Set With

Ключевые слова в Паскале являются зарезервированными. Их нельзя использовать в качестве имен.

в) Изображения. Это лексемы, которые изображают значения констант, например, чисел. Правила их построения рассматриваются позднее.

Между двумя именами, двумя ключевыми словами, двумя изображениями, а также между лексемами в смешанных парах из этих групп лексем должен быть хотя бы один разделитель (т.е., их может быть произвольное количество, но не менее одного).

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

Внутри лексем разделители не допускаются.

Еще один специальный разделитель, точка с запятой (;), отделяет операторы и описания Паскаля друг от друга. Точка с запятой не является частью оператора.

Везде, где можно или необходимо применять разделители, можно помещать комментарии. Комментарий – это произвольный набор знаков, имеющихся в наборе знаков компьютера, заключенный между фигурными скобками { и }, (иногда применяют (* и *)), кроме закрывающейся скобки } (или *) ). Внутри комментария могут быть также знаки конца строки, т.о., комментарий может занимать несколько строк.

Примеры:

Rz {радиус Земли} + H {высота спутника}

Backus-Naur Form – специальный язык для описания синтаксиса формальных языков. Здесь используется его упрощенная нотация.

< > между угловыми скобками помещается название элемента конструкции, который в реальной конструкции помещается в этом месте без скобок.

" " В кавычках помещается лексема, которая в реальной конструкции помещается в этом же месте, но без кавычек.

[ ] Часть конструкции в квадратных скобках может входить в конструкцию 0 или 1 раз.

{ } Часть конструкции в фигурных скобках может входить в конструкцию 0, 1 или более раз.

| Вертикальная черта разделяет альтернативные элементы конструкции. В реальной конструкции может быть вариант справа или слева от черты. Если черта употреблена внутри скобок – квадратных, фигурных или круглых, ее действие ограничено скобками.

( ) Круглые скобки используются для группирования альтернативных вариантов конструкции в тех случаях, когда квадратные и фигурные скобки не подходят.

::= Слева от этого знака записывается сложный элемент конструкции, справа – его описание более простыми элементами.

. Точка обозначает конец описания.

Примеры описания упомянутых ранее элементов языка:

<Лексема>::=<имя>|<ключевое слово>|<изображение >|<символ операции>.

<имя>::=<буква> {<буква>|<цифра>}.

<цифра>::="0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9".

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

63 − 60 =