|How to implement type checking/conversion ? firstname.lastname@example.org (Floris 'Tamama' van Gog) (1999-09-24)|
|From:||"Floris 'Tamama' van Gog" <email@example.com>|
|Date:||24 Sep 1999 22:59:54 -0400|
|Keywords:||code, practice, question|
I am currently making a small compiler that handles a subset of C
(don't ask me why.. i still have to figure that one out.. good
practice or something :-).
I have come to the part that it can generate correct assembly-like
code, (without registers though (stack-based temporary variables)),
however this is not type-checked. It is probably not that hard to make
a HUGE switch statement or something to check all possible l-values
and r-values, however i was hoping someone would know an better/more
structured way that would also allow it to grow as new types get
The parsing/code generation is done by the compiler itself (no
lex/yacc), and type-information is stored with every variable.
I guess my big problem is the global/detailed implementation design of
type-correction (the checking itself can be done by comparing 2
pointers to the type-information.. so that's not that hard). I'm
really stuck on this. I already had to redo most of the
parser/generator 'x' times to many (rewriting the basic stack machine
including instructions after you got most of the important peep-hole
optimisations ready does that) to just go dig in to write the code,
and not think of future things.
I have a testrun (so you could see what it generates) online @
http://floris.vangog.net/compiler/testrun.txt. If anyone can help me
see the light, i would appreciate it very much.
Floris v. Gog
Return to the
Search the comp.compilers archives again.