Preview

Труды Института системного программирования РАН

Расширенный поиск

Библиотека для разработки компиляторов

https://doi.org/10.15514/ISPRAS-2022-34(5)-5

Аннотация

Работа посвящена разработке библиотеки, предназначенной для реализации компиляторов. Статья содержит описание возможностей библиотеки и основных принципов её функционирования. В ходе работы была изучена и реализована генерация синтаксических анализаторов с помощью LR(1)-автоматов, были спроектированы и реализованы два вспомогательных языка: язык запросов к семантической сети и язык, предназначенный для генерации исполняемого кода. Результатом работы является библиотека для платформы .NET (библиотека тестировалась, в частности, для языка C#), которая содержит классы, существенно облегчающие реализацию синтаксического анализа исходного кода, семантического анализа и генерацию исполняемого файла. Данная библиотека не имеет внешних зависимостей, кроме стандартной библиотеки .NET.

Об авторах

Сергей Владимирович МИРОНОВ
Саратовский государственный университет
Россия

Кандидат физико-математических наук, доцент, декан факультета компьютерных наук и информационных технологий



Инна Александровна БАТРАЕВА
Саратовский государственный университет
Россия

Кандидат физико-математических наук, доцент, заведующая кафедрой технологий программирования



Павел Дмитриевич ДУНАЕВ
Саратовский государственный университет
Россия

Магистрант направления «Математическое обеспечение и администрирование информационных систем»



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

1. Lewis P., Stearns R. Syntax-Directed Transduction. Journal of the ACM, vol. 15, issue 3, 1968, pp. 465-488.

2. Knuth D. On the Translation Languages from Left to Right. Information and Control, vol. 8, issue 6, 1965, pp. 607-639.

3. DeRemer F. Practical Translators for LR(k) Languages. PhD Thesis, Massachusetts Institute of Technology, 1969, 215 p.

4. Lang B. Deterministic Techniques for Efficient Non-Deterministic Parsers. Lecture Notes in Computer Science, vol. 14, 1974, pp. 255-269.

5. Goloveshkin A.V. Tolerant parsing using modified LR(1) and LL(1) algorithms with embedded “Any” symbol. Trudy ISP RAN/Proc. ISP RAS, vol. 31, issue 3, 2019, pp. 7-28. DOI: 10.15514/ISPRAS-2019-31(3)-1.

6. Савицкий В.О., Сидоров Д.В. «Ленивый» анализ исходного кода на языках С и С++. Труды ИСП РАН, том 23, 2012 г., стр. 133-142 / Savitsky V.O., Sidorov D.V. Lazy source code analysis for C/C++ languages. Trudy ISP RAN/Proc. ISP RAS, vol. 23, 2012, pp. 133-142 (in Russian). DOI: 10.15514/ISPRAS-2012-23-8.

7. GNU Bison. Available at: https://www.gnu.org/software/bison/.

8. ANTLR. Available at: https://www.antlr.org/.

9. Coco/R. Available at: https://ssw.jku.at/Research/Projects/Coco/.

10. Белеванцев А.А., Велесевич Е.А. Анализ сущностей программ на языках Си/Си++ и связей между ними для понимания программ. Труды ИСП РАН, том 27, вып. 2, 2015 г., стр. 53-64. / A. Belevantsev, E. Velesevich. Analyzing C/C++ Code Entities and Relations for Program Understanding Trudy ISP RAN /Proc. ISP RAS, vol. 27, issue 2, 2015, pp. 53-64 (in Russian). DOI: 10.15514/ISPRAS-2015-27(2)-4.

11. The LLVM Compiler Infrastructure. Available at: https://llvm.org/.

12. Microsoft Docs: System.Reflection.Emit Namespace. Available at: https://learn.microsoft.com/en-us/dotnet/api/system.reflection.emit?view=netstandard-2.0.

13. The Open Group Base Specifications Issue 7, 2018 edition, IEEE Std 1003.1™-2017 (Revision of IEEE Std 1003.1-2008). Chapter 9. Regular Expressions. Available at: https://pubs.opengroup.org/onlinepubs/9699919799.

14. Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции. Том 1: Синтаксический анализ. М., Издательство МИР, 1978, 616 стр. / Aho A., Ullman J. The Theory of Parsing, Translation and Compiling. Volume 1: Parsing. Prentice Hall, 1972, 542 p.

15. Ахо А., Лам М. и др. Компиляторы. Принципы, технологии и инструментарий. М., Издательский дом Вильямс, 2008, 1178 стр. / Aho A., Lam M. et al. Principles, Techniques, & Tools. M., Addison Wesley, 2006, 1040 p.

16. Microsoft Docs: HeapAlloc function (heapapi.h). Available at: https://learn.microsoft.com/en-us/windows/win32/api/heapapi/nf-heapapi-heapalloc.

17. AMD64 Architecture Programmer’s Manual: Volumes 1-5. Available at: https://www.amd.com/system/files/TechDocs/40332_4.05.pdf.

18. Microsoft Portable Executable and Common Object File Format Specification. Revision 11 – June 20, 2017. Available at: https://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/pecoff.docx.


Рецензия

Для цитирования:


МИРОНОВ С.В., БАТРАЕВА И.А., ДУНАЕВ П.Д. Библиотека для разработки компиляторов. Труды Института системного программирования РАН. 2022;34(5):77-88. https://doi.org/10.15514/ISPRAS-2022-34(5)-5

For citation:


MIRONOV S.V., BATRAEVA I.A., DUNAEV P.D. Library for Development of Compilers. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2022;34(5):77-88. (In Russ.) https://doi.org/10.15514/ISPRAS-2022-34(5)-5



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)