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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top