Et lahendatavast probleemist täielikult aru saada, tuleb probleem ennekõike defineerida. Täpselt samuti tuleb enne translaatori kirjutamist defineerida algul selle sisendkeel, siis väljundkeel ja lõpuks kirjeldada keelte konstruktsioonide vastavus (translatsioon).
Osutub, et formaalsest sisendkeele kirjeldusest (sisendkeele grammatikast) on lihtne saada algul sisendkeele tunnistajat (recognizer) ja siis väljundkeele grammatika ja translatsiooni kirjelduse (vastavate grammatikate) lisamisel translaatorit; vastavad etapid on peaaegu mehhaanilised ja võimaldavad transleerimisprogrammi (peaaegu täielikult) genereerida.
Programmi (näiteks translaatori) struktuuri (loogika) määrab selle programmi sisendi struktuur; sisend juhib programm tööd (programmi läbimist) ja sellepärast peabki programmi struktuur vastama sisendi struktuurile. See vastavys saadaksegi, konstrueerides algul sisendi tunnistaja. Programmi poolt sooritatavad tegevused (sisendi teisendus väljundiks) lisatakse sellesse struktuuri hiljem.