On 10/22/13 1:50 PM, Mark Janssen wrote:
So which of you is confused?  I ask that in the inclusive (not
exclusive OR) sense.... ;^)  <-- face says "both".
Could you please be less snarky?  We're trying to communicate here, and it
is not at all clear yet who is confused and who is not.  If you are
interested in discussing technical topics, then discuss them.
Okay.  The purpose of BNF (at least as I envision it) is to
produce/specify a *context-free* "grammar".  A lexer parses the tokens
specified in the BNF into an Abstract Syntax Tree.  If one can produce
such a tree for any given source, the language, in theory, can be
compiled by GCC into an executable.

Boom.

Hmm, I don't hear the boom yet. An Abstract Syntax Tree is a tree representation of a program. To use my previous example: the program "123 *!? 456" would become a tree:

    op: "*!?"
        num: 123
        num: 456

There's still not enough information to compile this. The operator *!? needs to have a meaning assigned to it. That's the role of the semantic specification of a language. That has to be provided somehow. A BNF, or a grammar, or a syntax, or an AST can't provide the semantics. That was the original point: syntax isn't enough.

--Ned.
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to