On this page you can learn ...
     [ ... what syntax tools are good for and how to use them ]
     [ ... about the architecture of our tools and their technical characteristics ]
     [ ... the details of our visual compiler compilers Jaccie and SIC ]
     [ ... how to contact us ]

All our materials are available for [[ Download ]]

You may also find the [[ comprehensive German Version ]] of this site useful

Inside a compiler Get more information

Many programmers live in happy ignorance of their compilers’ internal workings. Others may want to take a look at what is going on inside the black box in much the some way they use a debugger to watch their compiled programs execute.

Our visual compiler-compilers (Jaccie and SIC) were developed exactly for this purpose. They are educational tools for visualizing modern compiling techniques which automatically generate demonstration compilers from suitable language descriptions. The generated compilers continuously display their internal states and are controlled with the mouse to move back and forth, in single or larger steps, etc. Auxiliary information derived from the language description can be viewed interactively at any time. While conventional compilers are black boxes whose internals are hidden from the user, our tools help to open up the box and have a look at what is going on inside.

More informationen information is available on the right hand side. Also see the "technical information" and the tool descriptions below!

Find out ...

  • ... what syntax tools can do for you and get a first glimpse of our visual compiler compilers in the [ Introduction ].
  • ... about typical applications of compiler construction tools; the - alas, German! - [ Examples ] collection contains many examples demonstrating the approach and its usefulness beyond programming language implementation.
  • ... about the theoretical background in our [ Tutorial ].
    Here you learn to understand
    • how lexical analysers are implemented as a set of cooperating finite automata
    • what the differences (and the similarities) between top down and bottom up parsers are, about the relative power of the different kinds of LR parsers and how they are put to use
    • how attribute grammars work and how they are used for translation


Compiler Compiler Architecture Technical information

Our compiler compilers each consist of

  • ... a scanner generator
  • ... different parser generators for producing all relevant types of parsers (LL(1), LR(0), SLR(1), LALR(1) and LR(1))
  • ... two attribute evaluator generators for data driven and demand driven attribute evaluation, respectively


Syntax directed special editors help you to produce correct definitions: regular token definitions defining the scanner, a context-free grammar defining the parser, and attributes with evaluation rules defining the attribute evaluator.

Visual debuggers give you a lot of support when testing the generated compiler components. A special feature:

  • a nondeterministic parsing mode is available where either users are prompted to resolve conflicts as they occur or backtracking is used to systematically explore all alternatives.


About Jaccie About SIC

Jaccie is an acronym for Java-based compiler compiler with interactive environment. Development of Jaccie started in 1995. The implementation was done by students (mostly in the context of their Diploma theses). Currently, its capacity corresponds roughly to that of the predecessor system SIC (see right hand side).

Except for the handbook, the Jaccie documentation is available in German only:

  • The [ Jaccie handbook ] describes in detail how to install Jaccie and how to use its many tools.
  • The collection of small [ Jaccie examples ] is the result of student homeworks done in the context of my (winter 2004) lecture on syntax tools. At the same time, the Jaccie version of the [ miniDoc ] project was produced.


The Jaccie system (in the form of a Java jar file) plus examples, miniDoc project, and documentation are available from the [[ Download ]] page.

SIC is an acronym for Smalltalk-based InteractiveCompiler compiler. The SIC system was implemented between 1989 and 1995 in a series of student projects. SIC was presented at the international STACS'91 and OOPSLA'92 conferences. In 1991 it was awarded the Academic Software Cooperation's Software Award. The current SIC95 version is used as a prototype for the development of Jaccie (see left hand side).

For SIC the following documentation is available:

  • The [ SIC handbook (German) ] describes in detail how to install SIC and how to use its many tools. The (English) short introduction [ SIC manual ] also describes the Smalltalk programming language in which attribute evaluation rules are written.
  • The German [ Examples ] collection mentioned above was developed using SIC.


The SIC system (in the form of VisualWorks parcels plus examples and documentation are available from the [[ Download ]] page.


How to contact us

If you ...

  • ... have questions on how to use our tools,
  • ... would like to point out errors to us or give us some hints,
  • ... have Jaccie or SIC examples that you are willing to share
  • ... or just would like to contact us,
please write an email to Dr. Lothar Schmitz


August 23, 2004