The Lemon program is an LALR(1) parser generator. It takes a context free
grammar and converts it into a subroutine that will parse a file using that
grammar.
Lemon is similar to much more famous programs Yacc and Bison. But lemon is
not compatible with either of them; there are several important differences:
- Lemon using a different grammar syntax which is less prone to
programming errors
- Lemon generates a parser that is faster than Yacc or Bison parsers
(according to the author)
- The parser generated by Lemon is both re-entrant and thread-safe
- Lemon includes the concept of a non-terminal destructor, which makes
it much easier to write a parser that does not leak memory
Cello is a library that introduces higher level programming to C.
Interfaces allow for structured design
Duck Typing allows for generic functions
Exceptions control error handling
Constructors/Destructors aid memory management
Syntactic Sugar increases readability
C Library means excellent performance and integration
libIDL is a library for creating trees of CORBA Interface Definition Language
(IDL) files, which is a specification for defining portable interfaces.
libIDL was initially written for ORBit (the ORB from the GNOME project, and
the primary means of libIDL distribution). However, the functionality was
designed to be as reusable and portable as possible.
This library implements the Code Sourcery C++ ABI, as documented here:
It is intended to sit below an STL implementation, and provide features required
by the compiler for implementation of the C++ language.
libdap is A C++ SDK which contains an implementation of DAP 2.0 and 3.1,
Client- and Server-side support classes and a prototype implementation
of the AIS.
OpeNDAP's public key is available at
http://opendap.org/download/index.html#public_key
This is an implementation of double-array structure for representing trie,
as proposed by Junichi Aoe.
Trie is a kind of digital search tree, an efficient indexing method with
O(1) time complexity for searching. Comparably as efficient as hashing,
trie also provides flexibility on incremental matching and key spelling
manipulation. This makes it ideal for lexical analyzers, as well as
spelling dictionaries.
Utilities for multithreading in click.
ANTLR, ANother Tool for Language Recognition, is a language tool that
provides a framework for constructing recognizers, interpreters,
compilers, and translators from grammatical descriptions containing
actions in a variety of target languages. ANTLR provides excellent
support for tree construction, tree walking, translation, error
recovery, and error reporting.
This package provides the ANTLR v3 C runtime library.
libarena is a custom memory allocator interface and implementation. Four
allocators are provided: flat LIFO arena allocator, object pool allocator
and two malloc(3) wrappers: one which returns the pointers unadulterated
and one which obeys the requested, arbitrary alignment. These can be used
directly, or through their exported prototype interfaces.
libarena is meant to provide a baseline interface so allocators can be
stacked, and to provide a simple and well defined interface for libraries
and applications without becoming mired in features or capabilities. It is
not meant to restrict or confine what custom allocators can actually
accomplish. For instance, the included pool and arena allocators include a
suite of string utilities which aren't available in the generic exportable
interface. Note that these string utilities are built upon a generic
interface (see util.h) which can take the prototypical allocation context,
so they are also available to any 3rd party compatible allocators.
Click is a Python package for creating beautiful command line interfaces
in a composable way with as little code as necessary. It's the "Command
Line Interface Creation Kit". It's highly configurable but comes with
sensible defaults out of the box.