编程语言
首页 > 编程语言> > c# – MathML的数学表达式

c# – MathML的数学表达式

作者:互联网

我正在尝试构建一个功能,如this site所示,用户将在文本区域中输入数学表达式,然后它将呈现为MathML格式.

例:

Input expression string: cos(x^3)

Then the expression should be converted to MathML as:

<math xmlns='http://www.w3.org/1998/Math/MathML'>
    <mrow>
        <mi>cos</mi>
        <mo>&#8289;</mo>
        <mo>(</mo>
        <msup>
            <mi>x</mi>
            <mn>3</mn>
        </msup>
        <mo>)</mo>
    </mrow>
</math>

我试图找到这个东西的c#解决方案,并为此搜索了很多,但没有找到太多帮助.
如果有人知道任何资源开始使用此功能,请告诉我.
任何帮助将不胜感激.

解决方法:

我从之前的解析器中为MathML解析器创建了一个基本表达式.您可以下载或分叉result here at BitBucket.(左侧下载链接).

使用Parser类的ToMathML(表达式)方法将表达式转换为MathML.

它还附带了一个用于测试解析器的命令行测试程序,用于生成MathML的命令是ml:

calc ~:> ml cos(x^3)
<math xmlns='http://www.w3.org/1998/Math/MathML'><mrow><mi>cos</mi><mrow><mrow><mo>(</mo><mrow><msup><mi>x</mi><mn>3</mn></msup></mrow><mo>)</mo></mrow></mrow></mrow></math>
calc ~:> ml 1/(x-1)
<math xmlns='http://www.w3.org/1998/Math/MathML'><mrow><mfrac><mn>1</mn><mrow><mrow><mo>(</mo><mrow><mi>x</mi><mo>-</mo><mn>1</mn></mrow><mo>)</mo></mrow></mrow></mfrac></mrow></math>
calc ~:>

解析器中没有隐含的乘法,因此您必须始终在表达式中使用*(如2 * x).

希望它对您的场景很有用.我想这取决于你需要它的功能.在它的当前形式中,解析器将表达式转换为MathML的一个非常基本的子集.

随意分叉并继续工作.

标签:c,expression,math,mathml
来源: https://codeday.me/bug/20190624/1277013.html