3 votes

Moteur de script embarqué pour DSL

Je travaille sur un projet qui a besoin d'un DSL embarqué pour répondre aux exigences prévues.

La DSL serait basée sur des événements définis par l'utilisateur. Voici une maquette de la syntaxe souhaitée :

user-defined-event-1 {
    // event body
}

user-defined-event-2 {
    // event body
}

Probablement, la langue la plus similaire que je connaisse sur la base des événements est LSL (de Second Life) .

Ainsi, après avoir lu d'autres questions similaires sur SO, je voudrais demander quel est le meilleur moteur de script embarquable (Ruby, Lua, Python, etc) sur C++ (je travaille en Qt) qui me permet de créer ce DSL.

Dans mon projet, je testerais que le script utilise correctement la syntaxe DSL (au moins un événement défini) et donnerait à l'utilisateur toute la puissance du moteur de script sous-jacent et, si possible, de Qt.

Ce n'est pas une obligation pour que le langage embarqué fonctionne avec Qt. Il peut être isolé, mais il serait bien d'avoir aussi une certaine intégration.

3voto

Mark Rushakoff Points 97350

Il y a au moins quelques Qt -Liaisons Lua qui existent. Lua peut en quelque sorte faire la syntaxe que vous avez montrée ci-dessus ; spécifiquement, {} indique un tableau (tableau associatif) en Lua, et si vous ne faites que passer un tableau anonyme à une fonction, vous n'avez pas besoin de parenthèses :

Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
> function LengthOfTable(t) print(#t) end
> LengthOfTable ({"a","b","c"})
3
> LengthOfTable {"a","b","c"}
3

Si Lua est effectivement le meilleur pour votre application, dépend de votre application, bien sûr. De toute façon, Lua est très facile (IMO) à intégrer dans C ou C++.

1voto

James Black Points 26183

Vous pourriez examiner le javascript intégrable, par le biais du projet V8 de Google, qui est écrit en C++.

http://code.google.com/apis/v8/intro.html

1voto

Karl Voigtland Points 5111

Qt est livré avec le QtScript module de script. Il utilise un langage basé sur ECMAScript (comme javascript).

1voto

Joe Internet Points 531

Tcl est assez proche de la syntaxe que vous proposez :

proc user-defined-event-1 {} {
# event body
puts "Hello World"
}

proc définit une procédure, et les accolades {} supplémentaires sont utilisées pour les arguments. Dans un shell tcl, les procédures peuvent être tapées dynamiquement ligne par ligne, copiées et collées, ou chargées depuis un fichier. Elles peuvent également être redéfinies en les rechargeant simplement.

0voto

Troubadour Points 9485

Je n'ai jamais essayé mais il y a PyQt .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X