Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пономарев_ФЯиГ.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.42 Mб
Скачать

Заключение

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

Программа или техническое средство, выполняющие преобразование исходной программы, написанной на языке высокого уровня, в объектные модули языка вычислительной машины называется транслятором. Для организации такого преобразования необходимо знать алфавиты языков высокого уровня и вычислительной машины, правила построения синтаксических конструкций текстов, написанных на языке высокого уровня и объектных модулей на языке вычислительной машины. Эти знания заложены в синтаксис соответствующего языка. Как правило, для языка высокого уровня это - КС-грамматика, для языка вычислительной машины это - система команд. Если текст исходной программы написан синтаксически верно, то следующим шагом выполняется семантический анализ текста, подготовка и генерация системы команд вычислительной машины. Эти работы определяются типом вычислительной машины и его языком.

Контрольные вопросы и задачи

1. Дайте формальное определение языка для формирования:

а) множества целых положительных чисел;

b) множества слов русского языка;

с) множества идентификаторов языка программирования.

2. Пусть VT={ 0;1;2 }, а также 01,  = 2 , 011. Выпишите следующие цепочки:  4, 42( )3. Опишите их длины,головы и хвосты.

3. Пусть дана грамматика G =  VT; VN; P; J , где

VT = {a,b,c}, VN = {A,B,J}, J  VN, P = { p1 = J ::= aB;

p2 = B ::= A;

p3 = B ::= b;

p4 = A ::= c }.

Докажите истинность или ложность вывода следующих цепочек:

a) J =>...=> a; b) J =>...=> ac;

c) B =>...=> Ac; d) aJ =>...=> aab;

e) aBb =>...=> acb.

Какой тип грамматики?

4. Опишите грамматику, язык которой состоит из множества четных целых чисел.

5. Опишите грамматику, язык которой состоит из нечетной последовательности символа "a".

6. Пусть дана грамматика G =  VT; VN; P; J , где

VT = {a}, VN = {A,J}, J  VN, P ={ p1 = J ::= a;

p2 = J ::= aJa }.

Цепочки какого языка генерирует грамматика ?

7. Пусть дана грамматика G =  VT; VN; P; J , где

VT = {a,b}, VN = {A,B,J}, J  VN, P = { p1 = J ::= B;

p2 = J ::= AJ;

p3 = AJ ::= a;

p4 = B ::= b }.

Цепочки какого языка генерирует грамматика?

8. Пусть дана грамматика G =  VT; VN; P; J , где

VT = {a,b}, VN = {A,B,J}, J  VN, P = { p1 = J ::= aA;

p2 = A ::= a;

p3 = A ::= B;

p4 = B ::= b B

p5 = B ::= b}.

Цепочки какого языка генерирует грамматика?

9. Дано множество правил P = { p1 = J ::= ABA;

p2 = A ::= Ca;

p3 = A ::= bA;

p4 = C ::= d }.

Найти матрицы связей, таблицы подстановок, синтаксические деревья и их двоичные эквиваленты для цепочки, начинающейся с символа "d".

10. Дано множество правил P = { p1 = J ::= ABA;

p2 = J ::= DE;

p3 = A ::= Ca;

p4 = B ::= bC;

p5 = C ::= c;

p6 = D :: E;

p7 = E ::= cJC }.

Найти матрицы связей, таблицы подстановок, синтаксические деревья и их двоичные эквиваленты для цепочки, начинающейся с символа "c".

11. Нарисуйте синтаксические диаграммы языка программирования Паскаль для синтаксических переменных:

<идентификатор>, <программа>, <целое_без_знака>, <терм>, <простое _выражение>, <конец_блока>, <заголовок_программы>.

12. Используя грамматику арифметических выражений (пример 14), постройте дерево разбора и его двоичный эквивалент для выражений:

a) a x ( a + b ) / c ;

b) ( a + b ) / c ;

c) ( a + b ) x ( a - c ) / ( b - c ).