Вдохновленный недавним выступлением на TED 1002 *, я хочу написать небольшой кусочек образовательного программного обеспечения. Исследователь создал маленькие миниатюрные компьютеры в форме блоков под названием " Siftables ".
(источник: ted.com )
[David Merril, inventor - with Siftables in the background.
]
Было много приложений, в которых он использовал блоки, но мое любимое было, когда каждый блок представлял собой число или символ базовой операции. Затем вы можете перегруппировать блоки чисел или символы операций в строке, и это отобразит ответ в другом просеиваемом блоке.
Итак, я решил, что хочу внедрить версию программного обеспечения "Math Siftables" в ограниченном масштабе как мой последний проект для курса CS, который я прохожу.
Каков общепринятый способ синтаксического анализа и интерпретации строки математических выражений и, если они действительны, выполните операцию?
Это тот случай, когда я должен реализовать полный анализатор / лексер? Я полагаю, что интерпретация базовых математических выражений была бы достаточно распространенной проблемой в информатике, поэтому я ищу правильный подход к этому.
Например, если мои блоки Math Siftable расположены так:
[1
] [+
] [2
]
Это будет правильная последовательность, и я выполню необходимую операцию, чтобы получить «3».
Однако, если ребенок должен был перетащить несколько блоков операций вместе, например:
[2
] [\
] [\
] [5
]
Это, очевидно, будет недействительным.
В конечном счете, я хочу иметь возможность анализировать и интерпретировать любое количество цепочек операций с блоками, которые пользователь может перетащить вместе. Может кто-нибудь объяснить мне или указать мне ресурсы для анализа основных математических выражений?
Я бы предпочел максимально независимый от языка ответ.