Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Алгоритм Бауэра-Замельзона Добавлено: 27.07.06 00:02  

Автор вопроса:  Sacred Phoenix | ICQ: 304238252 
Всё та же тема по интерпретации матвыражений. На лексеры/парсеры решил забить, нашёл тут алгоритм Бауэра-Замельзона для вычисления значений выражений. Линк: http://algolist.manual.ru/syntax/parsear.php (спасибо Viper'у за линк на сайт http://algolist.manual.ru/). Так вот, есть три проблемы:
1. Алгоритм не парсит унарный минус (выражения типа -6/2).
2. Не предусмотрены вызовы функций.
Есть у кого-нить идеи по усовершенствованию алгоритма?
3. Я пока не реализовал функцию 4 по алгоритму, т.е. парсер не вычисляет формулы типа 2+4*8 (выдает рез-тат "8"), т.е. если приоритетное действие стоит после. Прошу помочь.

За помощь буду оч. благодарен.

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

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 27.07.06 01:21
А чем обратная польская нотация тебя не устраивает?

Ответить

Номер ответа: 2
Автор ответа:
 Sacred Phoenix



ICQ: 304238252 

Вопросов: 52
Ответов: 927
 Профиль | | #2 Добавлено: 27.07.06 15:23
Упс, про обратную польскую нотацию забыл... К этому времени я её уже реализовал с целыми числами константами PI и E, четырьмя действиями и скобками. Щас занимаюсь реализацией дробных чисел и функций. Есть одна проблема: реализация унарного минуса. Подскажите, как быть (лексер должен относить этот минус к числу, а не распознавать операцией).

Ответить

Номер ответа: 3
Автор ответа:
 Sacred Phoenix



ICQ: 304238252 

Вопросов: 52
Ответов: 927
 Профиль | | #3 Добавлено: 27.07.06 18:21
Выложил проект: http://webfile.ru/1038186 (пароль: "RevPNEval.rar";). У кого есть желание доделать его, скачайте, а после перешлите мне. Что именно надо долелать, есть в списке "TODO" в начальном комментарии.

Ответить

Номер ответа: 4
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #4
Добавлено: 27.07.06 20:09
Унарный минус отличается от обычного тем, что перед ним идет символ операции (+,/,-,*,(,) и т.п.)

Ответить

Номер ответа: 5
Автор ответа:
 Sacred Phoenix



ICQ: 304238252 

Вопросов: 52
Ответов: 927
 Профиль | | #5 Добавлено: 27.07.06 20:18
тааак, по ходу кое-что получится...

Ответить

Номер ответа: 6
Автор ответа:
 danser



ICQ: 299287824 

Вопросов: 76
Ответов: 209
 Профиль | | #6 Добавлено: 28.07.06 09:44
Унарный минус отличается от обычного тем, что перед ним идет символ операции (+,/,-,*,(,) и т.п.)


-5-4

Где символ операции перед унарним минусом?

Ответить

Номер ответа: 7
Автор ответа:
 Sacred Phoenix



ICQ: 304238252 

Вопросов: 52
Ответов: 927
 Профиль | | #7 Добавлено: 28.07.06 13:41
2 danser: да эт фигня, ибо просто расширяешь условие - если перед минусом операция, либо ничего, тогда он унарный

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам