Files
tp2-vsl-pds/src/main/java/TP2/llvm/Interface.java
2025-04-08 13:05:11 +02:00

71 lines
2.1 KiB
Java

package TP2.llvm;
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(ReturnLLVMImp instr, H h);
public S visitAssignLLVM(AssignLVMImp instr, H h);
public S visitStoreLLVM(StoreLLVMImp instr, H h);
public S visitPrintLLVM(PrintLLVMImp instr, H h);
public S visitReadLLVM(ReadLLVMImp 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(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 <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);
}
}