ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.01.2024

Просмотров: 67

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Вариант 7.Задание 1. Постройте КС-грамматику языка, определяющего индексные переменные. Индексы – идентификаторы могут быть в свою очередь индексированными. Примеры правильных цепочек:

  1. A(1, 2, c(2, 4), d(s(1), 2))

  2. B(0, f(1,2))
Для первого примера постройте дерево нисходящего разбора заданной терминальной цепочки по построенной Вами КС-грамматике.Для второго примера постройте дерево восходящего разбора (свертку) заданной терминальной цепочки по построенной Вами КС-грамматике.Задание 2.Постройте детерминированную А - грамматику в виде графа состояний для языка, цепочки которого имеют заданный вид:S :: = CASE <ид> OF <список выбора>[ELSE<оператор присваивания>]END;<список выбора> :: = <константа выбора> :<оператор присваивания>; {<список выбора>}<константа выбора> :: = <текст><константа><оператор присваивания> :: = < ид > := <правая часть><правая часть> :: = <операнд>{<операция><операнд>}<операнд> :: = < ид> | <константа > < операция > :: = +  -  /  * <ид> - идентификатор языка Turbo Pascal, начинается с буквы, включает буквы, цифры, подчеркивание, не допускает пробелы и специальные символы;<константа> - целое число.Примеры правильных цепочек:case oper of ‘A’: C := x + y; ‘L’ : Z := x / y; end;case B of 12 : A = 14 + C; 13 : B := 0 end;case prim of 14: A := L; else C := E - 3 end;Задание 3.Заданную КС-грамматику приведите к грамматике Вирта (простого предшествования). Для этого устраните факультативные [ ] и итеративные { } скобки путем добавления новых альтернатив и праворекурсивных правил. Постройте матрицу простого предшествования. Проведите свертку указанной правильной цепочки с использованием построенных Вами отношений предшествования.S :: = CONST <описание>;<описание> ::= <идентификатор>=<выражение>|<идентификатор>:<тип>=<константа><выражение> :: = <операнд>{<операция><операнд>}<операнд> :: = <идентификатор><константа>< операция > :: = +  -  /  * <тип> :: = INTEGERCHAR<идентификатор> - обозначаем @; <константа> - обозначаем k;Цепочка для свертки: CONST B = L + 12;Задание 4.

Переведите в ПОЛИЗ инфиксную запись
while (a > b) and (j < a*b + i) do j:=(a+b) * 10; end;