public Void visitUnit(UnitTree tree) {
		String name = options.getOutputName();
		source = tree.getSource();
		if (name == null) {
			name = source;
			int dot = name.lastIndexOf('.');
			if (dot > 0) name = name.substring(0, dot);
		}
		File file = new File(options.getOutputDir(), name+".c");
		try {
			output = new PrintStream(file);
		} catch (IOException ioe) {
			//cry like a baby
		}
		if (options.needDebugInfo()) {
			output.println("/* Generated from \"" + source + "\" */");
		}
		output.println("#include <string.h>");
		output.println("#include <stdio.h>");
		output.println();
		output.print("#define ARRAY_SIZE   ");
		output.println(options.getRange());
		output.println();
		if (options.needDebugInfo()) output.println("#line 1 " + source);
		output.println("int main(int argc, char* argv[]) {");
		output.println("\tchar array[ARRAY_SIZE];");
		output.println("\tbzero(array, ARRAY_SIZE * sizeof(char));");
		output.println("\tint position = 0;");
		output.println("\tchar ch;");
		for (Tree t : tree.getChildren()) {
			t.accept(this, 1);
		}
		output.println("}");
		output.flush();
		output.close();
		System.err.println("File "+name+".c written");
		return null;
	}