Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
cg_posobie6_(Vlasenko).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
550.4 Кб
Скачать

1.6. Синтаксическая модель cgif

Для формального описания основных элементов синтаксиса CGIF далее будет использоваться расширенная форма нотации Бэкуса–Наура (РБНФ), традиционно используемая в качестве средства представления синтаксических конструкций формальных языковых систем. При этом будет принята описываемая далее система обозначений.

В применяемой РБНФ служебными (нетерминальными) считаются следующие символы: прямые кавычки («"»), пробел (для явного указания на пробел далее будет использоваться при необходимости обозначение «пробел»), вертикальная черта («|»), запятая, круглые и фигурные скобки (открывающие и закрывающие), вопросительный знак («?») и астериск («*»).

В прямые кавычки при записи формул заключаются так называемые терминальные символы (т. е. символы языка, который описывается с использованием РБНФ). Если внутри терминального символа требуется указать прямые кавычки, то они заменяются на строку «" \" "». Идентификатором является строка, состоящая только из букв, цифр и знаков подчеркивания и начинающаяся с буквы. Строка, являющаяся либо идентификатором, либо терминальным символом, в настоящем контексте будет называться обозначением РБНФ. Далее для указания на синтаксические и лексические категории РБНФ и CGIF (т. е. на нетерминальные символы) будет использоваться расширенное представление идентификаторов, в котором допускается заключение идентификатора в парные кавычки («…») и вставка пробелов в строку идентификатора. При этом синтаксические категории будут также выделяться курсивом.

Каждая законченная «формула» РБНФ содержит 3 элемента:

- «категорию» (идентификатор описываемого понятия – синтаксической категории) – левая часть формулы;

- «выражение» (непустая последовательность логически завершенных элементов описания – термов, которые могут разделяться непустыми последовательностями пробелов, интерпретирующимися как операция конкатенации, или символом «|» внутри произвольной последовательности пробелов, обозначающим логическую связку «ИЛИ», т. е. выбор альтернативы) – правая часть формулы;

- «символ определения» (строка «::=») – разделитель левой и правой частей в середине формулы.

Соответственно, справедлива следующая формула РБНФ:

«формула» ::= «категория» «символ определения» «выражение»

При образовании формул в РБНФ могут использоваться скобочные конструкции. Круглые скобки (открывающая – «(» и закрывающая – «)») указывают на то, что внутри них находится выражение, т. е. непустое множество термов, отделяемых друг от друга специальным символом – «|» (обозначающим логическую связку «ИЛИ»). После закрытия круглых скобок в формуле могут употребляться специальные символы повторителей: «*» (повторение 0 или более раз) и «?» (повторение 0 или один раз). Эти символы позволяют указать, сколько повторений приведенного в скобках выражения допускается в данной позиции. В фигурные скобки («{» и «}») заключаются неупорядоченные множества выражений, разделяемых специальным символом «,».

С учетом всех введенных ранее определений и обозначений основные термины РБНФ могут быть формально описаны следующим образом (терминальные символы будут выделяться жирным шрифтом).

Выражение:

«выражение» ::= «терм»

(( «пробел» | «пробел»? "|"«пробел»?) «терм» )*

Терм:

«терм» ::= («обозначение РБНФ» | «множество» |

"(" | «выражение» ")" ) ( "*" | "?" ) ?

Множество:

«множество» ::= "{" «выражение» ("," «выражение»)* "}"

С использованием приведенной спецификации РБНФ может быть описан и формальный синтаксис CGIF. При этом будет использоваться ряд предопределенных лексических категорий, к числу которых относятся:

- «Идентификатор» (определение было дано ранее);

- «Комментарий» (строка, заключенная между символами «;»; в последних модификациях CGIF допускаются многострочные комментарии, заключенные между символами «/*» и «*/»);

- «Имя» (идентификатор или строка в апострофах);

- «Число» (традиционная запись целого или вещественного числа, в том числе в экспоненциальной форме);

- «Беззнаковое целое»;

- «Текст» (строка, заключенная в прямые кавычки).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]