[Python-Dev] Syntax errors on continuation lines
I am a recent subscriber to this list. A couple of months ago I downloaded the Python source out of curiosity, then decided to see if I could scratch a couple of small itches. One of them was syntax errors reported on one line but actually resulting from unbalanced brackets on the previous line. (The folks on this list may not make such silly mistakes any more, but several postings on comp.lang.python suggest that I am not entirely alone in finding it an annoyance.) I have modified the parser and error reporting code to provide more explicit information in such cases, and am now looking for some guidance as to whether it is worth submitting a patch. With my change a syntax error on a continuation line looks like this: File "test.py", line 42 (statement started on line 41) y = 0 ^ SyntaxError: invalid syntax The patch adds a new attribute to the SytaxError exception object (the line number on which the statement started). I don't have the experience to judge whether this would be considered a compatibility problem. An alternative that does not require modifying the exception would be to change the message text without identifying the specific line number: File "test.py", line 42 y = 0 ^ SyntaxError: invalid syntax in continuation of prior line However I think the continuation indication properly belongs with the location information rather than with the message. (The loss of the starting line number itself is no big deal; it will usually be one less than the error line number.) ___ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com
Re: [Python-Dev] Switch statement
Ka-Ping Yee wrote: > Hmm, this is rather nice. I can imagine possible use cases for > >switch x: >case > 3: foo(x) >case is y: spam(x) >case == z: eggs(x) Part of the readability advantage of a switch over an if/elif chain is the semantic parallelism, which would make me question mixing different tests in the same switch. What if the operator moved into the switch header? switch x ==: case 1: foo(x) case 2, 3: bar(x) switch x in: case (1, 3, 5): do_odd(x) case (2, 4, 6): do_even(x) "switch x:" could be equivalent to "switch x ==:", for the common case. I've also been wondering whether the 'case' keyword is really necessary? Would any ambiguities or other parsing problems arise if you wrote: switch x: 1: foo(x) 2: bar(x) It is debatable whether this is more or less readable, but it seemed like an interesting question for the language lawyers. ___ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com