ANother Tool for Language Recognition (ANTLR) is the name of a parser generator that uses LL(k) parsing. ANTLR is the successor to the Purdue Compiler Construction Tool Set (PCCTS), first developed in
... [More] 1989, and is under active development. Its maintainer is professor Terence Parr of the University of San Francisco. [Less]
This is not yet another parser. Tinyap takes some text and an a grammar describing AST as inputs, and outputs another AST that describes the text contents, according to the provided grammar.
... [More]
Basically, tinyap is a recursive descent parser with backup. Thus, it's able to recognize any LL(k) language. When a parse is successful, tinyap outputs an Abstract Syntax Tree (AST) that represents the input text in a structured manner.
Unlike most parsers, its code isn't factory-calibrated for a particular grammar. Instead, the grammar is data. Tinyap uses an AST that represents a grammar to parse its input text. This grammar AST is structured according to tinyap's grammar description language.
This parser is meant to allow quick and easy development of new languages and the corresponding interpreters or compilers, by defining a single tool and library to parse the source grammar as well as the source text according to the source grammar and walk the resulting ASTs.
The factory default for the grammar AST is the grammar description language itself. So one can parse a grammar description and directly use the parse output to parse some other text written in the described language. Tinyap also features a plugin mechanism for grammars, which allows for dynamic modular grammars. The ASTs tinyap produces can be serialized to and deserialized from buffers and files.
Finally, tinyap provides an interface to walk down the ASTs and makes it easy to write external plugins to visit the nodes, e.g. a compiler, an interpreter, a static evaluator, a renderer...
You can have a look at an extensive use of tinyap at http://code.google.com/p/tinyaml where tinyap is used to parse compile and extend a base meta-language.
A tutorial is available here : http://beublo23.free.fr/doxygen/tinyap/Tutorial.html
Until further request, C++ and Java API are more or less discontinued.
Contact me at damien dot leroux at gmail dot com for feedback, suggestions, requests or to help improving the code. [Less]
apaga is a general-purpose parser generator that provides a framework for converting a grammar description for an LALR(1) context-free grammar into a program, that can be used in a variety of target languages, to parse that grammar.
A tutorial essay on the monad concept.
What does the word monad mean? The reader will have a concrete understanding of the concept that the term monad denotes. The reader will be able to
... [More] confidentally use the term in discussion and recognise episodes where the term is being used improperly.
What does the word monad not mean? This essay will address many of the popular misunderstandings around the term monad. Readers will be equipped to determine if they are observing an incident of misappropriation of the term.
Why does the word monad matter to any computer programmer? Once the reader has been introduced to the concept of a monad, she will be introduced to its significance as it applies to typical computer programming tasks.
Regular builds http://monad-tutorial.googlecode.com/svn/tags/continuous/
Join the mailing list! http://groups.google.com/group/monad-tutorial/ [Less]
HDLi (pronounced as Headly) is a VHDL, System Verilog and Verilog frontend infrastructure. It will have the analyzer, elaborator, traversing APIs and writer for VHDL. HDLi will have a common
... [More] intermediate representation for all the HDLs. The project will be in Java and C++ and will use Antlr and Qt/Java [Less]