This project is read-only.

Project Description

Expressions.Compiler is a lightweight expression compiler and generic parser framework. It is designed to support out-of-the-box propotyping, expressions evaluation & code generation.

I'm just wondering, why i got 1 mark. Not bad code, good for both studying and professional use, got ring for nothing...

...My pressure ...Hsssssss

P.S. And one mark to rule them all ;)

I don't care, thought! Be at your own service ;)

For the additional information and samples, see project documentation


This is a fast and clean look of what the library is, helping you to understand the whole library:


This is a lightweight (~ 20 KB) easy to use framework library. for prototyping of the LL(1) (top-down left-most derivation) parser and PEG parser invented by Bryan Ford in 2004. The original document about PEG can be found here. This framework can be easily switched between table-based and recursive descent parser implementation. Also it can be used to generate adaptive grammar parser, as it's shown in provided example in the project source tree.


This is a quick links for the project's samples & demo


This is a quick links for the project's screenshots math-tiny.png excel-tiny.png

Version history


Added generic classes. All of new generic classes exists in simple form for all public classes and interfaces, which is actually an algorithmic form of conversion function for char as input and double as evaluation of AST as output.

Added brand functionality: a universal generalized parser of stream of type T, returning an AST tree of type U, which can be evaluated to anything special. Tests have been updated to reflect code changes, have been found several hidden errors in tests. At the moment, valid grammar on null input set cannot produce positive parsing results even on any grammar rules set.

All non-generic code not changed for the compatibility with older code. Finally switched code and tests to trace build, debug build and release build. Release build does not have extra code evaluation due to classes-to-string conversion to readable format.

All test results produce classes-to-string self descripting readable output only on trace build project configuration.

Math sample updated for the new generic classes.


Removed depedencies on generic type wrapper for T, core library simplifications, weakened interface dependencies on base classes.

Removed interfaces:
  • IExpression<T>,
  • IExpression,
  • IExpressionTreeInternal.

Expression<T> now supports generic type. Samples & sources can be downloadede through changesets or from download page

External links

1. A tutorial on implementing LL(1) parsers in C#
2. for the additional info & documetation, see Wikipedia: parsing expression grammar

Last edited Jan 18, 2013 at 7:10 AM by hack2root, version 58