Вход

ВКР Реализация основных функций высокоуровневого языка программирования с дальнейшим преобразованием их в язык Lua

Рекомендуемая категория для самостоятельной подготовки:
Дипломная работа*
Код 496855
Дата создания 2023
Мы сможем обработать ваш заказ (!) 6 мая в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
2 930руб.
КУПИТЬ

Описание

Оригинал документа в pdf, конвертация в Word автоматическая (в word могут быть недочеты, которые вы легко исправите самостоятельно)


В данной работе создан прототип расширения синтаксиса для языка программирования Lua, которой при компиляции преобразовывается в необработанный Lua. В процессе анализа синтаксиса, семантики и стандартной библиотеки Lua, были выявлены недостатки, которые нужно будут исправлены в прототипе. Синтаксис языка был значительно расширен, в него добавлены некоторые функции из популярных объектно-ориентированных языков программирования, например быстрая проверка существования объектов и упрощенные анонимные функции. Добавлена простая версия статической типизации, позволяющая избежать ошибок во время выполнения программы, когда переменная не была ожидаемого типа. Добавлена поддержка создания классов. Классы позволяют наследовать логику от классов и объектов Lua, реализовать интерфейсы, а так же включать поля и методы из других Lua объектов. Наконец, на основе классов, была добавлена стандартная библиотека, позволяющая упростить работу с простейшими типами данных. Все расширения языка направлены на улучшение работы с языком Lua в проектах среднего и большого размера

Lua - это скриптовый язык программирования, одной из ключевых

оссобенностей которого является его простота в обучении и небольшой размер, что позволяет даже начинающим программистам быстро научиться создавать собственные программы. Одно из самых популярных применений языка Lua – это его использование в создании видеоигр. Наиболее известные игровые онлайн-платформы, использующие Lua: Roblox и Garry’s Mod.

Например, Roblox – игровая платформа с более 200 миллионами активных пользователей [1], которая позволяет создавать свои собственные и играть в созданные другими пользователями игры. Игры в Roblox создаются в среде объектно-ориентированного программирования (ООП), использующей язык программирования Lua.

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

Подобные недостатки аналогичного языка JavaScript послужили причиной создания TypeScript [2] - статически типизированной версии с дополненными функциями синтаксиса.

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

Цель работы - создать прототип языка программирования, который исправит недостатки синтаксиса, добавит систему работы с классами, базовую статическую типизацию и расширит стандартную библиотеку. Код созданных программ на языке-прототипе будет преобразовываться в программный код Lua.


Задачами дипломной работы в связи с указанной целью являются:

- Проанализировать недостатки Lua и выявить проблемы, которые

необходимо решить;

- Расширить стандартный функционал Lua, спроектировав новый

синтаксис, который позволит создать классы, статические типы, синтаксический сахар;

- Создать компилятор, который будет выполнять статическую проверку типов для классов и переменных, а также преобразовывать код прототипа в код Lua;

- Улучшить стандартную библиотеку, добавив туда новые модули,

основанные на классовой системе.

Данная работа прошла апробацию на конференции ИТТММ-2021.

Содержание

Введение ................................................................................................................... 2 1 Обзор Lua, его экосистемы и похожих решений ............................................... 4

1.1 История создания .......................................................................................... 4 1.2 Lua в разработке игр ..................................................................................... 5 1.3 Обзор похожих решений............................................................................... 9

2 Анализ недостатков Lua .................................................................................... 12 2.1 Анализ синтаксиса ...................................................................................... 13 2.2 Анализ семантики языка ............................................................................ 17 2.3 Анализ стандартной библиотеки и объектно ориентированного

программирования ............................................................................................ 19

3 Создание прототипа ........................................................................................... 26 3.1 Создание синтаксиса для прототипа ......................................................... 26 3.2 Компиляция кода прототипа ....................................................................... 36 3.2.1 Токенизация и создание синтаксического дерева ................................. 37 3.2.2 Система типизации .................................................................................. 40 3.2.3 Преобразование в код Lua ....................................................................... 43 3.3 Создание стандартной библиотеки для работы с таблицами ................. 49 Заключение ............................................................................................................. 53

Список литературы

1. DEFYING PREDICTIONS, ROBLOX MAU HITS ALL TIME HIGH AT 202

MILLION ESTIMATED USERS IN APRIL 2021, PICKING UP 10 MILLION USERS COMPARED TO THE MONTH BEFORE. – Текст : электронный // Rtrack : [сайт]. - URL: https://blog.rtrack.live/index.php/2021/05/04/defying-predictions-roblox-

mau-hits-all-time-high-at-202-million-estimated-users-in-april-2021-picking-up-10-million-users-compared-to-the-month-before (дата обращения 04.05.2021).

2. TypeScript : Typed JavaScript at Any Scale : сайт. - URL: https://www.typescriptlang.org (дата обращения 04.05.2021) – Текст : электронный.

3. Roberto I., L.H. de Figueiredo, Waldemar C. The evolution of Lua // HOPL III: Proceedings of the third ACM SIGPLAN conference on History of programming languages. San Diego, California 2007. – С. 2–1–2–26.

4. PEP 602 -- Annual Release Cycle for Python : Python Software Foundation : сайт. – URL: https://www.python.org/dev/peps/pep-0602 (дата обращения 04.05.2021) – Текст : электронный.

