generates CFG