Требования к оформлению отчета




Отчет должен содержать следующие разделы:

· Задание по лабораторной работе.

· Описание КС-грамматики входного языка в форме Бэкуса-Наура.

· Описание алгоритма работы сканера или граф конечного автомата для распознавания цепочек (в соответствии с вариантом задания).

· Текст программы (оформляется после выполнения программы на ЭВМ по согласованию с преподавателем).

· Выводы по проделанной работе.

Основные контрольные вопросы

1. Что такое трансляция, компиляция, транслятор, компилятор?

2. Из каких процессов состоит компиляция? Расскажите об общей структуре компилятора.

3. Какую роль выполняет лексический анализ в процессе компиляции?

4. Как связаны лексический и синтаксический анализ?

5. Дайте определение цепочки, языка. Что такое синтаксис и семантика языка?

6. Какие существуют методы задания языков? Какие дополнительные вопросы необходимо решить при задании языка программирования?

7. Что такое грамматика? Дайте определения грамматики.

8. Как выглядит описание грамматики в форме Бэкуса-Наура.

9. Какие классы грамматик существуют? Что такое регулярные грамматики?

10. Дайте определения контекстно-свободной грамматики, выводимости цепочки, непосредственной выводимости, длины вывода.

11. Что такое лексема? Расскажите, какие типы лексем существуют в языках программирования.

12. Что такое конечный автомат? Дайте определение детерминированного и недетерминированного конечных автоматов.

13. Расскажите о возможности преобразования недетерминированного конечного автомата в детерминированный.

14. Какие проблемы необходимо решить при построении сканера на основе конечного автомата?

Варианты заданий

1. Входной язык содержит арифметические выражения, разделенные символом; (точка с запятой). Арифметические выражения состоят из идентификаторов, десятичных чисел с плавающей точкой (в обычной и логарифмической форме), знака присваивания (:=), знаков операций +, -, *, / и круглых скобок.

2. Входной язык содержит логические выражения, разделенные символом; (точка с запятой). Логические выражения состоят из идентификаторов, констант true и false, знака присваивания (:=), знаков операций or, xor, and, not и круглых скобок.

3. Входной язык содержит операторы условия типа ifthenelse и ifthen, разделенные символом; (точка с запятой). Операторы условия содержат идентификаторы, знаки сравнения <, >, =, десятичные числа с плавающей точкой (в обычной и логарифмической форме), знак присваивания (:=).

4. Входной язык содержит операторы цикла типа for ( …; …; … ) do, разделенные символом; (точка с запятой). Операторы цикла содержат идентификаторы, знаки сравнения <, >, =, десятичные числа с плавающей точкой (в обычной и логарифмической форме), знак присваивания (:=).

5. Входной язык содержит арифметические выражения, разделенные символом; (точка с запятой). Арифметические выражения состоят из идентификаторов, римских чисел, знака присваивания (:=), знаков операций +, -, *, / и круглых скобок.

6. Входной язык содержит логические выражения, разделенные символом; (точка с запятой). Логические выражения состоят из идентификаторов, констант 0 и 1, знака присваивания (:=), знаков операций or, xor, and, not и круглых скобок.

7. Входной язык содержит операторы условия типа ifthenelse и ifthen, разделенные символом; (точка с запятой). Операторы условия содержат идентификаторы, знаки сравнения <, >, =, римские числа, знак присваивания (:=).

8. Входной язык содержит операторы цикла типа for ( …; …; … ) do, разделенные символом; (точка с запятой). Операторы цикла содержат идентификаторы, знаки сравнения <, >, =, римские числа, знак присваивания (:=).

9. Входной язык содержит арифметические выражения, разделенные символом; (точка с запятой). Арифметические выражения состоят из идентификаторов, шестнадцатеричных чисел, знака присваивания (:=), знаков операций +, -, *, / и круглых скобок.

10. Входной язык содержит логические выражения, разделенные символом; (точка с запятой). Логические выражения состоят из идентификаторов, шестнадцатеричных чисел, знака присваивания (:=), знаков операций or, xor, and, not и круглых скобок.

11. Входной язык содержит операторы условия типа ifthenelse и ifthen, разделенные символом; (точка с запятой). Операторы условия содержат идентификаторы, знаки сравнения <, >, =, шестнадцатеричные числа, знак присваивания (:=).

12. Входной язык содержит операторы цикла типа for ( …; …; … ) do, разделенные символом; (точка с запятой). Операторы цикла содержат идентификаторы, знаки сравнения <, >, =, шестнадцатеричные числа, знак присваивания (:=).

13. Входной язык содержит арифметические выражения, разделенные символом; (точка с запятой). Арифметические выражения состоят из идентификаторов, символьных констант (один символ в одинарных кавычках), знака присваивания (:=), знаков операций +, -, *, / и круглых скобок.

14. Входной язык содержит логические выражения, разделенные символом; (точка с запятой). Логические выражения состоят из идентификаторов, символьных констант ‘T’ и ‘F’, знака присваивания (:=), знаков операций or, xor, and, not и круглых скобок.

15. Входной язык содержит операторы условия типа ifthenelse и ifthen, разделенные символом; (точка с запятой). Операторы условия содержат идентификаторы, знаки сравнения <, >, =, строковые константы (последовательность символов в двойных кавычках), знак присваивания (:=).

16. Входной язык содержит операторы цикла типа for ( …; …; … ) do, разделенные символом; (точка с запятой). Операторы цикла содержат идентификаторы, знаки сравнения <, >, =, строковые константы (последовательность символов в двойных кавычках), знак присваивания (:=).

Примечание:

  1. римскими числами считать последовательности больших латинских букв X, V и I;
  2. шестнадцатеричными числами считать последовательность цифр и символов ‘a’, ‘b’, ‘c’,’d’, ’e’ и ‘f’, начинающуюся с цифры (например: 89, 45ac9, 0abc4);
  3. задание по лабораторной работе №2 взаимосвязано с заданием по лабораторной работе №3, для уточнения состава входного языка можно посмотреть грамматику, заданную в работе №3 по соответствующему варианту.

Рекомендуемая литература

1. Молчанов А.Ю. Системное программное обеспечение. Лабораторный практикум. – СПб.: Питер, 2005 – 284 с.

2. Молчанов А.Ю. Системное программное обеспечение: Учебник для вузов. 3-е изд. — СПб.: Питер, 2010 — 400 с.

3. Свердлов С.З. Языки программирования и методы трансляции: учеб. пособие. — СПб.: Питер, 2007 — 400 с.

4. Гордеев А.В., Молчанов А.Ю. Системное программное обеспечение – СПб.: Питер, 2001 (2002) - 736 с.

5. Ахо А., Сети Р., Ульман Дж. Компиляторы: принципы, технологии и инструменты: Пер. с англ. — М.: Издательский дом «Вильямс», 2003 — 768 с.

6. Робин Хантер Основные концепции компиляторов – М.: Издательский дом «Вильямс», 2002 – 256 с.

7. Бржезовский А.В., Корсакова Н.В., Фильчаков В.В. Лексический и синтаксический анализ. Формальные языки и грамматики - Л.: ЛИАП, 1990.

8. Льюис Ф. и др. Теоретические основы построения компиляторов - М.: Мир, 1979.

9. Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции - М.: Мир, 1978, т.1.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: