Грамматика конструкций языка программирования
[ 2 ] гл. 2, прил.
КЗ-4. (с) Задано описание синтаксиса языка программирования ADA в виде РБНФ (Прилож.4).
Требуется для заданной конструкции (с учетом ограничений) привести пример представления и записать её грамматику (вспомогательные понятия должны быть исключены) :
№ | Конструкция | Ограничения |
0 | тело_пакета_5 | не раскрывать: основной_элемент_описания, дополнительный_элемент_описания, последовательность_операторов, обработчик_исключений |
1 | Спецификация_пакета_14 | ограничить: основной_элемент_описания ::= спецификация_использования |
2 | описание_подпрограммы_15 | не раскрывать: спецификация_параметра |
3 | описание_задачи_22 | ограничить: спецификация_представления_типа::= спецификация_длины не раскрывать: описание_входа, атрибут, простое_выражение |
4 | описание_типа_29 | не раскрывать: определение_типа, обозначение_типа, выражение |
5 | определение_типа_записи_59 | не раскрывать: список_идентификаторов, выражение, указание_подтипа, , вариант |
6 | Последовательность_операторов_89 | ограничить: простой_оператор ::= оператор_присваивания, составной_оператор ::= условный_оператор не раскрывать: имя_переменной, выражение |
7 | оператор_выбора_101 | ограничить: выбор ::= диапазон не раскрывать: выражение, простое_выражение, оператор |
8 | оператор_цикла_103 | ограничить: дискретный диапазон ::= диапазон не раскрывать: выражение, простое_выражение, простой_оператор, составной_оператор |
9 | оператор_вызова_процедуры_114 | ограничить: фактический параметр ::= выражение не раскрывать: выражение |
КЗ-5. (м) Задана грамматика простого языка программирования (Прилож.5).
|
|
Требуется построить простой вывод некоторого представления конструкции.
№ | Нач. символ | Что должно быть выведено |
0 | <PRG> | Программа с описанием и оператором |
1 | <SO> | Список Описаний для целых и действительных переменных |
2 | <O> | Описание для целого трехмерного массива |
3 | <O> | Описание для нескольких переменных и массива |
4 | <SOP> | Список Операторов из 2-х операторов присваивания |
5 | <OP> | Оператор с меткой if-then-else |
6 | <NOP> | Оператор присваивания c индексированной переменной |
7 | <US> | Условие, где сравниваются выражение и константа |
8 | <W> | Выражение, включающее операндом выражение в скобках |
9 | <W> | Выражение с умножением индекс.переменной и константы |
LL(1) - грамматика конструкций языка программирования
[ 2 ] гл. 2, 3, прил.
КЗ-6. (у) Для выражений кратко определены форма операндов и набор операций с указанием их приоритета (по возрастанию).
|
|
Требуется :
a) привести пример выражения и составить грамматику таких выражений,
б) найти направляющие символы грамматики (при необходимости преобразовать к LL(1)-грамматике) .
№ | Операции | Пояснения |
0 1 | 1) shlr 2) shal 3) + – 4) * / | целые (со знаком) операнды арифметические операции (* , / , +, – ), операции сдвига (shift) : арифметический (shal - влево) и логический (shlr – вправо побитово) |
1 2 | 1) or 2) and 3) < > = 4) + – | арифметические операнды и операции (+ , – ) операции сравнения ( < , > , = ) для двух арифмети- ческих выражений логические операции ( and - И ) и ( or - ИЛИ ) |
2 3 | 1) | 2) & 3) ! 4) << >> | Битовые операнды операции сдвиги влево и вправо ( << , >> ) поразрядные логические операции (! – инверсия /с одним операндом, & - И, | - ИЛИ ) |
3 4 | 1) << >> 2) | 3) & 4) ~ | Битовые операнды поразрядные логические операции ( ~ - инверсия /с одним операндом, | - ИЛИ, & - И) операции сдвига влево и вправо ( << , >> ) |
4 | 1) ! 2) + – 3) * / 4) shl shr | целые (битовые) операнды операции сдвига (shift) влево и вправо арифметические операнды и операции ( + , – , * , / ) инверсия значения (всего) выражения ( ! ) |
5 | 1) || 2) && 3) ! 4) < > = | операнды ID и CN (арифметические), составляющие отношения с операциями сравнения (<, >, = ) логические операции: инверсии ( ! /с одним операндом), И (&&) и ИЛИ ( || ) |
6 | 1) ! 2) < > 3) == != 4) + – | арифметические операнды и операции (+ , – ) операции сравнения двух уровней: равно/неравно (== , !=) и меньше/больше ( < > ) логическая операция инверсии (!) операндов |
7 | 1) + – 2) mod 3) * / 4) exp | арифметические операнды традиционные операции ( + , – и *, / , mod - взять остаток от деления, exp - возвести в степень) |
8 | 1) | & 2) not 3) < > = 4) + – * / | арифметические операнды и операции ( + , – , *, / ) отношения для 2-х выражений с операциями (< , >, = ) логические операции not (инверсия), & ( И ) и | ( ИЛИ) над отношениями |
9 | 1) + – || 2) * / && 3) ! 4) ++ – – | целые (битовые) операнды и операции ( + , – и *, / ) побитовые операции && ( И ) и || ( ИЛИ ) одноместная побитовая операция инверсии ( ! ) одноместные операции инкремента/декремента ( ++ , – –) |
КЗ-7. (м) Задана LL(1)-грамматика составного оператора (Прилож.6).
|
|
Требуется построить детерминированный вывод заданного предложения (предварительно записав во внутреннем представлении):
|
|
№ | Конструкция | Начальный символ |
0 | 50 : while x > 0 do S := S + i end | <OP> |
1 | X := (A + 5) * sigma; goto 20 | <SOP> |
2 | if D1- D2 < 5 then Y := 0 end | <NOP> |
3 | not A > X ^ 2 + 3 * X –1 | <US> |
4 | X , Y , Z := ( A + B ) * C ^ ( 3 + I ) | <NOP> |
5 | ( R – G ) / ( X ^ 2 + Y ) – 1 | <W> |
6 | begin if x < 0 then M , N := A + 1 end | <SSP> |
7 | A :=X ; while A < 0 do A := A + 1 end | <SOP> |
8 | 1 + D / 2 * ( X ^ 2 + X) – KF1 | <W> |
9 | 20 : if X = Y then X := 1 end ; A , B, C := 0 | < SOP> |
4. Интерпретация конструкций языка программирования
[ 2 ] гл. 4, прил.
КЗ-8. (с) Задана LL(1)-грамматика составного оператора с включенными действиями (Прилож.7).
Требуетсядля заданной конструкции построить вывод в грамматике, а затем по конструкции со “вставленными” действиями построить МИ с изображением рабочего стека и кратко прокомментировать полученные результаты.
№ | Конструкция | Hачальный символ |
0 1 | 50 : while not x > 0 do S := S + i end | <OP> |
1 2 | X := (A + 5) * sigma /2 ; goto 20 | <SOP> |
2 3 | if D1- D2 < 5 then goto 10 else Y := 0 end | <NOP> |
3 4 | not A > 5 * X ^ 2 + 3 * X – 1 | <US> |
4 5 | X , Y , Z := ( A + B ) * C ^ ( 3 + I ) | <NOP> |
5 6 | ( 5 * R – G ) / ( X ^ 2 + Y ^ 2 ) – 1 | <W> |
6 | begin if x < 0 then M , N := A * 4 + 1 end end | <PRG> |
7 | while ( A – 10 ) < 0 do A := A + 1 end | <OP> |
8 | 1 + D / 2 * ( X ^ 2 + 5 * X – 4) – KF1 | <W> |
9 | 10 , 20 : if X = Y then X := 1 end ; A , B := 0 ; | < SOP> |
5. Проектирование синтаксического анализатора
[ 2 ] гл. 5
КЗ-9. (у) Разработать фрагмент управляющей таблицы СА для нескольких правил грамматики (Прилож.7), заданных ниже, для двух вариантов реализации анализатора
а) на основе МП-автомата, б) с неявным построением шагов вывода.
№ | a) Управл. таблица МП - автомата | б) Управл. таблица по грамматике |
0 | прав. 1, 2, 3 | прав. 1, 2, 3-4 |
1 | прав. 3-4, 5 | прав. 2, 3-4,5,6 |
2 | прав. 3-4,5 | прав. 6-7, 8-9,10 |
3 | прав. 6-7, 8-9 | прав. 9,10-11,12 |
4 | прав. 10-13,14 | прав. 12—13, 14-15 |
5 | прав. 17, 18-19, 20 | прав. 16-17, 18-19, 20 |
6 | прав. 20, 21-23, 24 | прав. 20, 21-23,24 |
7 | прав. 24,25-27 | прав. 24, 25-27, 28 |
8 | прав. 28, 29-31 | прав. 29-31, 32 |
9 | прав. 32, 33-34, 35 | прав. 33-34, 35-37 |
6. Общая структура и организация памяти IBM PC
[ 1 ] гл. 1
КЗ-10. (м) Найти и записатьзначение вектора прерывания с заданным номером по образу памяти (Приложение 8).
№ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Вектор | 05h | 09h | 0Bh | 10h | 13h | 15h | 18h | 1Ch | 1Fh | 21h |
7. Логическая структура жесткого диска IBM PC
[ 1 ] гл. 2
КЗ-11. (с) Снятьс помощью программы DiskEdit.exe (из любой версии Norton Utilities) c компьютера, на котором вы работаете, таблицу разделов ЖД (Partition Table) и, возможно, дополнительные PT для расширенных разделов. На их основе определить объемы разделов компьютера в байтах, Кб, Мб и Гб.
Дата добавления: 2018-04-05; просмотров: 368; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!