Парсер математических выражений

From
Alexey Moiseev (2:5009/5.31)
To
Alexander Kolosov
Date
2002-05-11T14:16:17Z
Area
RU.ALGORITHMS
                              Привет Alexander!!!

AM>   Обратная польская нотация. Лучше всего имхо делать с ней.
AK> Я, конечно, в инете посмотрю, но можно немного поподробнее о том что
AK> такое польская нотация.
 Оно в разных источника называется по-разному. 
Есть такая книга: А. Ахо, Р. Сети, Д. Ульман "Компиляторы, технологии,
инструменты".

Она построена так что там дается в широчайшем обьеме теория, и идет построения
компилятора, сначала элементарнейшего (1-ый - делает из инфиксной формы -
постфиксную - как раз то что тебе нужно), затем идет усложнения сего алгоритма.
Книга дорогая но она того стоит.

Теперь к главному:
к примеру есть выражение "a+b" в постфиксной форме будет выглядет так "ab+"
Кроме того уже не нужны скобки:
(a+b)*c-d -> ab+c*d-
a-(b+c) -> abc+-
           ^^^^^ сначало сложить числа b и c затем то что получилось отнять от
чилса a.
С чилами придется использовать разделители между числами (если конечно программа
не расчитана только на цифры), например пробелы или "|"
Знаки математических опреаций - опреаторы, числа - операторы.

P.S.: вообще я в свое время делал программу которая с учетом приоритета опреаций
вычисляет результат выражения, но она примитивная: нет скобок и логических
операций. Если надо могу кинуть.

                                 Alexey.
--- F.I.P.S./32 v1.0r W95/NT [M]
 * Origin: Team [Чудеса науки] (2:5009/5.31)