two things about splitting into phases:
1. history (scanner, lexer, parser all would not fit on one tape/cassette/disk back then)
2. performance (each component can benefit from specialized optimization techniques without affecting the other)
1. history (scanner, lexer, parser all would not fit on one tape/cassette/disk back then)
2. performance (each component can benefit from specialized optimization techniques without affecting the other)
The output of the 7th stage was an intermediate code; my guess is that part of the reason there were so many stages was to enable most of the compiler to be language-independant. If you renamed the executable for the 8th pass, you could hack on the intermediate code with an editor, and make COBOL programs that could do illegal things, like access IO directly.
I suspect a lot of the passes were common to the ALGOL compiler.