blob: c384d7c4cdc9c47cd8056b929319f1b60ef81680 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
package org.shedlang.compiler.shidtopatio;
import org.shedlang.compiler.patio.PatioSerializer;
import org.shedlang.compiler.typechecker.TypeInfos;
import java.util.Optional;
class ShidToPatioTesting {
private ShidToPatioTesting() {}
static ShidToPatioContext createContext(TypeInfos typeInfos) {
var globalContext = ShidToPatioContext.GlobalContext.forTypeInfos(typeInfos);
return ShidToPatioContext.initialForCompilationUnit(Optional.empty(), globalContext);
}
static String serialize(ShidToPatioContext context) {
var builder = new StringBuilder();
builder.append("Compilation unit elements:\n\n");
for (var element : context.compilationUnitContext().elementsByName().values()) {
PatioSerializer.serializeCompilationUnitElement(element, builder);
builder.append("\n");
}
builder.append("\n");
builder.append("Locals:\n");
for (var local : context.functionContext().localsByName().values()) {
builder.append(" * ");
PatioSerializer.serializeLocal(local, builder);
builder.append("\n");
}
builder.append("\n");
builder.append("Instructions:\n\n");
PatioSerializer.serializeInstructions(
context.functionContext().instructions(),
builder
);
builder.append("\n\nTemporary stack:\n");
for (var value : context.functionContext().temporaryStack()) {
builder.append(" * ");
builder.append(value.toString());
builder.append("\n");
}
return builder.toString();
}
}
|