In the last week I've managed to get the Eiffel version of the compiler to a state where it will compile itself.
Until now, I've been using a very basic compiler written in C++ to compile the Eiffel code I've been writing, but from now on I should be able to dispense with that and simply work on the Eiffel code. As I add support for more features to the compiler, I will be able to use the features in the code.
Basically, at the moment, I have a single test case; compiling the compiler. The test works in three stages:
1. Use a tested version of the compiler to process the source code
2. Use the new version of the software to process the same code
3. Use the third version of the compiler to process the source code again
4. Check that the generated code from steps 2 and 3 are identical; that version of the code then becomes the tested version for next time.
The output from stages 1 and 2 may be different, because of different code generation strategies or support for more language features.
Some time after the holidays, I intend to put the code in the form of the Eiffel source and generated C onto Source Forge.