C# Eval
Downloads
Version 1.2 ( This source and all future sources available on GitHub )
Version 1.1 ( Source )
Version 1.0 ( Source )
Version History
1.2
Release Date:
October 11th, 2013
Support For:
Expressions (L = lhs expression in assignment, R = rhs expression in assignment or non-assignment expression)
[LR]   Support for use of [] operator in IDictionary types (e.g. Dictionary and Hashtable)

e.g.:
dictionary["hello"] = "world";
hashtable[3] = dictionary["hello"];

Other
Unicode fully supported for the given C# input
Further Improvements:
Made many modifications to the method resolution logic to more closely emulate the C# standards of method resolution.
1.1
Release Date:
January 1st, 2012
Support For:
Expressions (L = lhs expression in assignment, R = rhs expression in assignment or non-assignment expression)
[R]  Bitwise operators ( <<, >>, &, |, ^, ~)
[R]  Logical operators ( &&, ||, ^ )
[R]  Ternary operator ( cond ? exp1 : exp2 )
[R]  Conditional operators ( >, <, >=, <=, !=, == )
[R]  Operator overloading is supported on bitwise, logical, and conditional operators
Lexing/Parsing
Updated the ANTLR dll used from 3.1.3 to 3.3.
Other
Correctness is verified against 740 unit tests
Includes several tests with purposely incorrect expressions to be sure that errors are properly handled
Further Improvements:
Made many modifications to the method resolution logic to more closely emulate the C# standards of method resolution.
1.0
Release Date:
June 9th, 2011
Support For:
Expressions (L = lhs expression in assignment, R = rhs expression in assignment or non-assignment expression)
Normal C#
[R]  Literals (numeric, boolean, char, string, and verbatim string). May add suffix to any numeric literal with chars associated with C# types. (i.e. "m" for decimal, "ul" for unsigned long, etc.)
[R]  Literal chain expressions such as the following:
23f.ToString()
-89.6.ToString().Length
("Hello World").Length

[R]  Exponential "E"/"e" in numeric literals. May add suffix (e.g. 3e2d)
[R]  Escape sequences (including unicode escape sequences) in string and character literals as well as types and identifiers (e.g. "Hello \t World", '\u0020', \u0076arName, t\u0079peName)
[R]  Enums
[LR]  Identifiers (fields or properties)
[R]  Object chains (e.g. player.Position.X)
[R]  "@" identifier prefix (doesn't work in lhs expressions, yet)
[R]  Types (for casting; calling static fields, properties, and methods; and object construction using "new" operator)
[R]  Casting (Can only cast primitive struct types or any class that implements IConvertible)
[LR]  Single dimensional array indexing
[R]  Unary "+" and "-"
[R]  Arithmetic expressions
[LR]  Full assignment support (can be used in rhs expressions of other assignments. E.g. x = y = 3 and x = (y=3) + (z=5))
[R]  Operator-equals (+=, -=, /=, *=, %=)
[R]  Parenthetical Expressions: parentheses are allowed arbitrarily in expressions where desired. Precedence rules are properly followed.
[R]  Methods (void or single return)
[LR]  Single and multi-line comments
Language Extensions
[R]  Power operator (**)
[R]  Power operator-equals (**=)
[R]  Built-in constants (e.g. #PI shorthand for Math.PI) (reference HowTo page for full list)
Lexing/Parsing
Lexer and parser are based on ANTLR engine with a custom grammar
Proper method is called when method is overloaded or an error message is generated if ambiguous
Other
Semi-colon is optional at end of expression
Correctness is verified against 635 unit tests
Includes several tests with purposely incorrect expressions to be sure that errors are properly handled
Fixed Bugs:
No data since this is the first version
Further Improvements:
No data since this is the first version