Грамматика конструкций языка программирования



[ 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!