fix function
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user