Details

Title: Сопоставление с образцом в языке программирования Kotlin: выпускная квалификационная работа бакалавра: 09.03.01 - Информатика и вычислительная техника ; 09.03.01_02 - Технологии разработки программного обеспечения
Creators: Воробьев Сергей Владимирович
Scientific adviser: Ахин Марат Халимович
Other creators: Беляев М. А.
Organization: Санкт-Петербургский политехнический университет Петра Великого. Институт компьютерных наук и технологий
Imprint: Санкт-Петербург, 2018
Collection: Выпускные квалификационные работы; Общая коллекция
Subjects: kotlin; сопоставление с образцом; компилятор
Document type: Bachelor graduation qualification work
File type: PDF
Language: Russian
Level of education: Bachelor
Speciality code (FGOS): 09.03.01
Speciality group (FGOS): 090000 - Информатика и вычислительная техника
Links: Отзыв руководителя; Рецензия
DOI: 10.18720/SPBPU/2/v18-5038
Rights: Доступ по паролю из сети Интернет (чтение, печать, копирование)
Record key: RU\SPSTU\edoc\57442

Allowed Actions:

Action 'Read' will be available if you login or access site from another network Action 'Download' will be available if you login or access site from another network

Group: Anonymous

Network: Internet

Annotation

Данная выпускная работа бакалавра посвящена разработке и внедрению возможностей механизма сопоставления с образцом в языке программирования Kotlin. Рассмотрены дизайнерские решения разработчиков популярных языков программирования, их преимущества и недостатки. Описаны артефакты разработки дизайна задания шаблонов и конвенции доступа к данным объекта, с учётом специфики языка Kotlin; алгоритмы обработки, анализа и преобразования исходного программного кода в байткод для Java Virtual Machine. В результате работы была создана изменённая версия компилятора, позволяющая обрабатывать программный код, использующий сопоставление с образцом.

Document access rights

Network User group Action
ILC SPbPU Local Network All Read Print Download
Internet Authorized users SPbPU Read Print Download
-> Internet Anonymous

Table of Contents

  • ВВЕДЕНИЕ
  • 1. Обзор современных подходов к реализации
    • 1.1. Использование сопоставления с образцом
    • 1.2. Сопоставление с образцом
      • 1.2.1. Разложение в кортеж
      • 1.2.2. Разложение в список
      • 1.2.3. Неявный деконструктор
      • 1.2.4. Явный деконструктор
      • 1.2.5. Шаблоны свойств
      • 1.2.6. Сравнение с константами
      • 1.2.7. Сравнение с переменными
      • 1.2.8. Сравнение с выражением
      • 1.2.9. Проверка типа
      • 1.2.10. Пустой шаблон
      • 1.2.11. Сопоставление с хвостом
      • 1.2.12. Конъюнкция шаблонов
      • 1.2.13. Дизъюнкция шаблонов
      • 1.2.14. Шаблоны с псевдонимами
      • 1.2.15. Вложенность шаблонов
      • 1.2.16. Дополнительная проверка
      • 1.2.17. Шаблоны отображения
      • 1.2.18. n+k шаблоны
    • 1.3. Актуальные реализации сопставления с образцом
    • 1.4. Возможности Kotlin
  • 2. Постановка задачи
  • 3. Проектирование дизайна сопоставления
    • 3.1. Синтаксис
      • 3.1.1. Сопоставление с шаблоном
      • 3.1.2. Элемент шаблона
      • 3.1.3. Шаблон выражения
      • 3.1.4. Шаблон объявления
      • 3.1.5. Шаблон разложения
      • 3.1.6. Шаблон сопоставления с хвостом списка
    • 3.2. Конвенции
      • 3.2.1. Обратная совместимость
  • 4. Проектирование алгоритмов сопоставления
    • 4.1. Алгоритм анализа сопоставления
    • 4.2. Алгоритм определения полноты списка условий
    • 4.3. Алгоритм генерации сопоставления
    • 4.4. Ограничения
  • 5. Реализация алгоритмов
    • 5.1. Устройство компилятора Kotlin
    • 5.2. Добавление новой функциональности
      • 5.2.1. Реализация разбора
      • 5.2.2. Реализация анализа
      • 5.2.3. Реализация генерации байткода
      • 5.2.4. Результаты
  • 6. Примеры программ с сопоставлением на языке Kotlin
    • 6.1. Упрощение поддерева бинарного выражения
    • 6.2. Расчёт размера списка присоединений JoinList
    • 6.3. Проверка типовых параметров класса
    • 6.4. Работа с потоком чисел, заданных в строке
  • 7. Тестирование
    • 7.1. Функциональное тестирование
    • 7.2. Случайное тестирование
  • ЗАКЛЮЧЕНИЕ
  • СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
  • ПРИЛОЖЕНИЕ А. Грамматика задания шаблонов для сопоставления
  • ПРИЛОЖЕНИЕ Б. Исходный код парсера шаблонов для сопоставления

Usage statistics

stat Access count: 110
Last 30 days: 0
Detailed usage statistics