mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 00:34:20 +03:00
Show AST before and after optimization
This commit is contained in:
parent
9c22b26b82
commit
fcb21f6e63
@ -4,7 +4,7 @@ import com.annimon.ownlang.exceptions.OwnLangParserException;
|
||||
import com.annimon.ownlang.exceptions.StoppedException;
|
||||
import com.annimon.ownlang.parser.BeautifierStage;
|
||||
import com.annimon.ownlang.parser.Token;
|
||||
import com.annimon.ownlang.parser.ast.Statement;
|
||||
import com.annimon.ownlang.parser.ast.Node;
|
||||
import com.annimon.ownlang.parser.error.ParseErrorsFormatterStage;
|
||||
import com.annimon.ownlang.parser.linters.LinterStage;
|
||||
import com.annimon.ownlang.parser.optimization.OptimizationStage;
|
||||
@ -185,9 +185,11 @@ public final class Main {
|
||||
}
|
||||
}
|
||||
if (options.showAst) {
|
||||
Statement program = stagesData.get(ParserStage.TAG_PROGRAM);
|
||||
System.out.println(program);
|
||||
System.out.println(stagesData.getOrDefault(OptimizationStage.TAG_OPTIMIZATION_SUMMARY, ""));
|
||||
System.out.println(stagesData.<Node>get(ParserStage.TAG_PROGRAM));
|
||||
if (options.optimizationLevel > 0) {
|
||||
System.out.println(stagesData.getOrDefault(OptimizationStage.TAG_OPTIMIZATION_SUMMARY, ""));
|
||||
System.out.println(stagesData.<Node>get(OptimizationStage.TAG_OPTIMIZED_PROGRAM));
|
||||
}
|
||||
}
|
||||
if (options.showMeasurements) {
|
||||
System.out.println("=".repeat(25));
|
||||
|
@ -7,6 +7,7 @@ import com.annimon.ownlang.stages.StagesData;
|
||||
public class OptimizationStage implements Stage<Node, Node> {
|
||||
|
||||
public static final String TAG_OPTIMIZATION_SUMMARY = "optimizationSummary";
|
||||
public static final String TAG_OPTIMIZED_PROGRAM = "optimizedProgram";
|
||||
|
||||
private final int level;
|
||||
private final boolean summary;
|
||||
@ -48,6 +49,7 @@ public class OptimizationStage implements Stage<Node, Node> {
|
||||
%s
|
||||
""".formatted(iteration, optimization.summaryInfo())
|
||||
);
|
||||
stagesData.put(TAG_OPTIMIZED_PROGRAM, result);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
Loading…
Reference in New Issue
Block a user