chilon::parser provides an extended PEG-like language using C++0x template meta-programming. This PEG-based language has been extended to support AST building features directly embedded into the type system. chilon::parser uses the input PEG to create the AST type at compile time using tuples, vectors, variants, custom classes, ranges, and primitive types. The AST is populated by parsers generated from the same type description at run-time.
|Tags||C++ C++0x peg parsing|
|Operating Systems||Platform Independent|
Release Notes: Spacing? is now parsed between elements in a sequence rather than Spacing*. The stream classes have been simplified and the documentation was updated.
Release Notes: Variant now uses heap for pointers. many<> can be used with void storing parsers. tbpeg_not<> was added. It skips and stores for character storing sub-parsers.
Release Notes: A missing include destination was fixed. Parsers that would usually store variant< vector<T>, void> now store vector<T>, as vector<T> has empty() anyway.
Release Notes: choice<> containing keys can be hashed into a multi-index container. tree_joined_lexeme was added. joined<> over key<> stores hash. A fix was made for sequences and tree_optional<>. A fix was made for nested variant within choice<> over optional<>. A bug for certain choice<> nested within sequence was fixed. The documentation was updated.
Release Notes: More types can now be used as keys for hashes, including variants and containers. hash<> is no longer needed; many*<> over key<> always creates a hashed container. chilon::vector_hash_map is used for hashes now, which stores both order and a hashed lookup table. key_plus<> was added for additive keys. A memory leak was fixed. Simplifications and optimizations were made to the code.