views:

57

answers:

2

Is there a library for .NET that does parenthesis or expression reduction and optimization? Something that would take an expression such as (A & (((B) | (C)) | D))) and return

A & (B | C | D)

But also take (A & A) and return A

+2  A: 

This is more in the domain of a standalone parser/lexical analyzer. But ANTLR has a rather nice C# binding, if that would suit your purposes.

It probably wouldn't be very much work to write a simple parser for strings of this sort and do the reduction yourself.

John Feminella
If you want to avoid the external dependency, maybe this article could provide some inspiration: http://www.codeproject.com/KB/cs/math_expressionsevaluator.aspx
Morten Mertner
Also check out Irony: http://irony.codeplex.com/, if you find ANTLR too complex for your needs.
Martinho Fernandes
A: 

I'm not a LINQ expert, but if you wanna get your hands dirty, the datastructures for such a task already exist in .Net Expression Trees:

http://msdn.microsoft.com/en-us/library/bb397951.aspx

You'd still have to parse the string to create the tree though.

Pedery