// COL meta-compiler for java in java import java.io.*; public class mcj { public static PrintWriter pw; public static colsig sig; public static void writeinterface(String intname) throws Exception { pw = new PrintWriter(new OutputStreamWriter( new FileOutputStream(intname+".java"))); pw.println("/* this file was automatically generated by mcj.java */"); pw.println("\npublic interface " + intname); pw.println("{"); ctype returntype = null; colsig decl = sig; // pointer to sucessive decs int arity = 0; String argv = ""; while (decl != null) { arity = decl.type.arity(); returntype = decl.type.targettype(); if (arity>0) argv = decl.type.toString(); else argv = "()"; // write the java declaration: pw.println("\t" + returntype + " " + decl.id + argv + ";"); pw.flush(); decl = decl.next; } // for each declaration in sig list pw.println("}"); pw.close(); } // writeinterface public static void writeimpl(String intname) throws Exception { String implclass = intname+"impl"; pw = new PrintWriter(new OutputStreamWriter( new FileOutputStream(implclass+".java"))); pw.println("/* finish this class to implement "+intname+" */\n"); pw.println("public class "+implclass+" implements " + intname); pw.println("{\n\n}"); pw.close(); } //writeimpl public static void writeserver(String intname) throws Exception { String serverclass = intname+"server"; pw = new PrintWriter(new OutputStreamWriter( new FileOutputStream(serverclass+".java"))); pw.println("/* this file was automatically generated by mcj.java */\n"); pw.print("public class "+serverclass+" extends colserver\n{"); // instance of server class: pw.println(" private "+intname+" server;\n"); // constructor pw.println(" public "+serverclass+"()\n {"); // create instance of server pw.println("\tserver = new "+intname+"impl();"); // create Match array int len = sig.length(); pw.println("\tMatch = new serverfun["+ len +"];"); // initialize Match entries: colsig dec = sig; for(int i=0;i