diff --git a/src/main/java/TP2/LLVM.java b/src/main/java/TP2/LLVM.java new file mode 100644 index 0000000..9375698 --- /dev/null +++ b/src/main/java/TP2/LLVM.java @@ -0,0 +1,132 @@ +package TP2; + +import java.util.List; + + +public class LLVM { + sealed interface Prog{} + sealed interface Fonction{} + sealed interface Instr{} + sealed interface Bloc implements Instr{} + sealed interface Aff implements Instr{} + sealed interface Print implements Instr{} + sealed interface Read implements Instr{} + sealed interface IfThen implements Instr{} + sealed interface IfThenElse implements Instr{} + sealed interface While implements Instr{} + sealed interface Type{} + sealed interface INT implements Type{} + sealed interface ListDecl{} + sealed interface ListVar{} + sealed interface Expression{} + + + + record ProgImpl(List fonctions) implements Prog{ + + } + + record FonctionImpl(Type type, String nom, List instrs) implements Fonction{ + + } + + record Bloc(List listDecls) implements Bloc{ + public String toString(){ + String str = ""; + for(int i = 0; i instrs) implements IfThen{ + public String toString(){ + String str = "IF " + cond.toString() + "THEN"; + for(int i = 0; i< instrs1.size(); i++){ + str += "\n" + instrs1.get(i).toString(); + } + return str; + } + + } + + record IfThenElse(Cond cond, List instrs1, List instrs1) implements IfThenElse{ + public String toString(){ + String str = "IF " + cond.toString() + "THEN"; + for(int i = 0; i< instrs1.size(); i++){ + str += "\n" + instrs1.get(i).toString(); + } + str += "\nELSE"; + for(int i = 0; i< instrs2.size(); i++){ + str += "\n" + instrs2.get(i).toString(); + } + return str; + } + } + + record While(Cond cond, List instrs) implements While{ + public String toString(){ + String str = "WHILE " + cond.toString() +"\nDO {"; + for(int i = 0; i< instrs.size(); i++){ + str += "\n" + instrs.get(i).toString(); + } + str += "\n}"; + return str; + } + } + + record INT() implements INT{ + + public String toString(){ + return "INT"; + } + } + + record ListDecl(Type type, List vars) implements ListDecl{ + public String toString(){ + String str = type.toString + " "; + for(int i = 0, i