Ian Kelly wrote: > […] Thomas 'PointedEars' Lahn […] wrote: >> Ian Kelly wrote: >>> What I mean is that if you construct a parse tree of "foo" "bar" using >>> that grammar, it looks like this: >>> >>> expr >>> | >>> STRING+ >>> / \ >>> STRING STRING >>> […] >>> >>> There is only one expr node, and it contains both STRING tokens. >> Prove it. > > I'm not going to expend the effort that would be required to go > through the entire Python grammar step-by-step and exhaustively prove > that "foo" "bar" can unambiguously only be produced as a single expr.
And why should you? That is not what you claimed. > If you believe otherwise, show a parse tree that parses these as > separate expressions. Fallacies: Straw man, shifting the burden of proof. >> But be warned: Neither would prove that a string literal is not an >> expression. > > I've not claimed that a string literal is not an expression. Yes, you did. You debated my statement which says that. Let me refresh your memory. I said: | As I showed, string literals and consecutive tokens of string literals | (“STRING+”) so as to do implicit concatenation *are* expressions of the | Python grammar. To which you replied: | What the grammar that you quoted from shows is that STRING+ is an | expression. The individual STRINGs of a STRING+ are not expressions, […] ^^^^^^^ ^^^^^^^^^^^^^^^^^^^ You continued with | except to the extent that they can be parsed in isolation as a STRING+. but that is nothing more than a backdoor, contradictory to what you said before (and, as it has been showed, nonsensical). > My claim is that a literal consisting of the implicit concatenation of > more than one string token is can only be parsed as one expression, not > several. Then you must have fundamentally misunderstood my statement and this whole discussion. > Parsing "foo" "bar" > >> Because you did not consider the most simple variant of an AST >> (or subtree) according to this grammar: >> >> expr >> | >> STRING > > Of course I did. This is again *exactly* what I was talking about in > reference to parsing the individual strings in isolation. Actually, you were arguing against my statement that string literals are expressions (that a string literal is an expression). You claimed, rather explicitly, that they were not. See above. >> Again, “STRING+” does _not_ mean “STRING STRING STRING*”; it means >> “STRING STRING*”. The second and following STRINGs are *optional*. > > Please stop speaking down to me. I am not speaking down to you. But the fact needed to be emphasized that you could not have been reading carefully what I wrote. > I'm quite familiar with basic concepts of EBNF. But apparently not logic. -- PointedEars Twitter: @PointedEars2 Please do not cc me. / Bitte keine Kopien per E-Mail. -- https://mail.python.org/mailman/listinfo/python-list