a simple compiler