Свой язык — for fun & profit!

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

output(2 + 2 * 2)
# Выведет 6

…или такие:

fn adult?(x)
  return x >= 18
end

output("Сколько вам лет?")
age = to_integer(input())

if adult?(age)
  output("Вы совершеннолетний")
else
  output("Вы не совершеннолетний")
end

…или такие:

fn factorial(x)
  if x <= 1
    return x
  end

  return(x * factorial(x-1))
end

x = to_integer(input())
output(factorial(x))

Порядок чтения лекций

Основной порядок чтения лекций: от А1 к А6. Лекции серии “А” являются ключевыми и задают основной массив практических знаний и навыков.

Лекции “Г” обязательны к чтению в тот момент, когда возникает потребность к ним обратиться (в тексте будет гиперссылка, без которой смысл предложения не понятен).

Лекция “И” описывают исторический контекст и интересные моменты разработки классических языков программирования. Для курса лекции “И” необязательны.

Лекции “Я” описывают основные типы выражений и формальных языков, на которые ссылаются другие лекции. Лекции “Я” желательны к ознакомлению.

Лекции “П” описывают ключевые архитектурные паттерны и инструменты разработки языков. Лекции “П” обязательны к ознакомлению в любой удобный момент времени.

Лекции, помеченные словом “[готовится]”, пока ещё не написаны, но оставлены в навигационных меню для заполнения общей структуры.

Задачи для тренировки

Для тренировки и закрепления полученных знаний и навыков можно использовать следующие задачи Codewars с выходом на целевой уровень — 1–2 кю. В скобках уровень “кю” (чем меньше, тем сложнее) и номера лекций, которые рекомендуются к ознакомлению перед первым подходом):

Исправления и замечания

В тексте присутствует изрядное количество опечаток: автор благодарен за присланные исправления (по любым контактам, включая ВК-комментарии под текстом).

Конструктивная обратная связь по контактам, доступным на данном сайте, приветствуется.

Для подписывания на обновления используйте мою страницу в ВК: vk.com/eugzol. Другие способы уведомления — по заявкам трудящихся.