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.
For the additional information and samples, see
project documentation
Documentation
This is a fast and clean look of what the library is, helping you to understand the whole library:
Summary
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.
Samples
This is a quick links for the project's samples & demo
Screenshots
This is a quick links for the project's screenshots
Version history
v1.0.3.0
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.
v1.0.2.1
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