首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >数学解析器的智能设计?

数学解析器的智能设计?
EN

Stack Overflow用户
提问于 2008-09-22 12:35:33
回答 9查看 40K关注 0票数 59

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

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2008-09-22 12:37:47

一个相当好的方法需要两个步骤。第一步涉及converting the expression from infix to postfix (例如,通过Dijkstra's shunting yard)表示法。完成后,编写一个postfix evaluator就非常简单了。

票数 87
EN

Stack Overflow用户

发布于 2008-11-22 14:36:28

我写了一些关于设计数学解析器的博客文章。这里有一个一般的introduction,关于grammars的基本知识,sample implementation written in Ruby和一个test suite。也许你会发现这些材料很有用。

票数 13
EN

Stack Overflow用户

发布于 2008-09-22 12:38:29

您有几种方法。您可以生成动态代码并执行它,以便在不需要编写大量代码的情况下获得答案。只需在.NET中搜索运行时生成的代码,周围有很多示例。

或者,您可以创建一个实际的解析器,并生成一个小的解析树,然后用它来计算表达式。同样,对于基本表达式来说,这是非常简单的。请查看codeplex,因为我相信他们有一个数学解析器。或者只需查找BNF,其中将包含示例。任何介绍编译器概念的网站都会将此作为基本示例。

Codeplex Expression Evaluator

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/114586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档