Parsing basic math equations for children's educational software?

Posted by Simucal on Stack Overflow See other posts from Stack Overflow or by Simucal
Published on 2009-03-16T04:52:56Z Indexed on 2010/05/09 8:58 UTC
Read the original article Hit count: 362

Filed under:
|
|

Inspired by a recent TED talk, I want to write a small piece of educational software. The researcher created little miniature computers in the shape of blocks called "Siftables".

alt text
[David Merril, inventor - with Siftables in the background.]

There were many applications he used the blocks in but my favorite was when each block was a number or basic operation symbol. You could then re-arrange the blocks of numbers or operation symbols in a line, and it would display an answer on another siftable block.

alt text

So, I've decided I wanted to implemented a software version of "Math Siftables" on a limited scale as my final project for a CS course I'm taking.

What is the generally accepted way for parsing and interpreting a string of math expressions, and if they are valid, perform the operation?

Is this a case where I should implement a full parser/lexer? I would imagine interpreting basic math expressions would be a semi-common problem in computer science so I'm looking for the right way to approach this.

For example, if my Math Siftable blocks where arranged like:

[1] [+] [2]

This would be a valid sequence and I would perform the necessary operation to arrive at "3".

However, if the child were to drag several operation blocks together such as:

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

It would obviously be invalid.

Ultimately, I want to be able to parse and interpret any number of chains of operations with the blocks that the user can drag together. Can anyone explain to me or point me to resources for parsing basic math expressions?

I'd prefer as much of a language agnostic answer as possible.

© Stack Overflow or respective owner

Related posts about educational

Related posts about parsing