Analisador para a sintaxe Mathematica?
-
05-07-2019 - |
Pergunta
Existe um analisador construído que eu posso usar a partir de C # que pode analisar expressões mathematica?
Eu sei que eu posso usar o próprio Kernel para analisar uma expressão, ea utilização .NET / Link para recuperar a estrutura de árvore ... Mas eu estou procurando algo isso não contar com o Kernel.
Solução
matheclipse-parser módulo implementa um analisador em Java que pode analisar um grande subconjunto de expressões mathematica. Veja a página de readme.md para o uso. Talvez você pode porta o analisador para C #?
Outras dicas
Eu escrevi um analisador Mathematica em 300 linhas de código OCaml sob contrato para Wolfram Research e descobriu que ele seja bastante fácil, porque a gramática é claramente documentado em sua literatura e quaisquer ambiguidades são facilmente encontrados por jogar com a própria Mathematica.
A gramática mathematica não é bem documentado, é verdade. Mas AFAIK, é LALR (1) e LL provável (1); a enquadradas / marcado sintaxe de dá as pistas completas analisador sobre o que esperar em seguida, assim como LISP e XML.
O DMS Software Reengineering Toolkit tem uma gramática Mathematica que tem sido usado para tarefas reais. Isso inclui programas de MMA, bem como formas de expressão puras.
Isso provavelmente não ajudá-lo, desde que você quer um em C #.
Se você tiver acesso à Kernal, eu ater a isso.
Eu não acho que tal coisa já existe (Eu adoraria saber sobre ele). Mas pode ser útil que, dentro Mathematica você pode aplicar a função FullForm
a qualquer expressão e obter algo muito fácil de analisar, como uma espécie de s-expressão em Lisp. Por exemplo,
FullForm[a+b*c]
rendimentos
Plus[a, Times[b,c]]
Essa é a representação subjacente de todas as expressões do Mathematica e deve ser simples de analisar.