Supponiamo di avere un file di codice che legge (userò la sintassi Java-ish) e che viene interpretato. Un po 'come un copione rubino.
class A{
int fieldName = 4;
A(){...}
void doSomething(){...}
}
A instanceOfA = new A();
A.fieldName = 7;
Questo è quello che capisco quando si interpreta questo file.
- Il file è lessicato e analizzato
- AST o Parse tree viene generato
- Parse tree è passato per generare codice nel runtime per rappresentare la classe.
- Allora cosa succede? Come si trasforma la definizione in un'istanza? E che tipo di rappresentazione interna è necessaria per rappresentare la classe? L'interprete mantiene l'AST della classe in giro per la rielaborazione ogni volta che viene creata un'istanza o viene creato un altro modulo?
Ho seguito gli schemi del libro Modelli di implementazioni linguistiche di Terrence Parr. Penso di capire come costruire la tabella dei simboli e gli oggetti dell'oscilloscopio. Sono solo un po 'confuso su come prendere una struttura come una classe e crearne un'istanza.