error in syntax description for comprehensions?

Ned Batchelder ned at nedbatchelder.com
Thu Mar 30 19:31:41 EDT 2017


On Thursday, March 30, 2017 at 4:59:03 PM UTC-4, Boylan, Ross wrote:
> https://docs.python.org/3/reference/expressions.html#displays-for-lists-sets-and-dictionaries
> describes the syntax for comprehensions as
> comprehension ::=  expression comp_for
> comp_for      ::=  [ASYNC] "for" target_list "in" or_test [comp_iter]
> comp_iter     ::=  comp_for | comp_if
> comp_if       ::=  "if" expression_nocond [comp_iter]
> 
> Is the comp_for missing an argument after "in"?
> One has to follow the definition of or_test and its components, but I can't find anything that results to a single variable or expression.
> 
> Actually, I'm not sure what or_test would do there either with or  without an additional element following "in". 


Syntax grammars can be obtuse. An or_test can be an and_test, which
can be a not_test, which can be a comparison.  It continues from there.
The whole chain of "can be" is:

    or_test
    and_test
    not_test
    comparison
    or_expr
    xor_expr
    and_expr
    shift_expr
    a_expr
    m_expr
    u_expr
    power
    primary
    atom
    identifier

... and identifier is what you are looking for.

--Ned.


More information about the Python-list mailing list