Указана в файле

Заказать уникальную курсовую работу
Тип работы: Курсовая работа
Предмет: Автоматизация
  • 25 25 страниц
  • 5 + 5 источников
  • Добавлена 11.05.2016
1 000 руб.
  • Содержание
  • Часть работы
  • Список литературы
  • Вопросы/Ответы
Задание 2
Введение 3
1. Определение грамматики модельного исходного языка 4
2. Лексический анализатор программы 6
3. Синтаксический анализатор программы 11
4. Генерация объектного представления программы 14
5. Тестирование разработанной программы 15
Заключение 24
Библиографический список 25
Фрагмент для ознакомления

Для проверки правильности перевода вычислим значение выражения по инфиксной записи и ПОЛИЗ, задавшись произвольными значениями переменных.
-ИЗ(a*a-2*a+1)*ИЗ(9)+(-a*b*c+b)+(a^3-1)/(a*a+a+1)
Таблица лексем
№ п/п Тип Лексема № п/п Тип Лексема № п/п Тип Лексема № п/п Тип Лексема 1 Delim - 13 delim ) 25 delim + 37 delim ( 2 Delim ИЗ 14 delim * 26 var b 38 var a 3 Delim ( 15 delim ИЗ 27 delim ) 39 delim * 4 Var a 16 const 9 28 delim + 40 var a 5 Delim * 17 delim + 29 delim ( 41 delim + 6 Var a 18 delim ( 30 var a 42 var a 7 Delim - 19 delim - 31 delim ^ 43 delim + 8 const 2 20 var a 32 const 3 44 const 1 9 delim * 21 delim * 33 delim - 45 delim ) 10 var a 22 var b 34 const 1 46 11 delim + 23 delim * 35 delim ) 47 12 const 1 24 var c 36 delim /
Программа ПОЛИЗ
Лексема a a * 2 a * - 1 + ИЗ (-) 9 ИЗ * a (-) b * c Номер 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Лексема * b + + a 3 ^ 1 - a a * a + 1 + / + Номер 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
Пусть a=2; b=3; c=4
Ход выполнения программы
Стек Текущий элемент ПОЛИЗ Операция a 0 a поместить в стек значение a 2, a 1 a поместить в стек значение a 2, 2, a 2 * извлечь из стека два значения и поместить в стек их произведение 4, a 3 2 поместить в стек константу 2 2, 4, a 4 a поместить в стек значение a 2, 2, 4, a 5 * извлечь из стека два значения и поместить в стек их произведение 4, 4, a 6 - извлечь из стека два значения и поместить в стек их разность 0, a 7 1 поместить в стек константу 1 1, 0, a 8 + извлечь из стека два значения и поместить в стек их сумму 1, a 9 ИЗ извлечь из стека одно значение и поместить в стек квадратный корень 1, a 10 (-) извлечь из стека одно значение, поменять знак и поместить в стек -1, a 11 9 поместить в стек константу 9 9, -1, a 12 ИЗ извлечь из стека одно значение и поместить в стек квадратный корень 3, -1, a 13 * извлечь из стека два значения и поместить в стек их произведение
Стек Текущий элемент ПОЛИЗ Операция -3, a 14 a поместить в стек значение a 2, -3, a 15 (-) извлечь из стека одно значение, поменять знак и поместить в стек -2, -3, a 16 b поместить в стек значение b 3, -2, -3, a 17 * извлечь из стека два значения и поместить в стек их произведение -6, -3, a 18 c поместить в стек значение c 4, -6, -3, a 19 * извлечь из стека два значения и поместить в стек их произведение -24, -3, a 20 b поместить в стек значение b 3, -24, -3, a 21 + извлечь из стека два значения и поместить в стек их сумму -21, -3, a 22 + извлечь из стека два значения и поместить в стек их сумму -24, a 23 a поместить в стек значение a 2, -24, a 24 3 поместить в стек константу 3 3, 2, -24, a 25 ^ извлечь из стека два значения и поместить в стек их степень 8, -24, a 26 1 поместить в стек константу 1 1, 8, -24, a 27 - извлечь из стека два значения и поместить в стек их разность 7, -24, a 28 a поместить в стек значение a 2, 7, -24, a 29 a поместить в стек значение a 2, 2, 7, -24, a 30 * извлечь из стека два значения и поместить в стек их произведение 4, 7, -24, a 31 a поместить в стек значение a 2, 4, 7, -24, a 32 + извлечь из стека два значения и поместить в стек их сумму 6, 7, -24, a 33 1 поместить в стек константу 1 1, 6, 7, -24, a 34 + извлечь из стека два значения и поместить в стек их сумму 7, 7, -24, a 35 / извлечь из стека два значения и поместить в стек их частное 1, -24, a 36 + извлечь из стека два значения и поместить в стек их сумму Результат равен –23, что совпадает с результатом вычисления на калькуляторе в инфиксной форме.
ПОЛИЗ выражения, полученный с помощью тестового приложения, приведен в таблице ниже. Результат совпадает с ПОЗИЗ, сформированным вручную.
Адр. Лексема Адр. Лексема Адр. Лексема Адр. Лексема 0 a 10 (-) 20 b 30 * 1 a 11 9 21 + 31 a 2 * 12 (sq) 22 + 32 + 3 2 13 * 23 a 33 1 4 a 14 a 24 3 34 + 5 * 15 (-) 25 ^ 35 / 6 - 16 b 26 1 36 + 7 1 17 * 27 - 8 + 18 c 28 a 9 (sq) 19 * 29 a Окно приложения с результатами разбора тестового выражения приведено на рис.2.

Рис.2 Окно программы с результатами разбора тестового выражения
Аналогично проведем тестирование на следующем выражении:
-(a+2)*ИЗ(a*(a+2*b)+b*b)+(a^3-c*c*c)/(a-c)
Таблица лексем
№ п/п Тип Лексема № п/п Тип Лексема № п/п Тип Лексема № п/п Тип Лексема 1 delim - 12 delim ( 23 delim ) 34 var c 2 delim ( 13 var a 24 delim + 35 delim ) 3 var a 14 delim + 25 delim ( 36 delim / 4 delim + 15 const 2 26 var a 37 delim ( 5 const 2 16 delim * 27 delim ^ 38 var a 6 delim ) 17 var b 28 const 3 39 delim - 7 delim * 18 delim ) 29 delim - 40 var c 8 delim ИЗ 19 delim + 30 var c 41 delim ) 9 delim ( 20 var b 31 delim * 10 var a 21 delim * 32 var c 11 delim * 22 var b 33 delim *
Программа ПОЛИЗ
Лексема a 2 + (-) a a 2 b * + * b b * + ИЗ Номер 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Лексема * a 3 ^ c c * c * - a c - / + Номер 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Пусть a=1 b=2 c=3.
Ход выполнения программы
Стек Текущий элемент ПОЛИЗ Операция пуст 1 a поместить в стек адрес a a 2 a поместить в стек значение a 1, a 3 2 поместить в стек константу 2 2, 1, a 4 + извлечь из стека два значения и поместить в стек их сумму 3, a 5 (-) извлечь из стека одно значение, поменять знак и поместить в стек -3, a 6 a поместить в стек значение a 1, -3, a 7 a поместить в стек значение a 1, 1, -3, a 8 2 поместить в стек константу 2 2, 1, 1, -3, a 9 b поместить в стек значение b 2, 2, 1, 1, -3, a 10 * извлечь из стека два значения и поместить в стек их произведение 4, 1, 1, -3, a 11 + извлечь из стека два значения и поместить в стек их сумму 5, 1, -3, a 12 * извлечь из стека два значения и поместить в стек их произведение 5, -3, a 13 b поместить в стек значение b 2, 5, -3, a 14 b поместить в стек значение b 2, 2, 5, -3, a 15 * извлечь из стека два значения и поместить в стек их произведение 4, 5, -3, a 16 + извлечь из стека два значения и поместить в стек их сумму 9, -3, a 17 ИЗ извлечь из стека одно значение и поместить в стек квадратный корень 3, -3, a 18 * извлечь из стека два значения и поместить в стек их произведение -9, a 19 a поместить в стек значение a 1, -9, a 20 3 поместить в стек константу 3 3, 1, -9, a 21 ^ извлечь из стека два значения и поместить в стек их степень 1, -9, a 22 c поместить в стек значение c 3, 1, -9, a 23 c поместить в стек значение c 3, 3, 1, -9, a 24 * извлечь из стека два значения и поместить в стек их произведение 9, 1, -9, a 25 c поместить в стек значение c 3, 9, 1, -9, a 26 * извлечь из стека два значения и поместить в стек их произведение 27, 1, -9, a 27 - извлечь из стека два значения и поместить в стек их разность -26, -9, a 28 a поместить в стек значение a 1, -26, -9, a 29 c поместить в стек значение c 3, 1, -26, -9, a 30 - извлечь из стека два значения и поместить в стек их разность -2, -26, -9, a 31 / извлечь из стека два значения и поместить в стек их частное 13, -9, a 32 + извлечь из стека два значения и поместить в стек их сумму 4, a 33 := извлечь из стека значение и адрес, поместить значение по адресу Результат равен 4, что совпадает с результатом вычисления на калькуляторе в инфиксной форме.
ПОЛИЗ выражения, полученный с помощью тестового приложения, приведен в таблице ниже. Результат совпадает с ПОЗИЗ, сформированным вручную.
Адр. Лексема Адр. Лексема Адр. Лексема Адр. Лексема 0 a 8 * 16 * 24 * 1 2 9 + 17 a 25 - 2 + 10 * 18 3 26 a 3 (-) 11 b 19 ^ 27 c 4 a 12 b 20 c 28 - 5 a 13 * 21 c 29 / 6 2 14 + 22 * 30 + 7 b 15 (sq) 23 c .
Рис.3 Окно программы с результатами разбора тестового выражения
Окно приложения с результатами разбора тестового выражения приведено на рис.3.
При разборе выражения могут возникать ошибки четырех типов. На проходе лексического анализатора это присутствие в выражении символа, отсутствующего в алфавите или неверный формат константы с плавающей точкой. На проходе синтаксического анализатора это непарные скобки или неверный множитель. Окна приложения с сообщениями об ошибках этих четырех типов показаны на рис. 4-8.

Рис.4 Окно программы с сообщением об ошибке

Рис.5 Окно программы с сообщением об ошибке

Рис.6 Окно программы с сообщением об ошибке


Рис.7 Окно программы с сообщением об ошибке

Рис.8 Окно программы с сообщением об ошибке
Заключение
Повышение уровня и совершенствование технологий разработки программных систем в немалой степени обеспечивается применяемыми алгоритмическими языками и компиляторами с этих языков.
Применение на практике теоретических знаний в области теории формальных языков, грамматик, автоматов и методов трансляции способствует пониманию внутренних механизмов работы компиляторов и как следствие лучшему применению существующих языков программирования.
Библиографический список
1. Хантер Р. Проектирование и конструирование компиляторов/Пер с англ.; Предисл. В. М. Савинкова. – М.: Финансы и статистика, 1984. – 232 с., ил.
2. Ишакова Е. Н. Разработка компиляторов: Методические указания к курсовой работе. – Оренбург: ГОУ ОГУ, 2005. – 50 с.
3. Льюис Ф., Розенкранц Д., Стирнз Р. Теоретические основы проектирования компиляторов/Пер с англ. – М.: Мир, 1979. – 654 с., ил.
4. Системы автоматизированного проектирования: Учеб. пособие для втузов: В 9 кн./Под ред. Норенкова И.П. Кн. 3: Федорук В.Г., Черненький В.М. Информационное и прикладное программное обеспечение. – М.: Высшая школа, 1986. – 159 с., ил.
5. Заболеева-Зотова А.В. Лекции по предмету «Основы трансляции» /текст: Лингвистическое обеспечение САПР.mht










25

1. Хантер Р. Проектирование и конструирование компиляторов/Пер с англ.; Предисл. В. М. Савинкова. – М.: Финансы и статистика, 1984. – 232 с., ил.
2. Ишакова Е. Н. Разработка компиляторов: Методические указания к курсовой работе. – Оренбург: ГОУ ОГУ, 2005. – 50 с.
3. Льюис Ф., Розенкранц Д., Стирнз Р. Теоретические основы проектирования компиляторов/Пер с англ. – М.: Мир, 1979. – 654 с., ил.
4. Системы автоматизированного проектирования: Учеб. пособие для втузов: В 9 кн./Под ред. Норенкова И.П. Кн. 3: Федорук В.Г., Черненький В.М. Информационное и прикладное программное обеспечение. – М.: Высшая школа, 1986. – 159 с., ил.
5. Заболеева-Зотова А.В. Лекции по предмету «Основы трансляции» /текст: Лингвистическое обеспечение САПР.mht

Вопрос-ответ:

Что такое грамматика модельного исходного языка?

Грамматика модельного исходного языка - это набор правил, определяющих структуру и синтаксис языка программирования. Она описывает, какие конструкции и выражения языка допустимы и в каком порядке они могут быть использованы.

Что делает лексический анализатор программы?

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

Что такое синтаксический анализатор программы?

Синтаксический анализатор программы проверяет корректность синтаксиса исходного кода программы согласно грамматике языка. Он анализирует последовательность лексем, определяет связи между ними и строит дерево разбора, которое представляет структуру программы. Если синтаксический анализатор обнаруживает ошибки в синтаксисе, он генерирует соответствующие сообщения об ошибках.

Что происходит на шаге генерации объектного представления программы?

На этом шаге генерируется объектное представление программы, которое может быть выполнено компьютером. Объектное представление может представляться в виде промежуточного кода, байт-кода или машинного кода, в зависимости от целевой платформы. Генерация объектного представления включает в себя преобразование высокоуровневых конструкций языка программирования в низкоуровневые инструкции, понятные компьютеру.

Зачем нужно тестирование разработанной программы?

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

Что такое модельный исходный язык?

Модельный исходный язык - это формальная грамматика, которая определяет правила и синтаксические конструкции, используемые в программе. Он служит основой для разработки лексического и синтаксического анализаторов программы.

Что делает лексический анализатор программы?

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

Что такое синтаксический анализатор программы?

Синтаксический анализатор программы проверяет, соответствует ли последовательность лексем грамматике модельного исходного языка. Он имеет структуру, называемую синтаксическим деревом, которая отображает иерархическую структуру программы. Если исходный код не соответствует грамматике, синтаксический анализатор генерирует ошибки, указывающие на нарушение правил языка.

Что представляет собой генерация объектного представления программы?

Генерация объектного представления программы - это процесс преобразования синтаксического дерева программы во внутреннее представление, которое будет использоваться компилятором или интерпретатором для выполнения кода. В результате этого процесса создается набор объектов и структур данных, которые представляют семантику программы и позволяют ее исполнять.