Multi-pass compiler (forward declarations)

lican <>
Sat, 7 Mar 2009 12:39:03 -0800 (PST)

          From comp.compilers

Related articles
Multi-pass compiler (forward declarations) (lican) (2009-03-07)
| List of all articles for this month |

From: lican <>
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


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.

Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.