Un parser può prendere il codice sorgente da una lingua e trasformarlo in un tipo di albero . Poiché qualsiasi linguaggio può essere rappresentato in questo modo, la traduzione consiste nel trasformare il codice sorgente da una lingua in un albero di sintassi e quindi invertire il processo per trasformare quell'albero nel codice sorgente della lingua di destinazione.
Ci sono, naturalmente, dettagli più fini - le lingue devono avere caratteristiche corrispondenti, quindi ci possono essere programmi in linguaggio A che non possono essere espressi direttamente nella lingua B; dovresti attenersi al sottoinsieme di funzionalità comuni a entrambi. Lo stesso potrebbe dirsi delle librerie standard: potresti convertire un printf
in C in un System.out.printf
in Java, ma ci sono cose che non hanno una traduzione evidente.
Ulteriori letture: La natura di Lisp