David Halter <davidhalte...@gmail.com> added the comment:

Parso's incremental parser is a terrible idea. It also works and is pretty 
fast, but the design is pretty terrible (it took me a lot of fuzzing to make 
sure that it works decently well).

The basic problem is that it's reusing nodes in a mutable way. If I were to 
redo it, I would probably choose a similar approach to Roslyn's red/green 
trees. It's probably also possible to use these approaches in Python, but they 
might be quite a bit slower than what I'm using (because recreating nodes can 
be quite expensive).

I imagine that one of the biggest issues with parsing PEG in parso would be to 
do it with error recovery AND incremental parsing. That combination can be 
quite annoying, but it's definitely still possible.

I'm not really sure about the future of parso with PEG. I'm definitely going to 
have to find a way to parse 3.10+ (so Jedi is going to keep working), however I 
feel like that it's hard to achieve a fast parser in pure Python. Parso is like 
20% faster, but still more than ten times slower than the CPython parser...

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue40360>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to