[Lazarus] Request for student project ideas
Hans-Peter Diettrich
DrDiettrich1 at aol.com
Tue Sep 15 17:46:47 CEST 2009
Florian Klaempfl schrieb:
>>> So you want a hybrid pascal/C compiler? Or at which point do you want to
>>> do macro expansion and translation of the resulting C?
>> All that is done in the compiler front-end, AKA parser.
>
> (preprocessing is never part of the parser, it's a separate compiler
> module or part of the, but this doesn't matter)
At least since C98 the preprocessor is part of the parser, due to macro
expansion requirements.
> Just a simple example:
>
> test.h:
>
> #define POINTER(x) typedef T ## x* x
> POINTER(float)
>
> test.pas:
>
> unit test;
>
> interface
>
> {$I test.h}
A bunch of syntax errors here, because the Pascal preprocessor and
parser does not understand C syntax.
>
> POINTER(longint)
You missed the goal :-(
The C code is translated into separate ppu/o files, which can be added
to the Uses clauses. Eventually a library unit or (package?) project can
enumerate the types, constants, variables and functions of the C
modules, which shall become available in other units. In the case of a
library unit this unit can be added to the Uses of other Pascal units.
If you ever had used CBuilder, you would better understand how a
compiler can compile modules of various languages, and create object
files usable from all languages.
DoDi
More information about the Lazarus
mailing list