task5 complete
This commit is contained in:
parent
a607f09f6b
commit
a59e60d2bc
@ -28,6 +28,9 @@ import triangle.syntacticAnalyzer.Scanner;
|
||||
import triangle.syntacticAnalyzer.SourceFile;
|
||||
import triangle.treeDrawer.Drawer;
|
||||
|
||||
// Task 5b
|
||||
import triangle.optimiser.SummaryStats;
|
||||
|
||||
// Task 2
|
||||
import com.sampullara.cli.Args;
|
||||
import com.sampullara.cli.Argument;
|
||||
@ -56,6 +59,9 @@ public class Compiler {
|
||||
/** The AST representing the source program. */
|
||||
private static Program theAST;
|
||||
|
||||
//Task5b
|
||||
private static SummaryStats stats;
|
||||
|
||||
//Task 2
|
||||
|
||||
@Argument(alias = "file", description="Name of file you want to compile", required = true)
|
||||
@ -112,9 +118,6 @@ public class Compiler {
|
||||
encoder = new Encoder(emitter, reporter);
|
||||
drawer = new Drawer();
|
||||
|
||||
//Task 5b
|
||||
stats = new SummaryStats();
|
||||
|
||||
theAST = parser.parseProgram(); // 1st pass
|
||||
if (reporter.getNumErrors() == 0) {
|
||||
System.out.println("Contextual Analysis ...");
|
||||
@ -141,9 +144,13 @@ public class Compiler {
|
||||
if (successful) {
|
||||
emitter.saveObjectProgram(objectName);
|
||||
System.out.println("Compilation was successful.");
|
||||
|
||||
//Task 5b
|
||||
if (showStats) {
|
||||
theAST.visit(stats = new SummaryStats());
|
||||
System.out.println("[STATS] CharExpr: " + stats.getCharExprCount() + "!");
|
||||
System.out.println("[STATS] IntExpr: " + stats.getIntExprCount() + "!");
|
||||
}
|
||||
} else {
|
||||
System.out.println("Compilation was unsuccessful.");
|
||||
}
|
||||
@ -160,24 +167,10 @@ public class Compiler {
|
||||
|
||||
//Task 2
|
||||
Args.parseOrExit(Compiler.class, args);
|
||||
var compiledOK = compileProgram(Compiler.sourceName, Compiler.objectName, Compiler.showTree, false, Compiler.showTreeAfterFolding);
|
||||
var compiledOK = compileProgram(Compiler.sourceName, Compiler.objectName, Compiler.showTree, false, Compiler.showTreeAfterFolding, Compiler.showStats);
|
||||
|
||||
if (!showTree) {
|
||||
System.exit(compiledOK ? 0 : 1);
|
||||
}
|
||||
}
|
||||
|
||||
/* No longer needed */
|
||||
private static void parseArgs(String[] args) {
|
||||
for (String s : args) {
|
||||
var sl = s.toLowerCase();
|
||||
if (sl.equals("tree")) {
|
||||
showTree = true;
|
||||
} else if (sl.startsWith("-o=")) {
|
||||
objectName = s.substring(3);
|
||||
} else if (sl.equals("folding")) {
|
||||
folding = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -321,8 +321,8 @@ public class SummaryStats implements ActualParameterVisitor<Void, AbstractSyntax
|
||||
|
||||
@Override
|
||||
public AbstractSyntaxTree visitCharacterExpression(CharacterExpression ast, Void arg) {
|
||||
countCharExpr++; //Increment the count for stats
|
||||
ast.CL.visit(this);
|
||||
countCharExpr++; //Increment the count for stats after visiting
|
||||
return null;
|
||||
}
|
||||
|
||||
|
Binary file not shown.
BIN
checkstats.tri
Normal file
BIN
checkstats.tri
Normal file
Binary file not shown.
18
programs/checkstats.tri
Normal file
18
programs/checkstats.tri
Normal file
@ -0,0 +1,18 @@
|
||||
let
|
||||
var a : Integer;
|
||||
var b : Integer;
|
||||
var c : Integer;
|
||||
|
||||
var x : Char;
|
||||
var y : Char
|
||||
in
|
||||
{
|
||||
a := 1;
|
||||
b := 2;
|
||||
a**;
|
||||
|
||||
b := 100;
|
||||
|
||||
x := 'A';
|
||||
y := 'Z';
|
||||
}
|
BIN
simple.tri
Normal file
BIN
simple.tri
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user