编译器有哪些类型?