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

Go up


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

Go up


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


Go up


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


Go up


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.

Go up


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.

Go up


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.

Go up