受最近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
]
这显然是无效的.
最终,我希望能够使用用户可以拖动的块来解析和解释任意数量的操作链.任何人都可以向我解释或指向我解析基本数学表达式的资源吗?
我更喜欢尽可能多的语言不可知的答案.