
25.07.2008, 12:20
|
|
Регистрация: Jul 2008
Адрес: Украина, Херсон
Сообщений: 635
|
Как по мне можно написать простенький парсер формул на флешь (:
На AS мне писать такое не приходилось но думаю вполне осуществимо (:
Идея такая - есть строка с формулой. То есть цифры, операторы и функции. Делается всё рекурсивной функцией, которая на входе получает строку с формулой, а возвращает посчитанный результат. Функция, получив строку, делит формулу на части по оператору с самым низким приоритетом или наличием скобок.
То есть строка 2+2*2*(2+2) будет поделена на две подстроки:
1) 2
2) 2*2*(2+2) // (2+2) - скобки считаются как один операнд
Рекурсия продолжается. Там где у нас осталось "2" операторов больше нету, это конец рекурсии. Двойку функция и возвращает.
Далее, у нас есть ещё строка 2*2*(2+2).
Скармливаем её функции. Она делится на три части.
1) 2
2) 2
3) 2+2
Результат для первых двух уже известен - это двойки. Осталось посчитать третью часть.
Имеем 2 и 2. Я забыл сказать, что знаки(операторы) между частями мы тоже должны где-то хранить (: То в конце эта функция, если она разбила строку на несколько частей должна последовательно выполнить операции между ними. В последнем случае: 2 + 2. Возвращает 4. Операции можно спокойно выполнять слева-направо, так как приоритет операторов будет одинаковый(мы же разбивали строку по оператору с самым низким приоритетом).
Да, описание довольно смутное получилось, но надеюсь идея понятно (:
__________________
while(1) {}
Последний раз редактировалось Division; 25.07.2008 в 17:11.
|