Progettare un piccolo interprete orientato agli oggetti

0

Sto costruendo un piccolo interprete per una lingua che ho creato.

L'analizzatore di grammatica, lexer e sintassi sono già stati eseguiti.

Ciò che mi confonde è la parte dell'interprete. Conosco il modello di interprete , ma sembra troppo prolisso (più di quanto deve essere) , Non credo che sia l'approccio giusto.

Quali altre alternative devo progettare il mio interprete? (è solo l'interprete, non il parser).

Il linguaggio che verrà interpretato è un linguaggio imperativo molto piccolo con if , while , dichiarazione di attribuzione, istruzione input e istruzione output .

Il linguaggio che sto usando per creare l'interprete è orientato agli oggetti, quindi ho bisogno di un approccio orientato agli oggetti.

Non userò nessun framework o simile, è da zero.

    
posta Gabriel 14.09.2016 - 13:49
fonte

1 risposta

6

Se si utilizza un generatore di parser per implementare l'analisi, in genere è possibile associare le azioni di codice alle regole di grammatica. Queste azioni di codice ricevono anche i valori associati ai token lessicali e i valori restituiti da altre regole a cui si fa riferimento.

Tipicamente questo è usato per costruire un albero di sintassi astratto (AST) per il codice che viene analizzato.

Quindi puoi discendere lungo l'AST e valutare i suoi nodi. Questo può anche essere fatto in modo OO, come ad esempio usando le classi OO per i nodi, ognuno con un metodo "Valuta", o usando un Modello visitatore , dove di nuovo puoi utilizzare OOP a tuo piacimento.

Nota che puoi usare un approccio simile anche se stai scrivendo il tuo parser.

    
risposta data 14.09.2016 - 14:55
fonte

Leggi altre domande sui tag