Оригинал: ‘Visualizing PEG Parsing’ by Guido van Rossum
В прошлый раз получился простой генератор парсера PEG. Сейчас же я покажу, что на самом деле делает сгенерированный парсер при разборе программы. Я погрузился в ретро-мир ASCII-арта, в частности, библиотеку с именем «curses», которая доступна в стандартной поставке Python для Linux и Mac, а также как дополнение для Windows.
Содержание серии статей о PEG-парсере в Python PEG парсеры Реализация PEG парсера Генерация PEG парсера Визуализация работы PEG парсера Леворекурсивные PEG грамматики Добавление экшенов в грамматику PEG Мета-грамматика для PEG парсера Реализация остальных возможностей PEG PEG на Core Developer Sprint <В конце статьи под спойлером приводится gif.
Оригинал: ‘Generating a PEG Parser’ by Guido van Rossum
Теперь, когда я набросал основу самописного парсера, давайте перейдём к генерации его методов из грамматики, как я и обещал. Также покажу как реализовать packrat-парсер с помощью декоратора @memoize.
Содержание серии статей о PEG-парсере в Python PEG парсеры Реализация PEG парсера Генерация PEG парсера Визуализация работы PEG парсера Леворекурсивные PEG грамматики Добавление экшенов в грамматику PEG Мета-грамматика для PEG парсера Реализация остальных возможностей PEG PEG на Core Developer Sprint В прошлый раз мы разобрали несколько методов парсера.
Оригинал: ‘Building a PEG Parser’ by Guido van Rossum
Вдохновленный лишь частичным пониманием PEG, я решил попробовать его реализовать. Результат может получиться и не самым лучшим среди парсеров PEG общего назначения - их уже много (например, TatSu написан на Python и генерирует код Python) - но это хороший способ разобраться в PEG. В дальнейшем я хочу заменить им текущую реализацию парсера в CPython.
Содержание серии статей о PEG-парсере в Python PEG парсеры Реализация PEG парсера Генерация PEG парсера Визуализация работы PEG парсера Леворекурсивные PEG грамматики Добавление экшенов в грамматику PEG Мета-грамматика для PEG парсера Реализация остальных возможностей PEG PEG на Core Developer Sprint В этом разделе я закладываю основы для понимания работы парсера, на примере простой самописной реализации игрушечной грамматики из прошлой статьи.
Оригинал: ‘PEG parsers’ by Guido van Rossum
Несколько лет назад меня кто-то спросил имеет ли смысл превести Python на PEG-парсер (или на грамматику PEG; я не помню точно кто и когда это было). Тогда я немного посмотрел на него, но так и не пришёл к какому-либо выводу, а потому и отбросил эту тему. Недавно я узнал больше о PEG (Parsing Expression Grammars, грамматике по парсингу выражений), и теперь я думаю, что это интересная альтернатива самописному генератору парсеров, который был разработан 30 лет назад, когда только начинал работать над Python.
Оригинал: ‘PEG Parsing Series Overview’ by Guido van Rossum
Содержание серии статей о PEG-парсере в Python 🔗 PEG парсеры Реализация PEG парсера Генерация PEG парсера Визуализация работы PEG парсера Леворекурсивные PEG грамматики Добавление экшенов в грамматику PEG Мета-грамматика для PEG парсера Реализация остальных возможностей PEG PEG на Core Developer Sprint А вот видео с North Bay Python, в котором он рассказывает про PEG парсеры.
Тема выражения своих мыслей, их структурирования и умение донести идею сейчас очень актуальна для меня. Порой мне кажется, что это даже важнее, чем способность писать код. Так что когда несколько человек примерно в одно и то же время посоветовали мне “Пиши, сокращай”, я сразу пошёл в Читай-город (не реклама, в других магазинах можно найти дешевле).
Немного об издании 🔗Книга выполнена отлично! Приятная на ощупь плотная бумага, чёткая печать, яркие иллюстрации (за комикс с девушкой отдельное спасибо!
слайды
Что такое SaaS и тенант? 🔗Sofware as a Service (SaaS) - модель реализации вашего приложения, когда вы предоставляете свой продукт разным клиентам практически не меняя его. Например, есть у вас CRM, и вы подключаете в неё нескольких клиентов, разнося их по поддоменам: mvideo.crm.ru, dns.crm.ru, eldorado.crm.ru… Код процентов на 90% совпадает, различаются лишь стили и третьестепенная бизнес-логика. Каждый клиент в этом случае завётся тенантом. А чтобы чуть упростить вашу жизнь как разработчика, познакомлю с такой классной вещью как мультитенантность на примере DjangoORM и PostgreSQL.
Список докладов:
Влад Токарев: “Itertools и функциональный python”. Видео Презентация Дмитрий Жерлицын: “Опциональная статическая типизация в Python 3”. Видео Презентация Виктор Тыщенко: “Реализация мультитенантности на примере Django и Postgres”. Видео Презентация Фото в группе в Vk и facebook
У каждого из нас есть традиции. У меня, например, раз в год перебирать закладки в браузере и избранное на других сайтах. Что-то становится не актуальным, что-то я и так выучиваю за год. Вот и сейчас подошла пора навести порядок в избранном Хабра. На момент начала чистки там 598 статей - довольно большая колекция на самые разные темы: и как работать с картинкам в CSS, и немного функциональщины, и для умного дома рецептики… А чтобы ничего не потерять, я решил выгрузить все статьи в pdf и выложить в общий доступ.
Хочу рассказать о проекте, который развивал последние пару лет. Называется он GeoPuzzle и представляет собой игру-паззл на политической карте мира. Цель - расставить кусочки-страны на свои места. Идея подсмотрена в статье “Головоломка Mercator для знатоков географии”, также в детстве играл в тетрис из стран (ещё под DOS), но название программы уже не припомню. Я был настолько вдохновлён идеей, что захотел сделать полноценный продукт, интересный не только школьникам, но и знатокам географии.