- One complete scan of a source program is called pass
- Pass include reading an input file and writing to the output file
- In a single pass compiler analysis of source statement is immediately followed by synthesis of equivalent target statement
- It is difficult to compile the source program into single pass due to:
- Forward reference: a forward reference of a program entity is a reference to the entity which precedes its definition in the program
- This problem can be solved by postponing the generation of target code until more information concerning the entity becomes available
- It leads to multi pass model of compilation
- In Pass I: Perform analysis of the source program and note relevant information
- In Pass II: Generate target code using information noted in pass I
Effect of reducing the number of passes
- It is desirable to have a few passes, because it takes time to read and write intermediate file
- On the other hand if we group several phases into one pass we may be forced to keep the entire program in the memory. Therefore memory requirement may be large.