ecognition, 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.
The ANTLR GUI Development Environment (grad student Jean Bovet working with prof. Terence Parr).
A simple tool for visualizing all incoming and outgoing Ethernet packets on Mac OS X.
Written by grad student Jean Bovet.
gUnit is a unit testing framework for ANTLR grammars. It provides a simple way to write and run automated tests for grammars in a manner similar to what jUnit does for unit testing. The basic idea is to come up with a bunch of input/output pairs for rules in a grammar. The input can be a single line or multiple lines of strings or even an external file. The output can be simply success or failure, an abstract syntax tree (AST), a rule return value, or so me text output. The current version of gUnit has 2 main functions, interpreter and jUnit generator. The interpreter interprets your gUnit script and runs unit tests using Java reflection to invoke methods in your parser objects. The generator, on the other hand, translates your gUnit script to jUnit Java code that you can compile and execute by hand. (grad
student Leon Su working with prof. Terence Parr).
River is a Python-based framework for rapid prototyping of reliable
parallel run-time systems. The current quest for new parallel
programming models is hampered, in part, by the time and complexity
required to develop dynamic run-time support and network communication.
Integrating mechanisms for fault tolerance, such as checkpointing or
mirroring, further complicates an implementation. The simplicity of the
River core combined with Python's dynamic typing and concise notation
makes it possible to go from a design idea to a working implementation
in a matter of days or even hours. With the ability to test and throw
away several implementations, River allows researchers to explore a
large design space. In addition, the River core and new extensions can
be used directly to develop parallel applications in Python.
same is a GUI-based tool that detects duplicate code chunks within a set
of Java files. In a sense it is the opposite of the UNIX diff tool. In a nutshell, same normalizes Java code and is able to find duplicate code chunks even when the formatting is radically different, when the variable name has changed, and even when constants have changed. (grad student Do Te Kien working with prof.
java template engine (with ports for C# and Python) for generating
source code, web pages, emails, or any other formatted text output.
StringTemplate is particularly good at multi-targeted code generators,
multiple site skins, and internationalization/localization. It evolved
over years of effort developing
. StringTemplate also generates this website and powers the
code generator. Its distinguishing characteristic is that it
strictly enforces model-view separation
unlike other engines. Strict separation makes websites and code
generators more flexible and maintainable; it also provides an
excellent defense against malicious template authors.
Java profiling tool (uses source-to-source translation to instrument
java code). (grad students James Chen and Wei Chen working with prof.
Visual Automata Simulator
A tool for simulating, visualizing and transforming finite state automata and Turing machines.
(grad student Jean Bovet working with prof. David Galles).