Skip to content

Commit fcb21f6

Browse files
committed
Show AST before and after optimization
1 parent 9c22b26 commit fcb21f6

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

ownlang-desktop/src/main/java/com/annimon/ownlang/Main.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import com.annimon.ownlang.exceptions.StoppedException;
55
import com.annimon.ownlang.parser.BeautifierStage;
66
import com.annimon.ownlang.parser.Token;
7-
import com.annimon.ownlang.parser.ast.Statement;
7+
import com.annimon.ownlang.parser.ast.Node;
88
import com.annimon.ownlang.parser.error.ParseErrorsFormatterStage;
99
import com.annimon.ownlang.parser.linters.LinterStage;
1010
import com.annimon.ownlang.parser.optimization.OptimizationStage;
@@ -185,9 +185,11 @@ private static void run(RunOptions options) {
185185
}
186186
}
187187
if (options.showAst) {
188-
Statement program = stagesData.get(ParserStage.TAG_PROGRAM);
189-
System.out.println(program);
190-
System.out.println(stagesData.getOrDefault(OptimizationStage.TAG_OPTIMIZATION_SUMMARY, ""));
188+
System.out.println(stagesData.<Node>get(ParserStage.TAG_PROGRAM));
189+
if (options.optimizationLevel > 0) {
190+
System.out.println(stagesData.getOrDefault(OptimizationStage.TAG_OPTIMIZATION_SUMMARY, ""));
191+
System.out.println(stagesData.<Node>get(OptimizationStage.TAG_OPTIMIZED_PROGRAM));
192+
}
191193
}
192194
if (options.showMeasurements) {
193195
System.out.println("=".repeat(25));

ownlang-parser/src/main/java/com/annimon/ownlang/parser/optimization/OptimizationStage.java

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
public class OptimizationStage implements Stage<Node, Node> {
88

99
public static final String TAG_OPTIMIZATION_SUMMARY = "optimizationSummary";
10+
public static final String TAG_OPTIMIZED_PROGRAM = "optimizedProgram";
1011

1112
private final int level;
1213
private final boolean summary;
@@ -48,6 +49,7 @@ public Node perform(StagesData stagesData, Node input) {
4849
%s
4950
""".formatted(iteration, optimization.summaryInfo())
5051
);
52+
stagesData.put(TAG_OPTIMIZED_PROGRAM, result);
5153
}
5254

5355
return result;

0 commit comments

Comments
 (0)