Size: a a a

2020 October 26

A🚀

Andrey 🚀🚀🚀 Popp... in PiterPy Meetup
а кто нибудь знает парсер генератор который бы сгенерировал python парсер с хорошим error recovery?
источник

DB

Dima Boger in PiterPy Meetup
Andrey 🚀🚀🚀 Popp
а кто нибудь знает парсер генератор который бы сгенерировал python парсер с хорошим error recovery?
я не понял((
источник

A🚀

Andrey 🚀🚀🚀 Popp... in PiterPy Meetup
задаешь грамматику на входе, на выходе парсер, но такой чтобы на ошибчном синтаксисе не просто падал а выдавал частичный результат

это нужно для тулинга внутри текстового редактора/IDE чтобы когда редактируешь текст то все равно работал бы автокомплит, например
источник

MV

Maxim Vasilev in PiterPy Meetup
Andrey 🚀🚀🚀 Popp
а кто нибудь знает парсер генератор который бы сгенерировал python парсер с хорошим error recovery?
Я пользовался https://github.com/erikrose/parsimonious, но он при ошибке либо говорит что недопарсил и место где это случилось, либо что правило не закончилось а последовательность распаршена. Не очень подходит под error recovery если честно 🙂
источник

MV

Maxim Vasilev in PiterPy Meetup
Но там можно задать правила обхода AST и с этим поиграться, наверное.
источник

A🚀

Andrey 🚀🚀🚀 Popp... in PiterPy Meetup
угу... но parsimonious это PEG, у меня грамматика оч простая, LARL(1), LL(1) точно хватит
источник

MV

Maxim Vasilev in PiterPy Meetup
Еще вот такая штука есть, у нее есть байндинги к пайтону и там есть гайды как писать грамматики для нее, может подойдет: https://github.com/tree-sitter/tree-sitter. Насчет того умеет ли оно отлавливать ошибки в синтаксисе неизвестно, я ее немного для другого использовал.
источник

MV

Maxim Vasilev in PiterPy Meetup
источник

E

Eugene in PiterPy Meetup
Andrey 🚀🚀🚀 Popp
задаешь грамматику на входе, на выходе парсер, но такой чтобы на ошибчном синтаксисе не просто падал а выдавал частичный результат

это нужно для тулинга внутри текстового редактора/IDE чтобы когда редактируешь текст то все равно работал бы автокомплит, например
Это то, обо что когда-то споткнулись любители прикручивать clang для code model в C++ IDE. clang в то время на невалидном коде просто ломался и соответственно ничего из тулинга не работало. Об этом даже где-то была статья, но лень искать.
источник

A🚀

Andrey 🚀🚀🚀 Popp... in PiterPy Meetup
о, спасибо, не знал что у него есть биндинги к питону, это прямо идеальный вариант
источник

MV

Maxim Vasilev in PiterPy Meetup
Andrey 🚀🚀🚀 Popp
о, спасибо, не знал что у него есть биндинги к питону, это прямо идеальный вариант
Документация к ним конечно оставляет желать лучшего, но там все довольно близко к оригинальному C API так что проблем не будет наверное)
источник

A🚀

Andrey 🚀🚀🚀 Popp... in PiterPy Meetup
у меня на питоне только PoC проекта, потом все равно будет переписывать, поэтому парсер на treesitter прямо класс, не надо будет портировать потом
источник

S

Stan in PiterPy Meetup
Andrey 🚀🚀🚀 Popp
о, спасибо, не знал что у него есть биндинги к питону, это прямо идеальный вариант
ого) года два назад пытался сам написать, здорово, что теперь есть официальный вариант
источник
2020 October 27

Б

Боброний in PiterPy Meetup
источник

MK

Maxim Koltsov in PiterPy Meetup
мне кажется я ни одной звзеды на ГХ не поставил...
источник

E

Eugene in PiterPy Meetup
Maxim Koltsov
мне кажется я ни одной звзеды на ГХ не поставил...
Я постоянно ставлю, что мне интересно, полезно или может пригодиться в будущем. Потом же гораздо проще найти.
источник

MK

Maxim Koltsov in PiterPy Meetup
Eugene
Я постоянно ставлю, что мне интересно, полезно или может пригодиться в будущем. Потом же гораздо проще найти.
То есть ты ставишь звезды тому, чем не пользуешься?
источник

E

Eugene in PiterPy Meetup
Maxim Koltsov
То есть ты ставишь звезды тому, чем не пользуешься?
для меня звезды - это закладки. сейчас не пользуюсь, но прикидываю где бы я мог это использовать в будущем или "посмотреть внимательнее позже"
источник

E

Eugene in PiterPy Meetup
периодически удаляю то, что уже не актуально
источник

MK

Maxim Koltsov in PiterPy Meetup
Интересно
источник