ru

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

#2368460
Создайте свой собственный язык программирования: руководство программиста по разработке компиляторов, интерпретаторов и 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

4.4 (78)

Написанная создателем языка программирования Unicon, эта книга покажет вам, как использовать языки программирования для сокращения времени и затрат на создание приложений для новых или специализированных областей вычислительной техники.

Основные характеристики

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

Описание книги

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

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

К концу этой книги вы сможете создавать и развертывать собственные предметно-ориентированные языки программирования, способные компилировать и запускать программы.

Что вы узнаете

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

Для кого предназначена эта книга?

Эта книга предназначена для разработчиков программного обеспечения, заинтересованных в создании собственного языка или разработке предметно-ориентированного языка. Студенты, изучающие информатику и проходящие курсы по построению компиляторов, также найдут эту книгу очень полезной в качестве практического руководства по реализации языка, дополняющего более теоретические учебники. Для того чтобы максимально эффективно использовать эту книгу, необходимы знания и опыт работы со высокоуровневыми языками, такими как Java или C++.

Оглавление

  1. Зачем создавать ещё один язык программирования?
  2. Разработка языков программирования
  3. Сканирование исходного кода
  4. Парсинг
  5. Синтаксические деревья
  6. Таблицы символов
  7. Проверка типов баз
  8. Проверка типов массивов, вызовов методов и доступа к структурам.
  9. Генерация промежуточного кода
  10. Клонирование синтаксиса в IDE
  11. Интерпретаторы байт-кода
  12. Генерация байт-кода
  13. Генерация нативного кода
  14. Реализация операторов и встроенных функций
  15. Структуры управления доменом
  16. Сбор мусора
  17. Заключительные мысли
  18. Приложение А - Основы Unicon