a computer program that divides code up into functional components; compilers must parse source code in order to translate it into object code'