1010import com .annimon .ownlang .parser .optimization .ExpressionSimplification ;
1111import com .annimon .ownlang .parser .optimization .InstructionCombining ;
1212import com .annimon .ownlang .parser .optimization .Optimizable ;
13+ import com .annimon .ownlang .parser .visitors .PrintVisitor ;
1314import java .io .File ;
1415import java .io .FileOutputStream ;
1516import java .io .IOException ;
@@ -45,19 +46,19 @@ private static Map<String, String> getOptimizationSteps(String input) throws IOE
4546 int optimizationPasses = 1 ;
4647 int lastBatchModificationCount ;
4748 int batchModificationCount = 0 ;
48- result .put ("Source" , node . toString ( ));
49+ result .put ("Source" , nodeToString ( node ));
4950 do {
5051 lastBatchModificationCount = batchModificationCount ;
5152 batchModificationCount = 0 ;
5253 for (Optimizable optimization : OPTIMIZATIONS ) {
53- final String lastSource = node . toString ( );
54+ final String lastSource = nodeToString ( node );
5455 node = optimization .optimize (node );
55- final String currentSource = node . toString ( );
56+ final String currentSource = nodeToString ( node );
5657 if (!lastSource .equals (currentSource )) {
5758 final String optName = String .format ("%s, %d pass" ,
5859 optimization .getClass ().getSimpleName (),
5960 optimizationPasses );
60- result .put (optName , node . toString ( ));
61+ result .put (optName , nodeToString ( node ));
6162 }
6263 batchModificationCount += optimization .optimizationsCount ();
6364 }
@@ -66,6 +67,11 @@ private static Map<String, String> getOptimizationSteps(String input) throws IOE
6667 return result ;
6768 }
6869
70+ private static String nodeToString (Node n ) {
71+ // return n.toString();
72+ return n .accept (new PrintVisitor (), new StringBuilder ()).toString ();
73+ }
74+
6975 private static void writeStepsToFile (Map <String , String > optimizationSteps ) throws IOException {
7076 Arrays .stream (WORK_DIR .listFiles ((d , name ) -> name .endsWith (".txt" )))
7177 .forEach (File ::delete );
@@ -84,12 +90,14 @@ private static void writeStepsToFile(Map<String, String> optimizationSteps) thro
8490
8591 private static void writeSummary (final Map <String , String > optimizationSteps ) throws IOException {
8692 final StringBuilder sb = new StringBuilder ();
93+ sb .append ("[pr]" );
8794 for (Map .Entry <String , String > entry : optimizationSteps .entrySet ()) {
8895 sb .append (entry .getKey ());
89- sb .append ("\n \n " );
96+ sb .append ("\n [code own] " );
9097 sb .append (entry .getValue ());
91- sb .append ("\n \n ----------- \n \n " );
98+ sb .append ("[/code][sl] \n " );
9299 }
100+ sb .append ("[/pr]" );
93101 writeContent (new File (WORK_DIR , "summary.txt" ),
94102 writer -> writer .write (sb .toString ()));
95103 }
0 commit comments