纯C#实现的表达式解析器,包含词法和语法解析器,玩得开心~
-
支持常见的分隔符:
,;()[]{}
-
支持常见的运算符:
-
算术运算符:
-
二元运算符:
+-*/%
-
一元运算符:
++
--
-
-
关系运算符:
>
<
==
!=
>=
<=
-
逻辑运算符:
!
&&
||
-
位运算符:
<<
>>
~
|
^
&
-
赋值运算符:
=
+=
-=
*=
/=
%=
&=
|=
^=
-
-
支持常见的数值类型:
bool,int,float,double,string
-
支持常见的基础函数:
abs,floor,ceil,cos,sin,tan,acos,asin,atan,log,max,min,round,random,print,printf,ifelse
-
支持的保留字:
false,true
-
支持自定义变量和函数
-
性能优越,支持字符串缓存,避免gc
ExpEnv expEnv = new ExpEnv();
ExpIdentifierProvider identifierProvider = new ExpIdentifierProvider();
identifierProvider.RegVarGetter("ctrl", (System.Object userData, ref TValue returnValue) => {
returnValue.SetFloat(1);
});
string sourceCode = "max(1 + 2 * ctrl, 1)";
TValue resultTv = expEnv.RunExp(sourceCode, identifierProvider);