diff --git a/.gitignore b/.gitignore index 9aa60ef..c8a545d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ build bin *.ll *.DS_Store +**/.antlr/ \ No newline at end of file diff --git a/src/main/java/TP2/LLVM.java b/src/main/java/TP2/LLVM.java index 70209e9..7dfb510 100644 --- a/src/main/java/TP2/LLVM.java +++ b/src/main/java/TP2/LLVM.java @@ -22,12 +22,23 @@ public class LLVM { sealed interface ListInstr{ String toString(String string);} sealed interface Par{} - sealed interface Expression{} + sealed interface Expression{ + Type getType(); + } + sealed static interface Op{} + sealed interface Var extends Expression{ + }; + sealed interface Val extends Expression{ + }; + public static void main(String[] args) { - Expression exp1 = new Add(new Add(new Val(0),new Val(1)),new Val(2)); + Add ADD = new Add(); + Modulo MODULO = new Modulo(); + + Expression exp1 = new BinOp(ADD,new BinOp(ADD,new ValInt(0),new ValInt(1)),new ValInt(2)); ListPar param = new ListParImpl(new ArrayList<>()); ArrayList l = new ArrayList<>(); l.add(new Return(exp1)); @@ -39,8 +50,9 @@ public class LLVM { System.out.println("\n"); - Var a = new Var("a"); - Var b = new Var("b"); + + Var a = new VarInt("a"); + Var b = new VarInt("b"); Prog p2 = new ProgImpl(List.of( f, new FonctionImpl(new INT(),"maFonction",new ListParImpl(List.of(new ParImpl(new INT(),a),new ParImpl(new INT(),b) )),List.of( @@ -50,9 +62,9 @@ public class LLVM { new Print(List.of("b = ",b)) )), new While(b, List.of( - new Aff(b, new Modulo(b,new Val(2))) + new Aff(b, new BinOp(MODULO,b,new ValInt(2))) )), - new Return(new Add(a,b)) + new Return(new BinOp(ADD,a,b)) )) @@ -125,15 +137,12 @@ public class LLVM { } } - record Read(List items) implements Instr{ //TODO pas bon + record Read(List items) implements Instr{ //TODO pas bon public String toString(String indent){ String str = indent + "READ"; for(int i = 0; i vars) implements ListDecl{ + record ListDeclImpl(Type type, List vars) implements ListDecl{ //erreur public String toString(String indent){ String str = indent + type.toString() + " "; for(int i = 0; i