diff --git a/src/main/antlr/VSLParser.g b/src/main/antlr/VSLParser.g index 168924a..ea2700a 100644 --- a/src/main/antlr/VSLParser.g +++ b/src/main/antlr/VSLParser.g @@ -81,9 +81,9 @@ instruction returns [Instruction out]: $out =new Return_instrImp($e.out);} | //BLOC BacO - (dec=list_decls ins2=list_instr + (dec=list_decls instr2=list_instr { - $out=new BlocDecImp($dec.out,$ins2.out); + $out=new BlocDecImp($dec.out,$instr2.out); } | instr3=list_instr { $out= new BlocImp($instr3.out); @@ -128,13 +128,13 @@ instruction returns [Instruction out]: })* {$out = new ReadImp(read);} | //IF THEN ELSE FIN - IF ex1=expression THEN ins1=list_instr + IF ex1=expression THEN ins1=instruction (FIN {$out= new IfThenImp($ex1.out, $ins1.out);} - | ELSE ins2=list_instr FIN + | ELSE ins2=instruction FIN {$out= new IfThenElseImp($ex1.out, $ins1.out,$ins2.out); } ) - | WHILE exp1=expression DO ins3=list_instr DONE + | WHILE exp1=expression DO ins3=instruction DONE {$out = new WhileImp($exp1.out,$ins3.out);} ; diff --git a/src/main/java/TP2/asd/PrettyprinterVisitor.java b/src/main/java/TP2/asd/PrettyprinterVisitor.java index 06ef556..6314e3b 100644 --- a/src/main/java/TP2/asd/PrettyprinterVisitor.java +++ b/src/main/java/TP2/asd/PrettyprinterVisitor.java @@ -103,9 +103,7 @@ public class PrettyprinterVisitor implements ProgramVisitor, String str = indent + "IF "; str +=(instr.e().accept(this, "")); str +=" THEN "; - for(int i=0; i, String str = indent + "IF "; str +=(instr.e().accept(this, "")); str +=" THEN "; - for(int i=0; i, String str = indent+"WHILE "; str += (instr.e().accept(this, "")); str+= " DO "; - for(int i=0; i i1) implements Instruction { + public static record IfThenImp(Expression e, Instruction i1) implements Instruction { @Override public S accept(InstrVisitor v, H h) { return v.visitIfThen(this, h); } } - public static record IfThenElseImp(Expression e, ArrayList i1, ArrayList i2) implements Instruction { + public static record IfThenElseImp(Expression e, Instruction i1, Instruction i2) implements Instruction { @Override public S accept(InstrVisitor v, H h) { return v.visitIfThenElse(this, h); } } - public static record WhileImp(Expression e, ArrayList i1) implements Instruction { + public static record WhileImp(Expression e, Instruction i1) implements Instruction { @Override public S accept(InstrVisitor v, H h) { return v.visitWhile(this, h); diff --git a/tests/aLaMain.vsl b/tests/aLaMain.vsl index 2056bce..a061105 100644 --- a/tests/aLaMain.vsl +++ b/tests/aLaMain.vsl @@ -5,7 +5,6 @@ FUNC INT main() { PRINT "coucou, tu peux réparer le visitPrint dans LLVM stp","il manque virgule au milieu", c*5+b IF 1 THEN a:=a+1 FI IF 2 THEN b:=c+1 ELSE - b:=c+1 - READ a, b, c, d + b:=c+1 FI RETURN 4 + 6 * 5 + 2 } \ No newline at end of file