Python Front-end to GCC
Ned Batchelder
ned at nedbatchelder.com
Tue Oct 22 13:56:09 EDT 2013
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.
More information about the Python-list
mailing list