расширение возможностей компилятора
Заказать уникальную курсовую работу- 19 19 страниц
- 5 + 5 источников
- Добавлена 18.02.2024
- Содержание
- Часть работы
- Список литературы
1. Постановка задачи 4
2. Описание грамматики 5
3. Изменение компилятора 7
3.1. Изменение лексического анализатора 7
3.2. Изменение синтаксического анализатора 7
4. Тесты 9
Заключение 18
Литература 19
Циклы отработали в соответствии с логикой исходной программы.Тест 3 проверяет корректность общего синтаксиса оператора и работу цикла с разной величиной шага для вычисления элемента последовательности с заданным номером.Последовательность задана рекуррентной формулой:для i<3 a1=1; a2=2; для i>2 ai=ai-2+ai-1Исходный код:BEGINn:=READ; f1:=1; f2:=1; FOR i:=1 TO n-1 DOft:=f1; f1:=f2; f2:=f2+ft OD; WRITE(f1)ENDКод для виртуальной машины:0:INPUT1:STORE02:PUSH13:STORE14:PUSH15:STORE26:PUSH17:STORE38:LOAD09:PUSH110:SUB11:STORE412:PUSH113:STORE514:LOAD315:LOAD416:COMPARE417:JUMP_NO3118:LOAD119:STORE620:LOAD221:STORE122:LOAD223:LOAD624:ADD25:STORE226:LOAD327:LOAD528:ADD29:STORE330:JUMP1431:LOAD132:PRINT33:STOPРезультат работы программыпредставлен на рисунке 4.Рисунок 4 – Результат теста 3Цикл отработал в соответствии с логикой исходной программы.Ответверен.Тест 4 проверяеткорректностьотработки ошибки, когда не указан параметр цикла.Исходныйкод:BEGINx:=READ;s:=0;FOR :=1 TO x DO WRITE(i);s:=s+i OD;WRITE(s)ENDРезультат работы программыпредставлен на рисунке 5.Рисунок 5 – Результат теста 4Синтаксические ошибки указаны верно.Тест 5 проверяеткорректностьотработки ошибки, когда пропущено ключевое слово ‘TO’или ‘DO’.Исходный код:BEGINx:=READ; FOR i:= 1 x step 2 do WRITE(i) OD; FOR i:= 1 to x WRITE(i) OD;ENDРезультат работы программыпредставлен на рисунке 6.Рисунок 6 – Результат теста 5Синтаксические ошибки указаны верно.Тест 6 проверяеткорректностьотработки ошибки, когда пропущены значения в различных местах заголовка цикла.Исходный код:BEGINx:=READ; FOR i:= TO x do WRITE(i) OD; FOR i:=1 TO do WRITE(i) OD; FOR i:=1 TO x step do WRITE(i)ODENDРезультат работы программыпредставлен на рисунке 7.Рисунок 7 – Результат теста 6Синтаксические ошибки указаны верно.ЗаключениеВ ходе работы была изучена грамматика языка Милан и структура компилятора СMilan. Разработаны правило грамматики для оператора цикла с параметром for, внесены необходимые изменения в компилятор для реализации этой циклической конструкции.Тестирование показало корректность работы измененного компилятора CMilanи выполнения полученного исполняемого кода виртуальной машиной.ЛитератураА. Ахо, М. Лам, Р. Сети, Дж. Ульман, Компиляторы: принципы, технологии и инструментарий, 2-е изд. М.: Вильямс, 2011.Основные алгоритмические конструкции. [Электронный ресурс] URL: http://sdo.vzm.su/informatika/inf9-4.shtml(дата обращения: 19.01.2024)Вирт Никлаус. Построение компиляторов / Пер. с англ. Борисов Е. В., Чернышов Л. Н. - Москва : ДМК Пресс, 2016. - 192 с. - ISBN 978-5-97060-219-5. – [Текст: электронный] URL: https://www.ibooks.ru/bookshelf/384356/reading(дата обращения: 19.01.2024)Форма Бэкуса-Наура (БНФ). [Электронный ресурс] URL:https://informatics.msk.ru/mod/page/view.php?id=19546 (дата обращения: 19.01.2024)Синтаксический анализатор методом рекурсивного спуска. Что это такое? [Электронный ресурс] URL: https://codernet.ru/articles/drugoe/sintaksicheskij_analizator_metodom_rekursivnogo_spuska_chto_eto_takoe/(дата обращения: 19.01.2024)
2. Основные алгоритмические конструкции. [Электронный ресурс] URL: http://sdo.vzm.su/informatika/inf9-4.shtml (дата обращения: 19.01.2024)
3. Вирт Никлаус. Построение компиляторов / Пер. с англ. Борисов Е. В., Чернышов Л. Н. - Москва : ДМК Пресс, 2016. - 192 с. - ISBN 978-5-97060-219-5. – [Текст: электронный] URL: https://www.ibooks.ru/bookshelf/384356/reading (дата обращения: 19.01.2024)
4. Форма Бэкуса-Наура (БНФ). [Электронный ресурс] URL: https://informatics.msk.ru/mod/page/view.php?id=19546 (дата обращения: 19.01.2024)
5. Синтаксический анализатор методом рекурсивного спуска. Что это такое? [Электронный ресурс] URL: https://codernet.ru/articles/drugoe/sintaksicheskij_analizator_metodom_rekursivnogo_spuska_chto_eto_takoe/ (дата обращения: 19.01.2024)