Domanda

Sto pensando di scrivere nella mia lingua poco.

Ho trovato alcune opzioni, ma sentitevi liberi di suggerire di più.

  • JVM
  • Parrot
  • OSA

Un sacco di lingue stanno usando la JVM, ma a meno che non si scrive un linguaggio Java-ish, tutta la potenza che stdlib ti dà è andando a sentire brutto; Non è molto bravo a roba dinamica sia.

Parrot sembra una buona macchina virtuale per lo sviluppo di lingue, ma ha un po 'abbandonato / incompleto / passatempo progetto odore.

OSA è ciò che i poteri Applescript, non un VM particolarmente noto, ma io uso Mac, e offre buona integrazione di sistema.

CLR + Mac non sembra una buona combinazione ...

La mia lingua sarà un oggetto orientato funzionale linguaggio a flusso di dati in concomitanza con la tipizzazione forte e un mix di sintassi di Python e Lisp. Suona bene, eh?

[modifica]
Ho accettato Python per ora, ma mi piacerebbe sentire di più su OSA e Parrot.

È stato utile?

Soluzione

Un approccio che ho giocato con è quello di utilizzare Python ast modulo per costruire un albero di sintassi astratta che rappresenta il codice per l'esecuzione. La funzione Python compile può compilare un AST in bytecode Python, che exec possono quindi eseguire. Questo è il livello un po 'superiore a quello bytecode generare direttamente, ma si avrà a che fare con alcune stranezze del linguaggio Python (ad esempio, la differenza fondamentale tra le dichiarazioni e le espressioni).

In questo modo ho anche scritto un modulo "Deparse" che i tentativi di convertire un tornare AST per codice sorgente Python equivalente, solo per il debug. È possibile trovare il codice nella PSIL repository se siete interessati.

Altri suggerimenti

Dai un'occhiata alla LLVM . Non è una macchina virtuale pura in quanto tale, più un quadro con il proprio IR che permette di costruire macchine virtuali di alto livello. Ha bella roba come l'analisi statica del codice e il supporto JIT

  • Lua ha un piccolo, ben scritto e veloce VM
  • Python VM - si può davvero attaccare un nuovo linguaggio ad esso se si vuole. O scrivere (uso?) Qualcosa come tinypy che è una piccola e semplice implementazione di Python VM.

Entrambe le opzioni, abbiano accesso a librerie standard utili che vi farà risparmiare si lavora, e sono codificati in relativamente pulito e modulare C, in modo che non dovrebbe essere difficile per la connessione a.

Detto questo, sono d'accordo che il pappagallo è abbandonato / hobby. E 'abbastanza maturo, e ha alcuni sviluppatori molto forti che lavorano su di esso. Inoltre, è in particolare una macchina virtuale progettato per essere preso di mira da molteplici linguaggi dinamici. Così, è stato progettato con la flessibilità in mente.

Avete considerato PyPy? Da quello che ho letto, oltre ad essere un Python compilatore JIT, ha anche la capacità di gestire altre lingue. Per esempio c'è un tutorial che spiega come per creare un compilatore JIT Brainfuck utilizzando PyPy.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top