Related articles |
---|
Multi-pass compiler (forward declarations) licaner@gmail.com (lican) (2009-03-07) |
From: | lican <licaner@gmail.com> |
Newsgroups: | comp.compilers |
Date: | Sat, 7 Mar 2009 12:39:03 -0800 (PST) |
Organization: | Compilers Central |
Keywords: | design, question |
Posted-Date: | 10 Mar 2009 15:28:04 EDT |
Hi!
I've been reading about multi-pass compilers and how they handle class
definitions and declarations. I couldn't find much information about
the implementation though. Can anyone point me to some information
about how to handle thigs like:
class Foo implements Bar
{
BarPointer some_field;
BasePointer some_field2;
}
class Bar implements Base
{
}
class Base
{
}
In C++ it would obviously result in a compiler error (wrong order, no
forward declaration), but in C# or Java the compiler resolves such
problems with multi-pass. The question is: how? Do you know any
examples of implementation or any pseudocode? First I thought about a
simple algorithm:
1. Finding class definitions (Foo, Bar, Base)
2. Check the inheritance (implements Bar, Base)
3. Check the class fields types
To be honest I never written a compiler before (just starting, a
simple one) so I don't really know some basic algorithms.
Return to the
comp.compilers page.
Search the
comp.compilers archives again.