Ваше решение будет состоять в том, чтобы написать сканер и парсер для построения дерева.
Лучшее решение, чтобы получить идеи с его помощью, - это провести некоторое тестирование с использованием Flex и Я. cc. Эти инструменты позволяют выполнять сканирование (Flex) и преобразовывать отсканированные строки в токены, которые анализатор (Ya cc) может преобразовать с помощью Context Free Grammer (CFG) в дерево узлов, которые кодируют уравнение. (Это очень похоже на то, как работают компиляторы)
Это позволяет вам делать следующее, если вы вводите следующее:
var1 + var2
Вы сканируете эту строку на наличие токенов, эти : var1<variable> +<operator> var2<variable>
Вы преобразуете эти токены в узлы дерева:
node #1
op: +
operatorType: enumvalue for +
| |
| |
| |
\/ \/
node #2 node# #3
name: var1 name: var2
type: var type: var
Теперь вы можете обходить дерево и использовать члены объектов в дереве, чтобы определить, что это такое и как его использовать.
Теперь сложная часть состоит в том, как вы собираетесь реализовать это в ограниченном встроенном устройстве. Если на вашем устройстве достаточно оперативной памяти, чтобы вместить достаточно большой буфер данных для этой древовидной структуры, это невозможно сделать. Мое решение состояло бы в том, чтобы выделить буфер для узлов моего дерева и буфер имен для переменных, что позволило бы использовать объем памяти c без фрагментации.