Project Description

ExpressionEval is simple parser for creating expression tree from string.

So what is inside?

  • one ExpressionEval to create expression from text
  • one Evalizer to create string representation of expression to be parsed back to expression with ExpressionEval
  • one sample client/server application to serialize linq on client side and deserialize and execute linq on server side and after this send result to client (all this magic things are working via REST)
  • one performance compare project to compare ExpressionEval with most used (other) solutions
  • bunch of unit tests

What ExpressionEval knows and what not?

(because ExpressionEval was already developed a while before, this is a history)
version 1:
  • text without any limits like line ends, unnecessary space, tabs
  • static functions, properties and fields
  • class functions, properties and fields
  • strings without any limits, it means multiline strings like C# @syntax, quotes must be doubled
  • numeric constants in c# syntax:
    • 12.1 - float
    • 12.1f - float
    • 12.1d - double
    • 12 - Int32
    • 12u - UInt32
    • 12l - Int64
    • 12ul - UInt64
    • 12s - Int16
    • 12us - UInt16
    • 12b - Byte
  • class indexers
  • operators (*,/,%,+,-,>,<.<=,>=,==,!=,|,^,&,||,&&, ...)
  • creating new instance with new keyword
version 2:
  • negative numbers (what a feature:)
  • negation operator !
  • constants null, true, false
  • lambdas
  • extension methods (need to define assemblies where to locate them)
version 3 (current release):
  • anonymous classes support
  • full linq support (except joins)
  • simple conversions between similar types
version 4 (planned):
  • join support for linq
  • performance analyze (honestly code to locate extension methods are really mess)

Final words

So what is a purpose of project? At the beginning it was just to create expression tree from a string. But then I had a idea why not to try serialize linq. So I tried and it worked. And now something similar like sample linq provider is part of production code, so there should be new releases:).

Want more?

There is a story regarding project. It is in Slovak, but you can try google translator:
for version 1: http://blog.vyvojar.cz/vlko/archive/2008/12/24/expressioneval-coding-story.aspx
for version 2: http://blog.vyvojar.cz/vlko/archive/2009/04/28/expressioneval-two-the-lambda-case.aspx
for version 3: http://expressioneval.codeplex.com/

Last edited Aug 28, 2009 at 9:51 AM by vlko, version 4