为了账号安全,请及时绑定邮箱和手机立即绑定

数学解析器的智能设计?

数学解析器的智能设计?

MMMHUHU 2019-10-08 10:13:25
设计数学解析器的最明智的方法是什么?我的意思是说一个函数需要一个数学字符串(例如:“ 2 + 3/2 +(2 * 5)”)并返回计算出的值?我确实在VB6时代就写过一篇文章,但最终导致它肿且不便于携带(对此很聪明……)。一般的想法,伪代码或实代码表示赞赏。
查看完整描述

4 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

一个很好的方法将涉及两个步骤。第一步涉及将表达式从中缀转换为后缀(例如,通过Dijkstra的shunting yard)表示法。一旦完成,编写一个postfix评估器就很简单了。


查看完整回答
反对 回复 2019-10-08
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

我写了一些有关设计数学解析器的博客文章。有一种普遍的介绍,有关基本知识语法,样本实现用Ruby编写和测试套件。也许您会发现这些材料很有用。


查看完整回答
反对 回复 2019-10-08
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

您有几种方法。您可以生成动态代码并执行它以获取答案,而无需编写太多代码。只需在.NET中运行时生成的代码上执行搜索,周围就会有很多示例。


或者,您可以创建一个实际的解析器并生成一个小的解析树,然后将其用于评估表达式。同样,对于基本表达式而言,这非常简单。签出codeplex,因为我相信他们那里有一个数学解析器。或者只是查找包含示例的BNF。任何介绍编译器概念的网站都将其作为基本示例。


查看完整回答
反对 回复 2019-10-08
  • 4 回答
  • 0 关注
  • 545 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信