allow head recursion in BNF