diff --git a/src/main/antlr/VSLParser.g b/src/main/antlr/VSLParser.g index 61e0fdb..08bebc3 100644 --- a/src/main/antlr/VSLParser.g +++ b/src/main/antlr/VSLParser.g @@ -81,17 +81,28 @@ instruction returns [Instruction out]: })* {$out = new DeclarationImp($t.return_type, declare);} | // PRINT - PRINT t1=TEXT - { - String text= $t1.getText(); - ArrayList printer= new ArrayList(); - printer.add(text.substring(1,text.length()-1)); - }(VIRGULE t2=TEXT + PRINT + {ArrayList printer= new ArrayList();} + (t1=TEXT + { + String text= $t1.getText(); + printer.add(text.substring(1,text.length()-1)); + } + |e1=expression + { String text_e= $e1.out.toString(); + printer.add(text_e); + }) + (VIRGULE (t2=TEXT { String text2= $t2.getText(); printer.add(text2.substring(1,text2.length()-1)); } - )* + | e2=expression + { + String text_e2= $e2.out.toString(); + printer.add(text_e2); + } + ))* {$out = new PrintImp(printer);} | //READ READ i1=ident diff --git a/src/main/java/TP2/asd/Program.java b/src/main/java/TP2/asd/Program.java index ee0e14d..1348b89 100644 --- a/src/main/java/TP2/asd/Program.java +++ b/src/main/java/TP2/asd/Program.java @@ -80,6 +80,13 @@ public class Program{ } } + public static record ReadImp(ArrayList t) implements Instruction{ + @Override + public S accept(InstrVisitor v, H h) { + return v.visitRead(this, h); + } + } + //Type public static record Type_voidImp() implements Type{ @Override diff --git a/tests/aLaMain.vsl b/tests/aLaMain.vsl index 745da6d..6ee1fc8 100644 --- a/tests/aLaMain.vsl +++ b/tests/aLaMain.vsl @@ -3,4 +3,5 @@ FUNC INT main() { b:=3 c:=1 PRINT "coucou, tu peux réparer le visitPrint dans LLVM stp","il manque virgule au milieu" + PRINT 5 * 5 + 7 RETURN 4 + 6 * 5 + 2 } \ No newline at end of file