解析儿童教育软件的基本数学方程式?

7 math parsing

最近TED演讲的启发,我想写一小段教育软件.研究人员制作了一些名为" Siftables "的小型微型计算机.

替代文字http://images.ted.com/images/ted/tedindex/embed-posters/DavidMerrill-2009.embed_thumbnail.jpg
[David Merril, inventor - with Siftables in the background.]

他使用了很多块应用程序,但我最喜欢的是每个块都是数字或基本操作符号.然后,您可以在一行中重新排列数字块或操作符号,它将在另一个可筛选块上显示答案.

alt text http://i44.tinypic.com/m7us6g.png

所以,我已经决定要在有限的范围内实施一个软件版本的"数学Siftables"作为我正在参加的CS课程的最终项目.

解析和解释一串数学表达式的普遍接受的方法是什么,如果它们有效,执行操作?

这是我应该实现完整解析器/词法分析器的情况吗?我认为解释基本的数学表达式将是计算机科学中的一个半常见问题,所以我正在寻找正确的方法来解决这个问题.

例如,如果我的Math Siftable块在哪里排列如下:

[1] [+] [2]

这将是一个有效的序列,我将执行必要的操作以达到"3".

但是,如果孩子要将几个操作块拖到一起,例如:

[2] [\] [\] [5]

这显然是无效的.

最终,我希望能够使用用户可以拖动的块来解析和解释任意数量的操作链.任何人都可以向我解释或指向我解析基本数学表达式的资源吗?

我更喜欢尽可能多的语言不可知的答案.

Pau*_*cks 3

您可以查看调车场算法。链接的维基百科页面包含大量信息以及指向该算法的各种示例的链接。

基本上,给定中缀数学符号的表达式,它会返回 AST 或逆波兰符号,无论您的偏好如何。

这个页面相当不错。SO 上还有几个 相关问题。