On Nov 16, 2015 12:46 PM, "Robert Collins" <robertc@robertcollins.net> wrote:
>
[...]
>     marker        = wsp* marker_expr ( wsp* ('and' | 'or') wsp* marker_expr)*

I guess technically the spec doesn't say either way what the precedence of "and" versus "or" should be; it just parses unparenthesised sequences to a flat ast and in principle the (unspecified) ast evaluator could apply different precedences. The way the grammar's written though seems to suggest that they're equal precedence with some unspecified associativity, which is different from python where "and" is more tightly binding than "or" (and associativity doesn't matter because each operator is associative in isolation). Maybe this is implied here too via the language about how this is intended to be a python subset, but it would be good to clarify what the evaluation semantics should be.

Other comments:

The whitespace handling looks correct to me now :-)

I didn't check that the two copies of the grammar are identical (and I only looked at the top version, not the bottom version). Hopefully someone did? It'll be a headache if we discover later that there's skew between them, and no guidance on which is normative.

Otherwise looks good to me.

-n