Statut maître :
Statut de développement :
ChaiScript
http://www.chaiscript.com
(c) 2009-2012 Jonathan Turner (c) 2009-2017 Jason Turner
Sortie sous licence BSD, voir "license.txt" pour plus de détails.
ChaiScript est l'un des seuls langages de script intégrés conçus dès le départ pour cibler directement le C++ et tirer parti des techniques de développement C++ modernes, en travaillant avec le développeur sur la manière dont il s'attend à ce qu'il fonctionne. Étant une application C++ native, elle présente certains avantages par rapport aux langages de script embarqués existants :
ChaiScript nécessite un compilateur C++17 pour être construit avec la prise en charge des modèles variadiques. Il a été testé avec gcc 7 et clang 6 (avec libcxx).
Vous pouvez télécharger et installer ChaiScript à l'aide du gestionnaire de dépendances vcpkg :
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
vcpkg install chaiscript
Le port ChaiScript dans vcpkg est tenu à jour par les membres de l'équipe Microsoft et les contributeurs de la communauté. Si la version est obsolète, veuillez créer un problème ou une pull request sur le référentiel vcpkg.
#include <chaiscript/chaiscript.hpp>
à votre fichier sourcechai
comme ceci : chaiscript::ChaiScript chai
Une fois instancié, le moteur est prêt à commencer à exécuter la source ChaiScript. Vous disposez de deux options principales pour traiter la source ChaiScript : une ligne à la fois en utilisant chai.eval(string)
et un fichier à la fois en utilisant chai.eval_file(fname)
Pour rendre les fonctions de votre code C++ visibles aux scripts, elles doivent être enregistrées auprès du moteur de script. Pour ce faire, appelez add :
chai.add(chaiscript::fun(&my_function), "my_function_name");
Une fois enregistrée, la fonction sera visible par les scripts sous le nom "my_function_name"
ChaiScript est similaire à ECMAScript (alias JavaScript(tm)), mais avec quelques modifications pour le rendre plus facile à utiliser. Pour des exemples d'utilisation, consultez le répertoire "samples", et pour un examen plus approfondi du langage, les tests unitaires du répertoire "unittests" couvrent le plus de terrain.
Pour obtenir des exemples sur la manière d'enregistrer des parties de votre application C++, consultez « example.cpp » dans le répertoire « samples ». Exemple.cpp est verbeux et montre toutes les manières possibles de travailler avec la bibliothèque. Pour plus de documentation, générez la documentation doxygen dans le dossier build ou consultez le site Web http://www.chaiscript.com.
L’exemple complet le plus court possible est le suivant :
// / main.cpp
# include < chaiscript/chaiscript.hpp >
double function ( int i, double j)
{
return i * j;
}
int main ()
{
chaiscript::ChaiScript chai;
chai. add ( chaiscript::fun (&function), " function " );
double d = chai. eval < double >( " function(3, 4.75); " );
}