CS 6848 - Principles of Programming Languages 
	
	
Java Subsets
MiniJava
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
| 
grammar
 | 
microjava.jj
 | 
programs
 | 
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.
Interface
SPECIFICATION
Interface.jj contains a set of interface specifications for Java and some predicates specifying the subtyping queries.
MiniScheme
SPECIFICATION
MiniScheme is a subset of Scheme.  The meaning of a MiniScheme program is 
given by its meaning as a Scheme program.  
NanoJava
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.