Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основная книга по С++й.doc
Скачиваний:
16
Добавлен:
28.10.2018
Размер:
2.07 Mб
Скачать

Алфавит языка Си

Алфавит – совокупность символов, которые можно использовать в программах на языке Си.

В алфавит языка входят:

1. Большие и маленькие латинские буквы: A, B,..Z; a, b,..z и символ подчеркивания ( '_' ). Далее будем обозначать <буква>.

2. Десятичные цифры: 0, 1,..9. Далее будем писать просто <цифра>.

3. Специальные символы:

, . ; : ? ‘ ! | / \ ~ * + - ( ) { } < > [ ] # % & ^ = “

4. Управляющие и разделительные символы. К той группе символов относятся: пробел, символы табуляции, перевода строки, возврата каретки, новая страница и новая строка. Эти символы отделяют друг от друга объекты, определяемые пользователем, к которым относятся константы и идентификаторы. Последовательность разделительных символов рассматривается компилятором как один символ (последовательность пробелов).

5. Кроме выделенных групп символов в языке Си широко используются так называемые, управляющие последовательности, т.е. специальные символьные комбинации, используемые в функциях ввода и вывода информации. Управляющая последовательность строится на основе использования обратной дробной черты (\) (обязательный первый символ) и комбинацией латинских букв и цифр (табл.5).

Таблица 5.

Управляющие последовательности языка Си.

Управляющая последовательность

Наименование

\a

Звонок

\b

Возврат на шаг

\t

Горизонтальная табуляция

\n

Переход на новую строку

\v

Вертикальная табуляция

\r

Возврат каретки

\f

Перевод формата

\”

Кавычки

\’

Апостроф

\0

Ноль-символ

\\

Обратная дробная черта

\ddd

Символ набора кодов ПЭВМ в восьмеричном представлении

\xddd

Символ набора кодов ПЭВМ в шестнадцатеричном представлении

Примечание:

1. Каждая буква, цифра, специальный символ и служебное слово – это самостоятельная, неделимая конструкция языка.

2. В реализации языка на отечественных ЭВМ в алфавит добавляются большие и маленькие русские буквы и дополнительные знаки препинания. Однако эти дополнительные символы можно использовать только в символьных и строковых константах.

3. В языке Си буквы нижнего регистра (а,...,z) отличаются от букв верхнего регистра (А,...,Z). Это означает, что следующие идентификаторы считаются разными: name, NaMe, NAME и т.д.

Грамматика для описания языка, синтаксические диаграммы

Символы алфавита являются элементарными синтаксическими конструкциями языка, из которых строятся более сложные конструкции (константы, имена, описания, выражения и операторы). Существует два способа описания синтаксиса языка программирования:

  1. с использованием формальных грамматик;

  2. с использованием синтаксических диаграмм.

Способ описания синтаксиса языка программирования на основе формальных грамматик базируется на следующих конструкциях:

  1. Вводится множество терминальных символов, которые заключаются в одиночных кавычках. Под терминальным символом понимается неделимый символ языка, например ‘Begin’, ‘Program’, ‘1’, ‘5’. Иногда для сокращения кавычки можно опускать, если смысл конструкции при этом остается понятным.

  2. Вводится множество нетерминальных символов, которые заключаются в треугольных скобках. Под нетерминальным символом понимается такая конструкция языка, которая может быть разложена на более мелкие составляющие части, т.е. состоит из различных частей, например <вещественное число>, <идентификатор>.

  3. Вводится операция «=::» (или «→»), которая читается, как: «это есть», «является», «состоит из» и предназначено для уточнения состава нетерминальных символов.

  4. Для обозначения альтернативных вариантов написания терминов в языке вводится синтаксическая конструкция «альтернатива», которая обозначается вертикальной чертой «|» и может читаться как союз «или», например, такая конструкция «<операция> → ‘*’ | ‘/’ | ‘–‘ | ‘+’» обозначает следующее: «нетерминальный символ <операция> это есть терминальный символ ‘*’, или символ ‘/’, или символ ‘–‘ или, символ ‘+’».

  5. Для необязательных конструкций языка, которые в одном случае могут присутствовать, а в другом могут отсутствовать используется конструкция «квадратные скобки». Ими обрамляются необязательные символы, например такое описание «<целое число> → [+] | – <цифры>» обозначает, что «конструкция <целое число> есть <цифры>, перед которыми необязательно присутствует знак ‘+’, либо обязательно знак ‘–‘».

  6. Для повторяющихся конструкций используется два вида записи: либо с помощью многоточия «…» (если очевидно какая конструкция повторяется), либо повторяющиеся конструкции берутся в фигурные скобки. Иногда такая конструкция называется «итерация» или «повторение», например «< целое число> → [+] | – {<цифра>}», либо «<целое число>→ [+] | – <цифра><цифра>… ».

Для наглядности изображения способа построения одних синтаксических конструкций из других используются синтаксические диаграммы (СД).

Синтаксическая диаграмма состоит из кружков, овалов, прямоугольников и стрелок. В кружках или овалах записываются неделимые (терминальные) конструкции языка или их обобщённые имена.

В прямоугольниках записываются ссылки на другие объекты, синтаксические диаграммы (нетерминальные символы). Стрелки указывают возможные направления движения по СД при построении синтаксической конструкции.

Пример 8. СД для понятия “целое число” (целое со знаком) (рис.18).

При построении СД используется 5 основных конструкций:

  1. Последовательность (рис.19).

Порождает синтаксическую конструкцию (иногда говорят цепочку символов) C1C2C3…CN.

  1. Альтернатива (рис.20).

Рис. 20. Типовая конструкция СД «Альтернатива»

  1. Альтернатива с пустой цепочкой (рис.21).

  1. Итерация с пустой цепочкой (рис.22).

  1. Итерация без пустой цепочки (рис.23).

Порождает или цепочку С,

или цепочку СС, и т.д.

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