This document discusses using definite clause grammars (DCGs) to define context-free grammars in Prolog. It describes how DCGs provide a notation that hides the underlying difference list representation used to efficiently recognize grammars. Examples are provided of DCGs for simple grammars that generate sentences about shooting and for the formal language anbn. Adding recursive rules is also discussed to allow generating infinitely many sentences by joining them with conjunctions.