5. Java to Move to 6-Monthly Release Cadence : InfoQ. – URL: https://www.infoq.com/news/2017/09/Java6Month/ (дата обращения 04.05.2021) – Текст : электронный.

6. Mogilefsky, B. Lua in Grim Fandango. / B, Mogilefsky. - 1999. - URL: http://www.grimfandango.net/?page=articles&pagenumber=2 (дата обращения 04.05.2021) – Текст : электронный.

7. Announcing Game Developer magazine's 2011 Front Line Award winners : Gamasutra : сайт. - URL: https://www.gamasutra.com/view/news/129084/Announcing_Game_Develop er_magazines_2011_Front_Line_Award_winners.php. –Дата публикации: 13.01.2012. – Текст : электронный.

8. Jung K., Brown A. Beginning Lua Programming : Wrox, 2007. – ISBN 978-

0470069172 – Текст : непосредственный.

9. Manyen M., Schuytema P. Game Development with Lua : Delmar Thomson

Learning, 2005. - ISBN 978-1584504047. – Текст : непосредственный.

10. Kasuba M. Lua Game Development Cookbook: Over 70 recipes that will help

you master the elements and best practices required to build a modern game engine using Lua : Packt Publishing, 2015. – 360 с. - ISBN 978-1849515504 – Текст : непосредственный.

11. Young D. Learning Game AI Programming with Lua : Packt Publishing, 2014.

– 352 с. – ISBN 978-1783281336 – Текст : непосредственный.

12. Brumbaugh Z. Coding Roblox Games Made Easy: The ultimate guide to

creating games with Roblox Studio and Lua programming : Packt Publishing, 2021. – 238 с. – ISBN 978-1800561991 – Текст : непосредственный.

13. Игры, использующие язык Lua : Википедия. Свободная энциклопедия. -

URL:

https://ru.wikipedia.org/wiki/Категория:Игры,_использующие_язык_Lua (дата обращения 04.05.2021) – Текст : электронный.

14. Roblox’s 10 biggest games of all time — each with more than a billion plays : Venture Beat. - URL: https://venturebeat.com/2019/12/09/robloxs-10-biggest-games-of-all-time-each-with-more-than-a-billion-plays/ (дата обращения 04.05.2021) – Текст : электронный.

15. Pall, M. Re: Port bitop to 5.3?. – 2015. - URL: https://www.freelists.org/post/luajit/Port-bitop-to-53,1 (дата обращения 13.05.2021) – Текст : электронный.

16. Luacheck : Github : сайт. - URL: https://github.com/mpeterv/luacheck/ (дата

обращения 04.05.2021) – Текст : электронный.

17. Luanalysis (an EmmyLua fork) for IntelliJ IDEA : Github : сайт. - URL:

https://github.com/Benjamin-Dobell/IntelliJ-Luanalysis (дата обращения 04.05.2021) – Текст : электронный.

18. Metalua : Github : сайт. – URL: https://github.com/fab13n/metalua (дата

обращения 04.05.2021) – Текст : электронный.

19. Tidal Lock: optional static type checking and inference for Lua : lua-users :

сайт. - URL: http://lua-users.org/lists/lua-l/2013-02/msg00403.html (дата обращения 04.05.2021) – Текст : электронный.

20. Sol - Typesafe Lua : Github : сайт. – URL: https://github.com/emilk/sol (дата

обращения 04.05.2021) – Текст : электронный.

21. Typed Lua: An Optional Type System for Lua // Dyla'14: Proceedings of the

Workshop on Dynamic Languages and Applications. Edinburgh, United Kingdom, 2014. – С. 1-10.

22. Teal: Github : сайт. – URL: https://github.com/teal-language/tl (дата

обращения 04.05.2021) – Текст : электронный.

23. MoonScript : A programmer friendly language that compiles to Lua. : сайт. –

URL: https://moonscript.org (дата обращения 04.05.2021) – Текст : электронный.

24. Declaring Global Variables : Programming in Lua. : сайт. - URL: https://www.lua.org/pil/14.2.html (дата обращения 13.05.2021) – Текст : электронный.

25. Table Manipulation : Lua 5.1 Reference Manual : сайт. – URL: https://www.lua.org/manual/5.1/manual.html#5.5 (дата обращения 04.05.2021) – Текст : электронный.

26. Kim B. B. Foundations of Object-oriented Languages: Types and Semantics. :

MIT Press, 2002. - С. 17-21

27. The Packrat Parsing and Parsing Expression Grammars Page / B. Ford : сайт.

- URL: https://bford.info/packrat/ (дата обращения 13.05.2021) – Текст : электронный.

28. Jeremy G. S., Walid Taha. Gradual typing for objects. // In Proceedings of the

21st European Conference on Object-Oriented Programming. -С. 2–27

29. Jeremy G. S., Walid T. Gradual typing for functional languages. // In Scheme

and Functional Programming Workshop. - 2006. -С. 81–92

30. Benjamin C. P., David N. T. Local type inference // ACM Transactions on Programming Languages and Systems (TOPLAS). – Вып. 22. - 2000. -С. 1– 44.

Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00494
© Рефератбанк, 2002 - 2024