starting point for compiler