diff --git a/CS_CodeGen.jrag b/CS_CodeGen.jrag index dcfeddcf8e678064c2853491f54dbfe15dc28284..aef757ec79eb4a4389acfc3254eb24054f611bca 100644 --- a/CS_CodeGen.jrag +++ b/CS_CodeGen.jrag @@ -23,6 +23,10 @@ aspect CS_CodeGenEnv { public CS_printer(File f) { file = f; + File parentFile = f.getParentFile(); + if(parentFile != null) { + parentFile.mkdirs(); + } } public CS_printer(PrintStream out) { @@ -140,6 +144,16 @@ aspect CS_CodeGenEnv { println("}"); } + public void print_block_begin() { + println("{"); + indent(); + } + + public void print_block_end() { + unindent(); + println("}"); + } + public String getUnique(Object o) { String result = (String)unique.get(o); if (result == null) { @@ -419,8 +433,7 @@ aspect CS_Class { for (int i = 0 ; i < getNumExp() ; i++) { String limit = getExp(i).CS_emitEncoder(env, name + ".GetLength(" + i + ")"); - env.println("{"); - env.indent(); + env.print_block_begin(); env.println("int i_" + (baseDepth + i) + "_max = " + limit + ";"); } String index = null; @@ -435,9 +448,8 @@ aspect CS_Class { getType().CS_emitEncoder(env, name + "[" + index + "]"); for (int i = 0 ; i < getNumExp() ; i++) { env.print_for_end(); + env.print_block_end(); } - env.unindent(); - env.println("}"); } public String Exp.CS_emitEncoder(CS_env env, String name) { diff --git a/Java_CodeGen.jrag b/Java_CodeGen.jrag index b614e03531705df1e0fd85adef07757f82586ca1..40c0e1b26c42550424a5dfdf07b715b5a04b5e53 100644 --- a/Java_CodeGen.jrag +++ b/Java_CodeGen.jrag @@ -23,6 +23,10 @@ aspect Java_CodeGenEnv { public Java_printer(File f) { file = f; + File parentFile = f.getParentFile(); + if(parentFile != null) { + parentFile.mkdirs(); + } } public Java_printer(PrintStream out) { @@ -140,6 +144,16 @@ aspect Java_CodeGenEnv { println("}"); } + public void print_block_begin() { + println("{"); + indent(); + } + + public void print_block_end() { + unindent(); + println("}"); + } + public String getUnique(Object o) { String result = (String)unique.get(o); if (result == null) { @@ -445,8 +459,7 @@ aspect Java_Class { String prefix = ""; for (int i = 0 ; i < getNumExp() ; i++) { String limit = getExp(i).Java_emitEncoder(env, name + prefix); - env.println("{"); - env.indent(); + env.print_block_begin(); env.println("int i_" + (baseDepth + i) + "_max = " + limit + ";"); prefix = prefix + "[0]"; } @@ -457,9 +470,8 @@ aspect Java_Class { getType().Java_emitEncoder(env, name); for (int i = 0 ; i < getNumExp() ; i++) { env.print_for_end(); + env.print_block_end(); } - env.unindent(); - env.println("}"); } public String Exp.Java_emitEncoder(Java_env env, String name) {