Компиляторы, интерпретаторы и формальные языки

Компиляторы, интерпретаторы и формальные языки
en
07.11.2024
12 г 3 мін 54 сек

Этот курс представляет собой дружелюбное для новичков введение в компиляторы. Мы будем постепенно разрабатывать интерпретатор для простого скриптового языка.

 

Мы рассмотрим:

  • Лексический анализ
  • Синтаксический анализ
  • Алгоритмы разбора
  • Промежуточное представление (AST)
  • Формальные языки и грамматики
  • Нотацию Бэкуса-Наура (BNF) и синтаксические диаграммы
  • Обнаружение и обработку ошибок
  • Генерацию кода
  • Создание собственной виртуальной машины (VM)
  • Генерацию байт-кода
  • Проверку типов
  • LLVM IR
  • Простую оптимизацию кода
  • …и многое другое!

 

Компиляторы всегда считались сложной темой, и их историческая связь с «драконами» (начиная с Книги о драконах) только добавляла этому мифу загадочности. Мы постараемся объяснять все с учетом уровня новичков. Этот курс можно назвать «первым курсом» по компиляторам для разработчиков, которые еще не писали интерпретаторы.

Что мы создадим

Мы будем разрабатывать компилятор для простого языка программирования под названием Pinky. Это будет условный скриптовый язык с синтаксисом, вдохновленным Lua и ALGOL W.

Основным языком курса станет Python, который позволит нам сосредоточиться на концепциях, специфичных для компиляторов, при этом оставаясь продуктивными. Кроме того, мы дадим полезные советы по реализации этих идей на языке C.

Необходимые инструменты

Все, что вам нужно, — это командная строка, простой текстовый редактор и интерпретатор Python. Эти инструменты кроссплатформенные, так что вы сможете работать как на Windows, так и на macOS или Linux.

Курс не требует предварительных знаний, но знание основ программирования (if-else, циклы, функции) поможет лучше освоить материал.

Вы не можете просматривать данный курс -