- Downloads
-
Version 1.1
( Source )
Version 1.0
( Source )
- Version History
-
- 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