MAGES est le successeur officiel de YAMP. Il s’agit d’un analyseur et interprète d’expressions très simple mais puissant. Vous pouvez utiliser MAGES pour inclure un moteur de script sophistiqué, facile à personnaliser et léger à votre application.
Entre autres applications, MAGES a été utilisé dans les PowerToys de Microsoft.
MAGES vient d'être mis à jour (v3.0.0) avec les métadonnées d'objet, la prise en charge des listes directes et la syntaxe JSX.
2023 :
MAGES a été mis à jour (v2.0.0) avec la prise en charge des nombres complexes. En outre, la cible de construction et le runtime ont été mis à jour pour utiliser les possibilités modernes.
2018 :
La première version stable est sortie. La version actuelle 1.6.0 contient un REPL amélioré. La bibliothèque contient tout ce qui permet d'effectuer des opérations de script légères en C#. Un article CodeProject sur la bibliothèque (contenant également des comparaisons de contexte et de performances) est également disponible.
MAGES lui-même n'a aucune dépendance, cependant, les tests dépendent de NUnit et les benchmarks utilisent BenchmarkDotNet. Habituellement, MAGES doit être installé via la source du package NuGet. Si cela ne fonctionne pas pour vous, clonez la source et créez vous-même MAGES. Assurez-vous que tous les tests unitaires réussissent.
L'ensemble de la bibliothèque a été conçu pour être utilisé à partir d'applications .NET Core 3.0 (ou supérieur) / .NET 5.0 (ou supérieur). Cela signifie qu'il est (entre autres) compatible avec Unity 2021.2 ou Mono 6.4. Le package NuGet est disponible via le flux de package officiel.
Dans le cas le plus simple, vous créez un nouveau moteur pour contenir une portée globale (pour les variables et les fonctions) et lancer l'interprétation.
var engine = new Mages . Core . Engine ( ) ;
var result = engine . Interpret ( " sin(2) * cos(pi / 4) " ) ; // 0.642970376623918
Vous pouvez également créer des blocs réutilisables à partir d’extraits de code.
var expOne = engine . Compile ( " exp(1) " ) ;
var result = expOne ( ) ; // 2.71828182845905
Ou vous pouvez interagir avec des éléments créés par MAGES.
var func = engine . Interpret ( " (x, y) => x * y + 3 * sqrt(x) " ) as Mages . Core . Function ;
var result = func . Invoke ( new Object [ ] { 4.0 , 3.0 } ) ; // 18.0
Ou encore plus simple (les détails sont expliqués dans le document de démarrage) :
var func = engine . Interpret ( " (x, y) => x * y + 3 * sqrt(x) " ) as Mages . Core . Function ;
var result = func . Call ( 4 , 3 ) ; // 18.0
Ce ne sont là que quelques exemples parmi les plus élémentaires. Plus d’informations peuvent être trouvées dans la documentation.
La documentation est donnée sous forme de documents Markdown placés dans le dossier doc de ce référentiel. Les liens suivants valent la peine d'être consultés :
Si quelque chose manque, n'est pas clair ou est erroné, soumettez un PR ou déposez un problème. Consultez la section suivante sur les cotisations pour plus d’informations.
Les contributions sous forme d'implémentations de fonctionnalités ou de corrections de bugs sont les bienvenues, mais doivent être effectuées de manière organisée et cohérente. Les directives de contribution doivent être lues avant de commencer tout travail.
Les contributions peuvent également prendre la forme de rapports de bogues et de demandes de fonctionnalités. Vive le développement open source !
Les règles du Semver sont notre pain et notre beurre. En bref, cela signifie :
Par conséquent : ne vous attendez pas à des modifications majeures au sein de la même version majeure.
Les sociétés suivantes ont sponsorisé une partie du développement de MAGES.
Merci pour tout le soutien et la confiance dans le projet !
La licence MIT (MIT)
Copyright (c) 2016-2024 Florian Rappl
L'autorisation est accordée par la présente, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le « Logiciel »), d'utiliser le Logiciel sans restriction, y compris, sans limitation, les droits d'utilisation, de copie, de modification, de fusion. , publier, distribuer, accorder des sous-licences et/ou vendre des copies du Logiciel, et permettre aux personnes à qui le Logiciel est fourni de le faire, sous réserve des conditions suivantes :
L'avis de droit d'auteur ci-dessus et cet avis d'autorisation doivent être inclus dans toutes les copies ou parties substantielles du logiciel.
LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS LIMITATION LES GARANTIES DE QUALITÉ MARCHANDE, D'ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. EN AUCUN CAS LES AUTEURS OU LES TITULAIRES DES DROITS D'AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGES OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS UNE ACTION CONTRACTUELLE, DÉLIT OU AUTRE, DÉCOULANT DE, DE OU EN RELATION AVEC LE LOGICIEL OU L'UTILISATION OU D'AUTRES TRANSACTIONS DANS LE LOGICIEL.