Creazione di un compilatore molto semplice utilizzando Java

1

Voglio provare a creare il mio linguaggio di base, con il suo compilatore di base. Tutto utilizzando Java.

Per ora, basterà abilitare il "programmatore" per stampare le cose sullo schermo.

Avevo un'idea su come farlo e quello che volevo sapere è: sarà considerato un vero "compilatore", un vero "linguaggio" e una vera "macchina virtuale"? (Tutto molto, molto semplice, ovviamente).

La mia idea era di creare un programma che fungesse da 'IDE' (editor e compilatore), e un altro che fungesse da 'macchina virtuale'.

Ciò significa che l'IDE non compilerà il codice scritto su un codice macchina esistente, come il Bytecode Java, ma in realtà verrà compilato con una sorta di codice compilato da me.

Questo codice compilato sarà comprensibile solo dal mio programma "macchina virtuale" e sarà in grado di funzionare solo all'interno di questo programma. Il programma "macchina virtuale" utilizzerà le operazioni Java di alto livello per comprendere ed eseguire il codice compilato.

Il programma "macchina virtuale" sarà un programma Java, in esecuzione sulla JVM.

La mia domanda è: Concettualmente , è considerata una macchina virtuale e "codice macchina"? In caso contrario, questo è ancora considerato un "linguaggio di programmazione", anche se è compilato bytecode può essere eseguito solo all'interno di un programma specifico?

    
posta Aviv Cohn 03.03.2014 - 10:21
fonte

1 risposta

3

Certo che lo è. Tutto ciò che introduce un altro livello di interpretazione nello stack di elaborazione è una macchina virtuale che un programmatore può scegliere come target. Potrebbe non diventare molto completo o di successo a meno che non ci si metta una folle quantità di sforzi, ma la tua rivendicazione del termine tecnico è valida.

"Codice macchina" è un termine più limitato. Sorprendentemente, la convenzione è non per chiamare il codice che viene eseguito su una macchina virtuale "codice macchina", ma "codice byte". Per "codice macchina" si intende solitamente un codice che deve essere eseguito su un microprocessore fisico, cioè un flusso dei suoi codici operativi. Tutto ciò che è sotto è micro-codice, e qualsiasi cosa sopra è o "codice byte" o semplicemente "codice" (codice Java, codice Python, ecc.)

    
risposta data 03.03.2014 - 10:27
fonte

Leggi altre domande sui tag