Никто. Узор прочитал ленту токенов слева направо, а у выражения есть форма, которой в ленте не видно. Умножение держит свои числа крепче, чем сложение, и забирает двойку себе раньше, чем плюс успевает до неё дотянуться. Лексер из прошлого урока честно нарезал строку на слова, но слова ещё не говорят, кто из них с кем связан.
В Lisp этого вопроса не было: там каждая форма в скобках, и (+ 1 (* 2 3)) сама говорит, что внутри чего. Ты разбирал такие списки в уроке 69. В языке, который ты собираешь теперь, скобки ставят только когда хотят, а остальное решают правила старшинства. В этом уроке ты научишь машину этим правилам двумя способами: лестницей функций и одной функцией с таблицей сил. Второй способ называется парсером Пратта, и на нём стоит третий этап Оракула.
урок из курса
Урок из курса «Python backend: Тарбадель». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.