package TP2.llvm; 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 visitLabelLLVM(LabelLLVMImp instr, H h); public S visitBrLLVM(BrLLVMImp instr, H h); public S visitBrCondLLVM(BrCondLLVMImp instr, H h); public S visitCallLLVM(CallLLVMImpl 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 S visitIcmpLLVM(IcmpLLVMImp 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 interface TypeLLVMVisitor { public S visitIntLLVM(IntLLVMImpl e,H h); public S visitVoidLLVM(VoidLLVMImpl e, H h); public S visitBooleanLLVM(BooleanLLVMImp e, H h); public S visitStringLLVM(StringLLVMImp e, H h); } }