Why might a language feature require a compiler to perform more than one pass over the source code?
Some language features, such as forward declarations, require the compiler to collect information in one pass that will affect translation in subsequent rounds, necessitating numerous passes through the source code.