Раздел 45 · Python backend: Тарбадель

Рекурсивный спуск и парсер Пратта

middle-senior~45 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Никто. Узор прочитал ленту токенов слева направо, а у выражения есть форма, которой в ленте не видно. Умножение держит свои числа крепче, чем сложение, и забирает двойку себе раньше, чем плюс успевает до неё дотянуться. Лексер из прошлого урока честно нарезал строку на слова, но слова ещё не говорят, кто из них с кем связан.

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

урок из курса

Урок из курса «Python backend: Тарбадель». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.