Homework 2
This commit is contained in:
parent
12f678a924
commit
bf60a078d7
64 changed files with 4786 additions and 1185 deletions
|
@ -13,11 +13,14 @@ import cd.ir.Ast.Field;
|
|||
import cd.ir.Ast.IfElse;
|
||||
import cd.ir.Ast.Index;
|
||||
import cd.ir.Ast.IntConst;
|
||||
import cd.ir.Ast.MethodCall;
|
||||
import cd.ir.Ast.MethodCallExpr;
|
||||
import cd.ir.Ast.MethodDecl;
|
||||
import cd.ir.Ast.NewArray;
|
||||
import cd.ir.Ast.NewObject;
|
||||
import cd.ir.Ast.Nop;
|
||||
import cd.ir.Ast.NullConst;
|
||||
import cd.ir.Ast.ReturnStmt;
|
||||
import cd.ir.Ast.Seq;
|
||||
import cd.ir.Ast.ThisRef;
|
||||
import cd.ir.Ast.UnaryOp;
|
||||
|
@ -99,6 +102,16 @@ public class AstOneLine {
|
|||
return Integer.toString(ast.value);
|
||||
}
|
||||
|
||||
@Override
|
||||
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);
|
||||
|
@ -134,6 +147,11 @@ public class AstOneLine {
|
|||
return "this";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String returnStmt(ReturnStmt ast, Void arg) {
|
||||
return ast.arg() != null ? String.format("return %s", str(ast.arg())) : "return";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String unaryOp(UnaryOp ast, Void arg) {
|
||||
return String.format("%s(%s)", ast.operator.repr, str(ast.arg()));
|
||||
|
|
34
src/cd/util/debug/DumpUtils.java
Normal file
34
src/cd/util/debug/DumpUtils.java
Normal file
|
@ -0,0 +1,34 @@
|
|||
package cd.util.debug;
|
||||
|
||||
import static java.util.Collections.sort;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import cd.ir.Ast.ClassDecl;
|
||||
import cd.ir.Ast.MethodDecl;
|
||||
|
||||
class DumpUtils {
|
||||
|
||||
static final Comparator<ClassDecl> classComparator = new Comparator<ClassDecl>() {
|
||||
public int compare(ClassDecl left, ClassDecl right) {
|
||||
return left.name.compareTo(right.name);
|
||||
}
|
||||
};
|
||||
|
||||
static final Comparator<MethodDecl> methodComparator = new Comparator<MethodDecl>() {
|
||||
public int compare(MethodDecl left, MethodDecl right) {
|
||||
return left.name.compareTo(right.name);
|
||||
}
|
||||
};
|
||||
|
||||
static List<String> sortedStrings(Set<?> set) {
|
||||
List<String> strings = new ArrayList<String>();
|
||||
for(Object element : set)
|
||||
strings.add(element.toString());
|
||||
sort(strings);
|
||||
return strings;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue