数学解析器的智能设计?

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



MMMHUHU
浏览 547回答 4
4回答

人到中年有点甜

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

饮歌长啸

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

素胚勾勒不出你

您有几种方法。您可以生成动态代码并执行它以获取答案,而无需编写太多代码。只需在.NET中运行时生成的代码上执行搜索,周围就会有很多示例。或者,您可以创建一个实际的解析器并生成一个小的解析树,然后将其用于评估表达式。同样,对于基本表达式而言,这非常简单。签出codeplex,因为我相信他们那里有一个数学解析器。或者只是查找包含示例的BNF。任何介绍编译器概念的网站都将其作为基本示例。
打开App,查看更多内容
随时随地看视频慕课网APP