package TP2.llvm; import TP2.asd.Program.IfThenElseImp; import TP2.llvm.ProgramLLVM.*; public interface Interface { //////////ProgramLLVM (Program) public interface ProgLLVM{ public S accept(ProgramLLVMVisitor v, H h); public String prettyprinter(); } public interface ProgramLLVMVisitor { public S visitProgramLLVM(ProgramLLVMImpl prog, H h); } //////////DefineLLVM (function) public interface DefineLLVM{ public S accept(DefineLLVMVisitor v, H h); } public interface DefineLLVMVisitor { public S visitDefineLLVM(DefineLLVMImpl define, H h); } public interface InstructionLLVM{ public S accept(InstructionLLVMVisitor v, H h); } public interface InstructionLLVMVisitor { 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 S accept(ExpressionLLVMVisitor v, H h); public TypeLLVM getType(); } public interface ValLLVM extends ExpressionLLVM{ } public interface ExpressionLLVMVisitor { 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 { }*/ public interface TypeLLVM{ public S accept(TypeLLVMVisitor v, H h); public int getNbBit(); } public interface TypeLLVMVisitor { public S visitIntLLVM(IntLLVMImpl e,H h); public S visitVoidLLVM(VoidLLVMImpl e, H h); } }