6 passes seems like a lot but likely that was just to fit it in the tiny computers of the time.
One problem with the language is that you can't parse declarations and expressions until after you have parsed the bracket structure of the language (because you can't tell whether a name is a type or an operator until you have processed their declarations (which do not have to be done before use) - that sort of means you have to do at least 2 lexical/parse passes
One problem with the language is that you can't parse declarations and expressions until after you have parsed the bracket structure of the language (because you can't tell whether a name is a type or an operator until you have processed their declarations (which do not have to be done before use) - that sort of means you have to do at least 2 lexical/parse passes