Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #93693
| Date | 2015-07-11 17:20 +0100 |
|---|---|
| From | MRAB <python@mrabarnett.plus.com> |
| Subject | Re: 0 + not 0 |
| References | <01ec6551-1f40-42b0-9406-036030591519@googlegroups.com> <mailman.420.1436621919.3674.python-list@python.org> <not-20150711180044@ram.dialup.fu-berlin.de> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.426.1436631668.3674.python-list@python.org> (permalink) |
On 2015-07-11 17:02, Stefan Ram wrote:
> Serhiy Storchaka <storchaka@gmail.com> writes:
>>On 11.07.15 13:26, candide wrote:
>>>>>> 0 + not 0
>>> File "<stdin>", line 1
>>> 0 + not 0
>>> ^
>>> SyntaxError: invalid syntax
>>> What is syntactically wrong with 0 + not 0?
>>This looks as a bug to me. Please file a report
>
> I look at Python 3.4.3:
>
> a_expr ::= m_expr | a_expr "+" m_expr | a_expr "-" m_expr
>
> So, »not 0« must be an »m_expr« when used as the right operand of »+«.
>
> m_expr ::= u_expr | m_expr "*" u_expr | m_expr "//" u_expr | m_expr "/" u_expr | m_expr "%" u_expr
> u_expr ::= power | "-" u_expr | "+" u_expr | "~" u_expr
> power ::= primary ["**" u_expr]
> primary ::= atom | attributeref | subscription | slicing | call
> atom ::= identifier | literal | enclosure
> enclosure ::= parenth_form | list_display | dict_display | set_display | generator_expression | yield_atom
>
> How can there be a »not«?
>
> »not« is used in
>
> not_test ::= comparison | "not" not_test
> and_test ::= not_test | and_test "and" not_test
> or_test ::= and_test | or_test "or" and_test
> conditional_expression ::= or_test ["if" or_test "else" expression]
> expression_nocond ::= or_test | lambda_expr_nocond
> expression ::= conditional_expression | lambda_expr
>
> , but an »expression« is not an »m_expr«.
>
If "not" had the high priority of unary "-", then:
not a < b
would be parsed as:
(not a) < b
If you extended the OP's example to:
0 + not 0 + 0
and permitted "not" in that position, it wouldn't be parsed as:
0 + (not 0) + 0
but as:
0 + (not (0 + 0))
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
0 + not 0 candide <c.candide@laposte.net> - 2015-07-11 03:26 -0700
Re: 0 + not 0 Chris Angelico <rosuav@gmail.com> - 2015-07-11 20:38 +1000
Re: 0 + not 0 Irmen de Jong <irmen.NOSPAM@xs4all.nl> - 2015-07-11 12:38 +0200
Re: 0 + not 0 Luuk <luuk@invalid.lan> - 2015-07-11 13:12 +0200
Re: 0 + not 0 Chris Angelico <rosuav@gmail.com> - 2015-07-11 21:20 +1000
Re: 0 + not 0 Luuk <luuk@invalid.lan> - 2015-07-11 13:30 +0200
Re: 0 + not 0 candide <c.candide@laposte.net> - 2015-07-11 04:54 -0700
Re: 0 + not 0 Chris Angelico <rosuav@gmail.com> - 2015-07-11 22:05 +1000
Re: 0 + not 0 candide <c.candide@laposte.net> - 2015-07-11 06:22 -0700
Re: 0 + not 0 candide <c.candide@laposte.net> - 2015-07-11 04:48 -0700
Re: 0 + not 0 random832@fastmail.us - 2015-07-11 16:46 -0400
Re: 0 + not 0 Serhiy Storchaka <storchaka@gmail.com> - 2015-07-11 16:38 +0300
Re: 0 + not 0 candide <c.candide@laposte.net> - 2015-07-11 08:07 -0700
Re: 0 + not 0 MRAB <python@mrabarnett.plus.com> - 2015-07-11 17:20 +0100
Re: 0 + not 0 Ian Kelly <ian.g.kelly@gmail.com> - 2015-07-11 10:56 -0600
Re: 0 + not 0 Gregory Ewing <greg.ewing@canterbury.ac.nz> - 2015-07-12 18:12 +1200
Re: 0 + not 0 Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-07-11 21:05 +0100
csiph-web