PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Skriptsprachenintegration in ein Programm



Pingu
28-09-2005, 18:24
Hi,

ich habe den Auftrag ein bestehendes Programm, um eine Skriptsprache zu erweitern und habe keine Ahnung.

Konkret geht es darum, daß ein Programm existiert, mit dem man Produkttests für eine Zertifizierung durchführen kann. Dieses ist komplett in ANSI-C geschrieben. Jetzt habe ich die Anforderung bekommen, es um eine Skriptsprache zu erweitern. D. h. ein Anwender des Programms soll in der Lage sein, für sich selber zusätzliche Tests zu definieren und zu schreiben. Diese zusätzlichen Tests sollen in einer Skriptsprache definiert werden. Bisher gibt es keine Festlegung auf welche. Die Skriptsprache soll eigene Befehle/Funktionen unterstützen neben den üblichen Standardkonstrukten (ähnlich einfachem BASIC). Sie soll natürlich einfach in das bestehende Projekt integrierbar sein. Ich habe keine Ahnung.

Was würdet ihr empfehlen. Ich habe was von TCL gehört (TK wird nicht benötigt, da es ja "nur" die Oberfläche abbildet.) oder von YACC/BISON und LEX/FLEX.

Ich werde mich am Samstag auch mal in der Buchhandlung umsehen.

Aber bis dahin. Habt ihr schon einmal Erfahrungen mit soetwas gesammelt? Wo findet man Informationen dazu?

Danke.

Pingu


PS: Kleine Anekdote: Ich habe damals nach dem ABI ein paar Probevorlesungen Informatik an der Uni besucht. Dabei war eine der Vorlesungen Compilerbau. Diese war so theroretisch, daß ich mich entschieden habe, lieber E-Technik an der FH zu studieren. Jetzt holt es mich wieder ein.

peschmae
28-09-2005, 19:31
Ich hab das noch nie gemacht und deshalb auch keine Ahnung. Aber da ich TCL nicht mag hätte ich mich in Richtung Python orientiert - siehe auch die FAQ (http://www.python.org/doc/faq/extending.html#how-can-i-evaluate-an-arbitrary-python-expression-from-c) dazu.

Aber eigentlich wäre dem nur so gewesen weil
a) Alle die Python nutzen sagen Python sei gut - [ironie-sarkasmus]vielleicht ist das so ein Ding wie bei C++ - da sagen auch viele dies Nutzen es sei gut und dabei ists grottenschlecht - nur würden sie sich schämen zuzugeben dass sie was grottenschlechtes benutzen[/.*]

b) Ich mal gehört habe Scribus nutze Python um so Scripting-Zeugs anzubieten.

Aber wie gesagt - /me hat keine Ahnung oder zumindest nicht sehr viel davon ;)

MfG Peschmä

panzi
28-09-2005, 20:51
b) Ich mal gehört habe Scribus nutze Python um so Scripting-Zeugs anzubieten.
Nicht nur scribus sondern auch noch viele andere Programme mehr nutzen python, z.B. auch blender. Auf der python homepage wird auch beschrieben wie man python in ein C/C++ Programm einbettet: http://python.org/doc/2.4.2/ext/ext.html

Wenn es C++ währe, könntest auch boost's python bindings verwenden: http://boost.org/libs/python/doc/index.html

Pingu
28-09-2005, 22:58
Hey, das mit dem Python sieht ja ziemlich gut aus. Es scheint nach der Doku relativ bis sehr einfach integrieren und auch erweitern auf Basis von ANSI-C.

Danke. Aber ich bin auch immer noch offen für andere Vorschläge. Wobei Python langsam mein Interesse geweckt hat (bisher habe ich es immer verdrängt).

Pingu

[0x[90]|
29-09-2005, 02:52
Falls du nichts dagegen hast eine Sprache zu verwenden deren Environment groesser ist als dein eigentliches Programm, koenntest du auch EmbededMono und somit C# nutzen. Oder auch Perl. Schau dir an was andere Anwendungen (beispielsweise X-Chat) so an Script-Plugins bieten und du kannst dir ein Bild davon machen, was du alles nutzen koenntest :)

// ach ja:


vielleicht ist das so ein Ding wie bei C++ - da sagen auch viele dies Nutzen es sei gut und dabei ists grottenschlecht - nur würden sie sich schämen zuzugeben dass sie was grottenschlechtes benutzen


full ack ;)

Joghurt
29-09-2005, 14:31
Hey, das mit dem Python sieht ja ziemlich gut aus. Es scheint nach der Doku relativ bis sehr einfach integrieren und auch erweitern auf Basis von ANSI-C.

Danke. Aber ich bin auch immer noch offen für andere Vorschläge. Wobei Python langsam mein Interesse geweckt hat (bisher habe ich es immer verdrängt).Nutz dann am besten SWIG, das erstellt dir die Wrapperdateien zur Pythonintegration fast automatisch.

Ansonsten gibt es noch Lua, eine Sprache, die extra als Skriptsprache (im Sinne von Makrosprache) entwickelt wurde.

http://www.swig.org
http://www.lua.org

RapidMax
29-09-2005, 21:58
Ich habe erst kürzlich Python eine Applikation integriert, das ging super leicht, auch ohne Swig.

Gruss, Andy

Pingu
29-09-2005, 22:34
Danke für eure Hilfe.
SWIG scheint eher die andere Richtung zu sein, als die ich benötige. Allerdings scheint sich SWIG auch gut für Unit Tests zu eignen.

Ich habe nach Rücksprache mit anderen Firmen aus meinem Bereich festgestellt, daß es besser ist in Richtung TCL zu gehen. Denn es gibt bereits andere Firmen, die TCL/TK anbieten. Weshalb wohl teilweise schon TCL-Scripts existieren, die hier wieder verwendet werden könnten. Daher werde ich wohl eher Richtung TCL gehen.

Ich persönlich hatte mich bisher mit TCL nicht auseinander gesetzt. Nachdem was ich bisher gesehen habe, scheint Python (für mich) einfacher zu sein als TCL. Aber es kann halt nicht immer nach den persönlichen Vorlieben gehen.

Also vielen Dank nocheinmal für eure Vorschläge.

Pingu