One-pass compiler

This is in contrast to a multi-pass compiler which converts the program into one or more intermediate representations in steps between source code and machine code, and which reprocesses the entire compilation unit in each sequential pass.

A one-pass compiler initially has to leave addresses for forward jumps unresolved.

These can be handled in various ways (e.g. tables of forward jumps and targets) without needing to have another complete pass.

A one-pass compiler must assume that all jumps are long, whereas a multi-pass compiler can check on jump distance and generate possibly shorter code.

Languages which rely on context for statement identification rather than using reserved or stropped keywords may also cause problems.