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
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
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.
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.