An incremental approach to compiler construction