Существует ли библиотека C / C ++ для преобразования MathML <-> Infix? - PullRequest
2 голосов
/ 06 декабря 2011

Я ищу библиотеку C / C ++, которая может конвертировать MathML в инфикс и инфикс в MathML, например, с учетом:

<?xml version="1.0" encoding="UTF-8"?>
<math xmlns="http://www.w3.org/1998/Math/MathML">
  <apply>
    <times/>
    <cn type="integer"> 2 </cn>
    <ci> x </ci>
  </apply>
</math>

библиотека преобразует mathml в 2 * x. Или, учитывая x + sin (t), я получаю следующую математику

<?xml version="1.0" encoding="UTF-8"?>
<math xmlns="http://www.w3.org/1998/Math/MathML">
  <apply>
    <plus/>
    <ci> x </ci>
    <apply>
      <sin/>
      <ci> t </ci>
    </apply>
  </apply>
</math>

Я знаю, как написать такую ​​библиотеку, но лучше не изобретать колесо, если это возможно. Не может быть на Java, так как я должен иметь возможность связать библиотеку с неуправляемым кодом.

1 Ответ

2 голосов
/ 06 декабря 2011

Я никогда не использовал его сам, но похоже, что libSBML может служить вашим целям:

http://www.google.co.uk/search?q=libsbml+convert+mathml+infix

http://sbml.org/Software/libSBML/docs/cpp-api/libsbml-features.html

На этой странице:

http://sbml.org/Software/libSBML/docs/cpp-api/

В нем говорится:

"Синтаксический анализатор формул libSBML был тщательно спроектирован таким образом, что преобразования из MathML в инфиксную нотацию строк и обратно возможны с минимумомнарушение структуры математического выражения. "

И есть пример того, что вы пытаетесь сделать ...

...