Question

Existe-t-il un analyseur construit que je peux utiliser à partir de C # pour analyser des expressions mathematica?

Je sais que je peux utiliser le noyau lui-même pour analyser une expression et utiliser .NET / Link pour récupérer l'arborescence ... Mais je cherche quelque chose qui ne repose pas sur le noyau.

Était-ce utile?

La solution

Mon module matheclipse-parser implémente un analyseur syntaxique en Java qui peut analyser un grand sous-ensemble de expressions mathematica. Voir la page readme.md pour l’utilisation. Peut-être que vous pouvez porter l’analyseur en C #?

Autres conseils

J'ai écrit un analyseur Mathematica dans 300 lignes de code OCaml sous contrat pour Wolfram Research et je l'ai trouvé assez simple, car la grammaire est est clairement documenté dans la littérature et toute ambiguïté est facilement détectée en jouant avec Mathematica lui-même.

La grammaire mathematica n’est pas bien documentée, c’est vrai. Mais autant que je sache, c'est LALR (1) et probablement LL (1); la syntaxe entre crochets / taggée de donne à l'analyseur des indices complets à quoi s'attendre ensuite, tout comme LISP et XML.

La DMS Software Reengineering Toolkit possède une grammaire Mathematica utilisée pour tâches réelles. Cela inclut les programmes MMa ainsi que les formes d'expression pures.

Cela ne vous aidera probablement pas, puisque vous en voulez un en C #.

Si vous avez accès au Kernal, je m'en tiendrai à cela.

Je ne pense pas qu'une telle chose existe déjà (j'aimerais bien le savoir). Mais il peut être utile que dans Mathematica, vous puissiez appliquer la fonction FullForm à n'importe quelle expression et obtenir quelque chose de très facile à analyser, un peu comme une expression s en Lisp. Par exemple,

FullForm[a+b*c]

donne

Plus[a, Times[b,c]]

Il s’agit de la représentation sous-jacente de toutes les expressions Mathematica et devrait être facile à analyser.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top