синтаксический анализатор мат.формул

From
Boris Rudakov (2:5054/9.4)
To
Andrey Belyakov
Date
2000-02-28T10:53:13Z
Area
RU.ALGORITHMS
Hello Andrey!

27 Feb 00 22:59, Andrey Belyakov wrote to All:

 AB> From: "Andrey Belyakov" <andrejb@care.lv>

 AB> Hi, Boris Rudakov !

 >> Такие вещи должны решаться элементарнейшим
 >> нисходящим разбором, если не являются частью
 >> какого-то более крупного языка, тогда разбор
 >> выражений для общности выполняется по единому
 >> алгоритму транслятора.
 AB> Даже если эти вещи не являются частью языка, их все равно
 AB> проще сделать по единой методике.
Я не это имел в виду. Я имел в виду что когда разбор выражений - отдельная самостоятельная задача, то нужно не долго думая писать классический нисходящий разбор. А когда делается транслятор большого языка, то его парсер как правило пишится на языке транслятора трансляторов (например парсер С++ вручную просто сдохнешь писать) - языке Яка там, Бизона, Лекса, LX - много их, не суть, и тогда разбор выражений является мелкой подзадачкой, одним абзацем описания грамматики, и не требует специальных отдельных усилий.

 >> Вот и все. Просто и со вкусом.
 AB> Смотрел минут пять пока нашел все операции, разбор
 AB> которых поддерживается.
 AB> Просто, но не со вкусом - цветочков не хватает. :)
А чего там тебе не хватило ? Ж8-[=       .       =]
Список функций - за полсотни (лень точно смотреть), практически вся тригонометрия, векторные, статистические функции - куча разной мути. Нет только матричных операций по причине ленности. Если ты про операторы - согласен, всякую побитовую и логическую беду я тоже не стал делать, т.к. калькулятор создавался только для вещественных вычислений (в силу предметной области).

Да и если уж на то пошло, согласись: такой текст можно практически не напрягаясь отимпрувить и отэкспандить как тебе надо новыми операциями. Было бы желание :)

 AB> Андрей.

Борис Рудаков,               - Нянька, утку давай !
BBR

--- Be happy: BBR is looking at you !
 * Origin: АлкАголь малыми дозами безвреден в любых количествах (2:5054/9.4)