Mayac, the maya compiler. This release includes an implemenation of MultiJava and the sketch of a debugging framework. Documentation on the Maya language can be found at http://www.cs.utah.edu/~jbaker/maya. Maya is copyrighted by the University of Utah and licensed under the GPL. See COPYING for details. INSTALL NOTES: Requirements: This system requires Gnu Make and Gcc. I welcome patches to lib/Makefile.in for other C compilers. Mayac also assumes shared libraries are handled in the usual way. Compiling mayac under AIX or HPUX may involve some work. Kawa can compile and run under cygwin. See REAME.win32 for details. This package requires kawalib and the Utah version of Kawa. Both should be installed in the CLASSDIR before building the maya compiler. Environment: Configure will automatically select jikes or javac as the java compiler. But in general, configure should be run with the JAVAC environment variable set. Eg, use `JAVAC="jikes +D -g" /configure' to enable my favorite jikes flags. As always, when using jikes your CLASSPATH should explicitly mention the java runtime library. Configure locates JNI include directories under Kaffe and JDK. When configuring for another JVM, you may need to set JAVA_INCLUDES to the appropriate set of `-I' flags. Flags: By default, jar files are installed in /usr/local/share/java/classes. This behavior is be controlled by the --with-classdir configure flag. Other flags include: --enable-debug is used to debug the compiler --enable-recompile defines a scheme procedure `recompile' that can be used to repeatedly compile a source file in a single JVM. Recompile hides Maya's rather large startup cost. Recompile should only be called after the initial environment is built by rebuild-from-files. This procedure takes the same keyword arguments as the mayac procedure called from bin/mayac. --disable-assertions Do you really want a compiler to silently do the wrong thing? ADDENDUM: thesis.ps is slightly out of date: * There is a new parameterized grammar symbol form: `choice([ symbol ...], ...)'. This form allows a wide range of user-defined nonterminals, but does not support recursion. * Declaration is an interface, and the class DelayedDecl is defined. Actually, every type used as a nonterminal should be an interface, but such an implementation strategy would make the compiler EVEN SLOWER! ROADMAP: bin/ mayac script lib/ bison JNI glue code bison/ bison-1.28 lalr/ a standard table driven parser and lalr parser generator tree/ Lazy parsing infrastructure. base node classes, environment management, conflict resolution and parser action dispatching. grammar/ The actual maya grammar definition util/ Derived java syntax and various utility macros multi/ MultiJava implementation wrap/ Debug wrappers for aosd02 Jason Baker jbaker@cs.utah.edu http://www.cs.utah.edu/~jbaker/maya