A recursive descent LL(infinite) parser with friendly syntax