Files
tp2-vsl-pds/src/main/java/TP2/llvm/Interface.java
2025-04-10 13:07:52 +02:00

76 lines
2.3 KiB
Java

package TP2.llvm;
import TP2.asd.Program.IfThenElseImp;
import TP2.llvm.ProgramLLVM.*;
public interface Interface {
//////////ProgramLLVM (Program)
public interface ProgLLVM{
public <H,S> S accept(ProgramLLVMVisitor<H,S> v, H h);
public String prettyprinter();
}
public interface ProgramLLVMVisitor<H,S> {
public S visitProgramLLVM(ProgramLLVMImpl prog, H h);
}
//////////DefineLLVM (function)
public interface DefineLLVM{
public <H,S> S accept(DefineLLVMVisitor<H,S> v, H h);
}
public interface DefineLLVMVisitor<H,S> {
public S visitDefineLLVM(DefineLLVMImpl define, H h);
}
public interface InstructionLLVM{
public <H,S> S accept(InstructionLLVMVisitor<H,S> v, H h);
}
public interface InstructionLLVMVisitor<H,S> {
public S visitReturnLLVM(ReturnLLVMImpl instr, H h);
public S visitAssignLLVM(AssignLVMImpl instr, H h);
public S visitStoreLLVM(StoreLLVMImpl instr, H h);
public S visitPrintLLVM(PrintLLVMImpl instr, H h);
public S visitReadLLVM(ReadLLVMImpl instr, H h);
public S visitIfThenElseLLVM(IfThenElseLLVMImp instr, H h);
public S visitIfThenLLVM(IfThenLLVMImp instr, H h);
public S visitWhileLLVM(WhileLLVMImp instr, H h);
public S visitLabelLLVM(LabelLLVMImp instr, H h);
}
//////////ExpressionLLVM (expression)
public interface ExpressionLLVM{
public <H,S> S accept(ExpressionLLVMVisitor<H,S> v, H h);
public TypeLLVM getType();
}
public interface ValLLVM extends ExpressionLLVM{
}
public interface ExpressionLLVMVisitor<H,S> {
public S visitBinOpLLVM(BinOpLLVMImpl 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 <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);
}
}