Обнаружить круглые скобки в BinaryExpression

Я создаю анализатор выражений, из которого я хотел бы сгенерировать код запроса к базе данных, я продвинулся довольно далеко, но застрял в точном анализе BinaryExpressions. Их довольно легко разбить на Left и Right, но мне нужно определить скобки и соответственно сгенерировать свой код, и я не вижу, как это сделать.

Пример [пожалуйста, не обращайте внимания на ошибочную логику :)]:

a => a.Line2 != "1" && (a.Line2 == "a" || a.Line2 != "b") && !a.Line1.EndsWith("a")

I нужно обнаружить "набор" Я не упомянул, что использую стандартные классы .Net Expression для построения выражений (пространство имен System.Linq.Expressions)

- Edit2-- Хорошо, я не разбираю текст в код, я разбираю код в текст. Итак, у моего класса Parser есть такой метод:

void FilterWith<T>(Expression<Func<T, bool>> filterExpression);

, который позволяет вам писать такой код:

FilterWith<Customer>(c => c.Name =="asd" && c.Surname == "qwe");

, который довольно легко анализировать с использованием стандартных классов .Net, моя задача - разобрать это выражение:

FilterWith<Customer>(c => c.Name == "asd" && (c.Surname == "qwe" && c.Status == 1) && !c.Disabled)

моя задача состоит в том, чтобы сохранять выражения в скобках как единый набор. Классы .Net правильно отделяют части скобок от других, но не указывают, что это набор из-за скобок.

6
задан Steve Guidi 23 August 2012 в 02:56
поделиться