Python Front-end to GCC
Steven D'Aprano
steve at pearwood.info
Tue Oct 22 01:25:46 EDT 2013
On Mon, 21 Oct 2013 21:24:38 -0700, Mark Janssen wrote:
>> A language specification in BNF is just syntax. It doesn't say anything
>> about semantics. So how could this be used to produce executable C code
>> for a program? BNF is used to produce parsers. But a parser isn't
>> sufficient.
>
> A C program is just syntax also. How does the compiler generate
> executable machine code? Extrapolate into a Python front-end to C.
Like every other language, C programs are certainly not *just* syntax.
Here is some syntax:
&foo bar^ :=
What machine code should be produced? Right now, you should be saying
"How the hell do I know? What does that line of code *do*???" and you
would be right to ask that question.
Syntax on its own doesn't mean anything. You also need to know the
*semantics* of the code, in other words, *what it means*. That knowledge
is inherent to the compiler: a C compiler "understands" what C code
means, a Pascal compiler "understands" Pascal code, a Forth compiler
"understands" Forth.
Merely parsing code doesn't capture that understanding. Parsing a line
like "foo <= bar" will give you something like this:
NAME "foo"
OPERATOR "<="
NAME "bar"
END_LINE
What does the operator "<=" actually do? What does "foo" represent? Is it
a variable, a constant, a global, a local, something else? What are the
rules for deciding whether a variable is in the local scope, a global
scope, or something else? Does the language even have scopes?
--
Steven
More information about the Python-list
mailing list