问题描述
由于一些MATHML内容:
Given some MathML content:
<apply>
<eq/>
<ci>c</ci>
<apply>
<plus/>
<ci>a</ci>
<ci>b</ci>
</apply>
</apply>
和
std::map<std::string,std::double> cal;
cal["a"] = 1.;
cal["b"] = 2.;
cal["c"] = 0; // does not matter what c is
我要评价MathML和检索结果。是否有一个C / C ++库,可以帮助做到这一点?
I wish to evaluate the MathML and retrieve the results. Is there a C/C++ library that can help to do this?
推荐答案
MATHML具有语义和presentational加价。这样一个通用的MATHML解析器评价是不可能的。
MathML has both semantic and presentational mark-up. So a generic MathML parser for evaluation is not possible.
我不知道实际实现的,一些快速谷歌搜索没有发现任何合理的结果,但它基本上可以归结为编写波兰前pression间preTER(因为你给的例子是波兰表示法)。步骤如下:
I don't know of an actual implementation, some quick Googling did not find any reasonable results, but it basically boils down to writing your Polish expression interpreter (as the example you gave is in Polish notation). The steps:
- 得到一个XML解析器和文件中读
- 通过树径
- 如果你遇到一个已知的操作或元素,它弹出一个堆栈
- 的SUBEX pression完成后,解析它(或更好:等待整个前pression完成,寻找最后的操作,以参数的元数prescribes数执行它并执行,直到没有任何操作左)
在最后,你会在堆栈上你的结果。
At the end you'll have your result on the stack.
这篇关于有没有评估MATHML前pressions图书馆吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!