Gondolom az, hogy felismerje a nyelvben a struktúrát, és valami értelmes módon fordítsa. Mondjuk az alábbi Fortran programból:
i = 0
100 write (*, *) i
if i - 100, 100, 120, 120
120 continue
end
ne azt csinálja, hogy
#include <iostream>
#include <iomanip>
int main(){
int i = 0;
label100: std::cout << i << std::endl;
if(i - 100 < 0){
goto label100;
} else if(i - 100 == 0){
goto label120;
} else{
goto label120;
}
label120: return 0;
}
hanem valami értelmesebbet. És akkor még nem foglalkoztunk azzal, ha mondjuk egy olyan nyelvet kell átfordítani, amiben van név szerinti átadás, tehát egy függvénynek egy változó helyett átadhatom azt hogy 'i+1' ha tudom, hogy a függvény belsejében van egy i változó, és akkor azt ott megcsinálja (Algol 60 call-by-name), vagy valami más olyan konstrukció, ami a target nyelvben nagyon nincs.