Jikes Parser Generator is the parser generator used by the Jikes Compiler. It takes as input an annotated version of the Java language grammar and produces as output program source and data that is part of the source for the Jikes compiler.
The current version is written in C
and reflects its
ancient origins; in
particular, the parser generator was written at a time when memory
was at a premium (work on it began over fifteen years ago), and was designed to be able to process a grammar
for Ada in less that 300K running on an original model IBM PC.
IBM Research is releasing the source for the parser generator as a companion effort to the release of the source for the Jikes Compiler. The parser generator is used to generate some of the files that comprise the Jikes parser, and so its release makes the full source of the Jikes compiler available in a form not dependent on machine-generated code.
The release of JikesTM Parser Generator does not establish a policy for the rest of IBM outside of Research, nor does it define a standard Source License for Research. Other Source agreements from IBM, including IBM Research, if and when they do come, are likely to be more restrictive with respect to commercial use -- we are allowing almost any use for Jikes because we believe it benefits the Java community and doesn't give away any intellectual property.
We have no plans to actively work on the source right now, as we want to devote our efforts to improving the Jikes compiler.
If time permits, we would anticipate recoding the parser generator in a more modern language, most likely Java.
Don't forget to read the license carefully. It explains in detail what you can and cannot do.
You can pretty much do whatever you want -- as long as we get some acknowledgment. You can distribute it in binary or source form, take all or part of it and put it in something else, and then redistribute it. It's all up to you.
However, IBM retains control of the names "IBM" and "JikesTM". You can't use them without our permission.
You are under no obligation to tell us what you are doing with the source, or to inform us of any changes you make.
We provide a simple Makefile that works for the IBM AIX system. You will
need to adapt it as necessary for other systems. This shouldn't be hard, as the
parser generator is just a medium-sized c
program that makes few
demands on the standard libraries.
To build the source from scratch, do:
cd jikespg/src make clean make
Two small example programs are included with the parser generator source: bnf
and expr
.
To try bnf
, a simple demonstration of a bnf parser, do:
cd jikespg/examples/bnf make java Main example1.bnf java Main example2.bnf
To try expr
, a simple Java expression evaluator, do:
cd jikespg/examples/bnf make java Mainand type in sample expressions, such as
2+4
when prompted.
You can also bootstrap the parser generator. First, note the size of the executable, then do:
jikespg jikespg.g makeand see if the size of the executable is the same (it should be).
You can try it with Jikes as follows:
cd jikes/src touch java.g jikespg javaThe files produced by running
jikespg
should agree with
the versions that were present before running jikespg
.
All that is availalble now is the source. As is common with many works in progress, we have only had time to comment the source as it has evolved.
Please send mail to the mail list
jikes-bugs@watson.ibm.com
. You need to subscribe to this
list before you can post mail; instructions on how to subscribe can
be found at
http://www.ibm.com/research/jikes/subscribe.
Note that only minimal support, indeed possibly no support at all, is
offered at the present time.