title: Parse expression (with custom functions and operations)
body: <p>I have a string, which contains a custom expression, I have to parse and evaluate:</p>
  
  <p>For example:</p>
  
  <pre><code>(FUNCTION_A(5,4,5) UNION FUNCTION_B(3,3)) 
  INTERSECT (FUNCTION_C(5,4,5) UNION FUNCTION_D(3,3))
  </code></pre>
  
  <p>FUNCTION_X represent functions, which are implemented in C# and return ILists.
  UNION or INTERSECT are custom functions which should be applied to the lists, which are returned from those functions.</p>
  
  <p>Union and intersect are implemented via <code>Enumerable.Intersect/Enumerable.Union</code>.</p>
  
  <p>How can the parsing and evaluating be implemented in an elegant and expandable manner?</p>