Я нахожусь в процессе написания небольшого математического движка на основе правил. Я понимаю, что это неясно, поэтому приведу небольшой пример.
Допустим, у вас есть переменная a, которая содержит целое число. У вас также есть некоторые функции, которые вы можете применить к номеру, т.е.
sqr
- квадратное число
flp
- перевернуть биты числа
dec
- уменьшить число
inc
- увеличить число
Тогда вы можете сказать, do_formula(a, "2sqr+inc+flp")
. Если бы a равнялось 3, оно бы выровняло его дважды (81), увеличило бы его (82) и перевернуло бы его биты (~ 82 - то есть -83, если иметь дело со знаковыми целыми числами, я полагаю).
Каков наилучший способ анализа формулы? Это относительно просто, и я думаю сделать все коды операций 3-мя символами ... будет ли излишним использовать Lex? Должен ли я просто написать простое домашнее решение или использовать что-то еще целиком?
Я понимаю, что приведенный выше пример глуп; Я не создаю калькулятор, который будет это делать, но он иллюстрирует то, что я пытаюсь сделать достаточно хорошо.