Homework B (benchmarks)
This commit is contained in:
parent
72cc3206c4
commit
76fbabdf53
141 changed files with 7540 additions and 2032 deletions
|
@ -5,13 +5,13 @@ import cd.ir.Ast.*;
|
|||
import cd.ir.AstVisitor;
|
||||
|
||||
public class AstOneLine {
|
||||
|
||||
|
||||
public static String toString(Ast ast) {
|
||||
return new Visitor().visit(ast, null);
|
||||
}
|
||||
|
||||
protected static class Visitor extends AstVisitor<String, Void> {
|
||||
|
||||
|
||||
public String str(Ast ast) {
|
||||
return ast.accept(this, null);
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ public class AstOneLine {
|
|||
|
||||
@Override
|
||||
public String binaryOp(BinaryOp ast, Void arg) {
|
||||
return String.format("(%s %s %s)",
|
||||
return String.format("(%s %s %s)",
|
||||
str(ast.left()), ast.operator.repr, str(ast.right()));
|
||||
}
|
||||
|
||||
|
@ -36,12 +36,12 @@ public class AstOneLine {
|
|||
public String builtInRead(BuiltInRead ast, Void arg) {
|
||||
return String.format("read()");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String builtInWrite(BuiltInWrite ast, Void arg) {
|
||||
return String.format("write(%s)", str(ast.arg()));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String builtInWriteln(BuiltInWriteln ast, Void arg) {
|
||||
return String.format("writeln()");
|
||||
|
@ -81,12 +81,12 @@ public class AstOneLine {
|
|||
public String methodCall(MethodCall ast, Void arg) {
|
||||
return str(ast.getMethodCallExpr());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String methodCall(MethodCallExpr ast, Void arg) {
|
||||
return String.format("%s.%s(...)", str(ast.receiver()), ast.methodName);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String methodDecl(MethodDecl ast, Void arg) {
|
||||
return String.format("%s %s(...) {...}", ast.returnType, ast.name);
|
||||
|
@ -121,7 +121,7 @@ public class AstOneLine {
|
|||
public String thisRef(ThisRef ast, Void arg) {
|
||||
return "this";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String returnStmt(ReturnStmt ast, Void arg) {
|
||||
return ast.arg() != null ? String.format("return %s", str(ast.arg())) : "return";
|
||||
|
@ -136,10 +136,10 @@ public class AstOneLine {
|
|||
public String var(Var ast, Void arg) {
|
||||
{
|
||||
if (ast.sym != null) {
|
||||
String symName = ast.sym.toString();
|
||||
String symName = ast.sym.toString();
|
||||
if (ast.name == null || ast.name.equals(symName))
|
||||
return symName;
|
||||
|
||||
|
||||
// Return something strange to warn about the mismatch here:
|
||||
return String.format("(%s!=%s)", symName, ast.name);
|
||||
} else
|
||||
|
@ -156,6 +156,6 @@ public class AstOneLine {
|
|||
public String whileLoop(WhileLoop ast, Void arg) {
|
||||
return String.format("while (%s) {...}", str(ast.condition()));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue