设计数学解析器的最明智的方法是什么?我的意思是说一个函数需要一个数学字符串(例如:“ 2 + 3/2 +(2 * 5)”)并返回计算出的值?我确实在VB6时代就写过一篇文章,但最终导致它肿且不便于携带(对此很聪明……)。一般的想法,伪代码或实代码表示赞赏。
4 回答
人到中年有点甜
TA贡献1895条经验 获得超7个赞
一个很好的方法将涉及两个步骤。第一步涉及将表达式从中缀转换为后缀(例如,通过Dijkstra的shunting yard)表示法。一旦完成,编写一个postfix评估器就很简单了。
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
您有几种方法。您可以生成动态代码并执行它以获取答案,而无需编写太多代码。只需在.NET中运行时生成的代码上执行搜索,周围就会有很多示例。
或者,您可以创建一个实际的解析器并生成一个小的解析树,然后将其用于评估表达式。同样,对于基本表达式而言,这非常简单。签出codeplex,因为我相信他们那里有一个数学解析器。或者只是查找包含示例的BNF。任何介绍编译器概念的网站都将其作为基本示例。
- 4 回答
- 0 关注
- 587 浏览
添加回答
举报
0/150
提交
取消