Компонента для парсинга математических выражений
От: stalk  
Дата: 08.08.07 08:20
Оценка:
Добрый день!
Посоветуйте пожалуйста простой и БЕСПЛАТНЫЙ парсер выражений типа "(4+6.0)/3 + 2.5 * 5" Хотелось бы у этой компоненты в идеале вызывать какой-нибудь метод типа calculate(string) и получать или стринг или дабл или лонг или эксепшн.. пофиг в принципе. На гугле компонент таких полно но все ИЛИ платные ИЛИ представляют из себя уже готовую апликуху. А мне нужно это узать в приложении. Спасибо заранее!
Re: Компонента для парсинга математических выражений
От: Хнык Россия  
Дата: 08.08.07 08:30
Оценка:
Здравствуйте, stalk, Вы писали:

S>Добрый день!

S>Посоветуйте пожалуйста простой и БЕСПЛАТНЫЙ парсер выражений типа "(4+6.0)/3 + 2.5 * 5" Хотелось бы у этой компоненты в идеале вызывать какой-нибудь метод типа calculate(string) и получать или стринг или дабл или лонг или эксепшн.. пофиг в принципе. На гугле компонент таких полно но все ИЛИ платные ИЛИ представляют из себя уже готовую апликуху. А мне нужно это узать в приложении. Спасибо заранее!

Записывайте в обратной польской нотации. Реализация алгоритма — 1 день. Могу посодействовать баксов за двести
Мну думает. Значит. Ага.
Re: Компонента для парсинга математических выражений
От: SlaVVVa Россия  
Дата: 08.08.07 08:37
Оценка:
Здравствуйте, stalk, Вы писали:

S>Добрый день!

S>Посоветуйте пожалуйста простой и БЕСПЛАТНЫЙ парсер выражений типа "(4+6.0)/3 + 2.5 * 5" Хотелось бы у этой компоненты в идеале вызывать какой-нибудь метод типа calculate(string) и получать или стринг или дабл или лонг или эксепшн.. пофиг в принципе. На гугле компонент таких полно но все ИЛИ платные ИЛИ представляют из себя уже готовую апликуху. А мне нужно это узать в приложении. Спасибо заранее!

Такое решение подойдет здесь
Автор: SlaVVVa
Дата: 24.07.07
. Могу довернуть как нужно.
Поймете смысл — найдутся слова.
Катон.
Re: Компонента для парсинга математических выражений
От: Mckey Россия  
Дата: 08.08.07 12:27
Оценка:
Здравствуйте, stalk, Вы писали:

S>Добрый день!

S>Посоветуйте пожалуйста простой и БЕСПЛАТНЫЙ парсер выражений типа "(4+6.0)/3 + 2.5 * 5" Хотелось бы у этой компоненты в идеале вызывать какой-нибудь метод типа calculate(string) и получать или стринг или дабл или лонг или эксепшн.. пофиг в принципе. На гугле компонент таких полно но все ИЛИ платные ИЛИ представляют из себя уже готовую апликуху. А мне нужно это узать в приложении. Спасибо заранее!

Ищите на www.codeproject.com и вы найдете... (что-то около 5 решений там точно есть...)
Делай добро и бросай его в воду...
Re: Компонента для парсинга математических выражений
От: Ромашка Украина  
Дата: 09.08.07 02:22
Оценка: 32 (5) :))) :)))
stalk пишет:
> Добрый день!
> Посоветуйте пожалуйста простой и БЕСПЛАТНЫЙ парсер выражений типа
> "(4+6.0)/3 + 2.5 * 5" Хотелось бы у этой компоненты в идеале вызывать
> какой-нибудь метод типа calculate(string) и получать или стринг или дабл
> или лонг или эксепшн.. пофиг в принципе. На гугле компонент таких полно
> но все ИЛИ платные ИЛИ представляют из себя уже готовую апликуху. А мне
> нужно это узать в приложении. Спасибо заранее!

Гм.. Это скорее в "коллеги, улыбнитесь".
Короче, готовь пиво:

