X-Git-Url: http://svarog.pmf.uns.ac.rs/gitweb/?p=mjc2wsl.git;a=blobdiff_plain;f=src%2Fmjc2wsl.java;h=dec76fe6b66d64c19d3d707e6dfa63c010d9c613;hp=3d36b10d53d3e003d97a7a02cac5672a8939afe6;hb=13695fb09706ad9035f7acc12d7a09954ed1843d;hpb=014571c0c83ba9b2f5d6aebcb52971f00ba08e0c diff --git a/src/mjc2wsl.java b/src/mjc2wsl.java index 3d36b10..dec76fe 100644 --- a/src/mjc2wsl.java +++ b/src/mjc2wsl.java @@ -28,8 +28,11 @@ import java.util.*; * @author Doni Pracner, http://perun.dmi.rs/pracner http://quemaster.com */ public class mjc2wsl{ - public static String versionN = "0.1.7"; + //default version name, used if the file is not found + private static String versionN = "0.1.x"; + private String versionFile = "version.properties"; + private TransMessages messages = new TransMessages(); private boolean genPauseAfterEachAddress=false, @@ -138,6 +141,24 @@ public class mjc2wsl{ return opMap; } + private Properties versionData; + + private String getVersion() { + if (versionData == null) { + versionData = new Properties(); + try { + versionData.load(getClass().getResourceAsStream(versionFile)); + } catch (IOException e) { + e.printStackTrace(); + } + } + String ver = versionData.getProperty("version"); + if (ver != null) + return ver; + else + return versionN; + } + public String getOpString(int op) { return getOpMap().get(op); } @@ -194,7 +215,7 @@ public class mjc2wsl{ public String createStandardStart(int numWords){ StringBuilder ret = new StringBuilder( "C:\" This file automatically converted from microjava bytecode\";\n" - +"C:\" with mjc2wsl v "+versionN+"\";\n"); + +"C:\" with mjc2wsl v "+getVersion()+"\";\n"); ret.append("\nBEGIN"); ret.append("\nVAR <\n\t"); @@ -707,7 +728,7 @@ public class mjc2wsl{ prl(createTopTwoEStack()); if (genInlinePrint){ prl(createComment("print spacing",C_SPEC)); - prl("PRINFLUSH(SUBSTR(\" \", 0, MIN(10, MAX(0, tempa-1))), tempb);"); + prl("PRINFLUSH(SUBSTR(\" \", 0, MIN(10, MAX(0, tempa-SLENGTH(@String(tempb))))), tempb);"); } else prl("Print_MJ(tempb,tempa);"); @@ -787,6 +808,10 @@ public class mjc2wsl{ public void printHelpDirectives(){ System.out.println("Alternatives for code generation:"); System.out.println(" --genPopPush generate POP/PUSH instead of TAIL/HEAD"); + System.out.println(" --genHeadTail generate TAIL/HEAD instead of POP/PUSH "); + System.out.println(); + System.out.println(" --genInlinePrint generate prints directly instead of procedure calls"); + System.out.println(" --genProcedurePrint generate prints as custom procedure calls"); } public void printHelpHelp() { @@ -801,7 +826,7 @@ public class mjc2wsl{ } public void printVersion() { - System.out.println("MicroJava bytecode to WSL converter. v " + versionN + System.out.println("MicroJava bytecode to WSL converter. v " + getVersion() + ", by Doni Pracner"); }