当前位置:  开发笔记 > 编程语言 > 正文

数学解析器的智能设计?

如何解决《数学解析器的智能设计?》经验,为你挑选了3个好方法。

设计数学解析器最聪明的方法是什么?我的意思是一个函数,它接受一个数学字符串(如:"2 + 3/2 +(2*5)")并返回计算值?我在VB6很久以前写过一个,但它最终变得臃肿而且不太便携(或者说很聪明......).一般的想法,伪造的代码或真正的代码表示赞赏.



1> Justin Polie..:

一个相当不错的方法将涉及两个步骤.第一步涉及将表达式从中缀转换为后缀(例如通过Dijkstra的调车场)表示法.一旦完成,编写一个后缀评估器是非常简单的.


@mebob看起来我的用户输入错误.我不打算纠正它.如果我感觉很好,我可能会添加一些东西来检查它并提醒用户他们可能是错的.

2> 小智..:

我写了几篇关于设计数学解析器的博客文章.有一般性的介绍,关于语法的基础知识,用Ruby编写的示例实现和测试套件.也许你会发现这些材料很有用.



3> Phil Wright..:

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

或者,您可以创建一个实际的解析器并生成一个小的解析树,然后用于评估表达式.对于基本表达式,这也很简单.检查codeplex,因为我相信他们有一个数学解析器.或者只是查看BNF,其中包括示例.任何介绍编译器概念的网站都会将此作为基本示例.

Codeplex Expression Evaluator

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有