From 2d7f4910ab8b289c9f49666475f5864b86d3edb8 Mon Sep 17 00:00:00 2001 From: Vu Tuan Minh Date: Thu, 10 Apr 2025 12:04:18 +0200 Subject: [PATCH] fix function --- src/main/antlr/VSLParser.g | 28 +++++++++++++++------------- src/main/java/TP2/asd/Program.java | 2 +- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/main/antlr/VSLParser.g b/src/main/antlr/VSLParser.g index 18384b6..8990075 100644 --- a/src/main/antlr/VSLParser.g +++ b/src/main/antlr/VSLParser.g @@ -38,21 +38,23 @@ functions returns [ArrayList out] ; function returns [Function out]: - FUNCTION t=type i=ident ParO ParF - BacO - (instrs=list_instr - { - $out=new FunctionImp($t.return_type, $i.out, $instrs.out); - } BacF - | instr= instruction + FUNCTION t=type i=ident ParO ParF instr= instruction { $out=new FunctionImp($t.return_type, $i.out, $instr.out); } - ) +; + +list_decls returns [ArrayList out] + @init{ + $out = new ArrayList<>(); + }: + (declaration { + $out.add($declaration.out); + })+ ; declaration returns [Declaration out]: - (t=type i=ident + t=type i=ident { ArrayList declare= new ArrayList(); declare.add($i.out); @@ -60,7 +62,7 @@ declaration returns [Declaration out]: { declare.add($i2.out); })* - {$out = new DeclarationImp($t.return_type, declare);})+ + {$out = new DeclarationImp($t.return_type, declare);} ; list_instr returns [ArrayList out] @@ -79,12 +81,12 @@ instruction returns [Instruction out]: $out =new Return_instrImp($e.out);} | //BLOC BacO - (dec=declaration instr4=list_instr + (dec=list_decls instr4=list_instr { - $out=new BlocDec($dec.out,$insts4.out); + $out=new BlocDecImp($dec.out,$insts4.out); } | instr3=list_instr - { $out= new Bloc($instr3.out); + { $out= new BlocImp($instr3.out); } ) BacF | //ASSIGN diff --git a/src/main/java/TP2/asd/Program.java b/src/main/java/TP2/asd/Program.java index a1a171e..f09ad55 100644 --- a/src/main/java/TP2/asd/Program.java +++ b/src/main/java/TP2/asd/Program.java @@ -61,7 +61,7 @@ public class Program{ } } - public static record BlocDecImp(Declaration e, ArrayList l) implements Instruction{ + public static record BlocDecImp(ArrayList e, ArrayList l) implements Instruction{ public S accept(InstrVisitor v, H h) { return v.visitBlocDec(this, h); }