/jaguar

Application and Libraries for dynamic and interactive teaching in the Computer Theory area

Primary LanguageJavaGNU General Public License v2.0GPL-2.0

Java Automaton and Grammar User Application Resources (Jaguar)
(C) 2001 by Ivan Hernandez Serrano

========================================================================
1. Introduction
2. System requirements
3. Compiling the sources & running
4. Running the binary distribution
5. Using the Jaguar
6. Author
7. Contributors
========================================================================


1. Introduction


Jaguar is a Free Software tool written in Java (TM) for people in the
Computer Theory area.  Jaguar provides an infrastructure of libraries,
engines and graphical applications that support most of the models and
algorithms reviewed in a regular undergraduate computer theory
(automata and formal languages) course.

All the models of abstract machines covered by Jaguar have: (1) an
engine that reads an input string and answer whether the string is
accepted or not, (2) a GUI that provides a graphical representation,
(3) a set of controls that allows interactive manipulation of the
machine and the input strings.  The abstract machines covered are:

     + DFA -- deterministic finite automaton

     + NFA -- no deterministic finite automaton

     + PDA -- pushdown automaton (or SFA stack finite automaton)

     + Turing -- Turing machine

Jaguar also includes an implementation of grammars.  All grammars
share a common GUI, and there are three specializations:

     + Type 3 grammar.  This type of grammars receive an input string an
       and, if this string is generated by the grammar, then the GUI
       shows the derivation tree for that particular input.

     + Type 2 grammar, this type of grammars are used to work with
       well defined standardizer algorithms.  Type 2 lazy grammars are
       also supported, only these are less restrictive on their production
       forms and also are used with the standardizer algorithms.

Jaguar provides the following algorithms (which use the above defined
structures):

     + DFA minimization, minimize a given DFA into another
       equivalent, engine & GUI

     + NFA to DFA conversion, transformation of a given NFA into an
       equivalent DFA

     + Type 3 grammar into NFA conversion, transforms a given type
       3 grammar into an equivalent NFA.

     + DFA to Type 3 grammar  conversion, transforms a given
       NFA into an equivalent type 3 grammar.

     + Type 2 grammar standardization. Given a Free Context Grammar
       (a type 2 lazy grammar) we get his standardized version
       applying the algorithms to eliminate unreachable symbols, unary
       productions, epsilon productions, and finally Chomsky and
       Greibach Normal Form.


All the structures used are specified using xml-like syntax. See
section XX for examples.


1.1 Where do I get Jaguar?

You can get the Jaguar package and found more about it from:

        http://sourceforge.net/projects/ijaguar/


2. System requirements

In principle, you only need a Java2(TM) virtual machine (JVM) >=v1.4.0
with the Java Foundation Classes (JFC) -- usually the JFC are included
in the standard distribution of the major vendors. You can get your
favorite JVM, from the next sources:

  http://www.blackdown.org
  http://www.java.sun.com

If you just want to run Jaguar it's enough to have any Java 2 Runtime
Environment (JRE).  To compile the sources you will also need a java
compiler, also readily available.

This project was developed and tested using the Java 2 v1.4.2_06 from
java.sun.com. In the other hand the minimum hardware requirements
are the specified by the vendor of the JVM of your choice.

You need ant for compile the sources. The version of ant was 1.6.2.


3. Compiling the sources & running

Usually the sources will be delivered on a package such as:

    jaguar.x-yz.src.tbz2

you need follow the next steps.

   3.1 Extract the sources.

        tar yxvf jaguar.x-yz.src.tbz2

       the previos command will generate the directory

        jaguar.x-yz/

   3.2 Change to the jaguar.x-yz/ directory.

   3.4 Type `ant', and wait a few moments.

   3.5 Now you can execute Jaguar as in:

    ant jcenter

       and you should see the Jaguar Center.



4. Running the binary distribution

The binary distribution will be delivered on a jar file, so you only
need to execute the Jaguar in the next way

  java -jar jaguar-<version>.jar

(change <version> for your correct version) and you should see the Jaguar
Center.



5. Using the Jaguar

  For a quick HowTo use Jaguar see the file MANUAL in this same directory.


6. Author

Please send your comments, improvements, or suggestions to the following address:

  Ivan Hernández Serrano
  School of Sciencie, Universidad Nacional Autónoma de México
  ivanx@users.sourceforge.net
  http://sourceforge.net/projects/ijaguar

You may ask for support to

Ivan Hernández
ivanx@users.sourceforge.net

and

Ismael Hernndez González
ismaelhz@users.sourceforge.net

both of us are the main developer team :)


7. Contributors

Special thanks to Ismael Hernández González
(ismaelhz@users.sourceforge.net) for his support and active
contributions to this project. I also want to thank to Fernanda Sánchez
Puig for her bug fixes and support using this material in her courses.