Почему "+=" сложнее реализовать, чем "+": опыт HydraScript
Habr ·

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