mirror of
https://github.com/JonathanFleischmann/CompilerULTIMATE.git
synced 2024-12-29 08:08:04 +00:00
add bases for conversions
This commit is contained in:
parent
b022244498
commit
0aa5976bc1
@ -3,7 +3,11 @@ package de.maishai.typedast.typedclass;
|
|||||||
import de.maishai.typedast.Node;
|
import de.maishai.typedast.Node;
|
||||||
import de.maishai.typedast.Type;
|
import de.maishai.typedast.Type;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.objectweb.asm.ClassWriter;
|
||||||
|
import org.objectweb.asm.Opcodes;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -19,8 +23,47 @@ public class Class implements Node {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Node startConversion(de.maishai.ast.records.Class c) {
|
||||||
|
Map<String, Type> local = new HashMap<>();
|
||||||
|
Map<String, Class> classMap = new HashMap<>();
|
||||||
|
|
||||||
|
return convertToTypedAST(local, classMap);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, Class> classes) {
|
public Node convertToTypedAST(Map<String, Type> localVar, Map<String, Class> classes) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void codeGen() {
|
||||||
|
ClassWriter cw = new ClassWriter( ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS);
|
||||||
|
cw.visit(Opcodes.V1_8, Opcodes.ACC_PUBLIC, name, null, "java/lang/Object", null);
|
||||||
|
for(Field field : fields) {
|
||||||
|
//field.codeGen(cw);
|
||||||
|
}
|
||||||
|
for(Method m: methods) {
|
||||||
|
//m.codeGen(cw);
|
||||||
|
}
|
||||||
|
writeClassfile(cw, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void writeClassfile(ClassWriter cw, String name) {
|
||||||
|
byte[] code = cw.toByteArray();
|
||||||
|
try {
|
||||||
|
java.io.FileOutputStream fos = new java.io.FileOutputStream("output/" + name + ".class");
|
||||||
|
fos.write(code);
|
||||||
|
fos.close();
|
||||||
|
} catch (java.io.IOException e) {
|
||||||
|
System.out.println("Error writing classfile: " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Class c = new Class();
|
||||||
|
c.fields = new ArrayList<>();
|
||||||
|
c.methods = new ArrayList<>();
|
||||||
|
c.setName("Test");
|
||||||
|
c.codeGen();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user