76 lines
2.3 KiB
Java
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);
|
|
}
|
|
|
|
}
|