Frage

Ich denke an meine eigene kleine Sprache zu schreiben.

fand ich ein paar Optionen, aber ich fühle mich frei, mehr zu suggerieren.

  • JVM
  • Parrot
  • OSA

Viele Sprachen werden mit der JVM, aber wenn Sie eine Java-ish Sprache schreiben, die ganze Macht der stdlib gibt Ihnen das Gefühl hässlich wird; Es ist nicht sehr gut im dynamischen Sachen auch nicht.

Parrot scheint eine gute VM für Sprachen zu entwickeln, aber es hat ein wenig aufgegeben / unfertig / Hobby-Projekt Geruch.

OSA ist, welche Kräfte AppleScript- kein besonders gut bekannt VM, aber ich benutze Mac, und es bietet eine gute Systemintegration.

CLR + Mac keine gute Kombination scheint ...

Meine Sprache wird ein objektorientierte Funktions gleichzeitige Datenflusssprache mit starken Typisierung und eine Mischung aus Python und Lisp-Syntax sein. Klingt gut, nicht wahr?

[Bearbeiten]
Ich nahm Python für jetzt, aber ich würde gerne mehr über OSA und Parrot hören.

War es hilfreich?

Lösung

Ein Ansatz, den ich gespielt habe mit ist das Python ast Modul zu verwenden zu bauen einen abstrakten Syntaxbaum repräsentiert, um den Code auszuführen. Der Python compile Funktion kann ein AST in Python-Bytecode kompiliert, die exec können dann ausgeführt werden. Das ist ein bisschen höher als direkt zu erzeugen Bytecode, aber Sie werden mit einigen Macken der Sprache Python (zum Beispiel der grundlegende Unterschied zwischen Aussagen und Ausdrücke) zu tun haben.

Dabei dies habe ich auch ein „Deparse“ Modul geschrieben, dass Versuche, eine AST zurück zu äquivalenten Python-Quellcode zu konvertieren, nur für das Debuggen. Sie können Code in das finden PSIL Repository, wenn Sie daran interessiert sind.

Andere Tipps

Hier finden Sie aktuelle LLVM . Es ist kein reines VM als solche mehr einen Rahmen mit einer eigenen IR, die Sie hohe VMs erstellen können. Hat nette Sachen wie statische Code-Analyse und JIT-Unterstützung

  • Lua hat einen kleinen, gut geschrieben und schnellen VM
  • Python VM - man kann wirklich eine neue Sprache zu es anhängen, wenn Sie wollen. Oder schreiben (Verwendung?) So etwas wie tinypy, die eine kleine und einfache Implementierung der Python VM ist.

Die beiden oben genannten Optionen Zugriff auf nützliche Standardbibliotheken, die Sie sparen arbeiten, und sind in relativ sauber und modular C codiert, so dass sie nicht schwer sein sollte, zu verbinden.

sagte, dass ich nicht einverstanden, dass Parrot aufgegeben / Hobby. Es ist ziemlich ausgereift und hat einige sehr starke Entwickler daran zu arbeiten. Darüber hinaus ist es insbesondere eine VM entworfen von mehreren dynamischen Sprachen ausgerichtet werden. So wurde in Hinblick auf Flexibilität ausgelegt ist.

Haben Sie PyPy in Betracht gezogen? Von dem, was ich gelesen habe, zusätzlich einen Python JIT-Compiler zu sein, hat es auch die Möglichkeit, andere Sprachen zu handhaben. Zum Beispiel gibt es ein Tutorial was erklärt, wie erstellen PyPy einen Brainfuck JIT-Compiler.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top