Compiler implementation

Data structures

Since by default there is no notion of interface in Eiffel and because we will have to generate both .NET classes and interfaces, the Eiffel compiler needs to know exactly what it should generate as implementation classes and interfaces. For example, in our big picture example class B simply does a renaming and a covariant redefinition and the B interface defines both h and g (y: Y) even though f and g(x :X) are defined in the A interface.

To find out what really needs to be generated in every interface corresponding to an Eiffel class, we introduced the CLASS_INTERFACE class which keeps all the feature that needs to be generated in the corresponding interface of an Eiffel class.

The same way we have done it for interface, we need to do it for the corresponding implementation class of an CLASS_INTERFACE, we introduced the CLASS_IMPLEMENTATION class.

Both classes have the following information: