10 Stimmen

Einbettung einer Programmiersprache in ein Programm

Ich würde gerne ein gewisses Maß an "Skriptfähigkeit" zu einer Anwendung hinzufügen, die ich schreibe. Grob gesagt, möchte ich eine Möglichkeit, eine Programmiersprache API in mein Programm einbetten. Ich habe mir TinyPy angeschaut, aber ich befürchte, dass es - angesichts seiner geringen Größe - trügerisch einschränkend sein könnte (d.h. es sieht aus wie Python und fühlt sich auch so an, aber es fehlen viele der Funktionen von vollwertigem Python).

Ich möchte nicht meine eigene Programmiersprache schreiben, sondern einfach eine relativ bekannte Sprache nehmen, in der Benutzer Funktionen schreiben können, und dann in der Lage sein, diese Funktionen aufzurufen bzw. die Parameter dieser Funktionen von meiner Anwendung aus zu übergeben, die in C geschrieben sein wird.

Ich möchte auch auf alle Datentypen zugreifen können, die diese Funktionen an mich zurückgeben, auch von C aus.

Hat jemand irgendwelche Vorschläge für eine API/Bibliothek zu verwenden, die sowohl leichtgewichtig, relativ voll funktionsfähig, und mit einer relativ einfach zu verwenden oder leicht zu verstehen C-Bibliothek wäre?

Gracias.

16voto

Lua ist eine beliebte Wahl.

5voto

Jacob Mattison Punkte 48729

Sie sollten sich Folgendes ansehen SpiderMonkey die es Ihnen ermöglicht, eine Javascript-Engine in Ihr C-Programm einzubetten.

3voto

David Thornley Punkte 55244

Die meisten Skriptsprachen haben gute Schnittstellen zu C. Diejenigen, die ich mir angesehen habe, sind Perl, Python und Lua. Wenn Ihre Benutzer keine ernsthaften Programmierer sind, würde ich raten, Perl nicht zu benutzen. Wenn sie ernsthafte "World of Warcraft"-Spieler sind, sind sie vielleicht schon mit Lua und dem Schreiben von Lua-Code als Schnittstelle zu einem kompilierten Programm vertraut, so dass dies eine gute Wahl sein könnte.

2voto

Martin Beckett Punkte 92477

Sie können immer 'c' mit der Option ch Werkzeugkasten.
Wie Sie sagten, ist Python gut, besonders wenn Sie den boost::python Wrapper verwenden können.
Eine weitere beliebte Wahl ist Javascript, es wird vom Qt-Skripting-System verwendet

2voto

nategoose Punkte 11636

Lua und die Umgangssprache wurden eigens für diesen Zweck erfunden. Lua hat einige nette Funktionen, um Code in eine Sandbox zu packen. Wenn die Benutzer also Code zur Verfügung stellen können, kann man versuchen, ihre Möglichkeiten einzuschränken, sich selbst in den Fuß zu schießen.

Flavors von Lisp wurden dafür verwendet (bekanntlich in gnu emacs).

Sie müssen wirklich darüber nachdenken, wofür die eingebettete Sprache verwendet werden soll, und dann überlegen, in welcher Art von Sprache Sie diese Funktionalität schreiben möchten, wie Sie den Code lesen können, den andere geschrieben haben, und wie Sie sich leicht davon überzeugen können, dass der Code korrekt ist, oder wie Sie ihn zumindest leicht debuggen können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X