CodePlex上NCalc这个类库,足以完成你的功能,内部是用Antlr实现的

解决方案 »

  1.   

    这个也挺好用的:https://github.com/pieterderycke/Jace
      

  2.   

    NCalc我已经在项目中实现过了,还可以。
      

  3.   

    因为公式是字符串,还得用正则表达式吧,按照计算顺序,先匹配到数字后面连接的是字母的,如2a、2b的,然后是括号里面的计算,如2*(a(2b+c))由内而外匹配,最后用递归,再然后是括号外的先乘除后加减,用到的知识不是很多,就是挺烦索的,要考虑各种可能
      

  4.   

    正则表达式 挨个匹配 变量, 用 值替换变量,  剩下的就是类似 js  的 eval
      

  5.   

    如果 LZ 想实现动态计算功能,不妨考虑使用 sqlite 这个库,你计算时,把 这个表达式,拼接成 SQL 语句,有返回结果是正确的,有异常时,就是出错了。DLL 大小才800K 。
      

  6.   

    如果是字符串的话,我看到楼上说的,好像可行性比较大,a,b都是动态的变量,然后把这个字符串全部切割成单个字符,然后挨着判断,SQL里边能够对公式进行计算,把 AB的变量的值输入进去,小括号还是小括号,加减乘除都是加减乘除,应该就能获取到结果,我赶脚这样是可行的,你不妨试一下