gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
ant - added build task for versioning by using 'git describe'
[mjc2wsl.git] / src / mjc2wsl.java
index f754e4e..14cc9e4 100644 (file)
@@ -38,6 +38,8 @@ public class mjc2wsl{
                
        private boolean genPopPush=false;
        
+       private boolean genInlinePrint=false;
+
        /** Constant used for marking a regular comment from the original file */
        public static final char C_REG = ' ';
        /**
@@ -222,18 +224,20 @@ public class mjc2wsl{
                ret.append("\t@List_To_String(< num >)\n");
                ret.append("END\n");
 
-               ret.append("\nPROC Print_MJ(val, format VAR)==\n");
-               ret.append(createComment("print spacing", C_SPEC));
-               ret.append("\n\tIF format>1 THEN\n\t\tFOR i:=2 TO ");
-               ret.append("format STEP 1 DO PRINFLUSH(\" \") OD\n");
-               ret.append("\tFI;\n\tPRINFLUSH(val)\nEND\n");
-
-               ret.append("\nPROC Print_MJ_CHAR(val, format VAR)==\n");
-               ret.append(createComment("print spacing", C_SPEC));
-               ret.append("\n\tIF format>1 THEN\n\t\tFOR i:=2 TO ");
-               ret.append("format STEP 1 DO PRINFLUSH(\" \") OD\n");
-               ret.append("\tFI;\n\tPRINFLUSH(CHR(val))\n");
-               ret.append("END\n");
+               if (!genInlinePrint) {
+                               ret.append("\nPROC Print_MJ(val, format VAR)==\n");
+                               ret.append(createComment("print spacing", C_SPEC));
+                               ret.append("\n\tIF format>1 THEN\n\t\tFOR i:=2 TO ");
+                               ret.append("format STEP 1 DO PRINFLUSH(\" \") OD\n");
+                               ret.append("\tFI;\n\tPRINFLUSH(val)\nEND\n");
+
+                               ret.append("\nPROC Print_MJ_CHAR(val, format VAR)==\n");
+                               ret.append(createComment("print spacing", C_SPEC));
+                               ret.append("\n\tIF format>1 THEN\n\t\tFOR i:=2 TO ");
+                               ret.append("format STEP 1 DO PRINFLUSH(\" \") OD\n");
+                               ret.append("\tFI;\n\tPRINFLUSH(CHR(val))\n");
+                               ret.append("END\n");
+               }
 
                ret.append("\nEND");
                return ret.toString();
@@ -688,7 +692,11 @@ public class mjc2wsl{
                        case bprint: {
                                prl(createStartVar("tempa", "tempb"));
                                prl(createTopTwoEStack());
-                               prl("Print_MJ_CHAR(tempb,tempa);");
+                               if (genInlinePrint){
+                                       prl(createComment("print spacing and transformation",C_SPEC));
+                                       prl("PRINFLUSH(SUBSTR(\"          \", 0, MIN(10, MAX(0,tempa-1))), @List_To_String(< tempb >));");
+                               } else
+                                       prl("Print_MJ_CHAR(tempb,tempa);");
                                prl(createEndVar());
                                break;
                        }
@@ -697,7 +705,12 @@ public class mjc2wsl{
                                prl(createStartVar("tempa", "tempb"));
 
                                prl(createTopTwoEStack());
-                               prl("Print_MJ(tempb,tempa);");
+                               if (genInlinePrint){
+                                       prl(createComment("print spacing",C_SPEC));
+                                       prl("PRINFLUSH(SUBSTR(\"          \", 0, MIN(10, MAX(0, tempa-1))), tempb);");
+                               }
+                               else
+                                       prl("Print_MJ(tempb,tempa);");
                                prl(createEndVar());
                                break;
                        }
@@ -774,6 +787,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() {
@@ -846,6 +863,12 @@ public class mjc2wsl{
                                        genPauseAfterEachAddress = true;
                                } else if (args[i].compareToIgnoreCase("--genPopPush") == 0) {
                                        genPopPush = true;
+                               } else if (args[i].compareToIgnoreCase("--genInlinePrint") == 0) {
+                                       genInlinePrint = true;
+                               } else if (args[i].compareToIgnoreCase("--genHeadTail") == 0) {
+                                       genPopPush = false;
+                               } else if (args[i].compareToIgnoreCase("--genProcedurePrint") == 0) {
+                                       genInlinePrint = false;
                                }
                                i++;
                        }
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner