Парсер математических выражений
- 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)