CS 6848 - Principles of Programming Languages

Java Subsets

MiniJava

grammar minijava.jj programs
MINIJAVA SPECIFICATION
MiniJava is a subset of Java. The meaning of a MiniJava program is given by its meaning as a Java program. Overloading is not allowed in MiniJava. The MiniJava statement System.out.println( ... ); can only print integers. The MiniJava expression e1 & e2 is of type boolean, and both e1 and e2 must be of type boolean.

MicroJava

MICROJAVA SPECIFICATION
MicroJava is a subset of Java. The meaning of a MicroJava program is given by its meaning as a Java program. Overloading is not allowed in MicroJava. The MicroJava statement System.out.println( ... ); can only print integers. The dot notation supports both access to fields of objects and to the length of arrays. In MicroJava, it is not allowed to assign to method arguments. For example, void m(A a) { a = ... } is not allowed.
grammar microjava.jj programs

Interface

grammar interface.jj programs
SPECIFICATION
Interface.jj contains a set of interface specifications for Java and some predicates specifying the subtyping queries.

MiniScheme

grammar minischeme.jj programs
SPECIFICATION
MiniScheme is a subset of Scheme. The meaning of a MiniScheme program is given by its meaning as a Scheme program.

NanoJava

grammar nanojava.jj
SPECIFICATION
NanoJava is a subset of Java. The meaning of a NanoJava program is given by its meaning as a Java program. Overloading is not allowed in NanoJava. The NanoJava statement System.out.println( ... ); can only print integers. The dot notation supports both access to fields of objects and to the length of arrays. In NanoJava, it is not allowed to assign to method arguments. For example, void m(A a) { a = ... } is not allowed.