muPaserx的介绍

网址:http://code.google.com/p/muparserx/wiki/Introduction

数学表达式的计算是许多应用程序中要求的普通任务。它可以通过使用标准的数据表达式解析器(muparser)来完成,或者嵌入例如Lua的脚本语言。然而这里有一些限制,虽然muParser相当的快速,但是它只是处理标量的值,虽然Lua非常的灵活,但是她也不支持数组的二进制操作,也不支持复数的操作。因此如果你需要一个支持数组、矩阵和字符串的数学表达式解析器的话,muparserx可以帮到你。它是基于原始的muParser引擎,但是之后演化到一个独立的项目。

注:muParser已经实现复数计算,但是相当的受限,而且需要更多的技巧。

注:muParser可以定义字符串,但是仅仅作为常量使用。

特征

支持的数据类型:双精度浮点,整数,复数,布尔,字符串和数组。

可扩展用户自定义的操作符(二进制、中缀和后缀表达式)。

可扩展用户自定义的函数,带有任意数量的函数参数。

支持无限制的变量和常量;

不限制表达式的复杂度;

可从表达式中读取二进制,十六进制,复数,整数和字符串值,也可扩展读取用户自定义的值;

支持大量预定义的操作符,函数和常量;

使用标准通用C++代码编写,没有其它的依赖性。

预定义常量

缺省情况下,解析器支持下面的数据常量:

Eulerian值:e = 2. 718281828459045235360287

PI值:pi = 3.141592653589793238462643

虚数单位:i = sqrt(-1)

二元和三元操作符

标准操作:+,-,*,/,^

赋值操作符:=,+=,-=,=,/=;

逻辑操作符:and,or,xor,==,!=,>,<,<=,>=

二进制处理:&,|,<<,>>

字符串拼接://

If then else条件使用lazy计算:condition?trueValue:falseValue

后缀操作符

单位后缀:{n}, {mu}, {m}, {k}, {G}, {M}(纳,微,毫,K,G,兆)

中缀操作符

符号操作符和类型转换:-,(float),(int)

预定义函数

标准函数:abs,sin,cos,tan,sinh,cosh,tanh,ln,log,log10,exp,sqrt

无限制的参数数量:min,max,sum

字符串函数:str2dbl,strlen,toupper

复数函数:real,imag,conj,arg,norm

数组函数:sizeof

表达式例子

下面的表格显示表达式例子,可以使用muParserX来进行计算:

表达式

结果

解释

“hello” == “world”

False

比较字符串

“hello” // “world”

“hello world”

字符串拼接操作

sin(a+8i)

….

支持各种使用复数的预定义函数

va[3]+vb[5]

….

支持数组变量

va[3] = 9

通过向量的索引复制操作

toupper(“hello” // ”world”)

“HELLOWORLD”

转换连接字符串为大写

#010010

18

解释执行二进制值

0x1eff

7935

解释执行十六进制值

#10>0x1eff

false

比较二进制和十六进制值

1+2-3*4/5^6

2.99923

标准操作

a = ((a<b)?10:-10)

10或-10依赖于a和b

三元条件操作符(if then else)

你可能感兴趣的:(UP)