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