Interprete
Compilatore e interprete sono le basi fondamentali per eseguire del codice di un qualsiasi linguaggio su una macchina.
Inteprete: considera porzioni limitate, statement, di codice (sorgente o intermedio), le traduce in codice macchina e le esegue.
Similmente al compilatore, anche l’interprete è diviso in due fasi, ovvero il front end e il back end.
Front end
Compilatore.
La seguente potrebbe essere una rappresentazione di quello che esegue il front-end:

Come si può evincere, il front end può essere decomposto in almeno 4 parti:
- analisi sintattica
- analisi lessicale
- analisi semantica
- produzione codice intermedio
Il front end gestisce anche la symbol table, che contiene informazioni su tutte le entitĂ definite nel programma.
Back end
Genera il codice eseguibile, ed è effettivamente un interprete del codice intermedio. L’interprete adotta in modello di esecuzione in base al codice intermedio.
- Abstract Syntax Tree (AST)
- bytecode
AST
Il codice sorgente è rappresentato sotto forma di albero. L’interprete considera porzioni di albero, le traduce in istruzioni corrispondenti e le esegue.
Bytecode
Il codice sorgente è tradotto in bytecode, un linguaggio portabile di basso livello. Viene ottimizzato maggiormente rispetto alla rappresentazione AST. Il bytecode può essere considerato come il codice macchina di una macchina virtuale. La macchina virtuale, quindi, traduce le istruzioni bytecode in istruzioni macchina per la macchina e sistema operativo reali.
La macchina virtuale solitamente incorpora un compilatore interno, che a run time:
- compila porzioni di bytecode traducendole nel linguaggio macchina nativo
- memorizza le porzioni per il riuso