diff --git a/src/main/antlr/VSLParser.g b/src/main/antlr/VSLParser.g index 8dace01..9a2ae61 100644 --- a/src/main/antlr/VSLParser.g +++ b/src/main/antlr/VSLParser.g @@ -81,11 +81,18 @@ instruction returns [Instruction out]: })* {$out = new DeclarationImp($t.return_type, declare);} | // PRINT - PRINT TEXT - { - String text= $TEXT.getText(); - $out = new PrintImp(text.substring(1,text.length()-1)); - } + PRINT t1=TEXT + { + String text= $t1.getText(); + ArrayList printer= new ArrayList(); + printer.add(text.substring(1,text.length()-1)); + }(VIRGULE t2=TEXT + { + String text2= $t2.getText(); + printer.add(text2.substring(1,text2.length()-1)); + } + )* + {$out = new PrintImp(printer);} ; //Priorité lit(val, const ou paranthese) -> td_exp (*/%) -> exp (+-) diff --git a/src/main/java/TP2/asd/PrettyprinterVisitor.java b/src/main/java/TP2/asd/PrettyprinterVisitor.java index aec2402..0ce0ff6 100644 --- a/src/main/java/TP2/asd/PrettyprinterVisitor.java +++ b/src/main/java/TP2/asd/PrettyprinterVisitor.java @@ -60,7 +60,11 @@ public class PrettyprinterVisitor implements ProgramVisitor, @Override public String visitPrint(PrintImp instr, String indent) { - return indent+ "PRINT \""+instr.t() +"\""; + String str = indent + "PRINT "; + for (String elem: instr.t()){ + str += "\"" +elem +"\""; + } + return str; } //EXPRESSION diff --git a/src/main/java/TP2/asd/Program.java b/src/main/java/TP2/asd/Program.java index 013000e..ee0e14d 100644 --- a/src/main/java/TP2/asd/Program.java +++ b/src/main/java/TP2/asd/Program.java @@ -73,7 +73,7 @@ public class Program{ } } - public static record PrintImp(String t) implements Instruction{ + public static record PrintImp(ArrayList t) implements Instruction{ @Override public S accept(InstrVisitor v, H h) { return v.visitPrint(this, h); diff --git a/tests/aLaMain.vsl b/tests/aLaMain.vsl index 43130d4..745da6d 100644 --- a/tests/aLaMain.vsl +++ b/tests/aLaMain.vsl @@ -2,5 +2,5 @@ FUNC INT main() { INT a,b,c b:=3 c:=1 - PRINT "coucou, tu peux réparer le visitPrint dans LLVM stp" + PRINT "coucou, tu peux réparer le visitPrint dans LLVM stp","il manque virgule au milieu" RETURN 4 + 6 * 5 + 2 } \ No newline at end of file