Invisible Software

Invisible Jacc FAQ

What is Invisible Jacc?

Invisible Jacc is an LR parser generator with automatic error repair. It is written entirely in Java, and it produces Java scanners and parsers. Invisible Jacc has a fully object-oriented design. You can use Invisible Jacc to create compilers and other programs that need to analyze complex input files.

An Invisible Jacc scanner analyzes a source file, and recognizes tokens defined by regular expressions. The scanner supports start conditions (which allows different regular expressions to be active at different times during the scan), and right context (which allows a regular expression to be recognized only when it appears in a certain context). In addition, the scanner provides hooks for handling difficult cases where regular expressions are insufficient. The scanner can accept either ASCII or Unicode input files.

An Invisible Jacc parser analyzes a stream of tokens, and structures them according to a set of productions. Invisible Jacc supports LALR(1), full LR(1), and optimized LR(1) grammars. Invisible Jacc also supports ambiguous grammars, with very detailed control of ambiguity resolution. Ambiguous grammars make it easy to handle operators with differing precedence and associativity, and language constructs such as the "dangling else."

The parser provides automatic error repair, using a modified LM error repair algorithm. When an error is found in the source, the parser automatically determines what symbols to insert and/or delete in order to continue the parse. A "cost" can be assigned to each symbol to tune the repair algorithm. Invisible Jacc generates the error repair tables automatically from the grammar specification.

The parser and scanner also include hooks for installing custom-written prescanners and preprocessors, to handle special language requirements.


Why are there two versions of Invisible Jacc?

Invisible Jacc version 1.0 is designed to work with any Java compiler.

Invisible Jacc version 1.1 requires a Java 1.1 compliant compiler.

The two versions are almost identical. Invisible Jacc 1.1 uses these Java 1.1 features:

Note: All Java development systems currently on the market are Java 1.1 compliant. You should always use Invisible Jacc 1.1, unless for some reason you are stuck using an old Java 1.0 development system.


What are the license terms?

This version of Invisible Jacc is licensed only for personal, noncommercial use. There is no warranty. Refer to the license agreement for details.

If you want to use Invisible Jacc for educational or commercial purposes, we encourage you to contact Invisible Software to discuss your requirements. We also welcome comments and criticisms of the Invisible Jacc design and feature set.


What do I get?

When you download Invisible Jacc, you'll get:


What do I need?

To use Invisible Jacc, you need a Java development environment, including a Java compiler. Invisible Jacc is written in standard Java so you should be able to use any Java environment. For Invisible Jacc 1.0, you can use any Java compiler. For Invisible Jacc 1.1, you need a Java 1.1 compliant compiler.

We originally used Microsoft Visual J++ to develop Invisible Jacc. But Visual J++ is now obsolete, and we have switched to Borland JBuilder. If you don't already have a Java development environment, we highly recommend JBuilder. You can download a personal copy of JBuilder for free from the Borland web site.

Invisible Jacc is supplied in a ZIP file. To install Invisible Jacc, you'll need an unzipping program that can handle long filenames. You can get an unzipping program for Windows 95/98/NT/2000 from the WinZip web site. (If you have Windows Me or XP, the unzipping function is built in to the operating system; no separate unzipping program is required.)

The Invisible Jacc documentation is supplied in PDF format. To read it, you'll need an Acrobat reader. Acrobat readers for many platforms (including Windows, Mac, and Unix) are available for free from the Adobe web site.


Return to Invisible Jacc home page.

1998 Invisible Software, Inc.