Gregory Ewing 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 > > Not quite -- STRING+ is not a symbol in the grammar, it's > a shorthand for a combination of symbols. The parse tree > is actually just > > expr > / \ > STRING STRING
Or if there is a single STRING, expr | STRING AISB. >> Not like this: >> >> expr >> | >> STRING+ >> / \ >> expr expr >> | | >> STRING STRING > […] > > To get a parse tree like the above, there would need to be > a production like this in the grammar: > > expr ::= expr+ > > There is no such production, so that parse tree is impossible. > QED. Correct. > What you seem to be doing in your mind Who is “you” here? You appear to be confused, probably supported by your unconventional quotation style, who made which statement. > is taking this production: > > expr ::= STRING > > and using it "backwards" to justify expanding any occurrence > of STRING into expr. No. > But grammars don't work that way. You're committing a logical fallacy: > just because some exprs are STRINGs doesn't mean that all STRINGs are > exprs. The fallacy – a straw man – is yours here. Nobody – in particular not me – claimed that “STRING” can *only* be produced by “expr” in the first place. Production rules in a formal grammar of the form expr → … | any_goal | … any_goal → … | any_other_goal | … any_other_goal → … | STRING+ | … where the steps in-between are optional, mean *exactly* that (*all*) “STRING”s are “expr”s – but that not all “expr”s are “STRING”s. Because it follows from the rules above that these production chains – *but not _only_ these* – are possible: a) expr ⇒ … ⇒ STRING b) expr ⇒ … ⇒ STRING STRING c) expr ⇒ … ⇒ STRING STRING STRING and so on. The truth of the statement “(All) STRING( literal)s are expr(ession)s” is what follows from the possibility of the first production chain. (That does not preclude the possibility that “STRING”s are also an element of another set.) -- PointedEars Twitter: @PointedEars2 Please do not cc me. / Bitte keine Kopien per E-Mail. -- https://mail.python.org/mailman/listinfo/python-list