fix proto again

This commit is contained in:
Vu Tuan Minh
2025-04-26 22:24:54 +02:00
parent 49c4382343
commit 3d4750f7e4
4 changed files with 18 additions and 26 deletions

View File

@@ -22,28 +22,11 @@ options {
}
program returns [ProgramImp p] :
pro=prototypes
func=functions
EOF
{$p = new ProgramImp($func.out,$pro.out);}
{$p = new ProgramImp($func.out);}
;
prototypes returns [ArrayList<Function> out]
@init{
$out = new ArrayList<Function>();
}:
(proto {
$out.add($proto.out);
})*
;
proto returns [Function out]:
PROTOTYPE t=type i=ident ParO v=liste_param ParF
{
$out=new PrototypeImp($t.return_type,$i.out, $v.out);
}
;
liste_param returns [ArrayList<VarImp> out]
@init{
$out = new ArrayList<VarImp>();
@@ -58,11 +41,23 @@ functions returns [ArrayList<Function> out]
@init{
$out = new ArrayList<Function>();
}:
(
(function {
$out.add($function.out);
})+
})
|(proto {
$out.add($proto.out);
})
)+
;
proto returns [Function out]:
PROTOTYPE t=type i=ident ParO v=liste_param ParF
{
$out=new PrototypeImp($t.return_type,$i.out, $v.out);
}
;
function returns [Function out]:
FUNCTION t=type i=ident ParO v=liste_param ParF instr= instruction
{

View File

@@ -18,11 +18,6 @@ public class PrettyprinterVisitor implements ProgramVisitor<String,String>,
@Override
public String visitProgram(ProgramImp prog, String indent) {
String str ="";
for(int i= 0; i<prog.protos().size();i++){
str+=prog.protos().get(i).accept(this, INDENT);
if(i<prog.protos().size()-1) str += "\n";
}
str+="\n";
for(int i = 0; i<prog.fonctions().size(); i++){
str += prog.fonctions().get(i).accept(this,INDENT);
if(i<prog.fonctions().size()-1) str += "\n";

View File

@@ -7,7 +7,7 @@ import TP2.llvm.ProgramLLVM.*;
public class Program{
//Prog
public static record ProgramImp(ArrayList<Function> fonctions,ArrayList<Function> protos) implements ProgramI{
public static record ProgramImp(ArrayList<Function> fonctions) implements ProgramI{
public <H, S> S accept(ProgramVisitor<H, S> v, H h) {
return v.visitProgram(this, h);
}