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

Лексер подмножества Python

middle-senior~40 мин

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

Элодий дописывает мелом на полу третью строку, и Узор уже гудит рядом: три строки, одна из них с отступом. В прошлом уроке ты описывал языки грамматиками и узнал, что регулярка это автомат без памяти. Слова программы (имена, числа, операторы) такой автомат читает легко. А вот где кончился блок, он сказать не может: для этого надо помнить, какие отступы были выше. У Python отступ это слово, и чтобы его услышать, лексеру нужна память.

В уроке 68 ты уже писал лексер: s-выражения в токены Token(kind, text, line, column). Здесь та же форма токена, но язык сложнее. В нём два десятка операторов, строки в двух кавычках, переводы строк, которые то значат, то нет, и отступы. И есть с кем сверяться: у Python свой лексер, модуль tokenize, и твой должен отвечать как он, до столбца.

урок из курса

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

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