cgrammar impl