OleDbCommand __command = new OleDbCommand();
OleDbConnection  __connection = new OleDbConnection();
__connection.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data 
Source=c:\;Extended Properties=dBASE IV";
__command.Connection = __connection;
__connection.Open();
__command.CommandText = "select (4+6.0)/3 + 2.5 * 5 as result";
DataReader __reader = __command.ExecuteReader();
//.... ну, дальше надеюсь понятно???


В класс сам обернешь???
Posted via RSDN NNTP Server 2.1 beta


Всё, что нас не убивает, ещё горько об этом пожалеет.
Re[2]: Компонента для парсинга математических выражений
От: Хнык Россия  
Дата: 09.08.07 09:41
Оценка:
Здравствуйте, Ромашка, Вы писали:

Р>
Р>OleDbCommand __command = new OleDbCommand();
Р>OleDbConnection  __connection = new OleDbConnection();
Р>__connection.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data 
Р>Source=c:\;Extended Properties=dBASE IV";
Р>__command.Connection = __connection;
Р>__connection.Open();
Р>__command.CommandText = "select (4+6.0)/3 + 2.5 * 5 as result";
Р>DataReader __reader = __command.ExecuteReader();
Р>//.... ну, дальше надеюсь понятно???
Р>

object obj = __command.ExecuteScalar();

Хе хе.
Мну думает. Значит. Ага.
Re: Компонента для парсинга математических выражений
От: Pavel_Agurov Россия  
Дата: 09.08.07 11:50
Оценка:
object result = Microsoft.JScript.Eval.JScriptEvaluate("2+2",
                  Microsoft.JScript.Vsa.VsaEngine.CreateEngine());
Console.WriteLine(result);


Требует подключения библиотек Microsoft.JScript и Microsoft.Vsa.
Re: Компонента для парсинга математических выражений
От: Vector Россия  
Дата: 09.08.07 14:05
Оценка:
Здравствуйте, stalk, Вы писали:

S>Добрый день!

S>Посоветуйте пожалуйста простой и БЕСПЛАТНЫЙ парсер выражений типа "(4+6.0)/3 + 2.5 * 5" Хотелось бы у этой компоненты в идеале вызывать какой-нибудь метод типа calculate(string) и получать или стринг или дабл или лонг или эксепшн.. пофиг в принципе. На гугле компонент таких полно но все ИЛИ платные ИЛИ представляют из себя уже готовую апликуху. А мне нужно это узать в приложении. Спасибо заранее!

MS Script Control

    MSScriptControl.ScriptControlClass ctrl = new MSScriptControl.ScriptControlClass();
    ctrl.Language = "javascript";
    object value = ctrl.Eval("(4+6.0)/3 + 2.5 * 5");


+ Можно еще и функции свои писать:

    MSScriptControl.ScriptControlClass ctrl = new MSScriptControl.ScriptControlClass();
    ctrl.Language = "javascript";
    ctrl.AddCode("function Sqr(a){return a*a;}");
    object value = ctrl.Eval("1+1+6/2-1+Sqr(10)");
Re: Компонента для парсинга математических выражений
От: Nikolkos  
Дата: 10.08.07 05:48
Оценка:
Здравствуйте, stalk, Вы писали:

S>Добрый день!

S>Посоветуйте пожалуйста простой и БЕСПЛАТНЫЙ парсер выражений типа "(4+6.0)/3 + 2.5 * 5"


Я в свое время пользовался info.lundin.Math.
Re: Компонента для парсинга математических выражений
От: Аноним  
Дата: 10.08.07 12:30
Оценка:
Здравствуйте, stalk, Вы писали:

S>Добрый день!

S>Посоветуйте пожалуйста простой и БЕСПЛАТНЫЙ парсер выражений типа "(4+6.0)/3 + 2.5 * 5" Хотелось бы у этой компоненты в идеале вызывать какой-нибудь метод типа calculate(string) и получать или стринг или дабл или лонг или эксепшн.. пофиг в принципе. На гугле компонент таких полно но все ИЛИ платные ИЛИ представляют из себя уже готовую апликуху. А мне нужно это узать в приложении. Спасибо заранее!

В книге Герберт Шилдт "Полный справочник по C#" есть пример на эту тему
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.