Kelbt generates backtracking LALR parsers. A distinguishing characteristic of Kelbt is that it introduces a class of actions called undo actions which are invoked as the backtracker undoes parsing. These allow the user to revert any side effects of forward parsing. Kelbt enables a user-controlled parsing strategy approximating that of generalized recursive-descent parsing. This makes it easy to resolve language ambiguities by ordering the grammar productions of a nonterminal according to precedence.
|Tags||Software Development Code Generators Compilers Text Processing General|
|Operating Systems||OS Independent|
Release Notes: The -I option was added for specifying include directories. The "token uses" construct was fixed.
Release Notes: The uses statement can now reference undefined types. RHS element reference checking has been fixed. The un-translate code blocks are now properly balanced with the translate blocks. The graphviz output has been improved. const correctness warnings have been fixed. The distclean target has been fixed. There are other updates.
Release Notes: The -l option was added for turning off line directives in generated code. The class keyword was added. This indicates that a nonterminal or the token type is a C++ class, and should have its constructors and destructors called. The 'shortest' statement was added. This allows one to force a shortest match of a list of items. The semantics of commit was changed. It now forces a full commit rather than a scoped commit. Many other improvements were made.
Release Notes: The commit and final block execution code now uses malloc to allocate an array of pointers instead of using a variable-sized array on the stack, which is not portable C.
Release Notes: The Ragel style of generating code was adopted. In this style, the section of code to generate is explicitly named using a write statement. The access statement was added. The generated code was made compatible with C. Single-line parser specifications were added. The "token uses" statement was added. Line directive writing was fixed.