Мой язык программирования HydraScript, написанный на C#, уже умел выполнять такой код:let x = 10 x = x + 1 >>> x Получаем 11; >>> — это оператор вывода. Присваивание работает, сложение работает. Захотелось добавить привычное сокращение:let x = 10 x += 1 >>> x Результат должен остаться тем же — 11. Зачем учить весь компилятор ещё одной операции, если всё необходимое у него уже есть? Можно прямо в парсере превратить x += 1 в дерево для x = x + 1.Эта часть уместилась в несколько строк. Основная работа досталась методу Clone(). Читать далее