prettyprinter LLVM en visitor

This commit is contained in:
Rochas
2025-04-06 11:26:19 +02:00
parent c9f1f86a2c
commit 7076633d6a
3 changed files with 163 additions and 119 deletions

View File

@@ -1,9 +1,4 @@
package TP2.llvm;
import TP2.asd.Program.AssignImp;
import TP2.asd.Program.BinopExpressionImp;
import TP2.asd.Program.ConstImp;
import TP2.asd.Program.ProgramImp;
import TP2.asd.Program.Return_instrImp;
import TP2.llvm.ProgramLLVM.*;
public interface Interface {
@@ -14,51 +9,59 @@ public interface Interface {
}
public interface ProgramLLVMVisitor<H,S> {
public S visitProgramLLVM(ProgramLLVMImpl e, H h);
public S visitProgramLLVM(ProgramLLVMImpl prog, H h);
}
//////////DefineLLVM (function)
public interface DefineLLVM{
public <H,S> S accept(DefineLLVMVisitor<H,S> v, H h);
public String prettyprinter();
}
public interface DefineLLVMVisitor<H,S> {
public S visitProgramLLVM(DefineLLVMImpl e, H h);
public S visitDefineLLVM(DefineLLVMImpl define, H h);
}
public interface InstructionLLVM{
public <H,S> S accept(InstructionLLVMVisitor<H,S> v, H h);
public String prettyprinter();
}
public interface InstructionLLVMVisitor<H,S> {
public S visitReturnLLVM(ReturnLLVMImp e, H h);
public S visitAssignLLVM(AssignLVMImp e, H h);
public S visitReturnLLVM(ReturnLLVMImp instr, H h);
public S visitAssignLLVM(AssignLVMImp instr, H h);
}
//////////ExpressionLLVM (expression)
public interface ExpressionLLVM{
public String prettyprinter();
public <H,S> S accept(ExpressionLLVMVisitor<H,S> v, H h);
public TypeLLVM getType();
}
public interface ExpressionLLVMVisitor<H,S> {
public S visitConstLLVM(ValLLVM e,H h);
public S visitBinOpLLVM(BinOpLLVMImp e, H h);
}
public interface ValLLVM extends ExpressionLLVM{
public String prettyprinter();
}
public interface IdentifierLLVM{ //globaux @ et local %
public interface ExpressionLLVMVisitor<H,S> {
public S visitBinOpLLVM(BinOpLLVMImp e, H h);
public S visitAllocaLLVM(allocaLLVMImpl e,H h);
public S visitLoadLLVM(loadLLVMImpl e,H h);
public S visitValLLVM(ValLLVMImpl e,H h);
public S visitVarLLVM(VarLLVMImpl e,H h);
}
/*public interface IdentifierLLVM{ //globaux @ et local %
public String prettyprinter();
}
public interface IndentifierLLVMVisitor<H,S> {
}*/
public interface TypeLLVM{
public String prettyprinter();
public <H,S> S accept(TypeLLVMVisitor<H,S> v, H h);
public int getNbBit();
}
public interface TypeLLVMVisitor<H,S> {
public S visitIntLLVM(IntLLVMImpl e,H h);
public S visitVoidLLVM(VoidLLVMImpl e, H h);
}
}