fix function

This commit is contained in:
Vu Tuan Minh
2025-04-10 12:04:18 +02:00
parent bc2332037f
commit 2d7f4910ab
2 changed files with 16 additions and 14 deletions

View File

@@ -38,21 +38,23 @@ functions returns [ArrayList<Function> 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<Declaration> out]
@init{
$out = new ArrayList<>();
}:
(declaration {
$out.add($declaration.out);
})+
;
declaration returns [Declaration out]:
(t=type i=ident
t=type i=ident
{
ArrayList<String> declare= new ArrayList<String>();
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<Instruction> 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

View File

@@ -61,7 +61,7 @@ public class Program{
}
}
public static record BlocDecImp(Declaration e, ArrayList<Instruction> l) implements Instruction{
public static record BlocDecImp(ArrayList<Declaration> e, ArrayList<Instruction> l) implements Instruction{
public <H, S> S accept(InstrVisitor<H, S> v, H h) {
return v.visitBlocDec(this, h);
}