49 projects tagged "Code Generators"
pyPEG is a quick and easy solution for creating a parser in Python programs. pyPEG uses a PEG language in Python data structures to parse, so it can be used dynamically to parse nearly every context free language. The output is a plain Python data structure called pyAST, or, as an alternative, XML.
Styx is a scanner/parser generator designed to address some shortcomings of the traditional lex/yacc combination. It has unique features like automatic derivation of depth grammar, production of the derivation tree, including it's C interface, preservation of full source information, pretty printing to faciliate source-source translation, and persistence to aid rapid interpreter writing. It also supports reentrancy. Styx works well under several different OSes, including serveral Unixes, DOS, and Windows.
ANTLR (ANother Tool for Language Recognition) is a language tool that provides a framework for constructing recognizers, compilers, and translators from grammatical descriptions containing C++, Java, or Sather actions. It is similar to the popular compiler generator YACC, however ANTLR is much more powerful and easy to use. ANTLR-produced parsers are not only highly efficient, but are both human-readable and human-debuggable (especially with the interactive ParseView debugging tool). ANTLR can generate parsers, lexers, and tree-parsers in either C++, Java, or Sather. ANTLR is currently written in Java.
Common Text Transformation Library is a library of C++ classes and functions to parse and modify STL strings. CTTL substring classes may be compared, inserted, replaced, and parsed with EBNF grammars. The compiled program implements a fast, thread-safe, re-entrant recursive descent parser.
SableCC is a parser generator that generates fully featured object-oriented frameworks for building compilers, interpreters, and other text parsers. In particular, generated frameworks include intuitive strictly-typed abstract syntax trees and tree walkers. SableCC also keeps a clean separation between machine-generated code and user-written code, which leads to a shorter development cycle.
PyBison is a sophisticated yet easy-to-use parser creation toolkit for Python that interfaces directly to Bison (yacc)-based parsers. It provides full LALR(1) grammar support, allowing for simple parsing tasks through to writing compilers for high-level languages. Parser code is automatically generated from rules within user-created Parser classes (written in Python), and then, compiled, yacc'ed and linked into a shared library, which is loaded into the running process. All this happens automatically. When the parser runs, it connects directly with the yyparse() routine, and takes event callbacks upon parse targets being reached.
Felix is a programming language with a fully featured purely functional subsystem embedded in a a traditional Algol-like imperative programming system. The system features garbage collection, static typing, parametric polymorphism, overloading, regular expression matching, and a lot more. A scripting harness is used to invoke source files, but fully compiled binary shared libraries are generated, yielding both rapid prototyping and high performance. Seamless binding of C/C++ code makes interfacing existing libraries easy. Control inversion provides language-level cooperative multi-tasking.
EFEU is suitable for handling data cubes, which are especially useful for building data warehouses. It consists of a building system including mkmf (a xmkmf like Makefile generator), esh (a powerful C/C++ interpreter), efeudoc (a document generator with different output formats (LaTeX, HTML, roff, etc.)). EFEU has a huge set of C library core features, including robust memory allocation tools, functions to concatenate and copy strings with memory allocation, buffers for dynamically-growing strings and fields, data structures with reference counters and garbage collection, and file tools that allow you to specify pipes wherever a filename is expected and support automatic implementation of (de)compression filters (gzip) depending on filename extensions. It also includes a high-level interface to files, strings, and anything else you can read from or write to.