Guido van Rossum wrote: > > > Would it be possible to write a Python syntax checker that doesn't > > stop processing at the first error it finds but instead tries > > to continue as far as possible (much like make -k) ? > > > > If yes, could the existing Python parser/compiler be reused for > > such a tool ? > > > > I was asked to write a tool which checks Python code and returns > > a list of found errors (syntax error and possibly even some > > lint warnings) instead of stopping at the first error it finds. > > I had some ideas for this in the context of CP4E, and I even tried to > implement some, but didn['t get far enough to check it in anywhere. > Then I lost track of the code in the BeOpen move. (It wasn't very > much.) > > I used a completely different approach to parsing: look at the code > from the outside in, e.g. when you see > > def foo(a,b,c): > print a > for i in range(b): > while x: > print v > else: > bah() > > you first notice that there's a line starting with a 'def' keyword > followed by some indented stuff; then you notice that the indented > stuff is a line starting with 'print', a line starting with 'for' > followed by more indented stuff, and a line starting with 'else' and > more indented stuff; etc. This is similar to my initial idea: syntax checking should continue (or possibly restart) at the next found "block" after an error. E.g. in Thomas' case: if 1: doodle() forever() and_ever() <tons more code using 4-space indent> the checker should continue at forever() possibly by restarting checking at that line. > This requires tokenization to succeed -- you need to know what are > continuation lines, and what are strings and comments, before you can > parse the rest; but I believe it can be made successful in the light > of quite severe problems. Looks like this is highly non-trivial job... Thanks, -- Marc-Andre Lemburg ______________________________________________________________________ Business: http://www.lemburg.com/ Python Pages: http://www.lemburg.com/python/
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4