Создайте свой собственный язык программирования: руководство программиста по разработке компиляторов, интерпретаторов и DSL для решения современных вычислительных задач на русском
Build Your Own Programming Language: A programmer's guide to designing compilers, interpreters, and DSLs for solving modern computing problems (B09926QMJB)
Купить и скачать электронную книгу в форматах PDF, EPUB, FB2, MOBI
Clinton L. Jeffery | #110: Программирование на Java
Написанная создателем языка программирования Unicon, эта книга покажет вам, как использовать языки программирования для сокращения времени и затрат на создание приложений для новых или специализированных областей вычислительной техники.
Основные характеристики
- Сократите время разработки и решите проблемы в предметной области вашего приложения, создав собственный язык программирования.
- Узнайте, как создавать парсеры, генераторы кода, программы для чтения файлов, анализаторы и интерпретаторы.
- Создайте альтернативу фреймворкам и библиотекам для решения задач, специфичных для конкретной предметной области.
Описание книги
Потребность в различных типах компьютерных языков быстро растет, и разработчики предпочитают создавать предметно-ориентированные языки для решения конкретных задач в предметной области. Создание собственного языка программирования имеет свои преимущества. Оно может стать противоядием от постоянно растущего размера и сложности программного обеспечения.
В этой книге вы начнёте с реализации фронтенда компилятора для вашего языка, включая лексический анализатор и парсер. Книга охватывает ряд обходов синтаксических деревьев, кульминацией которых является генерация кода для виртуальной машины байт-кода. Далее вы узнаете, как специфические для предметной области языковые особенности часто лучше всего представляются операторами и функциями, встроенными в язык, а не библиотечными функциями. В заключение мы рассмотрим, как реализовать сборку мусора, включая подсчёт ссылок и сборку мусора методом «пометки и очистки». На протяжении всей книги доктор Джеффри делится своим опытом создания языка программирования Unicon, чтобы лучше объяснить концепции, приводя соответствующие примеры как на Unicon, так и на Java, чтобы вы могли следовать коду на выбранном вами языке — либо на языке очень высокого уровня с расширенными возможностями, либо на языке массового распространения.
К концу этой книги вы сможете создавать и развертывать собственные предметно-ориентированные языки программирования, способные компилировать и запускать программы.
Что вы узнаете
- Проведите анализ требований к синтаксису и семантике нового языка и языка проектирования.
- Разработайте лексические и контекстно-свободные грамматические правила для распространенных выражений и управляющих структур.
- Разработайте сканер, который считывает исходный код, и сгенерируйте парсер, который проверяет синтаксис.
- Создавайте ключевые структуры данных в компиляторе и используйте его для создания редактора кода с подсветкой синтаксиса.
- Реализуйте интерпретатор байт-кода и запустите байт-код, сгенерированный вашим компилятором.
- Напишите алгоритмы обхода дерева, которые вставляют информацию в синтаксическое дерево.
- Реализуйте сборку мусора в вашем языке программирования.
Для кого предназначена эта книга?
Эта книга предназначена для разработчиков программного обеспечения, заинтересованных в создании собственного языка или разработке предметно-ориентированного языка. Студенты, изучающие информатику и проходящие курсы по построению компиляторов, также найдут эту книгу очень полезной в качестве практического руководства по реализации языка, дополняющего более теоретические учебники. Для того чтобы максимально эффективно использовать эту книгу, необходимы знания и опыт работы со высокоуровневыми языками, такими как Java или C++.
Оглавление
- Зачем создавать ещё один язык программирования?
- Разработка языков программирования
- Сканирование исходного кода
- Парсинг
- Синтаксические деревья
- Таблицы символов
- Проверка типов баз
- Проверка типов массивов, вызовов методов и доступа к структурам.
- Генерация промежуточного кода
- Клонирование синтаксиса в IDE
- Интерпретаторы байт-кода
- Генерация байт-кода
- Генерация нативного кода
- Реализация операторов и встроенных функций
- Структуры управления доменом
- Сбор мусора
- Заключительные мысли
- Приложение А - Основы Unicon