gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
mjc2wsl - print procedures are simplified to use @Format instead of FOR loops
[mjc2wsl.git] / src / com / quemaster / transformations / mjc2wsl / mjc2wsl.java
index c890fef..c6830a5 100644 (file)
@@ -211,17 +211,12 @@ public class mjc2wsl{
 
                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:=1 TO ");
-                               ret.append("MAX(0, format-SLENGTH(@String(tempb))) STEP 1 DO PRINFLUSH(\" \") OD\n");
-                               ret.append("\tFI;\n\tPRINFLUSH(val)\nEND\n");
+                               ret.append("PRINFLUSH(@Format(format, val ))");
+                               ret.append("\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("PRINFLUSH(@Format(format, CHR(val)))");
+                               ret.append("\nEND\n");
                }
 
                ret.append("\nEND");
@@ -653,9 +648,13 @@ public class mjc2wsl{
 
                        // read, print
                        case bread: {
-                               // TODO make it a char for read
-                               messages.message("char is read like a number", TransMessages.M_WAR);
-                               prl(createComment("char is read like a number", C_SPEC));
+                               // TODO maybe we'll need a bufer for multi chars!
+                               prl(createStartVar("tempa"));
+                               prl("@Read_Line_Proc(VAR tempa, Standard_Input_Port);");
+                               prl("tempa := @String_To_List(tempa)[1];");
+                               prl(createToEStack("tempa"));
+                               prl(createEndVar());
+                               break;
                        }
                        case read: {
                                prl(createStartVar("tempa"));
@@ -672,7 +671,7 @@ public class mjc2wsl{
                                prl(createTopTwoEStack());
                                if (genInlinePrint){
                                        prl(createComment("print spacing and transformation",C_SPEC));
-                                       prl("PRINFLUSH(SUBSTR(\"          \", 0, MIN(10, MAX(0,tempa-1))), @List_To_String(< tempb >));");
+                                       prl("PRINFLUSH(@Format(tempa, @List_To_String(< tempb >)));");
                                } else
                                        prl("Print_MJ_CHAR(tempb,tempa);");
                                prl(createEndVar());
@@ -684,7 +683,7 @@ public class mjc2wsl{
                                prl(createTopTwoEStack());
                                if (genInlinePrint){
                                        prl(createComment("print spacing",C_SPEC));
-                                       prl("PRINFLUSH(SUBSTR(\"          \", 0, MIN(10, MAX(0, tempa-SLENGTH(@String(tempb))))), tempb);");
+                                       prl("PRINFLUSH(@Format(tempa,tempb));");
                                }
                                else
                                        prl("Print_MJ(tempb,tempa);");
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner