Logic Evaluator в c # (оценивать логические (&&, ||) выражения) - PullRequest
1 голос
/ 12 декабря 2011

В моем проекте есть раздел Logic evaluation, он принимает входные данные в виде строки, которая содержит logical expressions (true/false).

Я хочу оценить эту строку и вернуть окончательное логическое значение.

string Logic="1&0|1&(0&1)"
//string Logic="true AND false OR true AND (false AND true)"

Это будет мой Logic. Длина может увеличиться.

Есть ли способ оценить это выражение из LINQ / Dynamic LINQ?

Ответы [ 3 ]

11 голосов
/ 12 декабря 2011

без сторонних библиотек можно использовать DataTable с выражением.

Там у вас есть даже возможность оценить другие типы значений результата, чем просто логическое значение.

System.Data.DataTable table = new System.Data.DataTable();
table.Columns.Add("", typeof(Boolean));
table.Columns[0].Expression = "true and false or true";

System.Data.DataRow r = table.NewRow();
table.Rows.Add(r);
Boolean result = (Boolean)r[0];

синтаксис выражения не идентичен вашему примеру, но он делает то же самое. Преимущество в том, что его 100% .NET Framework содержит -> Microsoft управляет. Обработка ошибок тоже не плохая. Исключения для пропущенных операторов и т.д ...

доступные операторы

5 голосов
/ 12 декабря 2011

Вы можете использовать Zentrum .

Полный отказ от ответственности: я написал это!

2 голосов
/ 12 декабря 2011

мы используем http://simproexpr.codeplex.com/

...