Pedagogical Tools
The tools available in this section are pedagogical tools and some of them result of ongoing reserch.
Some of the examples availables are based on an attribute grammar Lavanda referred in
Compiler Generators page.
DynaLab
DynaLab (an acronym for DYNAmic LABoratory) provides a dynamic,interactive, hands-on software environment for
studying virtually all aspects of programming, as well as time and space complexity issues.
The current version of DynaLab supports program animation of Pascal programs, with unbounded reverse
execution for repeated study of puzzling program constructs.
Algorithm animation and computer science concept animation are also being incorporated.
Original Page
Report: A small report relating some details of features of Dynalab (portuguese version).
Contribution by: Francisco Oliveira
JFlap
JFLAP is software for experimenting with formal languages topics including nondeterministic finite automata,
nondeterministic pushdown automata, multi-tape Turing machines, several types of grammars, parsing, and L-systems.
In addition to constructing and testing examples for these, JFLAP allows one to experiment with construction proofs
from one form to another, such as converting an NFA to a DFA to a minimal state DFA to a regular expression or regular grammar.
Original Page
Examples: Files to run with Lavanda (simplified) sample: Lavanda.jff , Phrase.jff
(sample of a phrase to input to the grammar built in previous phase).
Other material: A movie to show the build up of the parsing tree to Lavanda sample (Lavanda.mov)
and the recognition of a phrase to this DSL (automata.mov).
Report: A small report relating some details of implementation of Lavanda in JFlap and features of this tool
().
Contribution by: João Miguel Pires
ProGrammar
The ProGrammar Developer's Toolkit is a visual development environment
for building, testing and debugging parsers.
ProGrammar is based upon ongoing research. It incorporates a number of
interesting features that will be enhanced and expanded in future
versions; including:
- language support for grammar inheritance
- reusable grammar definitions (through inheritance)
- context-specific handling of case-sensitivity and whitespace
- unification of lexical scanning and parsing
- separation of parsing from semantic actions
- length constraints over tokens
- parse constraints
- run-time grammar definition and parser generation
- programming language independence
Original page: ProGrammar
Examples: Files to run with Lavanda sample: Lavanda.gdl , Lavanda.gdp
Other material: A movie to show how execute the samples using ProGrammar --- Lavanda.swf.
Report: A small report relating some details of implementation of Lavanda in ProGrammar
(portuguese version).
Contribution by: Jorge Pereira da Cruz
UltraGram
UltraGram is a visual parser generator which provides functionality for creating grammar of a parser,
interpreter or compiler, extensively test it and generate parser source code in a preferred programming language.
UltraGram uses LALR(1) parsing technique with some GLR type additions that makes if fast and error resistant.
The tool offers a support of the development process and helps to eliminate possible parsing problems at the early stages.
Original page: UltraGram
Examples: Files to run with Lavanda sample: ,
Report: a small report relating some details of implementation of Lavanda in ProGrammar
(portuguese version).
Contribution by: Alberto André Gonçalves
Generic Tools
Gram2C
A very useful tool in the context of LP development - Gram2C.
Gram2C works with abstract grammars and syntax trees in C language.
GraphViz
A very useful tool in the context of LP development -
GraphViz (Reference Manual).
GraphViz is a system (library and tools) to handle Graphs, namely to plot a graph.
Nuweb
In 1984, Knuth introduced the idea of literate programming.
The idea was that a programmer wrote one document, the web file,
that combined documentation with code. Nuweb works with any programming language and LaTeX.
This is a tool necessary to process the examples available in this page (LaTeX documents).
Original page: NuWeb.